LCOV - code coverage report
Current view: top level - bin/default/librpc/gen_ndr - ndr_spoolss_c.c (source / functions) Hit Total Coverage
Test: coverage report for master 2b515b7d Lines: 237 7874 3.0 %
Date: 2024-02-28 12:06:22 Functions: 58 624 9.3 %

          Line data    Source code
       1             : /* client functions auto-generated by pidl */
       2             : 
       3             : #include "includes.h"
       4             : #include <tevent.h>
       5             : #include "lib/util/tevent_ntstatus.h"
       6             : #include "bin/default/librpc/gen_ndr/ndr_spoolss.h"
       7             : #include "bin/default/librpc/gen_ndr/ndr_spoolss_c.h"
       8             : 
       9             : /* spoolss - client functions generated by pidl */
      10             : 
      11             : struct dcerpc_spoolss_EnumPrinters_r_state {
      12             :         TALLOC_CTX *out_mem_ctx;
      13             : };
      14             : 
      15             : static void dcerpc_spoolss_EnumPrinters_r_done(struct tevent_req *subreq);
      16             : 
      17           0 : struct tevent_req *dcerpc_spoolss_EnumPrinters_r_send(TALLOC_CTX *mem_ctx,
      18             :         struct tevent_context *ev,
      19             :         struct dcerpc_binding_handle *h,
      20             :         struct spoolss_EnumPrinters *r)
      21             : {
      22           0 :         struct tevent_req *req;
      23           0 :         struct dcerpc_spoolss_EnumPrinters_r_state *state;
      24           0 :         struct tevent_req *subreq;
      25             : 
      26           0 :         req = tevent_req_create(mem_ctx, &state,
      27             :                                 struct dcerpc_spoolss_EnumPrinters_r_state);
      28           0 :         if (req == NULL) {
      29           0 :                 return NULL;
      30             :         }
      31             : 
      32           0 :         state->out_mem_ctx = talloc_new(state);
      33           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
      34           0 :                 return tevent_req_post(req, ev);
      35             :         }
      36             : 
      37           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
      38             :                         NULL, &ndr_table_spoolss,
      39           0 :                         NDR_SPOOLSS_ENUMPRINTERS, state->out_mem_ctx, r);
      40           0 :         if (tevent_req_nomem(subreq, req)) {
      41           0 :                 return tevent_req_post(req, ev);
      42             :         }
      43           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinters_r_done, req);
      44             : 
      45           0 :         return req;
      46             : }
      47             : 
      48           0 : static void dcerpc_spoolss_EnumPrinters_r_done(struct tevent_req *subreq)
      49             : {
      50           0 :         struct tevent_req *req =
      51           0 :                 tevent_req_callback_data(subreq,
      52             :                 struct tevent_req);
      53           0 :         NTSTATUS status;
      54             : 
      55           0 :         status = dcerpc_binding_handle_call_recv(subreq);
      56           0 :         TALLOC_FREE(subreq);
      57           0 :         if (tevent_req_nterror(req, status)) {
      58           0 :                 return;
      59             :         }
      60             : 
      61           0 :         tevent_req_done(req);
      62             : }
      63             : 
      64           0 : NTSTATUS dcerpc_spoolss_EnumPrinters_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
      65             : {
      66           0 :         struct dcerpc_spoolss_EnumPrinters_r_state *state =
      67           0 :                 tevent_req_data(req,
      68             :                 struct dcerpc_spoolss_EnumPrinters_r_state);
      69           0 :         NTSTATUS status;
      70             : 
      71           0 :         if (tevent_req_is_nterror(req, &status)) {
      72           0 :                 tevent_req_received(req);
      73           0 :                 return status;
      74             :         }
      75             : 
      76           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
      77             : 
      78           0 :         tevent_req_received(req);
      79           0 :         return NT_STATUS_OK;
      80             : }
      81             : 
      82         180 : NTSTATUS dcerpc_spoolss_EnumPrinters_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinters *r)
      83             : {
      84           0 :         NTSTATUS status;
      85             : 
      86         180 :         status = dcerpc_binding_handle_call(h,
      87             :                         NULL, &ndr_table_spoolss,
      88             :                         NDR_SPOOLSS_ENUMPRINTERS, mem_ctx, r);
      89             : 
      90         180 :         return status;
      91             : }
      92             : 
      93             : struct dcerpc_spoolss_EnumPrinters_state {
      94             :         struct spoolss_EnumPrinters orig;
      95             :         struct spoolss_EnumPrinters tmp;
      96             :         TALLOC_CTX *out_mem_ctx;
      97             : };
      98             : 
      99             : static void dcerpc_spoolss_EnumPrinters_done(struct tevent_req *subreq);
     100             : 
     101           0 : struct tevent_req *dcerpc_spoolss_EnumPrinters_send(TALLOC_CTX *mem_ctx,
     102             :                                                     struct tevent_context *ev,
     103             :                                                     struct dcerpc_binding_handle *h,
     104             :                                                     uint32_t _flags /* [in]  */,
     105             :                                                     const char *_server /* [in] [charset(UTF16),unique] */,
     106             :                                                     uint32_t _level /* [in]  */,
     107             :                                                     DATA_BLOB *_buffer /* [in] [unique] */,
     108             :                                                     uint32_t _offered /* [in]  */,
     109             :                                                     uint32_t *_count /* [out] [ref] */,
     110             :                                                     union spoolss_PrinterInfo **_info /* [out] [ref,size_is(,*count),switch_is(level)] */,
     111             :                                                     uint32_t *_needed /* [out] [ref] */)
     112             : {
     113           0 :         struct tevent_req *req;
     114           0 :         struct dcerpc_spoolss_EnumPrinters_state *state;
     115           0 :         struct tevent_req *subreq;
     116             : 
     117           0 :         req = tevent_req_create(mem_ctx, &state,
     118             :                                 struct dcerpc_spoolss_EnumPrinters_state);
     119           0 :         if (req == NULL) {
     120           0 :                 return NULL;
     121             :         }
     122           0 :         state->out_mem_ctx = NULL;
     123             : 
     124             :         /* In parameters */
     125           0 :         state->orig.in.flags = _flags;
     126           0 :         state->orig.in.server = _server;
     127           0 :         state->orig.in.level = _level;
     128           0 :         state->orig.in.buffer = _buffer;
     129           0 :         state->orig.in.offered = _offered;
     130             : 
     131             :         /* Out parameters */
     132           0 :         state->orig.out.count = _count;
     133           0 :         state->orig.out.info = _info;
     134           0 :         state->orig.out.needed = _needed;
     135             : 
     136             :         /* Result */
     137           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
     138             : 
     139           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
     140             :                              "dcerpc_spoolss_EnumPrinters_out_memory");
     141           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
     142           0 :                 return tevent_req_post(req, ev);
     143             :         }
     144             : 
     145             :         /* make a temporary copy, that we pass to the dispatch function */
     146           0 :         state->tmp = state->orig;
     147             : 
     148           0 :         subreq = dcerpc_spoolss_EnumPrinters_r_send(state, ev, h, &state->tmp);
     149           0 :         if (tevent_req_nomem(subreq, req)) {
     150           0 :                 return tevent_req_post(req, ev);
     151             :         }
     152           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinters_done, req);
     153           0 :         return req;
     154             : }
     155             : 
     156           0 : static void dcerpc_spoolss_EnumPrinters_done(struct tevent_req *subreq)
     157             : {
     158           0 :         struct tevent_req *req = tevent_req_callback_data(
     159             :                 subreq, struct tevent_req);
     160           0 :         struct dcerpc_spoolss_EnumPrinters_state *state = tevent_req_data(
     161             :                 req, struct dcerpc_spoolss_EnumPrinters_state);
     162           0 :         NTSTATUS status;
     163           0 :         TALLOC_CTX *mem_ctx;
     164             : 
     165           0 :         if (state->out_mem_ctx) {
     166           0 :                 mem_ctx = state->out_mem_ctx;
     167             :         } else {
     168           0 :                 mem_ctx = state;
     169             :         }
     170             : 
     171           0 :         status = dcerpc_spoolss_EnumPrinters_r_recv(subreq, mem_ctx);
     172           0 :         TALLOC_FREE(subreq);
     173           0 :         if (tevent_req_nterror(req, status)) {
     174           0 :                 return;
     175             :         }
     176             : 
     177             :         /* Copy out parameters */
     178           0 :         *state->orig.out.count = *state->tmp.out.count;
     179           0 :         *state->orig.out.info = *state->tmp.out.info;
     180           0 :         *state->orig.out.needed = *state->tmp.out.needed;
     181             : 
     182             :         /* Copy result */
     183           0 :         state->orig.out.result = state->tmp.out.result;
     184             : 
     185             :         /* Reset temporary structure */
     186           0 :         NDR_ZERO_STRUCT(state->tmp);
     187             : 
     188           0 :         tevent_req_done(req);
     189             : }
     190             : 
     191           0 : NTSTATUS dcerpc_spoolss_EnumPrinters_recv(struct tevent_req *req,
     192             :                                           TALLOC_CTX *mem_ctx,
     193             :                                           WERROR *result)
     194             : {
     195           0 :         struct dcerpc_spoolss_EnumPrinters_state *state = tevent_req_data(
     196             :                 req, struct dcerpc_spoolss_EnumPrinters_state);
     197           0 :         NTSTATUS status;
     198             : 
     199           0 :         if (tevent_req_is_nterror(req, &status)) {
     200           0 :                 tevent_req_received(req);
     201           0 :                 return status;
     202             :         }
     203             : 
     204             :         /* Steal possible out parameters to the callers context */
     205           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
     206             : 
     207             :         /* Return result */
     208           0 :         *result = state->orig.out.result;
     209             : 
     210           0 :         tevent_req_received(req);
     211           0 :         return NT_STATUS_OK;
     212             : }
     213             : 
     214           0 : NTSTATUS dcerpc_spoolss_EnumPrinters(struct dcerpc_binding_handle *h,
     215             :                                      TALLOC_CTX *mem_ctx,
     216             :                                      uint32_t _flags /* [in]  */,
     217             :                                      const char *_server /* [in] [charset(UTF16),unique] */,
     218             :                                      uint32_t _level /* [in]  */,
     219             :                                      DATA_BLOB *_buffer /* [in] [unique] */,
     220             :                                      uint32_t _offered /* [in]  */,
     221             :                                      uint32_t *_count /* [out] [ref] */,
     222             :                                      union spoolss_PrinterInfo **_info /* [out] [ref,size_is(,*count),switch_is(level)] */,
     223             :                                      uint32_t *_needed /* [out] [ref] */,
     224             :                                      WERROR *result)
     225             : {
     226           0 :         struct spoolss_EnumPrinters r;
     227           0 :         NTSTATUS status;
     228             : 
     229             :         /* In parameters */
     230           0 :         r.in.flags = _flags;
     231           0 :         r.in.server = _server;
     232           0 :         r.in.level = _level;
     233           0 :         r.in.buffer = _buffer;
     234           0 :         r.in.offered = _offered;
     235             : 
     236             :         /* Out parameters */
     237           0 :         r.out.count = _count;
     238           0 :         r.out.info = _info;
     239           0 :         r.out.needed = _needed;
     240             : 
     241             :         /* Result */
     242           0 :         NDR_ZERO_STRUCT(r.out.result);
     243             : 
     244           0 :         status = dcerpc_spoolss_EnumPrinters_r(h, mem_ctx, &r);
     245           0 :         if (!NT_STATUS_IS_OK(status)) {
     246           0 :                 return status;
     247             :         }
     248             : 
     249             :         /* Return variables */
     250           0 :         *_count = *r.out.count;
     251           0 :         *_info = *r.out.info;
     252           0 :         *_needed = *r.out.needed;
     253             : 
     254             :         /* Return result */
     255           0 :         *result = r.out.result;
     256             : 
     257           0 :         return NT_STATUS_OK;
     258             : }
     259             : 
     260             : struct dcerpc_spoolss_OpenPrinter_r_state {
     261             :         TALLOC_CTX *out_mem_ctx;
     262             : };
     263             : 
     264             : static void dcerpc_spoolss_OpenPrinter_r_done(struct tevent_req *subreq);
     265             : 
     266           0 : struct tevent_req *dcerpc_spoolss_OpenPrinter_r_send(TALLOC_CTX *mem_ctx,
     267             :         struct tevent_context *ev,
     268             :         struct dcerpc_binding_handle *h,
     269             :         struct spoolss_OpenPrinter *r)
     270             : {
     271           0 :         struct tevent_req *req;
     272           0 :         struct dcerpc_spoolss_OpenPrinter_r_state *state;
     273           0 :         struct tevent_req *subreq;
     274             : 
     275           0 :         req = tevent_req_create(mem_ctx, &state,
     276             :                                 struct dcerpc_spoolss_OpenPrinter_r_state);
     277           0 :         if (req == NULL) {
     278           0 :                 return NULL;
     279             :         }
     280             : 
     281           0 :         state->out_mem_ctx = talloc_new(state);
     282           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
     283           0 :                 return tevent_req_post(req, ev);
     284             :         }
     285             : 
     286           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
     287             :                         NULL, &ndr_table_spoolss,
     288           0 :                         NDR_SPOOLSS_OPENPRINTER, state->out_mem_ctx, r);
     289           0 :         if (tevent_req_nomem(subreq, req)) {
     290           0 :                 return tevent_req_post(req, ev);
     291             :         }
     292           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_OpenPrinter_r_done, req);
     293             : 
     294           0 :         return req;
     295             : }
     296             : 
     297           0 : static void dcerpc_spoolss_OpenPrinter_r_done(struct tevent_req *subreq)
     298             : {
     299           0 :         struct tevent_req *req =
     300           0 :                 tevent_req_callback_data(subreq,
     301             :                 struct tevent_req);
     302           0 :         NTSTATUS status;
     303             : 
     304           0 :         status = dcerpc_binding_handle_call_recv(subreq);
     305           0 :         TALLOC_FREE(subreq);
     306           0 :         if (tevent_req_nterror(req, status)) {
     307           0 :                 return;
     308             :         }
     309             : 
     310           0 :         tevent_req_done(req);
     311             : }
     312             : 
     313           0 : NTSTATUS dcerpc_spoolss_OpenPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
     314             : {
     315           0 :         struct dcerpc_spoolss_OpenPrinter_r_state *state =
     316           0 :                 tevent_req_data(req,
     317             :                 struct dcerpc_spoolss_OpenPrinter_r_state);
     318           0 :         NTSTATUS status;
     319             : 
     320           0 :         if (tevent_req_is_nterror(req, &status)) {
     321           0 :                 tevent_req_received(req);
     322           0 :                 return status;
     323             :         }
     324             : 
     325           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
     326             : 
     327           0 :         tevent_req_received(req);
     328           0 :         return NT_STATUS_OK;
     329             : }
     330             : 
     331         194 : NTSTATUS dcerpc_spoolss_OpenPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_OpenPrinter *r)
     332             : {
     333           0 :         NTSTATUS status;
     334             : 
     335         194 :         status = dcerpc_binding_handle_call(h,
     336             :                         NULL, &ndr_table_spoolss,
     337             :                         NDR_SPOOLSS_OPENPRINTER, mem_ctx, r);
     338             : 
     339         194 :         return status;
     340             : }
     341             : 
     342             : struct dcerpc_spoolss_OpenPrinter_state {
     343             :         struct spoolss_OpenPrinter orig;
     344             :         struct spoolss_OpenPrinter tmp;
     345             :         TALLOC_CTX *out_mem_ctx;
     346             : };
     347             : 
     348             : static void dcerpc_spoolss_OpenPrinter_done(struct tevent_req *subreq);
     349             : 
     350           0 : struct tevent_req *dcerpc_spoolss_OpenPrinter_send(TALLOC_CTX *mem_ctx,
     351             :                                                    struct tevent_context *ev,
     352             :                                                    struct dcerpc_binding_handle *h,
     353             :                                                    const char *_printername /* [in] [charset(UTF16),unique] */,
     354             :                                                    const char *_datatype /* [in] [charset(UTF16),unique] */,
     355             :                                                    struct spoolss_DevmodeContainer _devmode_ctr /* [in]  */,
     356             :                                                    uint32_t _access_mask /* [in]  */,
     357             :                                                    struct policy_handle *_handle /* [out] [ref] */)
     358             : {
     359           0 :         struct tevent_req *req;
     360           0 :         struct dcerpc_spoolss_OpenPrinter_state *state;
     361           0 :         struct tevent_req *subreq;
     362             : 
     363           0 :         req = tevent_req_create(mem_ctx, &state,
     364             :                                 struct dcerpc_spoolss_OpenPrinter_state);
     365           0 :         if (req == NULL) {
     366           0 :                 return NULL;
     367             :         }
     368           0 :         state->out_mem_ctx = NULL;
     369             : 
     370             :         /* In parameters */
     371           0 :         state->orig.in.printername = _printername;
     372           0 :         state->orig.in.datatype = _datatype;
     373           0 :         state->orig.in.devmode_ctr = _devmode_ctr;
     374           0 :         state->orig.in.access_mask = _access_mask;
     375             : 
     376             :         /* Out parameters */
     377           0 :         state->orig.out.handle = _handle;
     378             : 
     379             :         /* Result */
     380           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
     381             : 
     382           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
     383             :                              "dcerpc_spoolss_OpenPrinter_out_memory");
     384           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
     385           0 :                 return tevent_req_post(req, ev);
     386             :         }
     387             : 
     388             :         /* make a temporary copy, that we pass to the dispatch function */
     389           0 :         state->tmp = state->orig;
     390             : 
     391           0 :         subreq = dcerpc_spoolss_OpenPrinter_r_send(state, ev, h, &state->tmp);
     392           0 :         if (tevent_req_nomem(subreq, req)) {
     393           0 :                 return tevent_req_post(req, ev);
     394             :         }
     395           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_OpenPrinter_done, req);
     396           0 :         return req;
     397             : }
     398             : 
     399           0 : static void dcerpc_spoolss_OpenPrinter_done(struct tevent_req *subreq)
     400             : {
     401           0 :         struct tevent_req *req = tevent_req_callback_data(
     402             :                 subreq, struct tevent_req);
     403           0 :         struct dcerpc_spoolss_OpenPrinter_state *state = tevent_req_data(
     404             :                 req, struct dcerpc_spoolss_OpenPrinter_state);
     405           0 :         NTSTATUS status;
     406           0 :         TALLOC_CTX *mem_ctx;
     407             : 
     408           0 :         if (state->out_mem_ctx) {
     409           0 :                 mem_ctx = state->out_mem_ctx;
     410             :         } else {
     411           0 :                 mem_ctx = state;
     412             :         }
     413             : 
     414           0 :         status = dcerpc_spoolss_OpenPrinter_r_recv(subreq, mem_ctx);
     415           0 :         TALLOC_FREE(subreq);
     416           0 :         if (tevent_req_nterror(req, status)) {
     417           0 :                 return;
     418             :         }
     419             : 
     420             :         /* Copy out parameters */
     421           0 :         *state->orig.out.handle = *state->tmp.out.handle;
     422             : 
     423             :         /* Copy result */
     424           0 :         state->orig.out.result = state->tmp.out.result;
     425             : 
     426             :         /* Reset temporary structure */
     427           0 :         NDR_ZERO_STRUCT(state->tmp);
     428             : 
     429           0 :         tevent_req_done(req);
     430             : }
     431             : 
     432           0 : NTSTATUS dcerpc_spoolss_OpenPrinter_recv(struct tevent_req *req,
     433             :                                          TALLOC_CTX *mem_ctx,
     434             :                                          WERROR *result)
     435             : {
     436           0 :         struct dcerpc_spoolss_OpenPrinter_state *state = tevent_req_data(
     437             :                 req, struct dcerpc_spoolss_OpenPrinter_state);
     438           0 :         NTSTATUS status;
     439             : 
     440           0 :         if (tevent_req_is_nterror(req, &status)) {
     441           0 :                 tevent_req_received(req);
     442           0 :                 return status;
     443             :         }
     444             : 
     445             :         /* Steal possible out parameters to the callers context */
     446           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
     447             : 
     448             :         /* Return result */
     449           0 :         *result = state->orig.out.result;
     450             : 
     451           0 :         tevent_req_received(req);
     452           0 :         return NT_STATUS_OK;
     453             : }
     454             : 
     455          28 : NTSTATUS dcerpc_spoolss_OpenPrinter(struct dcerpc_binding_handle *h,
     456             :                                     TALLOC_CTX *mem_ctx,
     457             :                                     const char *_printername /* [in] [charset(UTF16),unique] */,
     458             :                                     const char *_datatype /* [in] [charset(UTF16),unique] */,
     459             :                                     struct spoolss_DevmodeContainer _devmode_ctr /* [in]  */,
     460             :                                     uint32_t _access_mask /* [in]  */,
     461             :                                     struct policy_handle *_handle /* [out] [ref] */,
     462             :                                     WERROR *result)
     463             : {
     464           0 :         struct spoolss_OpenPrinter r;
     465           0 :         NTSTATUS status;
     466             : 
     467             :         /* In parameters */
     468          28 :         r.in.printername = _printername;
     469          28 :         r.in.datatype = _datatype;
     470          28 :         r.in.devmode_ctr = _devmode_ctr;
     471          28 :         r.in.access_mask = _access_mask;
     472             : 
     473             :         /* Out parameters */
     474          28 :         r.out.handle = _handle;
     475             : 
     476             :         /* Result */
     477          28 :         NDR_ZERO_STRUCT(r.out.result);
     478             : 
     479          28 :         status = dcerpc_spoolss_OpenPrinter_r(h, mem_ctx, &r);
     480          28 :         if (!NT_STATUS_IS_OK(status)) {
     481           0 :                 return status;
     482             :         }
     483             : 
     484             :         /* Return variables */
     485          28 :         *_handle = *r.out.handle;
     486             : 
     487             :         /* Return result */
     488          28 :         *result = r.out.result;
     489             : 
     490          28 :         return NT_STATUS_OK;
     491             : }
     492             : 
     493             : struct dcerpc_spoolss_SetJob_r_state {
     494             :         TALLOC_CTX *out_mem_ctx;
     495             : };
     496             : 
     497             : static void dcerpc_spoolss_SetJob_r_done(struct tevent_req *subreq);
     498             : 
     499           0 : struct tevent_req *dcerpc_spoolss_SetJob_r_send(TALLOC_CTX *mem_ctx,
     500             :         struct tevent_context *ev,
     501             :         struct dcerpc_binding_handle *h,
     502             :         struct spoolss_SetJob *r)
     503             : {
     504           0 :         struct tevent_req *req;
     505           0 :         struct dcerpc_spoolss_SetJob_r_state *state;
     506           0 :         struct tevent_req *subreq;
     507             : 
     508           0 :         req = tevent_req_create(mem_ctx, &state,
     509             :                                 struct dcerpc_spoolss_SetJob_r_state);
     510           0 :         if (req == NULL) {
     511           0 :                 return NULL;
     512             :         }
     513             : 
     514           0 :         state->out_mem_ctx = NULL;
     515             : 
     516           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
     517             :                         NULL, &ndr_table_spoolss,
     518             :                         NDR_SPOOLSS_SETJOB, state, r);
     519           0 :         if (tevent_req_nomem(subreq, req)) {
     520           0 :                 return tevent_req_post(req, ev);
     521             :         }
     522           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_SetJob_r_done, req);
     523             : 
     524           0 :         return req;
     525             : }
     526             : 
     527           0 : static void dcerpc_spoolss_SetJob_r_done(struct tevent_req *subreq)
     528             : {
     529           0 :         struct tevent_req *req =
     530           0 :                 tevent_req_callback_data(subreq,
     531             :                 struct tevent_req);
     532           0 :         NTSTATUS status;
     533             : 
     534           0 :         status = dcerpc_binding_handle_call_recv(subreq);
     535           0 :         TALLOC_FREE(subreq);
     536           0 :         if (tevent_req_nterror(req, status)) {
     537           0 :                 return;
     538             :         }
     539             : 
     540           0 :         tevent_req_done(req);
     541             : }
     542             : 
     543           0 : NTSTATUS dcerpc_spoolss_SetJob_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
     544             : {
     545           0 :         struct dcerpc_spoolss_SetJob_r_state *state =
     546           0 :                 tevent_req_data(req,
     547             :                 struct dcerpc_spoolss_SetJob_r_state);
     548           0 :         NTSTATUS status;
     549             : 
     550           0 :         if (tevent_req_is_nterror(req, &status)) {
     551           0 :                 tevent_req_received(req);
     552           0 :                 return status;
     553             :         }
     554             : 
     555           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
     556             : 
     557           0 :         tevent_req_received(req);
     558           0 :         return NT_STATUS_OK;
     559             : }
     560             : 
     561         640 : NTSTATUS dcerpc_spoolss_SetJob_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_SetJob *r)
     562             : {
     563           0 :         NTSTATUS status;
     564             : 
     565         640 :         status = dcerpc_binding_handle_call(h,
     566             :                         NULL, &ndr_table_spoolss,
     567             :                         NDR_SPOOLSS_SETJOB, mem_ctx, r);
     568             : 
     569         640 :         return status;
     570             : }
     571             : 
     572             : struct dcerpc_spoolss_SetJob_state {
     573             :         struct spoolss_SetJob orig;
     574             :         struct spoolss_SetJob tmp;
     575             :         TALLOC_CTX *out_mem_ctx;
     576             : };
     577             : 
     578             : static void dcerpc_spoolss_SetJob_done(struct tevent_req *subreq);
     579             : 
     580           0 : struct tevent_req *dcerpc_spoolss_SetJob_send(TALLOC_CTX *mem_ctx,
     581             :                                               struct tevent_context *ev,
     582             :                                               struct dcerpc_binding_handle *h,
     583             :                                               struct policy_handle *_handle /* [in] [ref] */,
     584             :                                               uint32_t _job_id /* [in]  */,
     585             :                                               struct spoolss_JobInfoContainer *_ctr /* [in] [unique] */,
     586             :                                               enum spoolss_JobControl _command /* [in]  */)
     587             : {
     588           0 :         struct tevent_req *req;
     589           0 :         struct dcerpc_spoolss_SetJob_state *state;
     590           0 :         struct tevent_req *subreq;
     591             : 
     592           0 :         req = tevent_req_create(mem_ctx, &state,
     593             :                                 struct dcerpc_spoolss_SetJob_state);
     594           0 :         if (req == NULL) {
     595           0 :                 return NULL;
     596             :         }
     597           0 :         state->out_mem_ctx = NULL;
     598             : 
     599             :         /* In parameters */
     600           0 :         state->orig.in.handle = _handle;
     601           0 :         state->orig.in.job_id = _job_id;
     602           0 :         state->orig.in.ctr = _ctr;
     603           0 :         state->orig.in.command = _command;
     604             : 
     605             :         /* Out parameters */
     606             : 
     607             :         /* Result */
     608           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
     609             : 
     610             :         /* make a temporary copy, that we pass to the dispatch function */
     611           0 :         state->tmp = state->orig;
     612             : 
     613           0 :         subreq = dcerpc_spoolss_SetJob_r_send(state, ev, h, &state->tmp);
     614           0 :         if (tevent_req_nomem(subreq, req)) {
     615           0 :                 return tevent_req_post(req, ev);
     616             :         }
     617           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_SetJob_done, req);
     618           0 :         return req;
     619             : }
     620             : 
     621           0 : static void dcerpc_spoolss_SetJob_done(struct tevent_req *subreq)
     622             : {
     623           0 :         struct tevent_req *req = tevent_req_callback_data(
     624             :                 subreq, struct tevent_req);
     625           0 :         struct dcerpc_spoolss_SetJob_state *state = tevent_req_data(
     626             :                 req, struct dcerpc_spoolss_SetJob_state);
     627           0 :         NTSTATUS status;
     628           0 :         TALLOC_CTX *mem_ctx;
     629             : 
     630           0 :         if (state->out_mem_ctx) {
     631           0 :                 mem_ctx = state->out_mem_ctx;
     632             :         } else {
     633           0 :                 mem_ctx = state;
     634             :         }
     635             : 
     636           0 :         status = dcerpc_spoolss_SetJob_r_recv(subreq, mem_ctx);
     637           0 :         TALLOC_FREE(subreq);
     638           0 :         if (tevent_req_nterror(req, status)) {
     639           0 :                 return;
     640             :         }
     641             : 
     642             :         /* Copy out parameters */
     643             : 
     644             :         /* Copy result */
     645           0 :         state->orig.out.result = state->tmp.out.result;
     646             : 
     647             :         /* Reset temporary structure */
     648           0 :         NDR_ZERO_STRUCT(state->tmp);
     649             : 
     650           0 :         tevent_req_done(req);
     651             : }
     652             : 
     653           0 : NTSTATUS dcerpc_spoolss_SetJob_recv(struct tevent_req *req,
     654             :                                     TALLOC_CTX *mem_ctx,
     655             :                                     WERROR *result)
     656             : {
     657           0 :         struct dcerpc_spoolss_SetJob_state *state = tevent_req_data(
     658             :                 req, struct dcerpc_spoolss_SetJob_state);
     659           0 :         NTSTATUS status;
     660             : 
     661           0 :         if (tevent_req_is_nterror(req, &status)) {
     662           0 :                 tevent_req_received(req);
     663           0 :                 return status;
     664             :         }
     665             : 
     666             :         /* Steal possible out parameters to the callers context */
     667           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
     668             : 
     669             :         /* Return result */
     670           0 :         *result = state->orig.out.result;
     671             : 
     672           0 :         tevent_req_received(req);
     673           0 :         return NT_STATUS_OK;
     674             : }
     675             : 
     676           0 : NTSTATUS dcerpc_spoolss_SetJob(struct dcerpc_binding_handle *h,
     677             :                                TALLOC_CTX *mem_ctx,
     678             :                                struct policy_handle *_handle /* [in] [ref] */,
     679             :                                uint32_t _job_id /* [in]  */,
     680             :                                struct spoolss_JobInfoContainer *_ctr /* [in] [unique] */,
     681             :                                enum spoolss_JobControl _command /* [in]  */,
     682             :                                WERROR *result)
     683             : {
     684           0 :         struct spoolss_SetJob r;
     685           0 :         NTSTATUS status;
     686             : 
     687             :         /* In parameters */
     688           0 :         r.in.handle = _handle;
     689           0 :         r.in.job_id = _job_id;
     690           0 :         r.in.ctr = _ctr;
     691           0 :         r.in.command = _command;
     692             : 
     693             :         /* Out parameters */
     694             : 
     695             :         /* Result */
     696           0 :         NDR_ZERO_STRUCT(r.out.result);
     697             : 
     698           0 :         status = dcerpc_spoolss_SetJob_r(h, mem_ctx, &r);
     699           0 :         if (!NT_STATUS_IS_OK(status)) {
     700           0 :                 return status;
     701             :         }
     702             : 
     703             :         /* Return variables */
     704             : 
     705             :         /* Return result */
     706           0 :         *result = r.out.result;
     707             : 
     708           0 :         return NT_STATUS_OK;
     709             : }
     710             : 
     711             : struct dcerpc_spoolss_GetJob_r_state {
     712             :         TALLOC_CTX *out_mem_ctx;
     713             : };
     714             : 
     715             : static void dcerpc_spoolss_GetJob_r_done(struct tevent_req *subreq);
     716             : 
     717           0 : struct tevent_req *dcerpc_spoolss_GetJob_r_send(TALLOC_CTX *mem_ctx,
     718             :         struct tevent_context *ev,
     719             :         struct dcerpc_binding_handle *h,
     720             :         struct spoolss_GetJob *r)
     721             : {
     722           0 :         struct tevent_req *req;
     723           0 :         struct dcerpc_spoolss_GetJob_r_state *state;
     724           0 :         struct tevent_req *subreq;
     725             : 
     726           0 :         req = tevent_req_create(mem_ctx, &state,
     727             :                                 struct dcerpc_spoolss_GetJob_r_state);
     728           0 :         if (req == NULL) {
     729           0 :                 return NULL;
     730             :         }
     731             : 
     732           0 :         state->out_mem_ctx = talloc_new(state);
     733           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
     734           0 :                 return tevent_req_post(req, ev);
     735             :         }
     736             : 
     737           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
     738             :                         NULL, &ndr_table_spoolss,
     739           0 :                         NDR_SPOOLSS_GETJOB, state->out_mem_ctx, r);
     740           0 :         if (tevent_req_nomem(subreq, req)) {
     741           0 :                 return tevent_req_post(req, ev);
     742             :         }
     743           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetJob_r_done, req);
     744             : 
     745           0 :         return req;
     746             : }
     747             : 
     748           0 : static void dcerpc_spoolss_GetJob_r_done(struct tevent_req *subreq)
     749             : {
     750           0 :         struct tevent_req *req =
     751           0 :                 tevent_req_callback_data(subreq,
     752             :                 struct tevent_req);
     753           0 :         NTSTATUS status;
     754             : 
     755           0 :         status = dcerpc_binding_handle_call_recv(subreq);
     756           0 :         TALLOC_FREE(subreq);
     757           0 :         if (tevent_req_nterror(req, status)) {
     758           0 :                 return;
     759             :         }
     760             : 
     761           0 :         tevent_req_done(req);
     762             : }
     763             : 
     764           0 : NTSTATUS dcerpc_spoolss_GetJob_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
     765             : {
     766           0 :         struct dcerpc_spoolss_GetJob_r_state *state =
     767           0 :                 tevent_req_data(req,
     768             :                 struct dcerpc_spoolss_GetJob_r_state);
     769           0 :         NTSTATUS status;
     770             : 
     771           0 :         if (tevent_req_is_nterror(req, &status)) {
     772           0 :                 tevent_req_received(req);
     773           0 :                 return status;
     774             :         }
     775             : 
     776           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
     777             : 
     778           0 :         tevent_req_received(req);
     779           0 :         return NT_STATUS_OK;
     780             : }
     781             : 
     782        2048 : NTSTATUS dcerpc_spoolss_GetJob_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetJob *r)
     783             : {
     784           0 :         NTSTATUS status;
     785             : 
     786        2048 :         status = dcerpc_binding_handle_call(h,
     787             :                         NULL, &ndr_table_spoolss,
     788             :                         NDR_SPOOLSS_GETJOB, mem_ctx, r);
     789             : 
     790        2048 :         return status;
     791             : }
     792             : 
     793             : struct dcerpc_spoolss_GetJob_state {
     794             :         struct spoolss_GetJob orig;
     795             :         struct spoolss_GetJob tmp;
     796             :         TALLOC_CTX *out_mem_ctx;
     797             : };
     798             : 
     799             : static void dcerpc_spoolss_GetJob_done(struct tevent_req *subreq);
     800             : 
     801           0 : struct tevent_req *dcerpc_spoolss_GetJob_send(TALLOC_CTX *mem_ctx,
     802             :                                               struct tevent_context *ev,
     803             :                                               struct dcerpc_binding_handle *h,
     804             :                                               struct policy_handle *_handle /* [in] [ref] */,
     805             :                                               uint32_t _job_id /* [in]  */,
     806             :                                               uint32_t _level /* [in]  */,
     807             :                                               DATA_BLOB *_buffer /* [in] [unique] */,
     808             :                                               uint32_t _offered /* [in]  */,
     809             :                                               union spoolss_JobInfo *_info /* [out] [subcontext(4),subcontext_size(offered),switch_is(level),unique] */,
     810             :                                               uint32_t *_needed /* [out] [ref] */)
     811             : {
     812           0 :         struct tevent_req *req;
     813           0 :         struct dcerpc_spoolss_GetJob_state *state;
     814           0 :         struct tevent_req *subreq;
     815             : 
     816           0 :         req = tevent_req_create(mem_ctx, &state,
     817             :                                 struct dcerpc_spoolss_GetJob_state);
     818           0 :         if (req == NULL) {
     819           0 :                 return NULL;
     820             :         }
     821           0 :         state->out_mem_ctx = NULL;
     822             : 
     823             :         /* In parameters */
     824           0 :         state->orig.in.handle = _handle;
     825           0 :         state->orig.in.job_id = _job_id;
     826           0 :         state->orig.in.level = _level;
     827           0 :         state->orig.in.buffer = _buffer;
     828           0 :         state->orig.in.offered = _offered;
     829             : 
     830             :         /* Out parameters */
     831           0 :         state->orig.out.info = _info;
     832           0 :         state->orig.out.needed = _needed;
     833             : 
     834             :         /* Result */
     835           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
     836             : 
     837           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
     838             :                              "dcerpc_spoolss_GetJob_out_memory");
     839           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
     840           0 :                 return tevent_req_post(req, ev);
     841             :         }
     842             : 
     843             :         /* make a temporary copy, that we pass to the dispatch function */
     844           0 :         state->tmp = state->orig;
     845             : 
     846           0 :         subreq = dcerpc_spoolss_GetJob_r_send(state, ev, h, &state->tmp);
     847           0 :         if (tevent_req_nomem(subreq, req)) {
     848           0 :                 return tevent_req_post(req, ev);
     849             :         }
     850           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetJob_done, req);
     851           0 :         return req;
     852             : }
     853             : 
     854           0 : static void dcerpc_spoolss_GetJob_done(struct tevent_req *subreq)
     855             : {
     856           0 :         struct tevent_req *req = tevent_req_callback_data(
     857             :                 subreq, struct tevent_req);
     858           0 :         struct dcerpc_spoolss_GetJob_state *state = tevent_req_data(
     859             :                 req, struct dcerpc_spoolss_GetJob_state);
     860           0 :         NTSTATUS status;
     861           0 :         TALLOC_CTX *mem_ctx;
     862             : 
     863           0 :         if (state->out_mem_ctx) {
     864           0 :                 mem_ctx = state->out_mem_ctx;
     865             :         } else {
     866           0 :                 mem_ctx = state;
     867             :         }
     868             : 
     869           0 :         status = dcerpc_spoolss_GetJob_r_recv(subreq, mem_ctx);
     870           0 :         TALLOC_FREE(subreq);
     871           0 :         if (tevent_req_nterror(req, status)) {
     872           0 :                 return;
     873             :         }
     874             : 
     875             :         /* Copy out parameters */
     876           0 :         if (state->orig.out.info && state->tmp.out.info) {
     877           0 :                 *state->orig.out.info = *state->tmp.out.info;
     878             :         }
     879           0 :         *state->orig.out.needed = *state->tmp.out.needed;
     880             : 
     881             :         /* Copy result */
     882           0 :         state->orig.out.result = state->tmp.out.result;
     883             : 
     884             :         /* Reset temporary structure */
     885           0 :         NDR_ZERO_STRUCT(state->tmp);
     886             : 
     887           0 :         tevent_req_done(req);
     888             : }
     889             : 
     890           0 : NTSTATUS dcerpc_spoolss_GetJob_recv(struct tevent_req *req,
     891             :                                     TALLOC_CTX *mem_ctx,
     892             :                                     WERROR *result)
     893             : {
     894           0 :         struct dcerpc_spoolss_GetJob_state *state = tevent_req_data(
     895             :                 req, struct dcerpc_spoolss_GetJob_state);
     896           0 :         NTSTATUS status;
     897             : 
     898           0 :         if (tevent_req_is_nterror(req, &status)) {
     899           0 :                 tevent_req_received(req);
     900           0 :                 return status;
     901             :         }
     902             : 
     903             :         /* Steal possible out parameters to the callers context */
     904           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
     905             : 
     906             :         /* Return result */
     907           0 :         *result = state->orig.out.result;
     908             : 
     909           0 :         tevent_req_received(req);
     910           0 :         return NT_STATUS_OK;
     911             : }
     912             : 
     913           0 : NTSTATUS dcerpc_spoolss_GetJob(struct dcerpc_binding_handle *h,
     914             :                                TALLOC_CTX *mem_ctx,
     915             :                                struct policy_handle *_handle /* [in] [ref] */,
     916             :                                uint32_t _job_id /* [in]  */,
     917             :                                uint32_t _level /* [in]  */,
     918             :                                DATA_BLOB *_buffer /* [in] [unique] */,
     919             :                                uint32_t _offered /* [in]  */,
     920             :                                union spoolss_JobInfo *_info /* [out] [subcontext(4),subcontext_size(offered),switch_is(level),unique] */,
     921             :                                uint32_t *_needed /* [out] [ref] */,
     922             :                                WERROR *result)
     923             : {
     924           0 :         struct spoolss_GetJob r;
     925           0 :         NTSTATUS status;
     926             : 
     927             :         /* In parameters */
     928           0 :         r.in.handle = _handle;
     929           0 :         r.in.job_id = _job_id;
     930           0 :         r.in.level = _level;
     931           0 :         r.in.buffer = _buffer;
     932           0 :         r.in.offered = _offered;
     933             : 
     934             :         /* Out parameters */
     935           0 :         r.out.info = _info;
     936           0 :         r.out.needed = _needed;
     937             : 
     938             :         /* Result */
     939           0 :         NDR_ZERO_STRUCT(r.out.result);
     940             : 
     941           0 :         status = dcerpc_spoolss_GetJob_r(h, mem_ctx, &r);
     942           0 :         if (!NT_STATUS_IS_OK(status)) {
     943           0 :                 return status;
     944             :         }
     945             : 
     946             :         /* Return variables */
     947           0 :         if (_info && r.out.info) {
     948           0 :                 *_info = *r.out.info;
     949             :         }
     950           0 :         *_needed = *r.out.needed;
     951             : 
     952             :         /* Return result */
     953           0 :         *result = r.out.result;
     954             : 
     955           0 :         return NT_STATUS_OK;
     956             : }
     957             : 
     958             : struct dcerpc_spoolss_EnumJobs_r_state {
     959             :         TALLOC_CTX *out_mem_ctx;
     960             : };
     961             : 
     962             : static void dcerpc_spoolss_EnumJobs_r_done(struct tevent_req *subreq);
     963             : 
     964           0 : struct tevent_req *dcerpc_spoolss_EnumJobs_r_send(TALLOC_CTX *mem_ctx,
     965             :         struct tevent_context *ev,
     966             :         struct dcerpc_binding_handle *h,
     967             :         struct spoolss_EnumJobs *r)
     968             : {
     969           0 :         struct tevent_req *req;
     970           0 :         struct dcerpc_spoolss_EnumJobs_r_state *state;
     971           0 :         struct tevent_req *subreq;
     972             : 
     973           0 :         req = tevent_req_create(mem_ctx, &state,
     974             :                                 struct dcerpc_spoolss_EnumJobs_r_state);
     975           0 :         if (req == NULL) {
     976           0 :                 return NULL;
     977             :         }
     978             : 
     979           0 :         state->out_mem_ctx = talloc_new(state);
     980           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
     981           0 :                 return tevent_req_post(req, ev);
     982             :         }
     983             : 
     984           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
     985             :                         NULL, &ndr_table_spoolss,
     986           0 :                         NDR_SPOOLSS_ENUMJOBS, state->out_mem_ctx, r);
     987           0 :         if (tevent_req_nomem(subreq, req)) {
     988           0 :                 return tevent_req_post(req, ev);
     989             :         }
     990           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumJobs_r_done, req);
     991             : 
     992           0 :         return req;
     993             : }
     994             : 
     995           0 : static void dcerpc_spoolss_EnumJobs_r_done(struct tevent_req *subreq)
     996             : {
     997           0 :         struct tevent_req *req =
     998           0 :                 tevent_req_callback_data(subreq,
     999             :                 struct tevent_req);
    1000           0 :         NTSTATUS status;
    1001             : 
    1002           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    1003           0 :         TALLOC_FREE(subreq);
    1004           0 :         if (tevent_req_nterror(req, status)) {
    1005           0 :                 return;
    1006             :         }
    1007             : 
    1008           0 :         tevent_req_done(req);
    1009             : }
    1010             : 
    1011           0 : NTSTATUS dcerpc_spoolss_EnumJobs_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    1012             : {
    1013           0 :         struct dcerpc_spoolss_EnumJobs_r_state *state =
    1014           0 :                 tevent_req_data(req,
    1015             :                 struct dcerpc_spoolss_EnumJobs_r_state);
    1016           0 :         NTSTATUS status;
    1017             : 
    1018           0 :         if (tevent_req_is_nterror(req, &status)) {
    1019           0 :                 tevent_req_received(req);
    1020           0 :                 return status;
    1021             :         }
    1022             : 
    1023           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    1024             : 
    1025           0 :         tevent_req_received(req);
    1026           0 :         return NT_STATUS_OK;
    1027             : }
    1028             : 
    1029          96 : NTSTATUS dcerpc_spoolss_EnumJobs_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumJobs *r)
    1030             : {
    1031           0 :         NTSTATUS status;
    1032             : 
    1033          96 :         status = dcerpc_binding_handle_call(h,
    1034             :                         NULL, &ndr_table_spoolss,
    1035             :                         NDR_SPOOLSS_ENUMJOBS, mem_ctx, r);
    1036             : 
    1037          96 :         return status;
    1038             : }
    1039             : 
    1040             : struct dcerpc_spoolss_EnumJobs_state {
    1041             :         struct spoolss_EnumJobs orig;
    1042             :         struct spoolss_EnumJobs tmp;
    1043             :         TALLOC_CTX *out_mem_ctx;
    1044             : };
    1045             : 
    1046             : static void dcerpc_spoolss_EnumJobs_done(struct tevent_req *subreq);
    1047             : 
    1048           0 : struct tevent_req *dcerpc_spoolss_EnumJobs_send(TALLOC_CTX *mem_ctx,
    1049             :                                                 struct tevent_context *ev,
    1050             :                                                 struct dcerpc_binding_handle *h,
    1051             :                                                 struct policy_handle *_handle /* [in] [ref] */,
    1052             :                                                 uint32_t _firstjob /* [in]  */,
    1053             :                                                 uint32_t _numjobs /* [in]  */,
    1054             :                                                 uint32_t _level /* [in]  */,
    1055             :                                                 DATA_BLOB *_buffer /* [in] [unique] */,
    1056             :                                                 uint32_t _offered /* [in]  */,
    1057             :                                                 uint32_t *_count /* [out] [ref] */,
    1058             :                                                 union spoolss_JobInfo **_info /* [out] [ref,size_is(,*count),switch_is(level)] */,
    1059             :                                                 uint32_t *_needed /* [out] [ref] */)
    1060             : {
    1061           0 :         struct tevent_req *req;
    1062           0 :         struct dcerpc_spoolss_EnumJobs_state *state;
    1063           0 :         struct tevent_req *subreq;
    1064             : 
    1065           0 :         req = tevent_req_create(mem_ctx, &state,
    1066             :                                 struct dcerpc_spoolss_EnumJobs_state);
    1067           0 :         if (req == NULL) {
    1068           0 :                 return NULL;
    1069             :         }
    1070           0 :         state->out_mem_ctx = NULL;
    1071             : 
    1072             :         /* In parameters */
    1073           0 :         state->orig.in.handle = _handle;
    1074           0 :         state->orig.in.firstjob = _firstjob;
    1075           0 :         state->orig.in.numjobs = _numjobs;
    1076           0 :         state->orig.in.level = _level;
    1077           0 :         state->orig.in.buffer = _buffer;
    1078           0 :         state->orig.in.offered = _offered;
    1079             : 
    1080             :         /* Out parameters */
    1081           0 :         state->orig.out.count = _count;
    1082           0 :         state->orig.out.info = _info;
    1083           0 :         state->orig.out.needed = _needed;
    1084             : 
    1085             :         /* Result */
    1086           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    1087             : 
    1088           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    1089             :                              "dcerpc_spoolss_EnumJobs_out_memory");
    1090           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    1091           0 :                 return tevent_req_post(req, ev);
    1092             :         }
    1093             : 
    1094             :         /* make a temporary copy, that we pass to the dispatch function */
    1095           0 :         state->tmp = state->orig;
    1096             : 
    1097           0 :         subreq = dcerpc_spoolss_EnumJobs_r_send(state, ev, h, &state->tmp);
    1098           0 :         if (tevent_req_nomem(subreq, req)) {
    1099           0 :                 return tevent_req_post(req, ev);
    1100             :         }
    1101           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumJobs_done, req);
    1102           0 :         return req;
    1103             : }
    1104             : 
    1105           0 : static void dcerpc_spoolss_EnumJobs_done(struct tevent_req *subreq)
    1106             : {
    1107           0 :         struct tevent_req *req = tevent_req_callback_data(
    1108             :                 subreq, struct tevent_req);
    1109           0 :         struct dcerpc_spoolss_EnumJobs_state *state = tevent_req_data(
    1110             :                 req, struct dcerpc_spoolss_EnumJobs_state);
    1111           0 :         NTSTATUS status;
    1112           0 :         TALLOC_CTX *mem_ctx;
    1113             : 
    1114           0 :         if (state->out_mem_ctx) {
    1115           0 :                 mem_ctx = state->out_mem_ctx;
    1116             :         } else {
    1117           0 :                 mem_ctx = state;
    1118             :         }
    1119             : 
    1120           0 :         status = dcerpc_spoolss_EnumJobs_r_recv(subreq, mem_ctx);
    1121           0 :         TALLOC_FREE(subreq);
    1122           0 :         if (tevent_req_nterror(req, status)) {
    1123           0 :                 return;
    1124             :         }
    1125             : 
    1126             :         /* Copy out parameters */
    1127           0 :         *state->orig.out.count = *state->tmp.out.count;
    1128           0 :         *state->orig.out.info = *state->tmp.out.info;
    1129           0 :         *state->orig.out.needed = *state->tmp.out.needed;
    1130             : 
    1131             :         /* Copy result */
    1132           0 :         state->orig.out.result = state->tmp.out.result;
    1133             : 
    1134             :         /* Reset temporary structure */
    1135           0 :         NDR_ZERO_STRUCT(state->tmp);
    1136             : 
    1137           0 :         tevent_req_done(req);
    1138             : }
    1139             : 
    1140           0 : NTSTATUS dcerpc_spoolss_EnumJobs_recv(struct tevent_req *req,
    1141             :                                       TALLOC_CTX *mem_ctx,
    1142             :                                       WERROR *result)
    1143             : {
    1144           0 :         struct dcerpc_spoolss_EnumJobs_state *state = tevent_req_data(
    1145             :                 req, struct dcerpc_spoolss_EnumJobs_state);
    1146           0 :         NTSTATUS status;
    1147             : 
    1148           0 :         if (tevent_req_is_nterror(req, &status)) {
    1149           0 :                 tevent_req_received(req);
    1150           0 :                 return status;
    1151             :         }
    1152             : 
    1153             :         /* Steal possible out parameters to the callers context */
    1154           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    1155             : 
    1156             :         /* Return result */
    1157           0 :         *result = state->orig.out.result;
    1158             : 
    1159           0 :         tevent_req_received(req);
    1160           0 :         return NT_STATUS_OK;
    1161             : }
    1162             : 
    1163           8 : NTSTATUS dcerpc_spoolss_EnumJobs(struct dcerpc_binding_handle *h,
    1164             :                                  TALLOC_CTX *mem_ctx,
    1165             :                                  struct policy_handle *_handle /* [in] [ref] */,
    1166             :                                  uint32_t _firstjob /* [in]  */,
    1167             :                                  uint32_t _numjobs /* [in]  */,
    1168             :                                  uint32_t _level /* [in]  */,
    1169             :                                  DATA_BLOB *_buffer /* [in] [unique] */,
    1170             :                                  uint32_t _offered /* [in]  */,
    1171             :                                  uint32_t *_count /* [out] [ref] */,
    1172             :                                  union spoolss_JobInfo **_info /* [out] [ref,size_is(,*count),switch_is(level)] */,
    1173             :                                  uint32_t *_needed /* [out] [ref] */,
    1174             :                                  WERROR *result)
    1175             : {
    1176           0 :         struct spoolss_EnumJobs r;
    1177           0 :         NTSTATUS status;
    1178             : 
    1179             :         /* In parameters */
    1180           8 :         r.in.handle = _handle;
    1181           8 :         r.in.firstjob = _firstjob;
    1182           8 :         r.in.numjobs = _numjobs;
    1183           8 :         r.in.level = _level;
    1184           8 :         r.in.buffer = _buffer;
    1185           8 :         r.in.offered = _offered;
    1186             : 
    1187             :         /* Out parameters */
    1188           8 :         r.out.count = _count;
    1189           8 :         r.out.info = _info;
    1190           8 :         r.out.needed = _needed;
    1191             : 
    1192             :         /* Result */
    1193           8 :         NDR_ZERO_STRUCT(r.out.result);
    1194             : 
    1195           8 :         status = dcerpc_spoolss_EnumJobs_r(h, mem_ctx, &r);
    1196           8 :         if (!NT_STATUS_IS_OK(status)) {
    1197           0 :                 return status;
    1198             :         }
    1199             : 
    1200             :         /* Return variables */
    1201           8 :         *_count = *r.out.count;
    1202           8 :         *_info = *r.out.info;
    1203           8 :         *_needed = *r.out.needed;
    1204             : 
    1205             :         /* Return result */
    1206           8 :         *result = r.out.result;
    1207             : 
    1208           8 :         return NT_STATUS_OK;
    1209             : }
    1210             : 
    1211             : struct dcerpc_spoolss_AddPrinter_r_state {
    1212             :         TALLOC_CTX *out_mem_ctx;
    1213             : };
    1214             : 
    1215             : static void dcerpc_spoolss_AddPrinter_r_done(struct tevent_req *subreq);
    1216             : 
    1217           0 : struct tevent_req *dcerpc_spoolss_AddPrinter_r_send(TALLOC_CTX *mem_ctx,
    1218             :         struct tevent_context *ev,
    1219             :         struct dcerpc_binding_handle *h,
    1220             :         struct spoolss_AddPrinter *r)
    1221             : {
    1222           0 :         struct tevent_req *req;
    1223           0 :         struct dcerpc_spoolss_AddPrinter_r_state *state;
    1224           0 :         struct tevent_req *subreq;
    1225             : 
    1226           0 :         req = tevent_req_create(mem_ctx, &state,
    1227             :                                 struct dcerpc_spoolss_AddPrinter_r_state);
    1228           0 :         if (req == NULL) {
    1229           0 :                 return NULL;
    1230             :         }
    1231             : 
    1232           0 :         state->out_mem_ctx = talloc_new(state);
    1233           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    1234           0 :                 return tevent_req_post(req, ev);
    1235             :         }
    1236             : 
    1237           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    1238             :                         NULL, &ndr_table_spoolss,
    1239           0 :                         NDR_SPOOLSS_ADDPRINTER, state->out_mem_ctx, r);
    1240           0 :         if (tevent_req_nomem(subreq, req)) {
    1241           0 :                 return tevent_req_post(req, ev);
    1242             :         }
    1243           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinter_r_done, req);
    1244             : 
    1245           0 :         return req;
    1246             : }
    1247             : 
    1248           0 : static void dcerpc_spoolss_AddPrinter_r_done(struct tevent_req *subreq)
    1249             : {
    1250           0 :         struct tevent_req *req =
    1251           0 :                 tevent_req_callback_data(subreq,
    1252             :                 struct tevent_req);
    1253           0 :         NTSTATUS status;
    1254             : 
    1255           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    1256           0 :         TALLOC_FREE(subreq);
    1257           0 :         if (tevent_req_nterror(req, status)) {
    1258           0 :                 return;
    1259             :         }
    1260             : 
    1261           0 :         tevent_req_done(req);
    1262             : }
    1263             : 
    1264           0 : NTSTATUS dcerpc_spoolss_AddPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    1265             : {
    1266           0 :         struct dcerpc_spoolss_AddPrinter_r_state *state =
    1267           0 :                 tevent_req_data(req,
    1268             :                 struct dcerpc_spoolss_AddPrinter_r_state);
    1269           0 :         NTSTATUS status;
    1270             : 
    1271           0 :         if (tevent_req_is_nterror(req, &status)) {
    1272           0 :                 tevent_req_received(req);
    1273           0 :                 return status;
    1274             :         }
    1275             : 
    1276           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    1277             : 
    1278           0 :         tevent_req_received(req);
    1279           0 :         return NT_STATUS_OK;
    1280             : }
    1281             : 
    1282          72 : NTSTATUS dcerpc_spoolss_AddPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPrinter *r)
    1283             : {
    1284           0 :         NTSTATUS status;
    1285             : 
    1286          72 :         status = dcerpc_binding_handle_call(h,
    1287             :                         NULL, &ndr_table_spoolss,
    1288             :                         NDR_SPOOLSS_ADDPRINTER, mem_ctx, r);
    1289             : 
    1290          72 :         return status;
    1291             : }
    1292             : 
    1293             : struct dcerpc_spoolss_AddPrinter_state {
    1294             :         struct spoolss_AddPrinter orig;
    1295             :         struct spoolss_AddPrinter tmp;
    1296             :         TALLOC_CTX *out_mem_ctx;
    1297             : };
    1298             : 
    1299             : static void dcerpc_spoolss_AddPrinter_done(struct tevent_req *subreq);
    1300             : 
    1301           0 : struct tevent_req *dcerpc_spoolss_AddPrinter_send(TALLOC_CTX *mem_ctx,
    1302             :                                                   struct tevent_context *ev,
    1303             :                                                   struct dcerpc_binding_handle *h,
    1304             :                                                   const char *_server /* [in] [charset(UTF16),unique] */,
    1305             :                                                   struct spoolss_SetPrinterInfoCtr *_info_ctr /* [in] [ref] */,
    1306             :                                                   struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
    1307             :                                                   struct sec_desc_buf *_secdesc_ctr /* [in] [ref] */,
    1308             :                                                   struct policy_handle *_handle /* [out] [ref] */)
    1309             : {
    1310           0 :         struct tevent_req *req;
    1311           0 :         struct dcerpc_spoolss_AddPrinter_state *state;
    1312           0 :         struct tevent_req *subreq;
    1313             : 
    1314           0 :         req = tevent_req_create(mem_ctx, &state,
    1315             :                                 struct dcerpc_spoolss_AddPrinter_state);
    1316           0 :         if (req == NULL) {
    1317           0 :                 return NULL;
    1318             :         }
    1319           0 :         state->out_mem_ctx = NULL;
    1320             : 
    1321             :         /* In parameters */
    1322           0 :         state->orig.in.server = _server;
    1323           0 :         state->orig.in.info_ctr = _info_ctr;
    1324           0 :         state->orig.in.devmode_ctr = _devmode_ctr;
    1325           0 :         state->orig.in.secdesc_ctr = _secdesc_ctr;
    1326             : 
    1327             :         /* Out parameters */
    1328           0 :         state->orig.out.handle = _handle;
    1329             : 
    1330             :         /* Result */
    1331           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    1332             : 
    1333           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    1334             :                              "dcerpc_spoolss_AddPrinter_out_memory");
    1335           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    1336           0 :                 return tevent_req_post(req, ev);
    1337             :         }
    1338             : 
    1339             :         /* make a temporary copy, that we pass to the dispatch function */
    1340           0 :         state->tmp = state->orig;
    1341             : 
    1342           0 :         subreq = dcerpc_spoolss_AddPrinter_r_send(state, ev, h, &state->tmp);
    1343           0 :         if (tevent_req_nomem(subreq, req)) {
    1344           0 :                 return tevent_req_post(req, ev);
    1345             :         }
    1346           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinter_done, req);
    1347           0 :         return req;
    1348             : }
    1349             : 
    1350           0 : static void dcerpc_spoolss_AddPrinter_done(struct tevent_req *subreq)
    1351             : {
    1352           0 :         struct tevent_req *req = tevent_req_callback_data(
    1353             :                 subreq, struct tevent_req);
    1354           0 :         struct dcerpc_spoolss_AddPrinter_state *state = tevent_req_data(
    1355             :                 req, struct dcerpc_spoolss_AddPrinter_state);
    1356           0 :         NTSTATUS status;
    1357           0 :         TALLOC_CTX *mem_ctx;
    1358             : 
    1359           0 :         if (state->out_mem_ctx) {
    1360           0 :                 mem_ctx = state->out_mem_ctx;
    1361             :         } else {
    1362           0 :                 mem_ctx = state;
    1363             :         }
    1364             : 
    1365           0 :         status = dcerpc_spoolss_AddPrinter_r_recv(subreq, mem_ctx);
    1366           0 :         TALLOC_FREE(subreq);
    1367           0 :         if (tevent_req_nterror(req, status)) {
    1368           0 :                 return;
    1369             :         }
    1370             : 
    1371             :         /* Copy out parameters */
    1372           0 :         *state->orig.out.handle = *state->tmp.out.handle;
    1373             : 
    1374             :         /* Copy result */
    1375           0 :         state->orig.out.result = state->tmp.out.result;
    1376             : 
    1377             :         /* Reset temporary structure */
    1378           0 :         NDR_ZERO_STRUCT(state->tmp);
    1379             : 
    1380           0 :         tevent_req_done(req);
    1381             : }
    1382             : 
    1383           0 : NTSTATUS dcerpc_spoolss_AddPrinter_recv(struct tevent_req *req,
    1384             :                                         TALLOC_CTX *mem_ctx,
    1385             :                                         WERROR *result)
    1386             : {
    1387           0 :         struct dcerpc_spoolss_AddPrinter_state *state = tevent_req_data(
    1388             :                 req, struct dcerpc_spoolss_AddPrinter_state);
    1389           0 :         NTSTATUS status;
    1390             : 
    1391           0 :         if (tevent_req_is_nterror(req, &status)) {
    1392           0 :                 tevent_req_received(req);
    1393           0 :                 return status;
    1394             :         }
    1395             : 
    1396             :         /* Steal possible out parameters to the callers context */
    1397           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    1398             : 
    1399             :         /* Return result */
    1400           0 :         *result = state->orig.out.result;
    1401             : 
    1402           0 :         tevent_req_received(req);
    1403           0 :         return NT_STATUS_OK;
    1404             : }
    1405             : 
    1406           0 : NTSTATUS dcerpc_spoolss_AddPrinter(struct dcerpc_binding_handle *h,
    1407             :                                    TALLOC_CTX *mem_ctx,
    1408             :                                    const char *_server /* [in] [charset(UTF16),unique] */,
    1409             :                                    struct spoolss_SetPrinterInfoCtr *_info_ctr /* [in] [ref] */,
    1410             :                                    struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
    1411             :                                    struct sec_desc_buf *_secdesc_ctr /* [in] [ref] */,
    1412             :                                    struct policy_handle *_handle /* [out] [ref] */,
    1413             :                                    WERROR *result)
    1414             : {
    1415           0 :         struct spoolss_AddPrinter r;
    1416           0 :         NTSTATUS status;
    1417             : 
    1418             :         /* In parameters */
    1419           0 :         r.in.server = _server;
    1420           0 :         r.in.info_ctr = _info_ctr;
    1421           0 :         r.in.devmode_ctr = _devmode_ctr;
    1422           0 :         r.in.secdesc_ctr = _secdesc_ctr;
    1423             : 
    1424             :         /* Out parameters */
    1425           0 :         r.out.handle = _handle;
    1426             : 
    1427             :         /* Result */
    1428           0 :         NDR_ZERO_STRUCT(r.out.result);
    1429             : 
    1430           0 :         status = dcerpc_spoolss_AddPrinter_r(h, mem_ctx, &r);
    1431           0 :         if (!NT_STATUS_IS_OK(status)) {
    1432           0 :                 return status;
    1433             :         }
    1434             : 
    1435             :         /* Return variables */
    1436           0 :         *_handle = *r.out.handle;
    1437             : 
    1438             :         /* Return result */
    1439           0 :         *result = r.out.result;
    1440             : 
    1441           0 :         return NT_STATUS_OK;
    1442             : }
    1443             : 
    1444             : struct dcerpc_spoolss_DeletePrinter_r_state {
    1445             :         TALLOC_CTX *out_mem_ctx;
    1446             : };
    1447             : 
    1448             : static void dcerpc_spoolss_DeletePrinter_r_done(struct tevent_req *subreq);
    1449             : 
    1450           0 : struct tevent_req *dcerpc_spoolss_DeletePrinter_r_send(TALLOC_CTX *mem_ctx,
    1451             :         struct tevent_context *ev,
    1452             :         struct dcerpc_binding_handle *h,
    1453             :         struct spoolss_DeletePrinter *r)
    1454             : {
    1455           0 :         struct tevent_req *req;
    1456           0 :         struct dcerpc_spoolss_DeletePrinter_r_state *state;
    1457           0 :         struct tevent_req *subreq;
    1458             : 
    1459           0 :         req = tevent_req_create(mem_ctx, &state,
    1460             :                                 struct dcerpc_spoolss_DeletePrinter_r_state);
    1461           0 :         if (req == NULL) {
    1462           0 :                 return NULL;
    1463             :         }
    1464             : 
    1465           0 :         state->out_mem_ctx = NULL;
    1466             : 
    1467           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    1468             :                         NULL, &ndr_table_spoolss,
    1469             :                         NDR_SPOOLSS_DELETEPRINTER, state, r);
    1470           0 :         if (tevent_req_nomem(subreq, req)) {
    1471           0 :                 return tevent_req_post(req, ev);
    1472             :         }
    1473           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinter_r_done, req);
    1474             : 
    1475           0 :         return req;
    1476             : }
    1477             : 
    1478           0 : static void dcerpc_spoolss_DeletePrinter_r_done(struct tevent_req *subreq)
    1479             : {
    1480           0 :         struct tevent_req *req =
    1481           0 :                 tevent_req_callback_data(subreq,
    1482             :                 struct tevent_req);
    1483           0 :         NTSTATUS status;
    1484             : 
    1485           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    1486           0 :         TALLOC_FREE(subreq);
    1487           0 :         if (tevent_req_nterror(req, status)) {
    1488           0 :                 return;
    1489             :         }
    1490             : 
    1491           0 :         tevent_req_done(req);
    1492             : }
    1493             : 
    1494           0 : NTSTATUS dcerpc_spoolss_DeletePrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    1495             : {
    1496           0 :         struct dcerpc_spoolss_DeletePrinter_r_state *state =
    1497           0 :                 tevent_req_data(req,
    1498             :                 struct dcerpc_spoolss_DeletePrinter_r_state);
    1499           0 :         NTSTATUS status;
    1500             : 
    1501           0 :         if (tevent_req_is_nterror(req, &status)) {
    1502           0 :                 tevent_req_received(req);
    1503           0 :                 return status;
    1504             :         }
    1505             : 
    1506           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    1507             : 
    1508           0 :         tevent_req_received(req);
    1509           0 :         return NT_STATUS_OK;
    1510             : }
    1511             : 
    1512          16 : NTSTATUS dcerpc_spoolss_DeletePrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinter *r)
    1513             : {
    1514           0 :         NTSTATUS status;
    1515             : 
    1516          16 :         status = dcerpc_binding_handle_call(h,
    1517             :                         NULL, &ndr_table_spoolss,
    1518             :                         NDR_SPOOLSS_DELETEPRINTER, mem_ctx, r);
    1519             : 
    1520          16 :         return status;
    1521             : }
    1522             : 
    1523             : struct dcerpc_spoolss_DeletePrinter_state {
    1524             :         struct spoolss_DeletePrinter orig;
    1525             :         struct spoolss_DeletePrinter tmp;
    1526             :         TALLOC_CTX *out_mem_ctx;
    1527             : };
    1528             : 
    1529             : static void dcerpc_spoolss_DeletePrinter_done(struct tevent_req *subreq);
    1530             : 
    1531           0 : struct tevent_req *dcerpc_spoolss_DeletePrinter_send(TALLOC_CTX *mem_ctx,
    1532             :                                                      struct tevent_context *ev,
    1533             :                                                      struct dcerpc_binding_handle *h,
    1534             :                                                      struct policy_handle *_handle /* [in] [ref] */)
    1535             : {
    1536           0 :         struct tevent_req *req;
    1537           0 :         struct dcerpc_spoolss_DeletePrinter_state *state;
    1538           0 :         struct tevent_req *subreq;
    1539             : 
    1540           0 :         req = tevent_req_create(mem_ctx, &state,
    1541             :                                 struct dcerpc_spoolss_DeletePrinter_state);
    1542           0 :         if (req == NULL) {
    1543           0 :                 return NULL;
    1544             :         }
    1545           0 :         state->out_mem_ctx = NULL;
    1546             : 
    1547             :         /* In parameters */
    1548           0 :         state->orig.in.handle = _handle;
    1549             : 
    1550             :         /* Out parameters */
    1551             : 
    1552             :         /* Result */
    1553           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    1554             : 
    1555             :         /* make a temporary copy, that we pass to the dispatch function */
    1556           0 :         state->tmp = state->orig;
    1557             : 
    1558           0 :         subreq = dcerpc_spoolss_DeletePrinter_r_send(state, ev, h, &state->tmp);
    1559           0 :         if (tevent_req_nomem(subreq, req)) {
    1560           0 :                 return tevent_req_post(req, ev);
    1561             :         }
    1562           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinter_done, req);
    1563           0 :         return req;
    1564             : }
    1565             : 
    1566           0 : static void dcerpc_spoolss_DeletePrinter_done(struct tevent_req *subreq)
    1567             : {
    1568           0 :         struct tevent_req *req = tevent_req_callback_data(
    1569             :                 subreq, struct tevent_req);
    1570           0 :         struct dcerpc_spoolss_DeletePrinter_state *state = tevent_req_data(
    1571             :                 req, struct dcerpc_spoolss_DeletePrinter_state);
    1572           0 :         NTSTATUS status;
    1573           0 :         TALLOC_CTX *mem_ctx;
    1574             : 
    1575           0 :         if (state->out_mem_ctx) {
    1576           0 :                 mem_ctx = state->out_mem_ctx;
    1577             :         } else {
    1578           0 :                 mem_ctx = state;
    1579             :         }
    1580             : 
    1581           0 :         status = dcerpc_spoolss_DeletePrinter_r_recv(subreq, mem_ctx);
    1582           0 :         TALLOC_FREE(subreq);
    1583           0 :         if (tevent_req_nterror(req, status)) {
    1584           0 :                 return;
    1585             :         }
    1586             : 
    1587             :         /* Copy out parameters */
    1588             : 
    1589             :         /* Copy result */
    1590           0 :         state->orig.out.result = state->tmp.out.result;
    1591             : 
    1592             :         /* Reset temporary structure */
    1593           0 :         NDR_ZERO_STRUCT(state->tmp);
    1594             : 
    1595           0 :         tevent_req_done(req);
    1596             : }
    1597             : 
    1598           0 : NTSTATUS dcerpc_spoolss_DeletePrinter_recv(struct tevent_req *req,
    1599             :                                            TALLOC_CTX *mem_ctx,
    1600             :                                            WERROR *result)
    1601             : {
    1602           0 :         struct dcerpc_spoolss_DeletePrinter_state *state = tevent_req_data(
    1603             :                 req, struct dcerpc_spoolss_DeletePrinter_state);
    1604           0 :         NTSTATUS status;
    1605             : 
    1606           0 :         if (tevent_req_is_nterror(req, &status)) {
    1607           0 :                 tevent_req_received(req);
    1608           0 :                 return status;
    1609             :         }
    1610             : 
    1611             :         /* Steal possible out parameters to the callers context */
    1612           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    1613             : 
    1614             :         /* Return result */
    1615           0 :         *result = state->orig.out.result;
    1616             : 
    1617           0 :         tevent_req_received(req);
    1618           0 :         return NT_STATUS_OK;
    1619             : }
    1620             : 
    1621           0 : NTSTATUS dcerpc_spoolss_DeletePrinter(struct dcerpc_binding_handle *h,
    1622             :                                       TALLOC_CTX *mem_ctx,
    1623             :                                       struct policy_handle *_handle /* [in] [ref] */,
    1624             :                                       WERROR *result)
    1625             : {
    1626           0 :         struct spoolss_DeletePrinter r;
    1627           0 :         NTSTATUS status;
    1628             : 
    1629             :         /* In parameters */
    1630           0 :         r.in.handle = _handle;
    1631             : 
    1632             :         /* Out parameters */
    1633             : 
    1634             :         /* Result */
    1635           0 :         NDR_ZERO_STRUCT(r.out.result);
    1636             : 
    1637           0 :         status = dcerpc_spoolss_DeletePrinter_r(h, mem_ctx, &r);
    1638           0 :         if (!NT_STATUS_IS_OK(status)) {
    1639           0 :                 return status;
    1640             :         }
    1641             : 
    1642             :         /* Return variables */
    1643             : 
    1644             :         /* Return result */
    1645           0 :         *result = r.out.result;
    1646             : 
    1647           0 :         return NT_STATUS_OK;
    1648             : }
    1649             : 
    1650             : struct dcerpc_spoolss_SetPrinter_r_state {
    1651             :         TALLOC_CTX *out_mem_ctx;
    1652             : };
    1653             : 
    1654             : static void dcerpc_spoolss_SetPrinter_r_done(struct tevent_req *subreq);
    1655             : 
    1656           0 : struct tevent_req *dcerpc_spoolss_SetPrinter_r_send(TALLOC_CTX *mem_ctx,
    1657             :         struct tevent_context *ev,
    1658             :         struct dcerpc_binding_handle *h,
    1659             :         struct spoolss_SetPrinter *r)
    1660             : {
    1661           0 :         struct tevent_req *req;
    1662           0 :         struct dcerpc_spoolss_SetPrinter_r_state *state;
    1663           0 :         struct tevent_req *subreq;
    1664             : 
    1665           0 :         req = tevent_req_create(mem_ctx, &state,
    1666             :                                 struct dcerpc_spoolss_SetPrinter_r_state);
    1667           0 :         if (req == NULL) {
    1668           0 :                 return NULL;
    1669             :         }
    1670             : 
    1671           0 :         state->out_mem_ctx = NULL;
    1672             : 
    1673           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    1674             :                         NULL, &ndr_table_spoolss,
    1675             :                         NDR_SPOOLSS_SETPRINTER, state, r);
    1676           0 :         if (tevent_req_nomem(subreq, req)) {
    1677           0 :                 return tevent_req_post(req, ev);
    1678             :         }
    1679           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_SetPrinter_r_done, req);
    1680             : 
    1681           0 :         return req;
    1682             : }
    1683             : 
    1684           0 : static void dcerpc_spoolss_SetPrinter_r_done(struct tevent_req *subreq)
    1685             : {
    1686           0 :         struct tevent_req *req =
    1687           0 :                 tevent_req_callback_data(subreq,
    1688             :                 struct tevent_req);
    1689           0 :         NTSTATUS status;
    1690             : 
    1691           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    1692           0 :         TALLOC_FREE(subreq);
    1693           0 :         if (tevent_req_nterror(req, status)) {
    1694           0 :                 return;
    1695             :         }
    1696             : 
    1697           0 :         tevent_req_done(req);
    1698             : }
    1699             : 
    1700           0 : NTSTATUS dcerpc_spoolss_SetPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    1701             : {
    1702           0 :         struct dcerpc_spoolss_SetPrinter_r_state *state =
    1703           0 :                 tevent_req_data(req,
    1704             :                 struct dcerpc_spoolss_SetPrinter_r_state);
    1705           0 :         NTSTATUS status;
    1706             : 
    1707           0 :         if (tevent_req_is_nterror(req, &status)) {
    1708           0 :                 tevent_req_received(req);
    1709           0 :                 return status;
    1710             :         }
    1711             : 
    1712           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    1713             : 
    1714           0 :         tevent_req_received(req);
    1715           0 :         return NT_STATUS_OK;
    1716             : }
    1717             : 
    1718         584 : NTSTATUS dcerpc_spoolss_SetPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_SetPrinter *r)
    1719             : {
    1720           0 :         NTSTATUS status;
    1721             : 
    1722         584 :         status = dcerpc_binding_handle_call(h,
    1723             :                         NULL, &ndr_table_spoolss,
    1724             :                         NDR_SPOOLSS_SETPRINTER, mem_ctx, r);
    1725             : 
    1726         584 :         return status;
    1727             : }
    1728             : 
    1729             : struct dcerpc_spoolss_SetPrinter_state {
    1730             :         struct spoolss_SetPrinter orig;
    1731             :         struct spoolss_SetPrinter tmp;
    1732             :         TALLOC_CTX *out_mem_ctx;
    1733             : };
    1734             : 
    1735             : static void dcerpc_spoolss_SetPrinter_done(struct tevent_req *subreq);
    1736             : 
    1737           0 : struct tevent_req *dcerpc_spoolss_SetPrinter_send(TALLOC_CTX *mem_ctx,
    1738             :                                                   struct tevent_context *ev,
    1739             :                                                   struct dcerpc_binding_handle *h,
    1740             :                                                   struct policy_handle *_handle /* [in] [ref] */,
    1741             :                                                   struct spoolss_SetPrinterInfoCtr *_info_ctr /* [in] [ref] */,
    1742             :                                                   struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
    1743             :                                                   struct sec_desc_buf *_secdesc_ctr /* [in] [ref] */,
    1744             :                                                   enum spoolss_PrinterControl _command /* [in]  */)
    1745             : {
    1746           0 :         struct tevent_req *req;
    1747           0 :         struct dcerpc_spoolss_SetPrinter_state *state;
    1748           0 :         struct tevent_req *subreq;
    1749             : 
    1750           0 :         req = tevent_req_create(mem_ctx, &state,
    1751             :                                 struct dcerpc_spoolss_SetPrinter_state);
    1752           0 :         if (req == NULL) {
    1753           0 :                 return NULL;
    1754             :         }
    1755           0 :         state->out_mem_ctx = NULL;
    1756             : 
    1757             :         /* In parameters */
    1758           0 :         state->orig.in.handle = _handle;
    1759           0 :         state->orig.in.info_ctr = _info_ctr;
    1760           0 :         state->orig.in.devmode_ctr = _devmode_ctr;
    1761           0 :         state->orig.in.secdesc_ctr = _secdesc_ctr;
    1762           0 :         state->orig.in.command = _command;
    1763             : 
    1764             :         /* Out parameters */
    1765             : 
    1766             :         /* Result */
    1767           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    1768             : 
    1769             :         /* make a temporary copy, that we pass to the dispatch function */
    1770           0 :         state->tmp = state->orig;
    1771             : 
    1772           0 :         subreq = dcerpc_spoolss_SetPrinter_r_send(state, ev, h, &state->tmp);
    1773           0 :         if (tevent_req_nomem(subreq, req)) {
    1774           0 :                 return tevent_req_post(req, ev);
    1775             :         }
    1776           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_SetPrinter_done, req);
    1777           0 :         return req;
    1778             : }
    1779             : 
    1780           0 : static void dcerpc_spoolss_SetPrinter_done(struct tevent_req *subreq)
    1781             : {
    1782           0 :         struct tevent_req *req = tevent_req_callback_data(
    1783             :                 subreq, struct tevent_req);
    1784           0 :         struct dcerpc_spoolss_SetPrinter_state *state = tevent_req_data(
    1785             :                 req, struct dcerpc_spoolss_SetPrinter_state);
    1786           0 :         NTSTATUS status;
    1787           0 :         TALLOC_CTX *mem_ctx;
    1788             : 
    1789           0 :         if (state->out_mem_ctx) {
    1790           0 :                 mem_ctx = state->out_mem_ctx;
    1791             :         } else {
    1792           0 :                 mem_ctx = state;
    1793             :         }
    1794             : 
    1795           0 :         status = dcerpc_spoolss_SetPrinter_r_recv(subreq, mem_ctx);
    1796           0 :         TALLOC_FREE(subreq);
    1797           0 :         if (tevent_req_nterror(req, status)) {
    1798           0 :                 return;
    1799             :         }
    1800             : 
    1801             :         /* Copy out parameters */
    1802             : 
    1803             :         /* Copy result */
    1804           0 :         state->orig.out.result = state->tmp.out.result;
    1805             : 
    1806             :         /* Reset temporary structure */
    1807           0 :         NDR_ZERO_STRUCT(state->tmp);
    1808             : 
    1809           0 :         tevent_req_done(req);
    1810             : }
    1811             : 
    1812           0 : NTSTATUS dcerpc_spoolss_SetPrinter_recv(struct tevent_req *req,
    1813             :                                         TALLOC_CTX *mem_ctx,
    1814             :                                         WERROR *result)
    1815             : {
    1816           0 :         struct dcerpc_spoolss_SetPrinter_state *state = tevent_req_data(
    1817             :                 req, struct dcerpc_spoolss_SetPrinter_state);
    1818           0 :         NTSTATUS status;
    1819             : 
    1820           0 :         if (tevent_req_is_nterror(req, &status)) {
    1821           0 :                 tevent_req_received(req);
    1822           0 :                 return status;
    1823             :         }
    1824             : 
    1825             :         /* Steal possible out parameters to the callers context */
    1826           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    1827             : 
    1828             :         /* Return result */
    1829           0 :         *result = state->orig.out.result;
    1830             : 
    1831           0 :         tevent_req_received(req);
    1832           0 :         return NT_STATUS_OK;
    1833             : }
    1834             : 
    1835           0 : NTSTATUS dcerpc_spoolss_SetPrinter(struct dcerpc_binding_handle *h,
    1836             :                                    TALLOC_CTX *mem_ctx,
    1837             :                                    struct policy_handle *_handle /* [in] [ref] */,
    1838             :                                    struct spoolss_SetPrinterInfoCtr *_info_ctr /* [in] [ref] */,
    1839             :                                    struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
    1840             :                                    struct sec_desc_buf *_secdesc_ctr /* [in] [ref] */,
    1841             :                                    enum spoolss_PrinterControl _command /* [in]  */,
    1842             :                                    WERROR *result)
    1843             : {
    1844           0 :         struct spoolss_SetPrinter r;
    1845           0 :         NTSTATUS status;
    1846             : 
    1847             :         /* In parameters */
    1848           0 :         r.in.handle = _handle;
    1849           0 :         r.in.info_ctr = _info_ctr;
    1850           0 :         r.in.devmode_ctr = _devmode_ctr;
    1851           0 :         r.in.secdesc_ctr = _secdesc_ctr;
    1852           0 :         r.in.command = _command;
    1853             : 
    1854             :         /* Out parameters */
    1855             : 
    1856             :         /* Result */
    1857           0 :         NDR_ZERO_STRUCT(r.out.result);
    1858             : 
    1859           0 :         status = dcerpc_spoolss_SetPrinter_r(h, mem_ctx, &r);
    1860           0 :         if (!NT_STATUS_IS_OK(status)) {
    1861           0 :                 return status;
    1862             :         }
    1863             : 
    1864             :         /* Return variables */
    1865             : 
    1866             :         /* Return result */
    1867           0 :         *result = r.out.result;
    1868             : 
    1869           0 :         return NT_STATUS_OK;
    1870             : }
    1871             : 
    1872             : struct dcerpc_spoolss_GetPrinter_r_state {
    1873             :         TALLOC_CTX *out_mem_ctx;
    1874             : };
    1875             : 
    1876             : static void dcerpc_spoolss_GetPrinter_r_done(struct tevent_req *subreq);
    1877             : 
    1878           0 : struct tevent_req *dcerpc_spoolss_GetPrinter_r_send(TALLOC_CTX *mem_ctx,
    1879             :         struct tevent_context *ev,
    1880             :         struct dcerpc_binding_handle *h,
    1881             :         struct spoolss_GetPrinter *r)
    1882             : {
    1883           0 :         struct tevent_req *req;
    1884           0 :         struct dcerpc_spoolss_GetPrinter_r_state *state;
    1885           0 :         struct tevent_req *subreq;
    1886             : 
    1887           0 :         req = tevent_req_create(mem_ctx, &state,
    1888             :                                 struct dcerpc_spoolss_GetPrinter_r_state);
    1889           0 :         if (req == NULL) {
    1890           0 :                 return NULL;
    1891             :         }
    1892             : 
    1893           0 :         state->out_mem_ctx = talloc_new(state);
    1894           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    1895           0 :                 return tevent_req_post(req, ev);
    1896             :         }
    1897             : 
    1898           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    1899             :                         NULL, &ndr_table_spoolss,
    1900           0 :                         NDR_SPOOLSS_GETPRINTER, state->out_mem_ctx, r);
    1901           0 :         if (tevent_req_nomem(subreq, req)) {
    1902           0 :                 return tevent_req_post(req, ev);
    1903             :         }
    1904           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinter_r_done, req);
    1905             : 
    1906           0 :         return req;
    1907             : }
    1908             : 
    1909           0 : static void dcerpc_spoolss_GetPrinter_r_done(struct tevent_req *subreq)
    1910             : {
    1911           0 :         struct tevent_req *req =
    1912           0 :                 tevent_req_callback_data(subreq,
    1913             :                 struct tevent_req);
    1914           0 :         NTSTATUS status;
    1915             : 
    1916           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    1917           0 :         TALLOC_FREE(subreq);
    1918           0 :         if (tevent_req_nterror(req, status)) {
    1919           0 :                 return;
    1920             :         }
    1921             : 
    1922           0 :         tevent_req_done(req);
    1923             : }
    1924             : 
    1925           0 : NTSTATUS dcerpc_spoolss_GetPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    1926             : {
    1927           0 :         struct dcerpc_spoolss_GetPrinter_r_state *state =
    1928           0 :                 tevent_req_data(req,
    1929             :                 struct dcerpc_spoolss_GetPrinter_r_state);
    1930           0 :         NTSTATUS status;
    1931             : 
    1932           0 :         if (tevent_req_is_nterror(req, &status)) {
    1933           0 :                 tevent_req_received(req);
    1934           0 :                 return status;
    1935             :         }
    1936             : 
    1937           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    1938             : 
    1939           0 :         tevent_req_received(req);
    1940           0 :         return NT_STATUS_OK;
    1941             : }
    1942             : 
    1943        3512 : NTSTATUS dcerpc_spoolss_GetPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinter *r)
    1944             : {
    1945           0 :         NTSTATUS status;
    1946             : 
    1947        3512 :         status = dcerpc_binding_handle_call(h,
    1948             :                         NULL, &ndr_table_spoolss,
    1949             :                         NDR_SPOOLSS_GETPRINTER, mem_ctx, r);
    1950             : 
    1951        3512 :         return status;
    1952             : }
    1953             : 
    1954             : struct dcerpc_spoolss_GetPrinter_state {
    1955             :         struct spoolss_GetPrinter orig;
    1956             :         struct spoolss_GetPrinter tmp;
    1957             :         TALLOC_CTX *out_mem_ctx;
    1958             : };
    1959             : 
    1960             : static void dcerpc_spoolss_GetPrinter_done(struct tevent_req *subreq);
    1961             : 
    1962           0 : struct tevent_req *dcerpc_spoolss_GetPrinter_send(TALLOC_CTX *mem_ctx,
    1963             :                                                   struct tevent_context *ev,
    1964             :                                                   struct dcerpc_binding_handle *h,
    1965             :                                                   struct policy_handle *_handle /* [in] [ref] */,
    1966             :                                                   uint32_t _level /* [in]  */,
    1967             :                                                   DATA_BLOB *_buffer /* [in] [unique] */,
    1968             :                                                   uint32_t _offered /* [in]  */,
    1969             :                                                   union spoolss_PrinterInfo *_info /* [out] [subcontext(4),subcontext_size(offered),switch_is(level),unique] */,
    1970             :                                                   uint32_t *_needed /* [out] [ref] */)
    1971             : {
    1972           0 :         struct tevent_req *req;
    1973           0 :         struct dcerpc_spoolss_GetPrinter_state *state;
    1974           0 :         struct tevent_req *subreq;
    1975             : 
    1976           0 :         req = tevent_req_create(mem_ctx, &state,
    1977             :                                 struct dcerpc_spoolss_GetPrinter_state);
    1978           0 :         if (req == NULL) {
    1979           0 :                 return NULL;
    1980             :         }
    1981           0 :         state->out_mem_ctx = NULL;
    1982             : 
    1983             :         /* In parameters */
    1984           0 :         state->orig.in.handle = _handle;
    1985           0 :         state->orig.in.level = _level;
    1986           0 :         state->orig.in.buffer = _buffer;
    1987           0 :         state->orig.in.offered = _offered;
    1988             : 
    1989             :         /* Out parameters */
    1990           0 :         state->orig.out.info = _info;
    1991           0 :         state->orig.out.needed = _needed;
    1992             : 
    1993             :         /* Result */
    1994           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    1995             : 
    1996           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    1997             :                              "dcerpc_spoolss_GetPrinter_out_memory");
    1998           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    1999           0 :                 return tevent_req_post(req, ev);
    2000             :         }
    2001             : 
    2002             :         /* make a temporary copy, that we pass to the dispatch function */
    2003           0 :         state->tmp = state->orig;
    2004             : 
    2005           0 :         subreq = dcerpc_spoolss_GetPrinter_r_send(state, ev, h, &state->tmp);
    2006           0 :         if (tevent_req_nomem(subreq, req)) {
    2007           0 :                 return tevent_req_post(req, ev);
    2008             :         }
    2009           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinter_done, req);
    2010           0 :         return req;
    2011             : }
    2012             : 
    2013           0 : static void dcerpc_spoolss_GetPrinter_done(struct tevent_req *subreq)
    2014             : {
    2015           0 :         struct tevent_req *req = tevent_req_callback_data(
    2016             :                 subreq, struct tevent_req);
    2017           0 :         struct dcerpc_spoolss_GetPrinter_state *state = tevent_req_data(
    2018             :                 req, struct dcerpc_spoolss_GetPrinter_state);
    2019           0 :         NTSTATUS status;
    2020           0 :         TALLOC_CTX *mem_ctx;
    2021             : 
    2022           0 :         if (state->out_mem_ctx) {
    2023           0 :                 mem_ctx = state->out_mem_ctx;
    2024             :         } else {
    2025           0 :                 mem_ctx = state;
    2026             :         }
    2027             : 
    2028           0 :         status = dcerpc_spoolss_GetPrinter_r_recv(subreq, mem_ctx);
    2029           0 :         TALLOC_FREE(subreq);
    2030           0 :         if (tevent_req_nterror(req, status)) {
    2031           0 :                 return;
    2032             :         }
    2033             : 
    2034             :         /* Copy out parameters */
    2035           0 :         if (state->orig.out.info && state->tmp.out.info) {
    2036           0 :                 *state->orig.out.info = *state->tmp.out.info;
    2037             :         }
    2038           0 :         *state->orig.out.needed = *state->tmp.out.needed;
    2039             : 
    2040             :         /* Copy result */
    2041           0 :         state->orig.out.result = state->tmp.out.result;
    2042             : 
    2043             :         /* Reset temporary structure */
    2044           0 :         NDR_ZERO_STRUCT(state->tmp);
    2045             : 
    2046           0 :         tevent_req_done(req);
    2047             : }
    2048             : 
    2049           0 : NTSTATUS dcerpc_spoolss_GetPrinter_recv(struct tevent_req *req,
    2050             :                                         TALLOC_CTX *mem_ctx,
    2051             :                                         WERROR *result)
    2052             : {
    2053           0 :         struct dcerpc_spoolss_GetPrinter_state *state = tevent_req_data(
    2054             :                 req, struct dcerpc_spoolss_GetPrinter_state);
    2055           0 :         NTSTATUS status;
    2056             : 
    2057           0 :         if (tevent_req_is_nterror(req, &status)) {
    2058           0 :                 tevent_req_received(req);
    2059           0 :                 return status;
    2060             :         }
    2061             : 
    2062             :         /* Steal possible out parameters to the callers context */
    2063           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    2064             : 
    2065             :         /* Return result */
    2066           0 :         *result = state->orig.out.result;
    2067             : 
    2068           0 :         tevent_req_received(req);
    2069           0 :         return NT_STATUS_OK;
    2070             : }
    2071             : 
    2072           0 : NTSTATUS dcerpc_spoolss_GetPrinter(struct dcerpc_binding_handle *h,
    2073             :                                    TALLOC_CTX *mem_ctx,
    2074             :                                    struct policy_handle *_handle /* [in] [ref] */,
    2075             :                                    uint32_t _level /* [in]  */,
    2076             :                                    DATA_BLOB *_buffer /* [in] [unique] */,
    2077             :                                    uint32_t _offered /* [in]  */,
    2078             :                                    union spoolss_PrinterInfo *_info /* [out] [subcontext(4),subcontext_size(offered),switch_is(level),unique] */,
    2079             :                                    uint32_t *_needed /* [out] [ref] */,
    2080             :                                    WERROR *result)
    2081             : {
    2082           0 :         struct spoolss_GetPrinter r;
    2083           0 :         NTSTATUS status;
    2084             : 
    2085             :         /* In parameters */
    2086           0 :         r.in.handle = _handle;
    2087           0 :         r.in.level = _level;
    2088           0 :         r.in.buffer = _buffer;
    2089           0 :         r.in.offered = _offered;
    2090             : 
    2091             :         /* Out parameters */
    2092           0 :         r.out.info = _info;
    2093           0 :         r.out.needed = _needed;
    2094             : 
    2095             :         /* Result */
    2096           0 :         NDR_ZERO_STRUCT(r.out.result);
    2097             : 
    2098           0 :         status = dcerpc_spoolss_GetPrinter_r(h, mem_ctx, &r);
    2099           0 :         if (!NT_STATUS_IS_OK(status)) {
    2100           0 :                 return status;
    2101             :         }
    2102             : 
    2103             :         /* Return variables */
    2104           0 :         if (_info && r.out.info) {
    2105           0 :                 *_info = *r.out.info;
    2106             :         }
    2107           0 :         *_needed = *r.out.needed;
    2108             : 
    2109             :         /* Return result */
    2110           0 :         *result = r.out.result;
    2111             : 
    2112           0 :         return NT_STATUS_OK;
    2113             : }
    2114             : 
    2115             : struct dcerpc_spoolss_AddPrinterDriver_r_state {
    2116             :         TALLOC_CTX *out_mem_ctx;
    2117             : };
    2118             : 
    2119             : static void dcerpc_spoolss_AddPrinterDriver_r_done(struct tevent_req *subreq);
    2120             : 
    2121           0 : struct tevent_req *dcerpc_spoolss_AddPrinterDriver_r_send(TALLOC_CTX *mem_ctx,
    2122             :         struct tevent_context *ev,
    2123             :         struct dcerpc_binding_handle *h,
    2124             :         struct spoolss_AddPrinterDriver *r)
    2125             : {
    2126           0 :         struct tevent_req *req;
    2127           0 :         struct dcerpc_spoolss_AddPrinterDriver_r_state *state;
    2128           0 :         struct tevent_req *subreq;
    2129             : 
    2130           0 :         req = tevent_req_create(mem_ctx, &state,
    2131             :                                 struct dcerpc_spoolss_AddPrinterDriver_r_state);
    2132           0 :         if (req == NULL) {
    2133           0 :                 return NULL;
    2134             :         }
    2135             : 
    2136           0 :         state->out_mem_ctx = NULL;
    2137             : 
    2138           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    2139             :                         NULL, &ndr_table_spoolss,
    2140             :                         NDR_SPOOLSS_ADDPRINTERDRIVER, state, r);
    2141           0 :         if (tevent_req_nomem(subreq, req)) {
    2142           0 :                 return tevent_req_post(req, ev);
    2143             :         }
    2144           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinterDriver_r_done, req);
    2145             : 
    2146           0 :         return req;
    2147             : }
    2148             : 
    2149           0 : static void dcerpc_spoolss_AddPrinterDriver_r_done(struct tevent_req *subreq)
    2150             : {
    2151           0 :         struct tevent_req *req =
    2152           0 :                 tevent_req_callback_data(subreq,
    2153             :                 struct tevent_req);
    2154           0 :         NTSTATUS status;
    2155             : 
    2156           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    2157           0 :         TALLOC_FREE(subreq);
    2158           0 :         if (tevent_req_nterror(req, status)) {
    2159           0 :                 return;
    2160             :         }
    2161             : 
    2162           0 :         tevent_req_done(req);
    2163             : }
    2164             : 
    2165           0 : NTSTATUS dcerpc_spoolss_AddPrinterDriver_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    2166             : {
    2167           0 :         struct dcerpc_spoolss_AddPrinterDriver_r_state *state =
    2168           0 :                 tevent_req_data(req,
    2169             :                 struct dcerpc_spoolss_AddPrinterDriver_r_state);
    2170           0 :         NTSTATUS status;
    2171             : 
    2172           0 :         if (tevent_req_is_nterror(req, &status)) {
    2173           0 :                 tevent_req_received(req);
    2174           0 :                 return status;
    2175             :         }
    2176             : 
    2177           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    2178             : 
    2179           0 :         tevent_req_received(req);
    2180           0 :         return NT_STATUS_OK;
    2181             : }
    2182             : 
    2183           0 : NTSTATUS dcerpc_spoolss_AddPrinterDriver_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPrinterDriver *r)
    2184             : {
    2185           0 :         NTSTATUS status;
    2186             : 
    2187           0 :         status = dcerpc_binding_handle_call(h,
    2188             :                         NULL, &ndr_table_spoolss,
    2189             :                         NDR_SPOOLSS_ADDPRINTERDRIVER, mem_ctx, r);
    2190             : 
    2191           0 :         return status;
    2192             : }
    2193             : 
    2194             : struct dcerpc_spoolss_AddPrinterDriver_state {
    2195             :         struct spoolss_AddPrinterDriver orig;
    2196             :         struct spoolss_AddPrinterDriver tmp;
    2197             :         TALLOC_CTX *out_mem_ctx;
    2198             : };
    2199             : 
    2200             : static void dcerpc_spoolss_AddPrinterDriver_done(struct tevent_req *subreq);
    2201             : 
    2202           0 : struct tevent_req *dcerpc_spoolss_AddPrinterDriver_send(TALLOC_CTX *mem_ctx,
    2203             :                                                         struct tevent_context *ev,
    2204             :                                                         struct dcerpc_binding_handle *h,
    2205             :                                                         const char *_servername /* [in] [charset(UTF16),unique] */,
    2206             :                                                         struct spoolss_AddDriverInfoCtr *_info_ctr /* [in] [ref] */)
    2207             : {
    2208           0 :         struct tevent_req *req;
    2209           0 :         struct dcerpc_spoolss_AddPrinterDriver_state *state;
    2210           0 :         struct tevent_req *subreq;
    2211             : 
    2212           0 :         req = tevent_req_create(mem_ctx, &state,
    2213             :                                 struct dcerpc_spoolss_AddPrinterDriver_state);
    2214           0 :         if (req == NULL) {
    2215           0 :                 return NULL;
    2216             :         }
    2217           0 :         state->out_mem_ctx = NULL;
    2218             : 
    2219             :         /* In parameters */
    2220           0 :         state->orig.in.servername = _servername;
    2221           0 :         state->orig.in.info_ctr = _info_ctr;
    2222             : 
    2223             :         /* Out parameters */
    2224             : 
    2225             :         /* Result */
    2226           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    2227             : 
    2228             :         /* make a temporary copy, that we pass to the dispatch function */
    2229           0 :         state->tmp = state->orig;
    2230             : 
    2231           0 :         subreq = dcerpc_spoolss_AddPrinterDriver_r_send(state, ev, h, &state->tmp);
    2232           0 :         if (tevent_req_nomem(subreq, req)) {
    2233           0 :                 return tevent_req_post(req, ev);
    2234             :         }
    2235           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinterDriver_done, req);
    2236           0 :         return req;
    2237             : }
    2238             : 
    2239           0 : static void dcerpc_spoolss_AddPrinterDriver_done(struct tevent_req *subreq)
    2240             : {
    2241           0 :         struct tevent_req *req = tevent_req_callback_data(
    2242             :                 subreq, struct tevent_req);
    2243           0 :         struct dcerpc_spoolss_AddPrinterDriver_state *state = tevent_req_data(
    2244             :                 req, struct dcerpc_spoolss_AddPrinterDriver_state);
    2245           0 :         NTSTATUS status;
    2246           0 :         TALLOC_CTX *mem_ctx;
    2247             : 
    2248           0 :         if (state->out_mem_ctx) {
    2249           0 :                 mem_ctx = state->out_mem_ctx;
    2250             :         } else {
    2251           0 :                 mem_ctx = state;
    2252             :         }
    2253             : 
    2254           0 :         status = dcerpc_spoolss_AddPrinterDriver_r_recv(subreq, mem_ctx);
    2255           0 :         TALLOC_FREE(subreq);
    2256           0 :         if (tevent_req_nterror(req, status)) {
    2257           0 :                 return;
    2258             :         }
    2259             : 
    2260             :         /* Copy out parameters */
    2261             : 
    2262             :         /* Copy result */
    2263           0 :         state->orig.out.result = state->tmp.out.result;
    2264             : 
    2265             :         /* Reset temporary structure */
    2266           0 :         NDR_ZERO_STRUCT(state->tmp);
    2267             : 
    2268           0 :         tevent_req_done(req);
    2269             : }
    2270             : 
    2271           0 : NTSTATUS dcerpc_spoolss_AddPrinterDriver_recv(struct tevent_req *req,
    2272             :                                               TALLOC_CTX *mem_ctx,
    2273             :                                               WERROR *result)
    2274             : {
    2275           0 :         struct dcerpc_spoolss_AddPrinterDriver_state *state = tevent_req_data(
    2276             :                 req, struct dcerpc_spoolss_AddPrinterDriver_state);
    2277           0 :         NTSTATUS status;
    2278             : 
    2279           0 :         if (tevent_req_is_nterror(req, &status)) {
    2280           0 :                 tevent_req_received(req);
    2281           0 :                 return status;
    2282             :         }
    2283             : 
    2284             :         /* Steal possible out parameters to the callers context */
    2285           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    2286             : 
    2287             :         /* Return result */
    2288           0 :         *result = state->orig.out.result;
    2289             : 
    2290           0 :         tevent_req_received(req);
    2291           0 :         return NT_STATUS_OK;
    2292             : }
    2293             : 
    2294           0 : NTSTATUS dcerpc_spoolss_AddPrinterDriver(struct dcerpc_binding_handle *h,
    2295             :                                          TALLOC_CTX *mem_ctx,
    2296             :                                          const char *_servername /* [in] [charset(UTF16),unique] */,
    2297             :                                          struct spoolss_AddDriverInfoCtr *_info_ctr /* [in] [ref] */,
    2298             :                                          WERROR *result)
    2299             : {
    2300           0 :         struct spoolss_AddPrinterDriver r;
    2301           0 :         NTSTATUS status;
    2302             : 
    2303             :         /* In parameters */
    2304           0 :         r.in.servername = _servername;
    2305           0 :         r.in.info_ctr = _info_ctr;
    2306             : 
    2307             :         /* Out parameters */
    2308             : 
    2309             :         /* Result */
    2310           0 :         NDR_ZERO_STRUCT(r.out.result);
    2311             : 
    2312           0 :         status = dcerpc_spoolss_AddPrinterDriver_r(h, mem_ctx, &r);
    2313           0 :         if (!NT_STATUS_IS_OK(status)) {
    2314           0 :                 return status;
    2315             :         }
    2316             : 
    2317             :         /* Return variables */
    2318             : 
    2319             :         /* Return result */
    2320           0 :         *result = r.out.result;
    2321             : 
    2322           0 :         return NT_STATUS_OK;
    2323             : }
    2324             : 
    2325             : struct dcerpc_spoolss_EnumPrinterDrivers_r_state {
    2326             :         TALLOC_CTX *out_mem_ctx;
    2327             : };
    2328             : 
    2329             : static void dcerpc_spoolss_EnumPrinterDrivers_r_done(struct tevent_req *subreq);
    2330             : 
    2331           0 : struct tevent_req *dcerpc_spoolss_EnumPrinterDrivers_r_send(TALLOC_CTX *mem_ctx,
    2332             :         struct tevent_context *ev,
    2333             :         struct dcerpc_binding_handle *h,
    2334             :         struct spoolss_EnumPrinterDrivers *r)
    2335             : {
    2336           0 :         struct tevent_req *req;
    2337           0 :         struct dcerpc_spoolss_EnumPrinterDrivers_r_state *state;
    2338           0 :         struct tevent_req *subreq;
    2339             : 
    2340           0 :         req = tevent_req_create(mem_ctx, &state,
    2341             :                                 struct dcerpc_spoolss_EnumPrinterDrivers_r_state);
    2342           0 :         if (req == NULL) {
    2343           0 :                 return NULL;
    2344             :         }
    2345             : 
    2346           0 :         state->out_mem_ctx = talloc_new(state);
    2347           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    2348           0 :                 return tevent_req_post(req, ev);
    2349             :         }
    2350             : 
    2351           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    2352             :                         NULL, &ndr_table_spoolss,
    2353           0 :                         NDR_SPOOLSS_ENUMPRINTERDRIVERS, state->out_mem_ctx, r);
    2354           0 :         if (tevent_req_nomem(subreq, req)) {
    2355           0 :                 return tevent_req_post(req, ev);
    2356             :         }
    2357           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterDrivers_r_done, req);
    2358             : 
    2359           0 :         return req;
    2360             : }
    2361             : 
    2362           0 : static void dcerpc_spoolss_EnumPrinterDrivers_r_done(struct tevent_req *subreq)
    2363             : {
    2364           0 :         struct tevent_req *req =
    2365           0 :                 tevent_req_callback_data(subreq,
    2366             :                 struct tevent_req);
    2367           0 :         NTSTATUS status;
    2368             : 
    2369           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    2370           0 :         TALLOC_FREE(subreq);
    2371           0 :         if (tevent_req_nterror(req, status)) {
    2372           0 :                 return;
    2373             :         }
    2374             : 
    2375           0 :         tevent_req_done(req);
    2376             : }
    2377             : 
    2378           0 : NTSTATUS dcerpc_spoolss_EnumPrinterDrivers_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    2379             : {
    2380           0 :         struct dcerpc_spoolss_EnumPrinterDrivers_r_state *state =
    2381           0 :                 tevent_req_data(req,
    2382             :                 struct dcerpc_spoolss_EnumPrinterDrivers_r_state);
    2383           0 :         NTSTATUS status;
    2384             : 
    2385           0 :         if (tevent_req_is_nterror(req, &status)) {
    2386           0 :                 tevent_req_received(req);
    2387           0 :                 return status;
    2388             :         }
    2389             : 
    2390           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    2391             : 
    2392           0 :         tevent_req_received(req);
    2393           0 :         return NT_STATUS_OK;
    2394             : }
    2395             : 
    2396         108 : NTSTATUS dcerpc_spoolss_EnumPrinterDrivers_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterDrivers *r)
    2397             : {
    2398           0 :         NTSTATUS status;
    2399             : 
    2400         108 :         status = dcerpc_binding_handle_call(h,
    2401             :                         NULL, &ndr_table_spoolss,
    2402             :                         NDR_SPOOLSS_ENUMPRINTERDRIVERS, mem_ctx, r);
    2403             : 
    2404         108 :         return status;
    2405             : }
    2406             : 
    2407             : struct dcerpc_spoolss_EnumPrinterDrivers_state {
    2408             :         struct spoolss_EnumPrinterDrivers orig;
    2409             :         struct spoolss_EnumPrinterDrivers tmp;
    2410             :         TALLOC_CTX *out_mem_ctx;
    2411             : };
    2412             : 
    2413             : static void dcerpc_spoolss_EnumPrinterDrivers_done(struct tevent_req *subreq);
    2414             : 
    2415           0 : struct tevent_req *dcerpc_spoolss_EnumPrinterDrivers_send(TALLOC_CTX *mem_ctx,
    2416             :                                                           struct tevent_context *ev,
    2417             :                                                           struct dcerpc_binding_handle *h,
    2418             :                                                           const char *_server /* [in] [charset(UTF16),unique] */,
    2419             :                                                           const char *_environment /* [in] [charset(UTF16),unique] */,
    2420             :                                                           uint32_t _level /* [in]  */,
    2421             :                                                           DATA_BLOB *_buffer /* [in] [unique] */,
    2422             :                                                           uint32_t _offered /* [in]  */,
    2423             :                                                           uint32_t *_count /* [out] [ref] */,
    2424             :                                                           union spoolss_DriverInfo **_info /* [out] [ref,size_is(,*count),switch_is(level)] */,
    2425             :                                                           uint32_t *_needed /* [out] [ref] */)
    2426             : {
    2427           0 :         struct tevent_req *req;
    2428           0 :         struct dcerpc_spoolss_EnumPrinterDrivers_state *state;
    2429           0 :         struct tevent_req *subreq;
    2430             : 
    2431           0 :         req = tevent_req_create(mem_ctx, &state,
    2432             :                                 struct dcerpc_spoolss_EnumPrinterDrivers_state);
    2433           0 :         if (req == NULL) {
    2434           0 :                 return NULL;
    2435             :         }
    2436           0 :         state->out_mem_ctx = NULL;
    2437             : 
    2438             :         /* In parameters */
    2439           0 :         state->orig.in.server = _server;
    2440           0 :         state->orig.in.environment = _environment;
    2441           0 :         state->orig.in.level = _level;
    2442           0 :         state->orig.in.buffer = _buffer;
    2443           0 :         state->orig.in.offered = _offered;
    2444             : 
    2445             :         /* Out parameters */
    2446           0 :         state->orig.out.count = _count;
    2447           0 :         state->orig.out.info = _info;
    2448           0 :         state->orig.out.needed = _needed;
    2449             : 
    2450             :         /* Result */
    2451           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    2452             : 
    2453           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    2454             :                              "dcerpc_spoolss_EnumPrinterDrivers_out_memory");
    2455           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    2456           0 :                 return tevent_req_post(req, ev);
    2457             :         }
    2458             : 
    2459             :         /* make a temporary copy, that we pass to the dispatch function */
    2460           0 :         state->tmp = state->orig;
    2461             : 
    2462           0 :         subreq = dcerpc_spoolss_EnumPrinterDrivers_r_send(state, ev, h, &state->tmp);
    2463           0 :         if (tevent_req_nomem(subreq, req)) {
    2464           0 :                 return tevent_req_post(req, ev);
    2465             :         }
    2466           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterDrivers_done, req);
    2467           0 :         return req;
    2468             : }
    2469             : 
    2470           0 : static void dcerpc_spoolss_EnumPrinterDrivers_done(struct tevent_req *subreq)
    2471             : {
    2472           0 :         struct tevent_req *req = tevent_req_callback_data(
    2473             :                 subreq, struct tevent_req);
    2474           0 :         struct dcerpc_spoolss_EnumPrinterDrivers_state *state = tevent_req_data(
    2475             :                 req, struct dcerpc_spoolss_EnumPrinterDrivers_state);
    2476           0 :         NTSTATUS status;
    2477           0 :         TALLOC_CTX *mem_ctx;
    2478             : 
    2479           0 :         if (state->out_mem_ctx) {
    2480           0 :                 mem_ctx = state->out_mem_ctx;
    2481             :         } else {
    2482           0 :                 mem_ctx = state;
    2483             :         }
    2484             : 
    2485           0 :         status = dcerpc_spoolss_EnumPrinterDrivers_r_recv(subreq, mem_ctx);
    2486           0 :         TALLOC_FREE(subreq);
    2487           0 :         if (tevent_req_nterror(req, status)) {
    2488           0 :                 return;
    2489             :         }
    2490             : 
    2491             :         /* Copy out parameters */
    2492           0 :         *state->orig.out.count = *state->tmp.out.count;
    2493           0 :         *state->orig.out.info = *state->tmp.out.info;
    2494           0 :         *state->orig.out.needed = *state->tmp.out.needed;
    2495             : 
    2496             :         /* Copy result */
    2497           0 :         state->orig.out.result = state->tmp.out.result;
    2498             : 
    2499             :         /* Reset temporary structure */
    2500           0 :         NDR_ZERO_STRUCT(state->tmp);
    2501             : 
    2502           0 :         tevent_req_done(req);
    2503             : }
    2504             : 
    2505           0 : NTSTATUS dcerpc_spoolss_EnumPrinterDrivers_recv(struct tevent_req *req,
    2506             :                                                 TALLOC_CTX *mem_ctx,
    2507             :                                                 WERROR *result)
    2508             : {
    2509           0 :         struct dcerpc_spoolss_EnumPrinterDrivers_state *state = tevent_req_data(
    2510             :                 req, struct dcerpc_spoolss_EnumPrinterDrivers_state);
    2511           0 :         NTSTATUS status;
    2512             : 
    2513           0 :         if (tevent_req_is_nterror(req, &status)) {
    2514           0 :                 tevent_req_received(req);
    2515           0 :                 return status;
    2516             :         }
    2517             : 
    2518             :         /* Steal possible out parameters to the callers context */
    2519           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    2520             : 
    2521             :         /* Return result */
    2522           0 :         *result = state->orig.out.result;
    2523             : 
    2524           0 :         tevent_req_received(req);
    2525           0 :         return NT_STATUS_OK;
    2526             : }
    2527             : 
    2528           0 : NTSTATUS dcerpc_spoolss_EnumPrinterDrivers(struct dcerpc_binding_handle *h,
    2529             :                                            TALLOC_CTX *mem_ctx,
    2530             :                                            const char *_server /* [in] [charset(UTF16),unique] */,
    2531             :                                            const char *_environment /* [in] [charset(UTF16),unique] */,
    2532             :                                            uint32_t _level /* [in]  */,
    2533             :                                            DATA_BLOB *_buffer /* [in] [unique] */,
    2534             :                                            uint32_t _offered /* [in]  */,
    2535             :                                            uint32_t *_count /* [out] [ref] */,
    2536             :                                            union spoolss_DriverInfo **_info /* [out] [ref,size_is(,*count),switch_is(level)] */,
    2537             :                                            uint32_t *_needed /* [out] [ref] */,
    2538             :                                            WERROR *result)
    2539             : {
    2540           0 :         struct spoolss_EnumPrinterDrivers r;
    2541           0 :         NTSTATUS status;
    2542             : 
    2543             :         /* In parameters */
    2544           0 :         r.in.server = _server;
    2545           0 :         r.in.environment = _environment;
    2546           0 :         r.in.level = _level;
    2547           0 :         r.in.buffer = _buffer;
    2548           0 :         r.in.offered = _offered;
    2549             : 
    2550             :         /* Out parameters */
    2551           0 :         r.out.count = _count;
    2552           0 :         r.out.info = _info;
    2553           0 :         r.out.needed = _needed;
    2554             : 
    2555             :         /* Result */
    2556           0 :         NDR_ZERO_STRUCT(r.out.result);
    2557             : 
    2558           0 :         status = dcerpc_spoolss_EnumPrinterDrivers_r(h, mem_ctx, &r);
    2559           0 :         if (!NT_STATUS_IS_OK(status)) {
    2560           0 :                 return status;
    2561             :         }
    2562             : 
    2563             :         /* Return variables */
    2564           0 :         *_count = *r.out.count;
    2565           0 :         *_info = *r.out.info;
    2566           0 :         *_needed = *r.out.needed;
    2567             : 
    2568             :         /* Return result */
    2569           0 :         *result = r.out.result;
    2570             : 
    2571           0 :         return NT_STATUS_OK;
    2572             : }
    2573             : 
    2574             : struct dcerpc_spoolss_GetPrinterDriver_r_state {
    2575             :         TALLOC_CTX *out_mem_ctx;
    2576             : };
    2577             : 
    2578             : static void dcerpc_spoolss_GetPrinterDriver_r_done(struct tevent_req *subreq);
    2579             : 
    2580           0 : struct tevent_req *dcerpc_spoolss_GetPrinterDriver_r_send(TALLOC_CTX *mem_ctx,
    2581             :         struct tevent_context *ev,
    2582             :         struct dcerpc_binding_handle *h,
    2583             :         struct spoolss_GetPrinterDriver *r)
    2584             : {
    2585           0 :         struct tevent_req *req;
    2586           0 :         struct dcerpc_spoolss_GetPrinterDriver_r_state *state;
    2587           0 :         struct tevent_req *subreq;
    2588             : 
    2589           0 :         req = tevent_req_create(mem_ctx, &state,
    2590             :                                 struct dcerpc_spoolss_GetPrinterDriver_r_state);
    2591           0 :         if (req == NULL) {
    2592           0 :                 return NULL;
    2593             :         }
    2594             : 
    2595           0 :         state->out_mem_ctx = talloc_new(state);
    2596           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    2597           0 :                 return tevent_req_post(req, ev);
    2598             :         }
    2599             : 
    2600           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    2601             :                         NULL, &ndr_table_spoolss,
    2602           0 :                         NDR_SPOOLSS_GETPRINTERDRIVER, state->out_mem_ctx, r);
    2603           0 :         if (tevent_req_nomem(subreq, req)) {
    2604           0 :                 return tevent_req_post(req, ev);
    2605             :         }
    2606           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriver_r_done, req);
    2607             : 
    2608           0 :         return req;
    2609             : }
    2610             : 
    2611           0 : static void dcerpc_spoolss_GetPrinterDriver_r_done(struct tevent_req *subreq)
    2612             : {
    2613           0 :         struct tevent_req *req =
    2614           0 :                 tevent_req_callback_data(subreq,
    2615             :                 struct tevent_req);
    2616           0 :         NTSTATUS status;
    2617             : 
    2618           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    2619           0 :         TALLOC_FREE(subreq);
    2620           0 :         if (tevent_req_nterror(req, status)) {
    2621           0 :                 return;
    2622             :         }
    2623             : 
    2624           0 :         tevent_req_done(req);
    2625             : }
    2626             : 
    2627           0 : NTSTATUS dcerpc_spoolss_GetPrinterDriver_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    2628             : {
    2629           0 :         struct dcerpc_spoolss_GetPrinterDriver_r_state *state =
    2630           0 :                 tevent_req_data(req,
    2631             :                 struct dcerpc_spoolss_GetPrinterDriver_r_state);
    2632           0 :         NTSTATUS status;
    2633             : 
    2634           0 :         if (tevent_req_is_nterror(req, &status)) {
    2635           0 :                 tevent_req_received(req);
    2636           0 :                 return status;
    2637             :         }
    2638             : 
    2639           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    2640             : 
    2641           0 :         tevent_req_received(req);
    2642           0 :         return NT_STATUS_OK;
    2643             : }
    2644             : 
    2645           0 : NTSTATUS dcerpc_spoolss_GetPrinterDriver_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDriver *r)
    2646             : {
    2647           0 :         NTSTATUS status;
    2648             : 
    2649           0 :         status = dcerpc_binding_handle_call(h,
    2650             :                         NULL, &ndr_table_spoolss,
    2651             :                         NDR_SPOOLSS_GETPRINTERDRIVER, mem_ctx, r);
    2652             : 
    2653           0 :         return status;
    2654             : }
    2655             : 
    2656             : struct dcerpc_spoolss_GetPrinterDriver_state {
    2657             :         struct spoolss_GetPrinterDriver orig;
    2658             :         struct spoolss_GetPrinterDriver tmp;
    2659             :         TALLOC_CTX *out_mem_ctx;
    2660             : };
    2661             : 
    2662             : static void dcerpc_spoolss_GetPrinterDriver_done(struct tevent_req *subreq);
    2663             : 
    2664           0 : struct tevent_req *dcerpc_spoolss_GetPrinterDriver_send(TALLOC_CTX *mem_ctx,
    2665             :                                                         struct tevent_context *ev,
    2666             :                                                         struct dcerpc_binding_handle *h,
    2667             :                                                         struct policy_handle *_handle /* [in] [ref] */,
    2668             :                                                         const char *_architecture /* [in] [charset(UTF16),unique] */,
    2669             :                                                         uint32_t _level /* [in]  */,
    2670             :                                                         DATA_BLOB *_buffer /* [in] [unique] */,
    2671             :                                                         uint32_t _offered /* [in]  */,
    2672             :                                                         union spoolss_DriverInfo *_info /* [out] [subcontext(4),subcontext_size(offered),switch_is(level),unique] */,
    2673             :                                                         uint32_t *_needed /* [out] [ref] */)
    2674             : {
    2675           0 :         struct tevent_req *req;
    2676           0 :         struct dcerpc_spoolss_GetPrinterDriver_state *state;
    2677           0 :         struct tevent_req *subreq;
    2678             : 
    2679           0 :         req = tevent_req_create(mem_ctx, &state,
    2680             :                                 struct dcerpc_spoolss_GetPrinterDriver_state);
    2681           0 :         if (req == NULL) {
    2682           0 :                 return NULL;
    2683             :         }
    2684           0 :         state->out_mem_ctx = NULL;
    2685             : 
    2686             :         /* In parameters */
    2687           0 :         state->orig.in.handle = _handle;
    2688           0 :         state->orig.in.architecture = _architecture;
    2689           0 :         state->orig.in.level = _level;
    2690           0 :         state->orig.in.buffer = _buffer;
    2691           0 :         state->orig.in.offered = _offered;
    2692             : 
    2693             :         /* Out parameters */
    2694           0 :         state->orig.out.info = _info;
    2695           0 :         state->orig.out.needed = _needed;
    2696             : 
    2697             :         /* Result */
    2698           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    2699             : 
    2700           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    2701             :                              "dcerpc_spoolss_GetPrinterDriver_out_memory");
    2702           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    2703           0 :                 return tevent_req_post(req, ev);
    2704             :         }
    2705             : 
    2706             :         /* make a temporary copy, that we pass to the dispatch function */
    2707           0 :         state->tmp = state->orig;
    2708             : 
    2709           0 :         subreq = dcerpc_spoolss_GetPrinterDriver_r_send(state, ev, h, &state->tmp);
    2710           0 :         if (tevent_req_nomem(subreq, req)) {
    2711           0 :                 return tevent_req_post(req, ev);
    2712             :         }
    2713           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriver_done, req);
    2714           0 :         return req;
    2715             : }
    2716             : 
    2717           0 : static void dcerpc_spoolss_GetPrinterDriver_done(struct tevent_req *subreq)
    2718             : {
    2719           0 :         struct tevent_req *req = tevent_req_callback_data(
    2720             :                 subreq, struct tevent_req);
    2721           0 :         struct dcerpc_spoolss_GetPrinterDriver_state *state = tevent_req_data(
    2722             :                 req, struct dcerpc_spoolss_GetPrinterDriver_state);
    2723           0 :         NTSTATUS status;
    2724           0 :         TALLOC_CTX *mem_ctx;
    2725             : 
    2726           0 :         if (state->out_mem_ctx) {
    2727           0 :                 mem_ctx = state->out_mem_ctx;
    2728             :         } else {
    2729           0 :                 mem_ctx = state;
    2730             :         }
    2731             : 
    2732           0 :         status = dcerpc_spoolss_GetPrinterDriver_r_recv(subreq, mem_ctx);
    2733           0 :         TALLOC_FREE(subreq);
    2734           0 :         if (tevent_req_nterror(req, status)) {
    2735           0 :                 return;
    2736             :         }
    2737             : 
    2738             :         /* Copy out parameters */
    2739           0 :         if (state->orig.out.info && state->tmp.out.info) {
    2740           0 :                 *state->orig.out.info = *state->tmp.out.info;
    2741             :         }
    2742           0 :         *state->orig.out.needed = *state->tmp.out.needed;
    2743             : 
    2744             :         /* Copy result */
    2745           0 :         state->orig.out.result = state->tmp.out.result;
    2746             : 
    2747             :         /* Reset temporary structure */
    2748           0 :         NDR_ZERO_STRUCT(state->tmp);
    2749             : 
    2750           0 :         tevent_req_done(req);
    2751             : }
    2752             : 
    2753           0 : NTSTATUS dcerpc_spoolss_GetPrinterDriver_recv(struct tevent_req *req,
    2754             :                                               TALLOC_CTX *mem_ctx,
    2755             :                                               WERROR *result)
    2756             : {
    2757           0 :         struct dcerpc_spoolss_GetPrinterDriver_state *state = tevent_req_data(
    2758             :                 req, struct dcerpc_spoolss_GetPrinterDriver_state);
    2759           0 :         NTSTATUS status;
    2760             : 
    2761           0 :         if (tevent_req_is_nterror(req, &status)) {
    2762           0 :                 tevent_req_received(req);
    2763           0 :                 return status;
    2764             :         }
    2765             : 
    2766             :         /* Steal possible out parameters to the callers context */
    2767           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    2768             : 
    2769             :         /* Return result */
    2770           0 :         *result = state->orig.out.result;
    2771             : 
    2772           0 :         tevent_req_received(req);
    2773           0 :         return NT_STATUS_OK;
    2774             : }
    2775             : 
    2776           0 : NTSTATUS dcerpc_spoolss_GetPrinterDriver(struct dcerpc_binding_handle *h,
    2777             :                                          TALLOC_CTX *mem_ctx,
    2778             :                                          struct policy_handle *_handle /* [in] [ref] */,
    2779             :                                          const char *_architecture /* [in] [charset(UTF16),unique] */,
    2780             :                                          uint32_t _level /* [in]  */,
    2781             :                                          DATA_BLOB *_buffer /* [in] [unique] */,
    2782             :                                          uint32_t _offered /* [in]  */,
    2783             :                                          union spoolss_DriverInfo *_info /* [out] [subcontext(4),subcontext_size(offered),switch_is(level),unique] */,
    2784             :                                          uint32_t *_needed /* [out] [ref] */,
    2785             :                                          WERROR *result)
    2786             : {
    2787           0 :         struct spoolss_GetPrinterDriver r;
    2788           0 :         NTSTATUS status;
    2789             : 
    2790             :         /* In parameters */
    2791           0 :         r.in.handle = _handle;
    2792           0 :         r.in.architecture = _architecture;
    2793           0 :         r.in.level = _level;
    2794           0 :         r.in.buffer = _buffer;
    2795           0 :         r.in.offered = _offered;
    2796             : 
    2797             :         /* Out parameters */
    2798           0 :         r.out.info = _info;
    2799           0 :         r.out.needed = _needed;
    2800             : 
    2801             :         /* Result */
    2802           0 :         NDR_ZERO_STRUCT(r.out.result);
    2803             : 
    2804           0 :         status = dcerpc_spoolss_GetPrinterDriver_r(h, mem_ctx, &r);
    2805           0 :         if (!NT_STATUS_IS_OK(status)) {
    2806           0 :                 return status;
    2807             :         }
    2808             : 
    2809             :         /* Return variables */
    2810           0 :         if (_info && r.out.info) {
    2811           0 :                 *_info = *r.out.info;
    2812             :         }
    2813           0 :         *_needed = *r.out.needed;
    2814             : 
    2815             :         /* Return result */
    2816           0 :         *result = r.out.result;
    2817             : 
    2818           0 :         return NT_STATUS_OK;
    2819             : }
    2820             : 
    2821             : struct dcerpc_spoolss_GetPrinterDriverDirectory_r_state {
    2822             :         TALLOC_CTX *out_mem_ctx;
    2823             : };
    2824             : 
    2825             : static void dcerpc_spoolss_GetPrinterDriverDirectory_r_done(struct tevent_req *subreq);
    2826             : 
    2827           0 : struct tevent_req *dcerpc_spoolss_GetPrinterDriverDirectory_r_send(TALLOC_CTX *mem_ctx,
    2828             :         struct tevent_context *ev,
    2829             :         struct dcerpc_binding_handle *h,
    2830             :         struct spoolss_GetPrinterDriverDirectory *r)
    2831             : {
    2832           0 :         struct tevent_req *req;
    2833           0 :         struct dcerpc_spoolss_GetPrinterDriverDirectory_r_state *state;
    2834           0 :         struct tevent_req *subreq;
    2835             : 
    2836           0 :         req = tevent_req_create(mem_ctx, &state,
    2837             :                                 struct dcerpc_spoolss_GetPrinterDriverDirectory_r_state);
    2838           0 :         if (req == NULL) {
    2839           0 :                 return NULL;
    2840             :         }
    2841             : 
    2842           0 :         state->out_mem_ctx = talloc_new(state);
    2843           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    2844           0 :                 return tevent_req_post(req, ev);
    2845             :         }
    2846             : 
    2847           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    2848             :                         NULL, &ndr_table_spoolss,
    2849           0 :                         NDR_SPOOLSS_GETPRINTERDRIVERDIRECTORY, state->out_mem_ctx, r);
    2850           0 :         if (tevent_req_nomem(subreq, req)) {
    2851           0 :                 return tevent_req_post(req, ev);
    2852             :         }
    2853           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriverDirectory_r_done, req);
    2854             : 
    2855           0 :         return req;
    2856             : }
    2857             : 
    2858           0 : static void dcerpc_spoolss_GetPrinterDriverDirectory_r_done(struct tevent_req *subreq)
    2859             : {
    2860           0 :         struct tevent_req *req =
    2861           0 :                 tevent_req_callback_data(subreq,
    2862             :                 struct tevent_req);
    2863           0 :         NTSTATUS status;
    2864             : 
    2865           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    2866           0 :         TALLOC_FREE(subreq);
    2867           0 :         if (tevent_req_nterror(req, status)) {
    2868           0 :                 return;
    2869             :         }
    2870             : 
    2871           0 :         tevent_req_done(req);
    2872             : }
    2873             : 
    2874           0 : NTSTATUS dcerpc_spoolss_GetPrinterDriverDirectory_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    2875             : {
    2876           0 :         struct dcerpc_spoolss_GetPrinterDriverDirectory_r_state *state =
    2877           0 :                 tevent_req_data(req,
    2878             :                 struct dcerpc_spoolss_GetPrinterDriverDirectory_r_state);
    2879           0 :         NTSTATUS status;
    2880             : 
    2881           0 :         if (tevent_req_is_nterror(req, &status)) {
    2882           0 :                 tevent_req_received(req);
    2883           0 :                 return status;
    2884             :         }
    2885             : 
    2886           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    2887             : 
    2888           0 :         tevent_req_received(req);
    2889           0 :         return NT_STATUS_OK;
    2890             : }
    2891             : 
    2892         168 : NTSTATUS dcerpc_spoolss_GetPrinterDriverDirectory_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDriverDirectory *r)
    2893             : {
    2894           0 :         NTSTATUS status;
    2895             : 
    2896         168 :         status = dcerpc_binding_handle_call(h,
    2897             :                         NULL, &ndr_table_spoolss,
    2898             :                         NDR_SPOOLSS_GETPRINTERDRIVERDIRECTORY, mem_ctx, r);
    2899             : 
    2900         168 :         return status;
    2901             : }
    2902             : 
    2903             : struct dcerpc_spoolss_GetPrinterDriverDirectory_state {
    2904             :         struct spoolss_GetPrinterDriverDirectory orig;
    2905             :         struct spoolss_GetPrinterDriverDirectory tmp;
    2906             :         TALLOC_CTX *out_mem_ctx;
    2907             : };
    2908             : 
    2909             : static void dcerpc_spoolss_GetPrinterDriverDirectory_done(struct tevent_req *subreq);
    2910             : 
    2911           0 : struct tevent_req *dcerpc_spoolss_GetPrinterDriverDirectory_send(TALLOC_CTX *mem_ctx,
    2912             :                                                                  struct tevent_context *ev,
    2913             :                                                                  struct dcerpc_binding_handle *h,
    2914             :                                                                  const char *_server /* [in] [charset(UTF16),unique] */,
    2915             :                                                                  const char *_environment /* [in] [charset(UTF16),unique] */,
    2916             :                                                                  uint32_t _level /* [in]  */,
    2917             :                                                                  DATA_BLOB *_buffer /* [in] [unique] */,
    2918             :                                                                  uint32_t _offered /* [in]  */,
    2919             :                                                                  union spoolss_DriverDirectoryInfo *_info /* [out] [subcontext(4),subcontext_size(offered),switch_is(level),unique] */,
    2920             :                                                                  uint32_t *_needed /* [out] [ref] */)
    2921             : {
    2922           0 :         struct tevent_req *req;
    2923           0 :         struct dcerpc_spoolss_GetPrinterDriverDirectory_state *state;
    2924           0 :         struct tevent_req *subreq;
    2925             : 
    2926           0 :         req = tevent_req_create(mem_ctx, &state,
    2927             :                                 struct dcerpc_spoolss_GetPrinterDriverDirectory_state);
    2928           0 :         if (req == NULL) {
    2929           0 :                 return NULL;
    2930             :         }
    2931           0 :         state->out_mem_ctx = NULL;
    2932             : 
    2933             :         /* In parameters */
    2934           0 :         state->orig.in.server = _server;
    2935           0 :         state->orig.in.environment = _environment;
    2936           0 :         state->orig.in.level = _level;
    2937           0 :         state->orig.in.buffer = _buffer;
    2938           0 :         state->orig.in.offered = _offered;
    2939             : 
    2940             :         /* Out parameters */
    2941           0 :         state->orig.out.info = _info;
    2942           0 :         state->orig.out.needed = _needed;
    2943             : 
    2944             :         /* Result */
    2945           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    2946             : 
    2947           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    2948             :                              "dcerpc_spoolss_GetPrinterDriverDirectory_out_memory");
    2949           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    2950           0 :                 return tevent_req_post(req, ev);
    2951             :         }
    2952             : 
    2953             :         /* make a temporary copy, that we pass to the dispatch function */
    2954           0 :         state->tmp = state->orig;
    2955             : 
    2956           0 :         subreq = dcerpc_spoolss_GetPrinterDriverDirectory_r_send(state, ev, h, &state->tmp);
    2957           0 :         if (tevent_req_nomem(subreq, req)) {
    2958           0 :                 return tevent_req_post(req, ev);
    2959             :         }
    2960           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriverDirectory_done, req);
    2961           0 :         return req;
    2962             : }
    2963             : 
    2964           0 : static void dcerpc_spoolss_GetPrinterDriverDirectory_done(struct tevent_req *subreq)
    2965             : {
    2966           0 :         struct tevent_req *req = tevent_req_callback_data(
    2967             :                 subreq, struct tevent_req);
    2968           0 :         struct dcerpc_spoolss_GetPrinterDriverDirectory_state *state = tevent_req_data(
    2969             :                 req, struct dcerpc_spoolss_GetPrinterDriverDirectory_state);
    2970           0 :         NTSTATUS status;
    2971           0 :         TALLOC_CTX *mem_ctx;
    2972             : 
    2973           0 :         if (state->out_mem_ctx) {
    2974           0 :                 mem_ctx = state->out_mem_ctx;
    2975             :         } else {
    2976           0 :                 mem_ctx = state;
    2977             :         }
    2978             : 
    2979           0 :         status = dcerpc_spoolss_GetPrinterDriverDirectory_r_recv(subreq, mem_ctx);
    2980           0 :         TALLOC_FREE(subreq);
    2981           0 :         if (tevent_req_nterror(req, status)) {
    2982           0 :                 return;
    2983             :         }
    2984             : 
    2985             :         /* Copy out parameters */
    2986           0 :         if (state->orig.out.info && state->tmp.out.info) {
    2987           0 :                 *state->orig.out.info = *state->tmp.out.info;
    2988             :         }
    2989           0 :         *state->orig.out.needed = *state->tmp.out.needed;
    2990             : 
    2991             :         /* Copy result */
    2992           0 :         state->orig.out.result = state->tmp.out.result;
    2993             : 
    2994             :         /* Reset temporary structure */
    2995           0 :         NDR_ZERO_STRUCT(state->tmp);
    2996             : 
    2997           0 :         tevent_req_done(req);
    2998             : }
    2999             : 
    3000           0 : NTSTATUS dcerpc_spoolss_GetPrinterDriverDirectory_recv(struct tevent_req *req,
    3001             :                                                        TALLOC_CTX *mem_ctx,
    3002             :                                                        WERROR *result)
    3003             : {
    3004           0 :         struct dcerpc_spoolss_GetPrinterDriverDirectory_state *state = tevent_req_data(
    3005             :                 req, struct dcerpc_spoolss_GetPrinterDriverDirectory_state);
    3006           0 :         NTSTATUS status;
    3007             : 
    3008           0 :         if (tevent_req_is_nterror(req, &status)) {
    3009           0 :                 tevent_req_received(req);
    3010           0 :                 return status;
    3011             :         }
    3012             : 
    3013             :         /* Steal possible out parameters to the callers context */
    3014           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    3015             : 
    3016             :         /* Return result */
    3017           0 :         *result = state->orig.out.result;
    3018             : 
    3019           0 :         tevent_req_received(req);
    3020           0 :         return NT_STATUS_OK;
    3021             : }
    3022             : 
    3023           0 : NTSTATUS dcerpc_spoolss_GetPrinterDriverDirectory(struct dcerpc_binding_handle *h,
    3024             :                                                   TALLOC_CTX *mem_ctx,
    3025             :                                                   const char *_server /* [in] [charset(UTF16),unique] */,
    3026             :                                                   const char *_environment /* [in] [charset(UTF16),unique] */,
    3027             :                                                   uint32_t _level /* [in]  */,
    3028             :                                                   DATA_BLOB *_buffer /* [in] [unique] */,
    3029             :                                                   uint32_t _offered /* [in]  */,
    3030             :                                                   union spoolss_DriverDirectoryInfo *_info /* [out] [subcontext(4),subcontext_size(offered),switch_is(level),unique] */,
    3031             :                                                   uint32_t *_needed /* [out] [ref] */,
    3032             :                                                   WERROR *result)
    3033             : {
    3034           0 :         struct spoolss_GetPrinterDriverDirectory r;
    3035           0 :         NTSTATUS status;
    3036             : 
    3037             :         /* In parameters */
    3038           0 :         r.in.server = _server;
    3039           0 :         r.in.environment = _environment;
    3040           0 :         r.in.level = _level;
    3041           0 :         r.in.buffer = _buffer;
    3042           0 :         r.in.offered = _offered;
    3043             : 
    3044             :         /* Out parameters */
    3045           0 :         r.out.info = _info;
    3046           0 :         r.out.needed = _needed;
    3047             : 
    3048             :         /* Result */
    3049           0 :         NDR_ZERO_STRUCT(r.out.result);
    3050             : 
    3051           0 :         status = dcerpc_spoolss_GetPrinterDriverDirectory_r(h, mem_ctx, &r);
    3052           0 :         if (!NT_STATUS_IS_OK(status)) {
    3053           0 :                 return status;
    3054             :         }
    3055             : 
    3056             :         /* Return variables */
    3057           0 :         if (_info && r.out.info) {
    3058           0 :                 *_info = *r.out.info;
    3059             :         }
    3060           0 :         *_needed = *r.out.needed;
    3061             : 
    3062             :         /* Return result */
    3063           0 :         *result = r.out.result;
    3064             : 
    3065           0 :         return NT_STATUS_OK;
    3066             : }
    3067             : 
    3068             : struct dcerpc_spoolss_DeletePrinterDriver_r_state {
    3069             :         TALLOC_CTX *out_mem_ctx;
    3070             : };
    3071             : 
    3072             : static void dcerpc_spoolss_DeletePrinterDriver_r_done(struct tevent_req *subreq);
    3073             : 
    3074           0 : struct tevent_req *dcerpc_spoolss_DeletePrinterDriver_r_send(TALLOC_CTX *mem_ctx,
    3075             :         struct tevent_context *ev,
    3076             :         struct dcerpc_binding_handle *h,
    3077             :         struct spoolss_DeletePrinterDriver *r)
    3078             : {
    3079           0 :         struct tevent_req *req;
    3080           0 :         struct dcerpc_spoolss_DeletePrinterDriver_r_state *state;
    3081           0 :         struct tevent_req *subreq;
    3082             : 
    3083           0 :         req = tevent_req_create(mem_ctx, &state,
    3084             :                                 struct dcerpc_spoolss_DeletePrinterDriver_r_state);
    3085           0 :         if (req == NULL) {
    3086           0 :                 return NULL;
    3087             :         }
    3088             : 
    3089           0 :         state->out_mem_ctx = NULL;
    3090             : 
    3091           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    3092             :                         NULL, &ndr_table_spoolss,
    3093             :                         NDR_SPOOLSS_DELETEPRINTERDRIVER, state, r);
    3094           0 :         if (tevent_req_nomem(subreq, req)) {
    3095           0 :                 return tevent_req_post(req, ev);
    3096             :         }
    3097           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterDriver_r_done, req);
    3098             : 
    3099           0 :         return req;
    3100             : }
    3101             : 
    3102           0 : static void dcerpc_spoolss_DeletePrinterDriver_r_done(struct tevent_req *subreq)
    3103             : {
    3104           0 :         struct tevent_req *req =
    3105           0 :                 tevent_req_callback_data(subreq,
    3106             :                 struct tevent_req);
    3107           0 :         NTSTATUS status;
    3108             : 
    3109           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    3110           0 :         TALLOC_FREE(subreq);
    3111           0 :         if (tevent_req_nterror(req, status)) {
    3112           0 :                 return;
    3113             :         }
    3114             : 
    3115           0 :         tevent_req_done(req);
    3116             : }
    3117             : 
    3118           0 : NTSTATUS dcerpc_spoolss_DeletePrinterDriver_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    3119             : {
    3120           0 :         struct dcerpc_spoolss_DeletePrinterDriver_r_state *state =
    3121           0 :                 tevent_req_data(req,
    3122             :                 struct dcerpc_spoolss_DeletePrinterDriver_r_state);
    3123           0 :         NTSTATUS status;
    3124             : 
    3125           0 :         if (tevent_req_is_nterror(req, &status)) {
    3126           0 :                 tevent_req_received(req);
    3127           0 :                 return status;
    3128             :         }
    3129             : 
    3130           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    3131             : 
    3132           0 :         tevent_req_received(req);
    3133           0 :         return NT_STATUS_OK;
    3134             : }
    3135             : 
    3136           0 : NTSTATUS dcerpc_spoolss_DeletePrinterDriver_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterDriver *r)
    3137             : {
    3138           0 :         NTSTATUS status;
    3139             : 
    3140           0 :         status = dcerpc_binding_handle_call(h,
    3141             :                         NULL, &ndr_table_spoolss,
    3142             :                         NDR_SPOOLSS_DELETEPRINTERDRIVER, mem_ctx, r);
    3143             : 
    3144           0 :         return status;
    3145             : }
    3146             : 
    3147             : struct dcerpc_spoolss_DeletePrinterDriver_state {
    3148             :         struct spoolss_DeletePrinterDriver orig;
    3149             :         struct spoolss_DeletePrinterDriver tmp;
    3150             :         TALLOC_CTX *out_mem_ctx;
    3151             : };
    3152             : 
    3153             : static void dcerpc_spoolss_DeletePrinterDriver_done(struct tevent_req *subreq);
    3154             : 
    3155           0 : struct tevent_req *dcerpc_spoolss_DeletePrinterDriver_send(TALLOC_CTX *mem_ctx,
    3156             :                                                            struct tevent_context *ev,
    3157             :                                                            struct dcerpc_binding_handle *h,
    3158             :                                                            const char *_server /* [in] [charset(UTF16),unique] */,
    3159             :                                                            const char *_architecture /* [in] [charset(UTF16)] */,
    3160             :                                                            const char *_driver /* [in] [charset(UTF16)] */)
    3161             : {
    3162           0 :         struct tevent_req *req;
    3163           0 :         struct dcerpc_spoolss_DeletePrinterDriver_state *state;
    3164           0 :         struct tevent_req *subreq;
    3165             : 
    3166           0 :         req = tevent_req_create(mem_ctx, &state,
    3167             :                                 struct dcerpc_spoolss_DeletePrinterDriver_state);
    3168           0 :         if (req == NULL) {
    3169           0 :                 return NULL;
    3170             :         }
    3171           0 :         state->out_mem_ctx = NULL;
    3172             : 
    3173             :         /* In parameters */
    3174           0 :         state->orig.in.server = _server;
    3175           0 :         state->orig.in.architecture = _architecture;
    3176           0 :         state->orig.in.driver = _driver;
    3177             : 
    3178             :         /* Out parameters */
    3179             : 
    3180             :         /* Result */
    3181           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    3182             : 
    3183             :         /* make a temporary copy, that we pass to the dispatch function */
    3184           0 :         state->tmp = state->orig;
    3185             : 
    3186           0 :         subreq = dcerpc_spoolss_DeletePrinterDriver_r_send(state, ev, h, &state->tmp);
    3187           0 :         if (tevent_req_nomem(subreq, req)) {
    3188           0 :                 return tevent_req_post(req, ev);
    3189             :         }
    3190           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterDriver_done, req);
    3191           0 :         return req;
    3192             : }
    3193             : 
    3194           0 : static void dcerpc_spoolss_DeletePrinterDriver_done(struct tevent_req *subreq)
    3195             : {
    3196           0 :         struct tevent_req *req = tevent_req_callback_data(
    3197             :                 subreq, struct tevent_req);
    3198           0 :         struct dcerpc_spoolss_DeletePrinterDriver_state *state = tevent_req_data(
    3199             :                 req, struct dcerpc_spoolss_DeletePrinterDriver_state);
    3200           0 :         NTSTATUS status;
    3201           0 :         TALLOC_CTX *mem_ctx;
    3202             : 
    3203           0 :         if (state->out_mem_ctx) {
    3204           0 :                 mem_ctx = state->out_mem_ctx;
    3205             :         } else {
    3206           0 :                 mem_ctx = state;
    3207             :         }
    3208             : 
    3209           0 :         status = dcerpc_spoolss_DeletePrinterDriver_r_recv(subreq, mem_ctx);
    3210           0 :         TALLOC_FREE(subreq);
    3211           0 :         if (tevent_req_nterror(req, status)) {
    3212           0 :                 return;
    3213             :         }
    3214             : 
    3215             :         /* Copy out parameters */
    3216             : 
    3217             :         /* Copy result */
    3218           0 :         state->orig.out.result = state->tmp.out.result;
    3219             : 
    3220             :         /* Reset temporary structure */
    3221           0 :         NDR_ZERO_STRUCT(state->tmp);
    3222             : 
    3223           0 :         tevent_req_done(req);
    3224             : }
    3225             : 
    3226           0 : NTSTATUS dcerpc_spoolss_DeletePrinterDriver_recv(struct tevent_req *req,
    3227             :                                                  TALLOC_CTX *mem_ctx,
    3228             :                                                  WERROR *result)
    3229             : {
    3230           0 :         struct dcerpc_spoolss_DeletePrinterDriver_state *state = tevent_req_data(
    3231             :                 req, struct dcerpc_spoolss_DeletePrinterDriver_state);
    3232           0 :         NTSTATUS status;
    3233             : 
    3234           0 :         if (tevent_req_is_nterror(req, &status)) {
    3235           0 :                 tevent_req_received(req);
    3236           0 :                 return status;
    3237             :         }
    3238             : 
    3239             :         /* Steal possible out parameters to the callers context */
    3240           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    3241             : 
    3242             :         /* Return result */
    3243           0 :         *result = state->orig.out.result;
    3244             : 
    3245           0 :         tevent_req_received(req);
    3246           0 :         return NT_STATUS_OK;
    3247             : }
    3248             : 
    3249           0 : NTSTATUS dcerpc_spoolss_DeletePrinterDriver(struct dcerpc_binding_handle *h,
    3250             :                                             TALLOC_CTX *mem_ctx,
    3251             :                                             const char *_server /* [in] [charset(UTF16),unique] */,
    3252             :                                             const char *_architecture /* [in] [charset(UTF16)] */,
    3253             :                                             const char *_driver /* [in] [charset(UTF16)] */,
    3254             :                                             WERROR *result)
    3255             : {
    3256           0 :         struct spoolss_DeletePrinterDriver r;
    3257           0 :         NTSTATUS status;
    3258             : 
    3259             :         /* In parameters */
    3260           0 :         r.in.server = _server;
    3261           0 :         r.in.architecture = _architecture;
    3262           0 :         r.in.driver = _driver;
    3263             : 
    3264             :         /* Out parameters */
    3265             : 
    3266             :         /* Result */
    3267           0 :         NDR_ZERO_STRUCT(r.out.result);
    3268             : 
    3269           0 :         status = dcerpc_spoolss_DeletePrinterDriver_r(h, mem_ctx, &r);
    3270           0 :         if (!NT_STATUS_IS_OK(status)) {
    3271           0 :                 return status;
    3272             :         }
    3273             : 
    3274             :         /* Return variables */
    3275             : 
    3276             :         /* Return result */
    3277           0 :         *result = r.out.result;
    3278             : 
    3279           0 :         return NT_STATUS_OK;
    3280             : }
    3281             : 
    3282             : struct dcerpc_spoolss_AddPrintProcessor_r_state {
    3283             :         TALLOC_CTX *out_mem_ctx;
    3284             : };
    3285             : 
    3286             : static void dcerpc_spoolss_AddPrintProcessor_r_done(struct tevent_req *subreq);
    3287             : 
    3288           0 : struct tevent_req *dcerpc_spoolss_AddPrintProcessor_r_send(TALLOC_CTX *mem_ctx,
    3289             :         struct tevent_context *ev,
    3290             :         struct dcerpc_binding_handle *h,
    3291             :         struct spoolss_AddPrintProcessor *r)
    3292             : {
    3293           0 :         struct tevent_req *req;
    3294           0 :         struct dcerpc_spoolss_AddPrintProcessor_r_state *state;
    3295           0 :         struct tevent_req *subreq;
    3296             : 
    3297           0 :         req = tevent_req_create(mem_ctx, &state,
    3298             :                                 struct dcerpc_spoolss_AddPrintProcessor_r_state);
    3299           0 :         if (req == NULL) {
    3300           0 :                 return NULL;
    3301             :         }
    3302             : 
    3303           0 :         state->out_mem_ctx = NULL;
    3304             : 
    3305           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    3306             :                         NULL, &ndr_table_spoolss,
    3307             :                         NDR_SPOOLSS_ADDPRINTPROCESSOR, state, r);
    3308           0 :         if (tevent_req_nomem(subreq, req)) {
    3309           0 :                 return tevent_req_post(req, ev);
    3310             :         }
    3311           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrintProcessor_r_done, req);
    3312             : 
    3313           0 :         return req;
    3314             : }
    3315             : 
    3316           0 : static void dcerpc_spoolss_AddPrintProcessor_r_done(struct tevent_req *subreq)
    3317             : {
    3318           0 :         struct tevent_req *req =
    3319           0 :                 tevent_req_callback_data(subreq,
    3320             :                 struct tevent_req);
    3321           0 :         NTSTATUS status;
    3322             : 
    3323           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    3324           0 :         TALLOC_FREE(subreq);
    3325           0 :         if (tevent_req_nterror(req, status)) {
    3326           0 :                 return;
    3327             :         }
    3328             : 
    3329           0 :         tevent_req_done(req);
    3330             : }
    3331             : 
    3332           0 : NTSTATUS dcerpc_spoolss_AddPrintProcessor_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    3333             : {
    3334           0 :         struct dcerpc_spoolss_AddPrintProcessor_r_state *state =
    3335           0 :                 tevent_req_data(req,
    3336             :                 struct dcerpc_spoolss_AddPrintProcessor_r_state);
    3337           0 :         NTSTATUS status;
    3338             : 
    3339           0 :         if (tevent_req_is_nterror(req, &status)) {
    3340           0 :                 tevent_req_received(req);
    3341           0 :                 return status;
    3342             :         }
    3343             : 
    3344           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    3345             : 
    3346           0 :         tevent_req_received(req);
    3347           0 :         return NT_STATUS_OK;
    3348             : }
    3349             : 
    3350           4 : NTSTATUS dcerpc_spoolss_AddPrintProcessor_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPrintProcessor *r)
    3351             : {
    3352           0 :         NTSTATUS status;
    3353             : 
    3354           4 :         status = dcerpc_binding_handle_call(h,
    3355             :                         NULL, &ndr_table_spoolss,
    3356             :                         NDR_SPOOLSS_ADDPRINTPROCESSOR, mem_ctx, r);
    3357             : 
    3358           4 :         return status;
    3359             : }
    3360             : 
    3361             : struct dcerpc_spoolss_AddPrintProcessor_state {
    3362             :         struct spoolss_AddPrintProcessor orig;
    3363             :         struct spoolss_AddPrintProcessor tmp;
    3364             :         TALLOC_CTX *out_mem_ctx;
    3365             : };
    3366             : 
    3367             : static void dcerpc_spoolss_AddPrintProcessor_done(struct tevent_req *subreq);
    3368             : 
    3369           0 : struct tevent_req *dcerpc_spoolss_AddPrintProcessor_send(TALLOC_CTX *mem_ctx,
    3370             :                                                          struct tevent_context *ev,
    3371             :                                                          struct dcerpc_binding_handle *h,
    3372             :                                                          const char *_server /* [in] [charset(UTF16),unique] */,
    3373             :                                                          const char *_architecture /* [in] [charset(UTF16)] */,
    3374             :                                                          const char *_path_name /* [in] [charset(UTF16)] */,
    3375             :                                                          const char *_print_processor_name /* [in] [charset(UTF16)] */)
    3376             : {
    3377           0 :         struct tevent_req *req;
    3378           0 :         struct dcerpc_spoolss_AddPrintProcessor_state *state;
    3379           0 :         struct tevent_req *subreq;
    3380             : 
    3381           0 :         req = tevent_req_create(mem_ctx, &state,
    3382             :                                 struct dcerpc_spoolss_AddPrintProcessor_state);
    3383           0 :         if (req == NULL) {
    3384           0 :                 return NULL;
    3385             :         }
    3386           0 :         state->out_mem_ctx = NULL;
    3387             : 
    3388             :         /* In parameters */
    3389           0 :         state->orig.in.server = _server;
    3390           0 :         state->orig.in.architecture = _architecture;
    3391           0 :         state->orig.in.path_name = _path_name;
    3392           0 :         state->orig.in.print_processor_name = _print_processor_name;
    3393             : 
    3394             :         /* Out parameters */
    3395             : 
    3396             :         /* Result */
    3397           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    3398             : 
    3399             :         /* make a temporary copy, that we pass to the dispatch function */
    3400           0 :         state->tmp = state->orig;
    3401             : 
    3402           0 :         subreq = dcerpc_spoolss_AddPrintProcessor_r_send(state, ev, h, &state->tmp);
    3403           0 :         if (tevent_req_nomem(subreq, req)) {
    3404           0 :                 return tevent_req_post(req, ev);
    3405             :         }
    3406           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrintProcessor_done, req);
    3407           0 :         return req;
    3408             : }
    3409             : 
    3410           0 : static void dcerpc_spoolss_AddPrintProcessor_done(struct tevent_req *subreq)
    3411             : {
    3412           0 :         struct tevent_req *req = tevent_req_callback_data(
    3413             :                 subreq, struct tevent_req);
    3414           0 :         struct dcerpc_spoolss_AddPrintProcessor_state *state = tevent_req_data(
    3415             :                 req, struct dcerpc_spoolss_AddPrintProcessor_state);
    3416           0 :         NTSTATUS status;
    3417           0 :         TALLOC_CTX *mem_ctx;
    3418             : 
    3419           0 :         if (state->out_mem_ctx) {
    3420           0 :                 mem_ctx = state->out_mem_ctx;
    3421             :         } else {
    3422           0 :                 mem_ctx = state;
    3423             :         }
    3424             : 
    3425           0 :         status = dcerpc_spoolss_AddPrintProcessor_r_recv(subreq, mem_ctx);
    3426           0 :         TALLOC_FREE(subreq);
    3427           0 :         if (tevent_req_nterror(req, status)) {
    3428           0 :                 return;
    3429             :         }
    3430             : 
    3431             :         /* Copy out parameters */
    3432             : 
    3433             :         /* Copy result */
    3434           0 :         state->orig.out.result = state->tmp.out.result;
    3435             : 
    3436             :         /* Reset temporary structure */
    3437           0 :         NDR_ZERO_STRUCT(state->tmp);
    3438             : 
    3439           0 :         tevent_req_done(req);
    3440             : }
    3441             : 
    3442           0 : NTSTATUS dcerpc_spoolss_AddPrintProcessor_recv(struct tevent_req *req,
    3443             :                                                TALLOC_CTX *mem_ctx,
    3444             :                                                WERROR *result)
    3445             : {
    3446           0 :         struct dcerpc_spoolss_AddPrintProcessor_state *state = tevent_req_data(
    3447             :                 req, struct dcerpc_spoolss_AddPrintProcessor_state);
    3448           0 :         NTSTATUS status;
    3449             : 
    3450           0 :         if (tevent_req_is_nterror(req, &status)) {
    3451           0 :                 tevent_req_received(req);
    3452           0 :                 return status;
    3453             :         }
    3454             : 
    3455             :         /* Steal possible out parameters to the callers context */
    3456           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    3457             : 
    3458             :         /* Return result */
    3459           0 :         *result = state->orig.out.result;
    3460             : 
    3461           0 :         tevent_req_received(req);
    3462           0 :         return NT_STATUS_OK;
    3463             : }
    3464             : 
    3465           0 : NTSTATUS dcerpc_spoolss_AddPrintProcessor(struct dcerpc_binding_handle *h,
    3466             :                                           TALLOC_CTX *mem_ctx,
    3467             :                                           const char *_server /* [in] [charset(UTF16),unique] */,
    3468             :                                           const char *_architecture /* [in] [charset(UTF16)] */,
    3469             :                                           const char *_path_name /* [in] [charset(UTF16)] */,
    3470             :                                           const char *_print_processor_name /* [in] [charset(UTF16)] */,
    3471             :                                           WERROR *result)
    3472             : {
    3473           0 :         struct spoolss_AddPrintProcessor r;
    3474           0 :         NTSTATUS status;
    3475             : 
    3476             :         /* In parameters */
    3477           0 :         r.in.server = _server;
    3478           0 :         r.in.architecture = _architecture;
    3479           0 :         r.in.path_name = _path_name;
    3480           0 :         r.in.print_processor_name = _print_processor_name;
    3481             : 
    3482             :         /* Out parameters */
    3483             : 
    3484             :         /* Result */
    3485           0 :         NDR_ZERO_STRUCT(r.out.result);
    3486             : 
    3487           0 :         status = dcerpc_spoolss_AddPrintProcessor_r(h, mem_ctx, &r);
    3488           0 :         if (!NT_STATUS_IS_OK(status)) {
    3489           0 :                 return status;
    3490             :         }
    3491             : 
    3492             :         /* Return variables */
    3493             : 
    3494             :         /* Return result */
    3495           0 :         *result = r.out.result;
    3496             : 
    3497           0 :         return NT_STATUS_OK;
    3498             : }
    3499             : 
    3500             : struct dcerpc_spoolss_EnumPrintProcessors_r_state {
    3501             :         TALLOC_CTX *out_mem_ctx;
    3502             : };
    3503             : 
    3504             : static void dcerpc_spoolss_EnumPrintProcessors_r_done(struct tevent_req *subreq);
    3505             : 
    3506           0 : struct tevent_req *dcerpc_spoolss_EnumPrintProcessors_r_send(TALLOC_CTX *mem_ctx,
    3507             :         struct tevent_context *ev,
    3508             :         struct dcerpc_binding_handle *h,
    3509             :         struct spoolss_EnumPrintProcessors *r)
    3510             : {
    3511           0 :         struct tevent_req *req;
    3512           0 :         struct dcerpc_spoolss_EnumPrintProcessors_r_state *state;
    3513           0 :         struct tevent_req *subreq;
    3514             : 
    3515           0 :         req = tevent_req_create(mem_ctx, &state,
    3516             :                                 struct dcerpc_spoolss_EnumPrintProcessors_r_state);
    3517           0 :         if (req == NULL) {
    3518           0 :                 return NULL;
    3519             :         }
    3520             : 
    3521           0 :         state->out_mem_ctx = talloc_new(state);
    3522           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    3523           0 :                 return tevent_req_post(req, ev);
    3524             :         }
    3525             : 
    3526           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    3527             :                         NULL, &ndr_table_spoolss,
    3528           0 :                         NDR_SPOOLSS_ENUMPRINTPROCESSORS, state->out_mem_ctx, r);
    3529           0 :         if (tevent_req_nomem(subreq, req)) {
    3530           0 :                 return tevent_req_post(req, ev);
    3531             :         }
    3532           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrintProcessors_r_done, req);
    3533             : 
    3534           0 :         return req;
    3535             : }
    3536             : 
    3537           0 : static void dcerpc_spoolss_EnumPrintProcessors_r_done(struct tevent_req *subreq)
    3538             : {
    3539           0 :         struct tevent_req *req =
    3540           0 :                 tevent_req_callback_data(subreq,
    3541             :                 struct tevent_req);
    3542           0 :         NTSTATUS status;
    3543             : 
    3544           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    3545           0 :         TALLOC_FREE(subreq);
    3546           0 :         if (tevent_req_nterror(req, status)) {
    3547           0 :                 return;
    3548             :         }
    3549             : 
    3550           0 :         tevent_req_done(req);
    3551             : }
    3552             : 
    3553           0 : NTSTATUS dcerpc_spoolss_EnumPrintProcessors_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    3554             : {
    3555           0 :         struct dcerpc_spoolss_EnumPrintProcessors_r_state *state =
    3556           0 :                 tevent_req_data(req,
    3557             :                 struct dcerpc_spoolss_EnumPrintProcessors_r_state);
    3558           0 :         NTSTATUS status;
    3559             : 
    3560           0 :         if (tevent_req_is_nterror(req, &status)) {
    3561           0 :                 tevent_req_received(req);
    3562           0 :                 return status;
    3563             :         }
    3564             : 
    3565           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    3566             : 
    3567           0 :         tevent_req_received(req);
    3568           0 :         return NT_STATUS_OK;
    3569             : }
    3570             : 
    3571          48 : NTSTATUS dcerpc_spoolss_EnumPrintProcessors_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrintProcessors *r)
    3572             : {
    3573           0 :         NTSTATUS status;
    3574             : 
    3575          48 :         status = dcerpc_binding_handle_call(h,
    3576             :                         NULL, &ndr_table_spoolss,
    3577             :                         NDR_SPOOLSS_ENUMPRINTPROCESSORS, mem_ctx, r);
    3578             : 
    3579          48 :         return status;
    3580             : }
    3581             : 
    3582             : struct dcerpc_spoolss_EnumPrintProcessors_state {
    3583             :         struct spoolss_EnumPrintProcessors orig;
    3584             :         struct spoolss_EnumPrintProcessors tmp;
    3585             :         TALLOC_CTX *out_mem_ctx;
    3586             : };
    3587             : 
    3588             : static void dcerpc_spoolss_EnumPrintProcessors_done(struct tevent_req *subreq);
    3589             : 
    3590           0 : struct tevent_req *dcerpc_spoolss_EnumPrintProcessors_send(TALLOC_CTX *mem_ctx,
    3591             :                                                            struct tevent_context *ev,
    3592             :                                                            struct dcerpc_binding_handle *h,
    3593             :                                                            const char *_servername /* [in] [charset(UTF16),unique] */,
    3594             :                                                            const char *_environment /* [in] [charset(UTF16),unique] */,
    3595             :                                                            uint32_t _level /* [in]  */,
    3596             :                                                            DATA_BLOB *_buffer /* [in] [unique] */,
    3597             :                                                            uint32_t _offered /* [in]  */,
    3598             :                                                            uint32_t *_count /* [out] [ref] */,
    3599             :                                                            union spoolss_PrintProcessorInfo **_info /* [out] [ref,size_is(,*count),switch_is(level)] */,
    3600             :                                                            uint32_t *_needed /* [out] [ref] */)
    3601             : {
    3602           0 :         struct tevent_req *req;
    3603           0 :         struct dcerpc_spoolss_EnumPrintProcessors_state *state;
    3604           0 :         struct tevent_req *subreq;
    3605             : 
    3606           0 :         req = tevent_req_create(mem_ctx, &state,
    3607             :                                 struct dcerpc_spoolss_EnumPrintProcessors_state);
    3608           0 :         if (req == NULL) {
    3609           0 :                 return NULL;
    3610             :         }
    3611           0 :         state->out_mem_ctx = NULL;
    3612             : 
    3613             :         /* In parameters */
    3614           0 :         state->orig.in.servername = _servername;
    3615           0 :         state->orig.in.environment = _environment;
    3616           0 :         state->orig.in.level = _level;
    3617           0 :         state->orig.in.buffer = _buffer;
    3618           0 :         state->orig.in.offered = _offered;
    3619             : 
    3620             :         /* Out parameters */
    3621           0 :         state->orig.out.count = _count;
    3622           0 :         state->orig.out.info = _info;
    3623           0 :         state->orig.out.needed = _needed;
    3624             : 
    3625             :         /* Result */
    3626           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    3627             : 
    3628           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    3629             :                              "dcerpc_spoolss_EnumPrintProcessors_out_memory");
    3630           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    3631           0 :                 return tevent_req_post(req, ev);
    3632             :         }
    3633             : 
    3634             :         /* make a temporary copy, that we pass to the dispatch function */
    3635           0 :         state->tmp = state->orig;
    3636             : 
    3637           0 :         subreq = dcerpc_spoolss_EnumPrintProcessors_r_send(state, ev, h, &state->tmp);
    3638           0 :         if (tevent_req_nomem(subreq, req)) {
    3639           0 :                 return tevent_req_post(req, ev);
    3640             :         }
    3641           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrintProcessors_done, req);
    3642           0 :         return req;
    3643             : }
    3644             : 
    3645           0 : static void dcerpc_spoolss_EnumPrintProcessors_done(struct tevent_req *subreq)
    3646             : {
    3647           0 :         struct tevent_req *req = tevent_req_callback_data(
    3648             :                 subreq, struct tevent_req);
    3649           0 :         struct dcerpc_spoolss_EnumPrintProcessors_state *state = tevent_req_data(
    3650             :                 req, struct dcerpc_spoolss_EnumPrintProcessors_state);
    3651           0 :         NTSTATUS status;
    3652           0 :         TALLOC_CTX *mem_ctx;
    3653             : 
    3654           0 :         if (state->out_mem_ctx) {
    3655           0 :                 mem_ctx = state->out_mem_ctx;
    3656             :         } else {
    3657           0 :                 mem_ctx = state;
    3658             :         }
    3659             : 
    3660           0 :         status = dcerpc_spoolss_EnumPrintProcessors_r_recv(subreq, mem_ctx);
    3661           0 :         TALLOC_FREE(subreq);
    3662           0 :         if (tevent_req_nterror(req, status)) {
    3663           0 :                 return;
    3664             :         }
    3665             : 
    3666             :         /* Copy out parameters */
    3667           0 :         *state->orig.out.count = *state->tmp.out.count;
    3668           0 :         *state->orig.out.info = *state->tmp.out.info;
    3669           0 :         *state->orig.out.needed = *state->tmp.out.needed;
    3670             : 
    3671             :         /* Copy result */
    3672           0 :         state->orig.out.result = state->tmp.out.result;
    3673             : 
    3674             :         /* Reset temporary structure */
    3675           0 :         NDR_ZERO_STRUCT(state->tmp);
    3676             : 
    3677           0 :         tevent_req_done(req);
    3678             : }
    3679             : 
    3680           0 : NTSTATUS dcerpc_spoolss_EnumPrintProcessors_recv(struct tevent_req *req,
    3681             :                                                  TALLOC_CTX *mem_ctx,
    3682             :                                                  WERROR *result)
    3683             : {
    3684           0 :         struct dcerpc_spoolss_EnumPrintProcessors_state *state = tevent_req_data(
    3685             :                 req, struct dcerpc_spoolss_EnumPrintProcessors_state);
    3686           0 :         NTSTATUS status;
    3687             : 
    3688           0 :         if (tevent_req_is_nterror(req, &status)) {
    3689           0 :                 tevent_req_received(req);
    3690           0 :                 return status;
    3691             :         }
    3692             : 
    3693             :         /* Steal possible out parameters to the callers context */
    3694           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    3695             : 
    3696             :         /* Return result */
    3697           0 :         *result = state->orig.out.result;
    3698             : 
    3699           0 :         tevent_req_received(req);
    3700           0 :         return NT_STATUS_OK;
    3701             : }
    3702             : 
    3703           0 : NTSTATUS dcerpc_spoolss_EnumPrintProcessors(struct dcerpc_binding_handle *h,
    3704             :                                             TALLOC_CTX *mem_ctx,
    3705             :                                             const char *_servername /* [in] [charset(UTF16),unique] */,
    3706             :                                             const char *_environment /* [in] [charset(UTF16),unique] */,
    3707             :                                             uint32_t _level /* [in]  */,
    3708             :                                             DATA_BLOB *_buffer /* [in] [unique] */,
    3709             :                                             uint32_t _offered /* [in]  */,
    3710             :                                             uint32_t *_count /* [out] [ref] */,
    3711             :                                             union spoolss_PrintProcessorInfo **_info /* [out] [ref,size_is(,*count),switch_is(level)] */,
    3712             :                                             uint32_t *_needed /* [out] [ref] */,
    3713             :                                             WERROR *result)
    3714             : {
    3715           0 :         struct spoolss_EnumPrintProcessors r;
    3716           0 :         NTSTATUS status;
    3717             : 
    3718             :         /* In parameters */
    3719           0 :         r.in.servername = _servername;
    3720           0 :         r.in.environment = _environment;
    3721           0 :         r.in.level = _level;
    3722           0 :         r.in.buffer = _buffer;
    3723           0 :         r.in.offered = _offered;
    3724             : 
    3725             :         /* Out parameters */
    3726           0 :         r.out.count = _count;
    3727           0 :         r.out.info = _info;
    3728           0 :         r.out.needed = _needed;
    3729             : 
    3730             :         /* Result */
    3731           0 :         NDR_ZERO_STRUCT(r.out.result);
    3732             : 
    3733           0 :         status = dcerpc_spoolss_EnumPrintProcessors_r(h, mem_ctx, &r);
    3734           0 :         if (!NT_STATUS_IS_OK(status)) {
    3735           0 :                 return status;
    3736             :         }
    3737             : 
    3738             :         /* Return variables */
    3739           0 :         *_count = *r.out.count;
    3740           0 :         *_info = *r.out.info;
    3741           0 :         *_needed = *r.out.needed;
    3742             : 
    3743             :         /* Return result */
    3744           0 :         *result = r.out.result;
    3745             : 
    3746           0 :         return NT_STATUS_OK;
    3747             : }
    3748             : 
    3749             : struct dcerpc_spoolss_GetPrintProcessorDirectory_r_state {
    3750             :         TALLOC_CTX *out_mem_ctx;
    3751             : };
    3752             : 
    3753             : static void dcerpc_spoolss_GetPrintProcessorDirectory_r_done(struct tevent_req *subreq);
    3754             : 
    3755           0 : struct tevent_req *dcerpc_spoolss_GetPrintProcessorDirectory_r_send(TALLOC_CTX *mem_ctx,
    3756             :         struct tevent_context *ev,
    3757             :         struct dcerpc_binding_handle *h,
    3758             :         struct spoolss_GetPrintProcessorDirectory *r)
    3759             : {
    3760           0 :         struct tevent_req *req;
    3761           0 :         struct dcerpc_spoolss_GetPrintProcessorDirectory_r_state *state;
    3762           0 :         struct tevent_req *subreq;
    3763             : 
    3764           0 :         req = tevent_req_create(mem_ctx, &state,
    3765             :                                 struct dcerpc_spoolss_GetPrintProcessorDirectory_r_state);
    3766           0 :         if (req == NULL) {
    3767           0 :                 return NULL;
    3768             :         }
    3769             : 
    3770           0 :         state->out_mem_ctx = talloc_new(state);
    3771           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    3772           0 :                 return tevent_req_post(req, ev);
    3773             :         }
    3774             : 
    3775           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    3776             :                         NULL, &ndr_table_spoolss,
    3777           0 :                         NDR_SPOOLSS_GETPRINTPROCESSORDIRECTORY, state->out_mem_ctx, r);
    3778           0 :         if (tevent_req_nomem(subreq, req)) {
    3779           0 :                 return tevent_req_post(req, ev);
    3780             :         }
    3781           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrintProcessorDirectory_r_done, req);
    3782             : 
    3783           0 :         return req;
    3784             : }
    3785             : 
    3786           0 : static void dcerpc_spoolss_GetPrintProcessorDirectory_r_done(struct tevent_req *subreq)
    3787             : {
    3788           0 :         struct tevent_req *req =
    3789           0 :                 tevent_req_callback_data(subreq,
    3790             :                 struct tevent_req);
    3791           0 :         NTSTATUS status;
    3792             : 
    3793           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    3794           0 :         TALLOC_FREE(subreq);
    3795           0 :         if (tevent_req_nterror(req, status)) {
    3796           0 :                 return;
    3797             :         }
    3798             : 
    3799           0 :         tevent_req_done(req);
    3800             : }
    3801             : 
    3802           0 : NTSTATUS dcerpc_spoolss_GetPrintProcessorDirectory_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    3803             : {
    3804           0 :         struct dcerpc_spoolss_GetPrintProcessorDirectory_r_state *state =
    3805           0 :                 tevent_req_data(req,
    3806             :                 struct dcerpc_spoolss_GetPrintProcessorDirectory_r_state);
    3807           0 :         NTSTATUS status;
    3808             : 
    3809           0 :         if (tevent_req_is_nterror(req, &status)) {
    3810           0 :                 tevent_req_received(req);
    3811           0 :                 return status;
    3812             :         }
    3813             : 
    3814           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    3815             : 
    3816           0 :         tevent_req_received(req);
    3817           0 :         return NT_STATUS_OK;
    3818             : }
    3819             : 
    3820          40 : NTSTATUS dcerpc_spoolss_GetPrintProcessorDirectory_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrintProcessorDirectory *r)
    3821             : {
    3822           0 :         NTSTATUS status;
    3823             : 
    3824          40 :         status = dcerpc_binding_handle_call(h,
    3825             :                         NULL, &ndr_table_spoolss,
    3826             :                         NDR_SPOOLSS_GETPRINTPROCESSORDIRECTORY, mem_ctx, r);
    3827             : 
    3828          40 :         return status;
    3829             : }
    3830             : 
    3831             : struct dcerpc_spoolss_GetPrintProcessorDirectory_state {
    3832             :         struct spoolss_GetPrintProcessorDirectory orig;
    3833             :         struct spoolss_GetPrintProcessorDirectory tmp;
    3834             :         TALLOC_CTX *out_mem_ctx;
    3835             : };
    3836             : 
    3837             : static void dcerpc_spoolss_GetPrintProcessorDirectory_done(struct tevent_req *subreq);
    3838             : 
    3839           0 : struct tevent_req *dcerpc_spoolss_GetPrintProcessorDirectory_send(TALLOC_CTX *mem_ctx,
    3840             :                                                                   struct tevent_context *ev,
    3841             :                                                                   struct dcerpc_binding_handle *h,
    3842             :                                                                   const char *_server /* [in] [charset(UTF16),unique] */,
    3843             :                                                                   const char *_environment /* [in] [charset(UTF16),unique] */,
    3844             :                                                                   uint32_t _level /* [in]  */,
    3845             :                                                                   DATA_BLOB *_buffer /* [in] [unique] */,
    3846             :                                                                   uint32_t _offered /* [in]  */,
    3847             :                                                                   union spoolss_PrintProcessorDirectoryInfo *_info /* [out] [subcontext(4),subcontext_size(offered),switch_is(level),unique] */,
    3848             :                                                                   uint32_t *_needed /* [out] [ref] */)
    3849             : {
    3850           0 :         struct tevent_req *req;
    3851           0 :         struct dcerpc_spoolss_GetPrintProcessorDirectory_state *state;
    3852           0 :         struct tevent_req *subreq;
    3853             : 
    3854           0 :         req = tevent_req_create(mem_ctx, &state,
    3855             :                                 struct dcerpc_spoolss_GetPrintProcessorDirectory_state);
    3856           0 :         if (req == NULL) {
    3857           0 :                 return NULL;
    3858             :         }
    3859           0 :         state->out_mem_ctx = NULL;
    3860             : 
    3861             :         /* In parameters */
    3862           0 :         state->orig.in.server = _server;
    3863           0 :         state->orig.in.environment = _environment;
    3864           0 :         state->orig.in.level = _level;
    3865           0 :         state->orig.in.buffer = _buffer;
    3866           0 :         state->orig.in.offered = _offered;
    3867             : 
    3868             :         /* Out parameters */
    3869           0 :         state->orig.out.info = _info;
    3870           0 :         state->orig.out.needed = _needed;
    3871             : 
    3872             :         /* Result */
    3873           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    3874             : 
    3875           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    3876             :                              "dcerpc_spoolss_GetPrintProcessorDirectory_out_memory");
    3877           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    3878           0 :                 return tevent_req_post(req, ev);
    3879             :         }
    3880             : 
    3881             :         /* make a temporary copy, that we pass to the dispatch function */
    3882           0 :         state->tmp = state->orig;
    3883             : 
    3884           0 :         subreq = dcerpc_spoolss_GetPrintProcessorDirectory_r_send(state, ev, h, &state->tmp);
    3885           0 :         if (tevent_req_nomem(subreq, req)) {
    3886           0 :                 return tevent_req_post(req, ev);
    3887             :         }
    3888           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrintProcessorDirectory_done, req);
    3889           0 :         return req;
    3890             : }
    3891             : 
    3892           0 : static void dcerpc_spoolss_GetPrintProcessorDirectory_done(struct tevent_req *subreq)
    3893             : {
    3894           0 :         struct tevent_req *req = tevent_req_callback_data(
    3895             :                 subreq, struct tevent_req);
    3896           0 :         struct dcerpc_spoolss_GetPrintProcessorDirectory_state *state = tevent_req_data(
    3897             :                 req, struct dcerpc_spoolss_GetPrintProcessorDirectory_state);
    3898           0 :         NTSTATUS status;
    3899           0 :         TALLOC_CTX *mem_ctx;
    3900             : 
    3901           0 :         if (state->out_mem_ctx) {
    3902           0 :                 mem_ctx = state->out_mem_ctx;
    3903             :         } else {
    3904           0 :                 mem_ctx = state;
    3905             :         }
    3906             : 
    3907           0 :         status = dcerpc_spoolss_GetPrintProcessorDirectory_r_recv(subreq, mem_ctx);
    3908           0 :         TALLOC_FREE(subreq);
    3909           0 :         if (tevent_req_nterror(req, status)) {
    3910           0 :                 return;
    3911             :         }
    3912             : 
    3913             :         /* Copy out parameters */
    3914           0 :         if (state->orig.out.info && state->tmp.out.info) {
    3915           0 :                 *state->orig.out.info = *state->tmp.out.info;
    3916             :         }
    3917           0 :         *state->orig.out.needed = *state->tmp.out.needed;
    3918             : 
    3919             :         /* Copy result */
    3920           0 :         state->orig.out.result = state->tmp.out.result;
    3921             : 
    3922             :         /* Reset temporary structure */
    3923           0 :         NDR_ZERO_STRUCT(state->tmp);
    3924             : 
    3925           0 :         tevent_req_done(req);
    3926             : }
    3927             : 
    3928           0 : NTSTATUS dcerpc_spoolss_GetPrintProcessorDirectory_recv(struct tevent_req *req,
    3929             :                                                         TALLOC_CTX *mem_ctx,
    3930             :                                                         WERROR *result)
    3931             : {
    3932           0 :         struct dcerpc_spoolss_GetPrintProcessorDirectory_state *state = tevent_req_data(
    3933             :                 req, struct dcerpc_spoolss_GetPrintProcessorDirectory_state);
    3934           0 :         NTSTATUS status;
    3935             : 
    3936           0 :         if (tevent_req_is_nterror(req, &status)) {
    3937           0 :                 tevent_req_received(req);
    3938           0 :                 return status;
    3939             :         }
    3940             : 
    3941             :         /* Steal possible out parameters to the callers context */
    3942           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    3943             : 
    3944             :         /* Return result */
    3945           0 :         *result = state->orig.out.result;
    3946             : 
    3947           0 :         tevent_req_received(req);
    3948           0 :         return NT_STATUS_OK;
    3949             : }
    3950             : 
    3951           0 : NTSTATUS dcerpc_spoolss_GetPrintProcessorDirectory(struct dcerpc_binding_handle *h,
    3952             :                                                    TALLOC_CTX *mem_ctx,
    3953             :                                                    const char *_server /* [in] [charset(UTF16),unique] */,
    3954             :                                                    const char *_environment /* [in] [charset(UTF16),unique] */,
    3955             :                                                    uint32_t _level /* [in]  */,
    3956             :                                                    DATA_BLOB *_buffer /* [in] [unique] */,
    3957             :                                                    uint32_t _offered /* [in]  */,
    3958             :                                                    union spoolss_PrintProcessorDirectoryInfo *_info /* [out] [subcontext(4),subcontext_size(offered),switch_is(level),unique] */,
    3959             :                                                    uint32_t *_needed /* [out] [ref] */,
    3960             :                                                    WERROR *result)
    3961             : {
    3962           0 :         struct spoolss_GetPrintProcessorDirectory r;
    3963           0 :         NTSTATUS status;
    3964             : 
    3965             :         /* In parameters */
    3966           0 :         r.in.server = _server;
    3967           0 :         r.in.environment = _environment;
    3968           0 :         r.in.level = _level;
    3969           0 :         r.in.buffer = _buffer;
    3970           0 :         r.in.offered = _offered;
    3971             : 
    3972             :         /* Out parameters */
    3973           0 :         r.out.info = _info;
    3974           0 :         r.out.needed = _needed;
    3975             : 
    3976             :         /* Result */
    3977           0 :         NDR_ZERO_STRUCT(r.out.result);
    3978             : 
    3979           0 :         status = dcerpc_spoolss_GetPrintProcessorDirectory_r(h, mem_ctx, &r);
    3980           0 :         if (!NT_STATUS_IS_OK(status)) {
    3981           0 :                 return status;
    3982             :         }
    3983             : 
    3984             :         /* Return variables */
    3985           0 :         if (_info && r.out.info) {
    3986           0 :                 *_info = *r.out.info;
    3987             :         }
    3988           0 :         *_needed = *r.out.needed;
    3989             : 
    3990             :         /* Return result */
    3991           0 :         *result = r.out.result;
    3992             : 
    3993           0 :         return NT_STATUS_OK;
    3994             : }
    3995             : 
    3996             : struct dcerpc_spoolss_StartDocPrinter_r_state {
    3997             :         TALLOC_CTX *out_mem_ctx;
    3998             : };
    3999             : 
    4000             : static void dcerpc_spoolss_StartDocPrinter_r_done(struct tevent_req *subreq);
    4001             : 
    4002           0 : struct tevent_req *dcerpc_spoolss_StartDocPrinter_r_send(TALLOC_CTX *mem_ctx,
    4003             :         struct tevent_context *ev,
    4004             :         struct dcerpc_binding_handle *h,
    4005             :         struct spoolss_StartDocPrinter *r)
    4006             : {
    4007           0 :         struct tevent_req *req;
    4008           0 :         struct dcerpc_spoolss_StartDocPrinter_r_state *state;
    4009           0 :         struct tevent_req *subreq;
    4010             : 
    4011           0 :         req = tevent_req_create(mem_ctx, &state,
    4012             :                                 struct dcerpc_spoolss_StartDocPrinter_r_state);
    4013           0 :         if (req == NULL) {
    4014           0 :                 return NULL;
    4015             :         }
    4016             : 
    4017           0 :         state->out_mem_ctx = talloc_new(state);
    4018           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    4019           0 :                 return tevent_req_post(req, ev);
    4020             :         }
    4021             : 
    4022           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    4023             :                         NULL, &ndr_table_spoolss,
    4024           0 :                         NDR_SPOOLSS_STARTDOCPRINTER, state->out_mem_ctx, r);
    4025           0 :         if (tevent_req_nomem(subreq, req)) {
    4026           0 :                 return tevent_req_post(req, ev);
    4027             :         }
    4028           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_StartDocPrinter_r_done, req);
    4029             : 
    4030           0 :         return req;
    4031             : }
    4032             : 
    4033           0 : static void dcerpc_spoolss_StartDocPrinter_r_done(struct tevent_req *subreq)
    4034             : {
    4035           0 :         struct tevent_req *req =
    4036           0 :                 tevent_req_callback_data(subreq,
    4037             :                 struct tevent_req);
    4038           0 :         NTSTATUS status;
    4039             : 
    4040           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    4041           0 :         TALLOC_FREE(subreq);
    4042           0 :         if (tevent_req_nterror(req, status)) {
    4043           0 :                 return;
    4044             :         }
    4045             : 
    4046           0 :         tevent_req_done(req);
    4047             : }
    4048             : 
    4049           0 : NTSTATUS dcerpc_spoolss_StartDocPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    4050             : {
    4051           0 :         struct dcerpc_spoolss_StartDocPrinter_r_state *state =
    4052           0 :                 tevent_req_data(req,
    4053             :                 struct dcerpc_spoolss_StartDocPrinter_r_state);
    4054           0 :         NTSTATUS status;
    4055             : 
    4056           0 :         if (tevent_req_is_nterror(req, &status)) {
    4057           0 :                 tevent_req_received(req);
    4058           0 :                 return status;
    4059             :         }
    4060             : 
    4061           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    4062             : 
    4063           0 :         tevent_req_received(req);
    4064           0 :         return NT_STATUS_OK;
    4065             : }
    4066             : 
    4067         668 : NTSTATUS dcerpc_spoolss_StartDocPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_StartDocPrinter *r)
    4068             : {
    4069           0 :         NTSTATUS status;
    4070             : 
    4071         668 :         status = dcerpc_binding_handle_call(h,
    4072             :                         NULL, &ndr_table_spoolss,
    4073             :                         NDR_SPOOLSS_STARTDOCPRINTER, mem_ctx, r);
    4074             : 
    4075         668 :         return status;
    4076             : }
    4077             : 
    4078             : struct dcerpc_spoolss_StartDocPrinter_state {
    4079             :         struct spoolss_StartDocPrinter orig;
    4080             :         struct spoolss_StartDocPrinter tmp;
    4081             :         TALLOC_CTX *out_mem_ctx;
    4082             : };
    4083             : 
    4084             : static void dcerpc_spoolss_StartDocPrinter_done(struct tevent_req *subreq);
    4085             : 
    4086           0 : struct tevent_req *dcerpc_spoolss_StartDocPrinter_send(TALLOC_CTX *mem_ctx,
    4087             :                                                        struct tevent_context *ev,
    4088             :                                                        struct dcerpc_binding_handle *h,
    4089             :                                                        struct policy_handle *_handle /* [in] [ref] */,
    4090             :                                                        struct spoolss_DocumentInfoCtr *_info_ctr /* [in] [ref] */,
    4091             :                                                        uint32_t *_job_id /* [out] [ref] */)
    4092             : {
    4093           0 :         struct tevent_req *req;
    4094           0 :         struct dcerpc_spoolss_StartDocPrinter_state *state;
    4095           0 :         struct tevent_req *subreq;
    4096             : 
    4097           0 :         req = tevent_req_create(mem_ctx, &state,
    4098             :                                 struct dcerpc_spoolss_StartDocPrinter_state);
    4099           0 :         if (req == NULL) {
    4100           0 :                 return NULL;
    4101             :         }
    4102           0 :         state->out_mem_ctx = NULL;
    4103             : 
    4104             :         /* In parameters */
    4105           0 :         state->orig.in.handle = _handle;
    4106           0 :         state->orig.in.info_ctr = _info_ctr;
    4107             : 
    4108             :         /* Out parameters */
    4109           0 :         state->orig.out.job_id = _job_id;
    4110             : 
    4111             :         /* Result */
    4112           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    4113             : 
    4114           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    4115             :                              "dcerpc_spoolss_StartDocPrinter_out_memory");
    4116           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    4117           0 :                 return tevent_req_post(req, ev);
    4118             :         }
    4119             : 
    4120             :         /* make a temporary copy, that we pass to the dispatch function */
    4121           0 :         state->tmp = state->orig;
    4122             : 
    4123           0 :         subreq = dcerpc_spoolss_StartDocPrinter_r_send(state, ev, h, &state->tmp);
    4124           0 :         if (tevent_req_nomem(subreq, req)) {
    4125           0 :                 return tevent_req_post(req, ev);
    4126             :         }
    4127           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_StartDocPrinter_done, req);
    4128           0 :         return req;
    4129             : }
    4130             : 
    4131           0 : static void dcerpc_spoolss_StartDocPrinter_done(struct tevent_req *subreq)
    4132             : {
    4133           0 :         struct tevent_req *req = tevent_req_callback_data(
    4134             :                 subreq, struct tevent_req);
    4135           0 :         struct dcerpc_spoolss_StartDocPrinter_state *state = tevent_req_data(
    4136             :                 req, struct dcerpc_spoolss_StartDocPrinter_state);
    4137           0 :         NTSTATUS status;
    4138           0 :         TALLOC_CTX *mem_ctx;
    4139             : 
    4140           0 :         if (state->out_mem_ctx) {
    4141           0 :                 mem_ctx = state->out_mem_ctx;
    4142             :         } else {
    4143           0 :                 mem_ctx = state;
    4144             :         }
    4145             : 
    4146           0 :         status = dcerpc_spoolss_StartDocPrinter_r_recv(subreq, mem_ctx);
    4147           0 :         TALLOC_FREE(subreq);
    4148           0 :         if (tevent_req_nterror(req, status)) {
    4149           0 :                 return;
    4150             :         }
    4151             : 
    4152             :         /* Copy out parameters */
    4153           0 :         *state->orig.out.job_id = *state->tmp.out.job_id;
    4154             : 
    4155             :         /* Copy result */
    4156           0 :         state->orig.out.result = state->tmp.out.result;
    4157             : 
    4158             :         /* Reset temporary structure */
    4159           0 :         NDR_ZERO_STRUCT(state->tmp);
    4160             : 
    4161           0 :         tevent_req_done(req);
    4162             : }
    4163             : 
    4164           0 : NTSTATUS dcerpc_spoolss_StartDocPrinter_recv(struct tevent_req *req,
    4165             :                                              TALLOC_CTX *mem_ctx,
    4166             :                                              WERROR *result)
    4167             : {
    4168           0 :         struct dcerpc_spoolss_StartDocPrinter_state *state = tevent_req_data(
    4169             :                 req, struct dcerpc_spoolss_StartDocPrinter_state);
    4170           0 :         NTSTATUS status;
    4171             : 
    4172           0 :         if (tevent_req_is_nterror(req, &status)) {
    4173           0 :                 tevent_req_received(req);
    4174           0 :                 return status;
    4175             :         }
    4176             : 
    4177             :         /* Steal possible out parameters to the callers context */
    4178           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    4179             : 
    4180             :         /* Return result */
    4181           0 :         *result = state->orig.out.result;
    4182             : 
    4183           0 :         tevent_req_received(req);
    4184           0 :         return NT_STATUS_OK;
    4185             : }
    4186             : 
    4187          28 : NTSTATUS dcerpc_spoolss_StartDocPrinter(struct dcerpc_binding_handle *h,
    4188             :                                         TALLOC_CTX *mem_ctx,
    4189             :                                         struct policy_handle *_handle /* [in] [ref] */,
    4190             :                                         struct spoolss_DocumentInfoCtr *_info_ctr /* [in] [ref] */,
    4191             :                                         uint32_t *_job_id /* [out] [ref] */,
    4192             :                                         WERROR *result)
    4193             : {
    4194           0 :         struct spoolss_StartDocPrinter r;
    4195           0 :         NTSTATUS status;
    4196             : 
    4197             :         /* In parameters */
    4198          28 :         r.in.handle = _handle;
    4199          28 :         r.in.info_ctr = _info_ctr;
    4200             : 
    4201             :         /* Out parameters */
    4202          28 :         r.out.job_id = _job_id;
    4203             : 
    4204             :         /* Result */
    4205          28 :         NDR_ZERO_STRUCT(r.out.result);
    4206             : 
    4207          28 :         status = dcerpc_spoolss_StartDocPrinter_r(h, mem_ctx, &r);
    4208          28 :         if (!NT_STATUS_IS_OK(status)) {
    4209           0 :                 return status;
    4210             :         }
    4211             : 
    4212             :         /* Return variables */
    4213          28 :         *_job_id = *r.out.job_id;
    4214             : 
    4215             :         /* Return result */
    4216          28 :         *result = r.out.result;
    4217             : 
    4218          28 :         return NT_STATUS_OK;
    4219             : }
    4220             : 
    4221             : struct dcerpc_spoolss_StartPagePrinter_r_state {
    4222             :         TALLOC_CTX *out_mem_ctx;
    4223             : };
    4224             : 
    4225             : static void dcerpc_spoolss_StartPagePrinter_r_done(struct tevent_req *subreq);
    4226             : 
    4227           0 : struct tevent_req *dcerpc_spoolss_StartPagePrinter_r_send(TALLOC_CTX *mem_ctx,
    4228             :         struct tevent_context *ev,
    4229             :         struct dcerpc_binding_handle *h,
    4230             :         struct spoolss_StartPagePrinter *r)
    4231             : {
    4232           0 :         struct tevent_req *req;
    4233           0 :         struct dcerpc_spoolss_StartPagePrinter_r_state *state;
    4234           0 :         struct tevent_req *subreq;
    4235             : 
    4236           0 :         req = tevent_req_create(mem_ctx, &state,
    4237             :                                 struct dcerpc_spoolss_StartPagePrinter_r_state);
    4238           0 :         if (req == NULL) {
    4239           0 :                 return NULL;
    4240             :         }
    4241             : 
    4242           0 :         state->out_mem_ctx = NULL;
    4243             : 
    4244           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    4245             :                         NULL, &ndr_table_spoolss,
    4246             :                         NDR_SPOOLSS_STARTPAGEPRINTER, state, r);
    4247           0 :         if (tevent_req_nomem(subreq, req)) {
    4248           0 :                 return tevent_req_post(req, ev);
    4249             :         }
    4250           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_StartPagePrinter_r_done, req);
    4251             : 
    4252           0 :         return req;
    4253             : }
    4254             : 
    4255           0 : static void dcerpc_spoolss_StartPagePrinter_r_done(struct tevent_req *subreq)
    4256             : {
    4257           0 :         struct tevent_req *req =
    4258           0 :                 tevent_req_callback_data(subreq,
    4259             :                 struct tevent_req);
    4260           0 :         NTSTATUS status;
    4261             : 
    4262           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    4263           0 :         TALLOC_FREE(subreq);
    4264           0 :         if (tevent_req_nterror(req, status)) {
    4265           0 :                 return;
    4266             :         }
    4267             : 
    4268           0 :         tevent_req_done(req);
    4269             : }
    4270             : 
    4271           0 : NTSTATUS dcerpc_spoolss_StartPagePrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    4272             : {
    4273           0 :         struct dcerpc_spoolss_StartPagePrinter_r_state *state =
    4274           0 :                 tevent_req_data(req,
    4275             :                 struct dcerpc_spoolss_StartPagePrinter_r_state);
    4276           0 :         NTSTATUS status;
    4277             : 
    4278           0 :         if (tevent_req_is_nterror(req, &status)) {
    4279           0 :                 tevent_req_received(req);
    4280           0 :                 return status;
    4281             :         }
    4282             : 
    4283           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    4284             : 
    4285           0 :         tevent_req_received(req);
    4286           0 :         return NT_STATUS_OK;
    4287             : }
    4288             : 
    4289        1920 : NTSTATUS dcerpc_spoolss_StartPagePrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_StartPagePrinter *r)
    4290             : {
    4291           0 :         NTSTATUS status;
    4292             : 
    4293        1920 :         status = dcerpc_binding_handle_call(h,
    4294             :                         NULL, &ndr_table_spoolss,
    4295             :                         NDR_SPOOLSS_STARTPAGEPRINTER, mem_ctx, r);
    4296             : 
    4297        1920 :         return status;
    4298             : }
    4299             : 
    4300             : struct dcerpc_spoolss_StartPagePrinter_state {
    4301             :         struct spoolss_StartPagePrinter orig;
    4302             :         struct spoolss_StartPagePrinter tmp;
    4303             :         TALLOC_CTX *out_mem_ctx;
    4304             : };
    4305             : 
    4306             : static void dcerpc_spoolss_StartPagePrinter_done(struct tevent_req *subreq);
    4307             : 
    4308           0 : struct tevent_req *dcerpc_spoolss_StartPagePrinter_send(TALLOC_CTX *mem_ctx,
    4309             :                                                         struct tevent_context *ev,
    4310             :                                                         struct dcerpc_binding_handle *h,
    4311             :                                                         struct policy_handle *_handle /* [in] [ref] */)
    4312             : {
    4313           0 :         struct tevent_req *req;
    4314           0 :         struct dcerpc_spoolss_StartPagePrinter_state *state;
    4315           0 :         struct tevent_req *subreq;
    4316             : 
    4317           0 :         req = tevent_req_create(mem_ctx, &state,
    4318             :                                 struct dcerpc_spoolss_StartPagePrinter_state);
    4319           0 :         if (req == NULL) {
    4320           0 :                 return NULL;
    4321             :         }
    4322           0 :         state->out_mem_ctx = NULL;
    4323             : 
    4324             :         /* In parameters */
    4325           0 :         state->orig.in.handle = _handle;
    4326             : 
    4327             :         /* Out parameters */
    4328             : 
    4329             :         /* Result */
    4330           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    4331             : 
    4332             :         /* make a temporary copy, that we pass to the dispatch function */
    4333           0 :         state->tmp = state->orig;
    4334             : 
    4335           0 :         subreq = dcerpc_spoolss_StartPagePrinter_r_send(state, ev, h, &state->tmp);
    4336           0 :         if (tevent_req_nomem(subreq, req)) {
    4337           0 :                 return tevent_req_post(req, ev);
    4338             :         }
    4339           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_StartPagePrinter_done, req);
    4340           0 :         return req;
    4341             : }
    4342             : 
    4343           0 : static void dcerpc_spoolss_StartPagePrinter_done(struct tevent_req *subreq)
    4344             : {
    4345           0 :         struct tevent_req *req = tevent_req_callback_data(
    4346             :                 subreq, struct tevent_req);
    4347           0 :         struct dcerpc_spoolss_StartPagePrinter_state *state = tevent_req_data(
    4348             :                 req, struct dcerpc_spoolss_StartPagePrinter_state);
    4349           0 :         NTSTATUS status;
    4350           0 :         TALLOC_CTX *mem_ctx;
    4351             : 
    4352           0 :         if (state->out_mem_ctx) {
    4353           0 :                 mem_ctx = state->out_mem_ctx;
    4354             :         } else {
    4355           0 :                 mem_ctx = state;
    4356             :         }
    4357             : 
    4358           0 :         status = dcerpc_spoolss_StartPagePrinter_r_recv(subreq, mem_ctx);
    4359           0 :         TALLOC_FREE(subreq);
    4360           0 :         if (tevent_req_nterror(req, status)) {
    4361           0 :                 return;
    4362             :         }
    4363             : 
    4364             :         /* Copy out parameters */
    4365             : 
    4366             :         /* Copy result */
    4367           0 :         state->orig.out.result = state->tmp.out.result;
    4368             : 
    4369             :         /* Reset temporary structure */
    4370           0 :         NDR_ZERO_STRUCT(state->tmp);
    4371             : 
    4372           0 :         tevent_req_done(req);
    4373             : }
    4374             : 
    4375           0 : NTSTATUS dcerpc_spoolss_StartPagePrinter_recv(struct tevent_req *req,
    4376             :                                               TALLOC_CTX *mem_ctx,
    4377             :                                               WERROR *result)
    4378             : {
    4379           0 :         struct dcerpc_spoolss_StartPagePrinter_state *state = tevent_req_data(
    4380             :                 req, struct dcerpc_spoolss_StartPagePrinter_state);
    4381           0 :         NTSTATUS status;
    4382             : 
    4383           0 :         if (tevent_req_is_nterror(req, &status)) {
    4384           0 :                 tevent_req_received(req);
    4385           0 :                 return status;
    4386             :         }
    4387             : 
    4388             :         /* Steal possible out parameters to the callers context */
    4389           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    4390             : 
    4391             :         /* Return result */
    4392           0 :         *result = state->orig.out.result;
    4393             : 
    4394           0 :         tevent_req_received(req);
    4395           0 :         return NT_STATUS_OK;
    4396             : }
    4397             : 
    4398           0 : NTSTATUS dcerpc_spoolss_StartPagePrinter(struct dcerpc_binding_handle *h,
    4399             :                                          TALLOC_CTX *mem_ctx,
    4400             :                                          struct policy_handle *_handle /* [in] [ref] */,
    4401             :                                          WERROR *result)
    4402             : {
    4403           0 :         struct spoolss_StartPagePrinter r;
    4404           0 :         NTSTATUS status;
    4405             : 
    4406             :         /* In parameters */
    4407           0 :         r.in.handle = _handle;
    4408             : 
    4409             :         /* Out parameters */
    4410             : 
    4411             :         /* Result */
    4412           0 :         NDR_ZERO_STRUCT(r.out.result);
    4413             : 
    4414           0 :         status = dcerpc_spoolss_StartPagePrinter_r(h, mem_ctx, &r);
    4415           0 :         if (!NT_STATUS_IS_OK(status)) {
    4416           0 :                 return status;
    4417             :         }
    4418             : 
    4419             :         /* Return variables */
    4420             : 
    4421             :         /* Return result */
    4422           0 :         *result = r.out.result;
    4423             : 
    4424           0 :         return NT_STATUS_OK;
    4425             : }
    4426             : 
    4427             : struct dcerpc_spoolss_WritePrinter_r_state {
    4428             :         TALLOC_CTX *out_mem_ctx;
    4429             : };
    4430             : 
    4431             : static void dcerpc_spoolss_WritePrinter_r_done(struct tevent_req *subreq);
    4432             : 
    4433           0 : struct tevent_req *dcerpc_spoolss_WritePrinter_r_send(TALLOC_CTX *mem_ctx,
    4434             :         struct tevent_context *ev,
    4435             :         struct dcerpc_binding_handle *h,
    4436             :         struct spoolss_WritePrinter *r)
    4437             : {
    4438           0 :         struct tevent_req *req;
    4439           0 :         struct dcerpc_spoolss_WritePrinter_r_state *state;
    4440           0 :         struct tevent_req *subreq;
    4441             : 
    4442           0 :         req = tevent_req_create(mem_ctx, &state,
    4443             :                                 struct dcerpc_spoolss_WritePrinter_r_state);
    4444           0 :         if (req == NULL) {
    4445           0 :                 return NULL;
    4446             :         }
    4447             : 
    4448           0 :         state->out_mem_ctx = talloc_new(state);
    4449           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    4450           0 :                 return tevent_req_post(req, ev);
    4451             :         }
    4452             : 
    4453           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    4454             :                         NULL, &ndr_table_spoolss,
    4455           0 :                         NDR_SPOOLSS_WRITEPRINTER, state->out_mem_ctx, r);
    4456           0 :         if (tevent_req_nomem(subreq, req)) {
    4457           0 :                 return tevent_req_post(req, ev);
    4458             :         }
    4459           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_WritePrinter_r_done, req);
    4460             : 
    4461           0 :         return req;
    4462             : }
    4463             : 
    4464           0 : static void dcerpc_spoolss_WritePrinter_r_done(struct tevent_req *subreq)
    4465             : {
    4466           0 :         struct tevent_req *req =
    4467           0 :                 tevent_req_callback_data(subreq,
    4468             :                 struct tevent_req);
    4469           0 :         NTSTATUS status;
    4470             : 
    4471           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    4472           0 :         TALLOC_FREE(subreq);
    4473           0 :         if (tevent_req_nterror(req, status)) {
    4474           0 :                 return;
    4475             :         }
    4476             : 
    4477           0 :         tevent_req_done(req);
    4478             : }
    4479             : 
    4480           0 : NTSTATUS dcerpc_spoolss_WritePrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    4481             : {
    4482           0 :         struct dcerpc_spoolss_WritePrinter_r_state *state =
    4483           0 :                 tevent_req_data(req,
    4484             :                 struct dcerpc_spoolss_WritePrinter_r_state);
    4485           0 :         NTSTATUS status;
    4486             : 
    4487           0 :         if (tevent_req_is_nterror(req, &status)) {
    4488           0 :                 tevent_req_received(req);
    4489           0 :                 return status;
    4490             :         }
    4491             : 
    4492           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    4493             : 
    4494           0 :         tevent_req_received(req);
    4495           0 :         return NT_STATUS_OK;
    4496             : }
    4497             : 
    4498        1920 : NTSTATUS dcerpc_spoolss_WritePrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_WritePrinter *r)
    4499             : {
    4500           0 :         NTSTATUS status;
    4501             : 
    4502        1920 :         status = dcerpc_binding_handle_call(h,
    4503             :                         NULL, &ndr_table_spoolss,
    4504             :                         NDR_SPOOLSS_WRITEPRINTER, mem_ctx, r);
    4505             : 
    4506        1920 :         return status;
    4507             : }
    4508             : 
    4509             : struct dcerpc_spoolss_WritePrinter_state {
    4510             :         struct spoolss_WritePrinter orig;
    4511             :         struct spoolss_WritePrinter tmp;
    4512             :         TALLOC_CTX *out_mem_ctx;
    4513             : };
    4514             : 
    4515             : static void dcerpc_spoolss_WritePrinter_done(struct tevent_req *subreq);
    4516             : 
    4517           0 : struct tevent_req *dcerpc_spoolss_WritePrinter_send(TALLOC_CTX *mem_ctx,
    4518             :                                                     struct tevent_context *ev,
    4519             :                                                     struct dcerpc_binding_handle *h,
    4520             :                                                     struct policy_handle *_handle /* [in] [ref] */,
    4521             :                                                     DATA_BLOB _data /* [in]  */,
    4522             :                                                     uint32_t __data_size /* [in] [value(r->in.data.length)] */,
    4523             :                                                     uint32_t *_num_written /* [out] [ref] */)
    4524             : {
    4525           0 :         struct tevent_req *req;
    4526           0 :         struct dcerpc_spoolss_WritePrinter_state *state;
    4527           0 :         struct tevent_req *subreq;
    4528             : 
    4529           0 :         req = tevent_req_create(mem_ctx, &state,
    4530             :                                 struct dcerpc_spoolss_WritePrinter_state);
    4531           0 :         if (req == NULL) {
    4532           0 :                 return NULL;
    4533             :         }
    4534           0 :         state->out_mem_ctx = NULL;
    4535             : 
    4536             :         /* In parameters */
    4537           0 :         state->orig.in.handle = _handle;
    4538           0 :         state->orig.in.data = _data;
    4539           0 :         state->orig.in._data_size = __data_size;
    4540             : 
    4541             :         /* Out parameters */
    4542           0 :         state->orig.out.num_written = _num_written;
    4543             : 
    4544             :         /* Result */
    4545           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    4546             : 
    4547           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    4548             :                              "dcerpc_spoolss_WritePrinter_out_memory");
    4549           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    4550           0 :                 return tevent_req_post(req, ev);
    4551             :         }
    4552             : 
    4553             :         /* make a temporary copy, that we pass to the dispatch function */
    4554           0 :         state->tmp = state->orig;
    4555             : 
    4556           0 :         subreq = dcerpc_spoolss_WritePrinter_r_send(state, ev, h, &state->tmp);
    4557           0 :         if (tevent_req_nomem(subreq, req)) {
    4558           0 :                 return tevent_req_post(req, ev);
    4559             :         }
    4560           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_WritePrinter_done, req);
    4561           0 :         return req;
    4562             : }
    4563             : 
    4564           0 : static void dcerpc_spoolss_WritePrinter_done(struct tevent_req *subreq)
    4565             : {
    4566           0 :         struct tevent_req *req = tevent_req_callback_data(
    4567             :                 subreq, struct tevent_req);
    4568           0 :         struct dcerpc_spoolss_WritePrinter_state *state = tevent_req_data(
    4569             :                 req, struct dcerpc_spoolss_WritePrinter_state);
    4570           0 :         NTSTATUS status;
    4571           0 :         TALLOC_CTX *mem_ctx;
    4572             : 
    4573           0 :         if (state->out_mem_ctx) {
    4574           0 :                 mem_ctx = state->out_mem_ctx;
    4575             :         } else {
    4576           0 :                 mem_ctx = state;
    4577             :         }
    4578             : 
    4579           0 :         status = dcerpc_spoolss_WritePrinter_r_recv(subreq, mem_ctx);
    4580           0 :         TALLOC_FREE(subreq);
    4581           0 :         if (tevent_req_nterror(req, status)) {
    4582           0 :                 return;
    4583             :         }
    4584             : 
    4585             :         /* Copy out parameters */
    4586           0 :         *state->orig.out.num_written = *state->tmp.out.num_written;
    4587             : 
    4588             :         /* Copy result */
    4589           0 :         state->orig.out.result = state->tmp.out.result;
    4590             : 
    4591             :         /* Reset temporary structure */
    4592           0 :         NDR_ZERO_STRUCT(state->tmp);
    4593             : 
    4594           0 :         tevent_req_done(req);
    4595             : }
    4596             : 
    4597           0 : NTSTATUS dcerpc_spoolss_WritePrinter_recv(struct tevent_req *req,
    4598             :                                           TALLOC_CTX *mem_ctx,
    4599             :                                           WERROR *result)
    4600             : {
    4601           0 :         struct dcerpc_spoolss_WritePrinter_state *state = tevent_req_data(
    4602             :                 req, struct dcerpc_spoolss_WritePrinter_state);
    4603           0 :         NTSTATUS status;
    4604             : 
    4605           0 :         if (tevent_req_is_nterror(req, &status)) {
    4606           0 :                 tevent_req_received(req);
    4607           0 :                 return status;
    4608             :         }
    4609             : 
    4610             :         /* Steal possible out parameters to the callers context */
    4611           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    4612             : 
    4613             :         /* Return result */
    4614           0 :         *result = state->orig.out.result;
    4615             : 
    4616           0 :         tevent_req_received(req);
    4617           0 :         return NT_STATUS_OK;
    4618             : }
    4619             : 
    4620           0 : NTSTATUS dcerpc_spoolss_WritePrinter(struct dcerpc_binding_handle *h,
    4621             :                                      TALLOC_CTX *mem_ctx,
    4622             :                                      struct policy_handle *_handle /* [in] [ref] */,
    4623             :                                      DATA_BLOB _data /* [in]  */,
    4624             :                                      uint32_t __data_size /* [in] [value(r->in.data.length)] */,
    4625             :                                      uint32_t *_num_written /* [out] [ref] */,
    4626             :                                      WERROR *result)
    4627             : {
    4628           0 :         struct spoolss_WritePrinter r;
    4629           0 :         NTSTATUS status;
    4630             : 
    4631             :         /* In parameters */
    4632           0 :         r.in.handle = _handle;
    4633           0 :         r.in.data = _data;
    4634           0 :         r.in._data_size = __data_size;
    4635             : 
    4636             :         /* Out parameters */
    4637           0 :         r.out.num_written = _num_written;
    4638             : 
    4639             :         /* Result */
    4640           0 :         NDR_ZERO_STRUCT(r.out.result);
    4641             : 
    4642           0 :         status = dcerpc_spoolss_WritePrinter_r(h, mem_ctx, &r);
    4643           0 :         if (!NT_STATUS_IS_OK(status)) {
    4644           0 :                 return status;
    4645             :         }
    4646             : 
    4647             :         /* Return variables */
    4648           0 :         *_num_written = *r.out.num_written;
    4649             : 
    4650             :         /* Return result */
    4651           0 :         *result = r.out.result;
    4652             : 
    4653           0 :         return NT_STATUS_OK;
    4654             : }
    4655             : 
    4656             : struct dcerpc_spoolss_EndPagePrinter_r_state {
    4657             :         TALLOC_CTX *out_mem_ctx;
    4658             : };
    4659             : 
    4660             : static void dcerpc_spoolss_EndPagePrinter_r_done(struct tevent_req *subreq);
    4661             : 
    4662           0 : struct tevent_req *dcerpc_spoolss_EndPagePrinter_r_send(TALLOC_CTX *mem_ctx,
    4663             :         struct tevent_context *ev,
    4664             :         struct dcerpc_binding_handle *h,
    4665             :         struct spoolss_EndPagePrinter *r)
    4666             : {
    4667           0 :         struct tevent_req *req;
    4668           0 :         struct dcerpc_spoolss_EndPagePrinter_r_state *state;
    4669           0 :         struct tevent_req *subreq;
    4670             : 
    4671           0 :         req = tevent_req_create(mem_ctx, &state,
    4672             :                                 struct dcerpc_spoolss_EndPagePrinter_r_state);
    4673           0 :         if (req == NULL) {
    4674           0 :                 return NULL;
    4675             :         }
    4676             : 
    4677           0 :         state->out_mem_ctx = NULL;
    4678             : 
    4679           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    4680             :                         NULL, &ndr_table_spoolss,
    4681             :                         NDR_SPOOLSS_ENDPAGEPRINTER, state, r);
    4682           0 :         if (tevent_req_nomem(subreq, req)) {
    4683           0 :                 return tevent_req_post(req, ev);
    4684             :         }
    4685           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EndPagePrinter_r_done, req);
    4686             : 
    4687           0 :         return req;
    4688             : }
    4689             : 
    4690           0 : static void dcerpc_spoolss_EndPagePrinter_r_done(struct tevent_req *subreq)
    4691             : {
    4692           0 :         struct tevent_req *req =
    4693           0 :                 tevent_req_callback_data(subreq,
    4694             :                 struct tevent_req);
    4695           0 :         NTSTATUS status;
    4696             : 
    4697           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    4698           0 :         TALLOC_FREE(subreq);
    4699           0 :         if (tevent_req_nterror(req, status)) {
    4700           0 :                 return;
    4701             :         }
    4702             : 
    4703           0 :         tevent_req_done(req);
    4704             : }
    4705             : 
    4706           0 : NTSTATUS dcerpc_spoolss_EndPagePrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    4707             : {
    4708           0 :         struct dcerpc_spoolss_EndPagePrinter_r_state *state =
    4709           0 :                 tevent_req_data(req,
    4710             :                 struct dcerpc_spoolss_EndPagePrinter_r_state);
    4711           0 :         NTSTATUS status;
    4712             : 
    4713           0 :         if (tevent_req_is_nterror(req, &status)) {
    4714           0 :                 tevent_req_received(req);
    4715           0 :                 return status;
    4716             :         }
    4717             : 
    4718           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    4719             : 
    4720           0 :         tevent_req_received(req);
    4721           0 :         return NT_STATUS_OK;
    4722             : }
    4723             : 
    4724        1920 : NTSTATUS dcerpc_spoolss_EndPagePrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EndPagePrinter *r)
    4725             : {
    4726           0 :         NTSTATUS status;
    4727             : 
    4728        1920 :         status = dcerpc_binding_handle_call(h,
    4729             :                         NULL, &ndr_table_spoolss,
    4730             :                         NDR_SPOOLSS_ENDPAGEPRINTER, mem_ctx, r);
    4731             : 
    4732        1920 :         return status;
    4733             : }
    4734             : 
    4735             : struct dcerpc_spoolss_EndPagePrinter_state {
    4736             :         struct spoolss_EndPagePrinter orig;
    4737             :         struct spoolss_EndPagePrinter tmp;
    4738             :         TALLOC_CTX *out_mem_ctx;
    4739             : };
    4740             : 
    4741             : static void dcerpc_spoolss_EndPagePrinter_done(struct tevent_req *subreq);
    4742             : 
    4743           0 : struct tevent_req *dcerpc_spoolss_EndPagePrinter_send(TALLOC_CTX *mem_ctx,
    4744             :                                                       struct tevent_context *ev,
    4745             :                                                       struct dcerpc_binding_handle *h,
    4746             :                                                       struct policy_handle *_handle /* [in] [ref] */)
    4747             : {
    4748           0 :         struct tevent_req *req;
    4749           0 :         struct dcerpc_spoolss_EndPagePrinter_state *state;
    4750           0 :         struct tevent_req *subreq;
    4751             : 
    4752           0 :         req = tevent_req_create(mem_ctx, &state,
    4753             :                                 struct dcerpc_spoolss_EndPagePrinter_state);
    4754           0 :         if (req == NULL) {
    4755           0 :                 return NULL;
    4756             :         }
    4757           0 :         state->out_mem_ctx = NULL;
    4758             : 
    4759             :         /* In parameters */
    4760           0 :         state->orig.in.handle = _handle;
    4761             : 
    4762             :         /* Out parameters */
    4763             : 
    4764             :         /* Result */
    4765           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    4766             : 
    4767             :         /* make a temporary copy, that we pass to the dispatch function */
    4768           0 :         state->tmp = state->orig;
    4769             : 
    4770           0 :         subreq = dcerpc_spoolss_EndPagePrinter_r_send(state, ev, h, &state->tmp);
    4771           0 :         if (tevent_req_nomem(subreq, req)) {
    4772           0 :                 return tevent_req_post(req, ev);
    4773             :         }
    4774           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EndPagePrinter_done, req);
    4775           0 :         return req;
    4776             : }
    4777             : 
    4778           0 : static void dcerpc_spoolss_EndPagePrinter_done(struct tevent_req *subreq)
    4779             : {
    4780           0 :         struct tevent_req *req = tevent_req_callback_data(
    4781             :                 subreq, struct tevent_req);
    4782           0 :         struct dcerpc_spoolss_EndPagePrinter_state *state = tevent_req_data(
    4783             :                 req, struct dcerpc_spoolss_EndPagePrinter_state);
    4784           0 :         NTSTATUS status;
    4785           0 :         TALLOC_CTX *mem_ctx;
    4786             : 
    4787           0 :         if (state->out_mem_ctx) {
    4788           0 :                 mem_ctx = state->out_mem_ctx;
    4789             :         } else {
    4790           0 :                 mem_ctx = state;
    4791             :         }
    4792             : 
    4793           0 :         status = dcerpc_spoolss_EndPagePrinter_r_recv(subreq, mem_ctx);
    4794           0 :         TALLOC_FREE(subreq);
    4795           0 :         if (tevent_req_nterror(req, status)) {
    4796           0 :                 return;
    4797             :         }
    4798             : 
    4799             :         /* Copy out parameters */
    4800             : 
    4801             :         /* Copy result */
    4802           0 :         state->orig.out.result = state->tmp.out.result;
    4803             : 
    4804             :         /* Reset temporary structure */
    4805           0 :         NDR_ZERO_STRUCT(state->tmp);
    4806             : 
    4807           0 :         tevent_req_done(req);
    4808             : }
    4809             : 
    4810           0 : NTSTATUS dcerpc_spoolss_EndPagePrinter_recv(struct tevent_req *req,
    4811             :                                             TALLOC_CTX *mem_ctx,
    4812             :                                             WERROR *result)
    4813             : {
    4814           0 :         struct dcerpc_spoolss_EndPagePrinter_state *state = tevent_req_data(
    4815             :                 req, struct dcerpc_spoolss_EndPagePrinter_state);
    4816           0 :         NTSTATUS status;
    4817             : 
    4818           0 :         if (tevent_req_is_nterror(req, &status)) {
    4819           0 :                 tevent_req_received(req);
    4820           0 :                 return status;
    4821             :         }
    4822             : 
    4823             :         /* Steal possible out parameters to the callers context */
    4824           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    4825             : 
    4826             :         /* Return result */
    4827           0 :         *result = state->orig.out.result;
    4828             : 
    4829           0 :         tevent_req_received(req);
    4830           0 :         return NT_STATUS_OK;
    4831             : }
    4832             : 
    4833           0 : NTSTATUS dcerpc_spoolss_EndPagePrinter(struct dcerpc_binding_handle *h,
    4834             :                                        TALLOC_CTX *mem_ctx,
    4835             :                                        struct policy_handle *_handle /* [in] [ref] */,
    4836             :                                        WERROR *result)
    4837             : {
    4838           0 :         struct spoolss_EndPagePrinter r;
    4839           0 :         NTSTATUS status;
    4840             : 
    4841             :         /* In parameters */
    4842           0 :         r.in.handle = _handle;
    4843             : 
    4844             :         /* Out parameters */
    4845             : 
    4846             :         /* Result */
    4847           0 :         NDR_ZERO_STRUCT(r.out.result);
    4848             : 
    4849           0 :         status = dcerpc_spoolss_EndPagePrinter_r(h, mem_ctx, &r);
    4850           0 :         if (!NT_STATUS_IS_OK(status)) {
    4851           0 :                 return status;
    4852             :         }
    4853             : 
    4854             :         /* Return variables */
    4855             : 
    4856             :         /* Return result */
    4857           0 :         *result = r.out.result;
    4858             : 
    4859           0 :         return NT_STATUS_OK;
    4860             : }
    4861             : 
    4862             : struct dcerpc_spoolss_AbortPrinter_r_state {
    4863             :         TALLOC_CTX *out_mem_ctx;
    4864             : };
    4865             : 
    4866             : static void dcerpc_spoolss_AbortPrinter_r_done(struct tevent_req *subreq);
    4867             : 
    4868           0 : struct tevent_req *dcerpc_spoolss_AbortPrinter_r_send(TALLOC_CTX *mem_ctx,
    4869             :         struct tevent_context *ev,
    4870             :         struct dcerpc_binding_handle *h,
    4871             :         struct spoolss_AbortPrinter *r)
    4872             : {
    4873           0 :         struct tevent_req *req;
    4874           0 :         struct dcerpc_spoolss_AbortPrinter_r_state *state;
    4875           0 :         struct tevent_req *subreq;
    4876             : 
    4877           0 :         req = tevent_req_create(mem_ctx, &state,
    4878             :                                 struct dcerpc_spoolss_AbortPrinter_r_state);
    4879           0 :         if (req == NULL) {
    4880           0 :                 return NULL;
    4881             :         }
    4882             : 
    4883           0 :         state->out_mem_ctx = NULL;
    4884             : 
    4885           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    4886             :                         NULL, &ndr_table_spoolss,
    4887             :                         NDR_SPOOLSS_ABORTPRINTER, state, r);
    4888           0 :         if (tevent_req_nomem(subreq, req)) {
    4889           0 :                 return tevent_req_post(req, ev);
    4890             :         }
    4891           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AbortPrinter_r_done, req);
    4892             : 
    4893           0 :         return req;
    4894             : }
    4895             : 
    4896           0 : static void dcerpc_spoolss_AbortPrinter_r_done(struct tevent_req *subreq)
    4897             : {
    4898           0 :         struct tevent_req *req =
    4899           0 :                 tevent_req_callback_data(subreq,
    4900             :                 struct tevent_req);
    4901           0 :         NTSTATUS status;
    4902             : 
    4903           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    4904           0 :         TALLOC_FREE(subreq);
    4905           0 :         if (tevent_req_nterror(req, status)) {
    4906           0 :                 return;
    4907             :         }
    4908             : 
    4909           0 :         tevent_req_done(req);
    4910             : }
    4911             : 
    4912           0 : NTSTATUS dcerpc_spoolss_AbortPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    4913             : {
    4914           0 :         struct dcerpc_spoolss_AbortPrinter_r_state *state =
    4915           0 :                 tevent_req_data(req,
    4916             :                 struct dcerpc_spoolss_AbortPrinter_r_state);
    4917           0 :         NTSTATUS status;
    4918             : 
    4919           0 :         if (tevent_req_is_nterror(req, &status)) {
    4920           0 :                 tevent_req_received(req);
    4921           0 :                 return status;
    4922             :         }
    4923             : 
    4924           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    4925             : 
    4926           0 :         tevent_req_received(req);
    4927           0 :         return NT_STATUS_OK;
    4928             : }
    4929             : 
    4930           0 : NTSTATUS dcerpc_spoolss_AbortPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AbortPrinter *r)
    4931             : {
    4932           0 :         NTSTATUS status;
    4933             : 
    4934           0 :         status = dcerpc_binding_handle_call(h,
    4935             :                         NULL, &ndr_table_spoolss,
    4936             :                         NDR_SPOOLSS_ABORTPRINTER, mem_ctx, r);
    4937             : 
    4938           0 :         return status;
    4939             : }
    4940             : 
    4941             : struct dcerpc_spoolss_AbortPrinter_state {
    4942             :         struct spoolss_AbortPrinter orig;
    4943             :         struct spoolss_AbortPrinter tmp;
    4944             :         TALLOC_CTX *out_mem_ctx;
    4945             : };
    4946             : 
    4947             : static void dcerpc_spoolss_AbortPrinter_done(struct tevent_req *subreq);
    4948             : 
    4949           0 : struct tevent_req *dcerpc_spoolss_AbortPrinter_send(TALLOC_CTX *mem_ctx,
    4950             :                                                     struct tevent_context *ev,
    4951             :                                                     struct dcerpc_binding_handle *h,
    4952             :                                                     struct policy_handle *_handle /* [in] [ref] */)
    4953             : {
    4954           0 :         struct tevent_req *req;
    4955           0 :         struct dcerpc_spoolss_AbortPrinter_state *state;
    4956           0 :         struct tevent_req *subreq;
    4957             : 
    4958           0 :         req = tevent_req_create(mem_ctx, &state,
    4959             :                                 struct dcerpc_spoolss_AbortPrinter_state);
    4960           0 :         if (req == NULL) {
    4961           0 :                 return NULL;
    4962             :         }
    4963           0 :         state->out_mem_ctx = NULL;
    4964             : 
    4965             :         /* In parameters */
    4966           0 :         state->orig.in.handle = _handle;
    4967             : 
    4968             :         /* Out parameters */
    4969             : 
    4970             :         /* Result */
    4971           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    4972             : 
    4973             :         /* make a temporary copy, that we pass to the dispatch function */
    4974           0 :         state->tmp = state->orig;
    4975             : 
    4976           0 :         subreq = dcerpc_spoolss_AbortPrinter_r_send(state, ev, h, &state->tmp);
    4977           0 :         if (tevent_req_nomem(subreq, req)) {
    4978           0 :                 return tevent_req_post(req, ev);
    4979             :         }
    4980           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AbortPrinter_done, req);
    4981           0 :         return req;
    4982             : }
    4983             : 
    4984           0 : static void dcerpc_spoolss_AbortPrinter_done(struct tevent_req *subreq)
    4985             : {
    4986           0 :         struct tevent_req *req = tevent_req_callback_data(
    4987             :                 subreq, struct tevent_req);
    4988           0 :         struct dcerpc_spoolss_AbortPrinter_state *state = tevent_req_data(
    4989             :                 req, struct dcerpc_spoolss_AbortPrinter_state);
    4990           0 :         NTSTATUS status;
    4991           0 :         TALLOC_CTX *mem_ctx;
    4992             : 
    4993           0 :         if (state->out_mem_ctx) {
    4994           0 :                 mem_ctx = state->out_mem_ctx;
    4995             :         } else {
    4996           0 :                 mem_ctx = state;
    4997             :         }
    4998             : 
    4999           0 :         status = dcerpc_spoolss_AbortPrinter_r_recv(subreq, mem_ctx);
    5000           0 :         TALLOC_FREE(subreq);
    5001           0 :         if (tevent_req_nterror(req, status)) {
    5002           0 :                 return;
    5003             :         }
    5004             : 
    5005             :         /* Copy out parameters */
    5006             : 
    5007             :         /* Copy result */
    5008           0 :         state->orig.out.result = state->tmp.out.result;
    5009             : 
    5010             :         /* Reset temporary structure */
    5011           0 :         NDR_ZERO_STRUCT(state->tmp);
    5012             : 
    5013           0 :         tevent_req_done(req);
    5014             : }
    5015             : 
    5016           0 : NTSTATUS dcerpc_spoolss_AbortPrinter_recv(struct tevent_req *req,
    5017             :                                           TALLOC_CTX *mem_ctx,
    5018             :                                           WERROR *result)
    5019             : {
    5020           0 :         struct dcerpc_spoolss_AbortPrinter_state *state = tevent_req_data(
    5021             :                 req, struct dcerpc_spoolss_AbortPrinter_state);
    5022           0 :         NTSTATUS status;
    5023             : 
    5024           0 :         if (tevent_req_is_nterror(req, &status)) {
    5025           0 :                 tevent_req_received(req);
    5026           0 :                 return status;
    5027             :         }
    5028             : 
    5029             :         /* Steal possible out parameters to the callers context */
    5030           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    5031             : 
    5032             :         /* Return result */
    5033           0 :         *result = state->orig.out.result;
    5034             : 
    5035           0 :         tevent_req_received(req);
    5036           0 :         return NT_STATUS_OK;
    5037             : }
    5038             : 
    5039           0 : NTSTATUS dcerpc_spoolss_AbortPrinter(struct dcerpc_binding_handle *h,
    5040             :                                      TALLOC_CTX *mem_ctx,
    5041             :                                      struct policy_handle *_handle /* [in] [ref] */,
    5042             :                                      WERROR *result)
    5043             : {
    5044           0 :         struct spoolss_AbortPrinter r;
    5045           0 :         NTSTATUS status;
    5046             : 
    5047             :         /* In parameters */
    5048           0 :         r.in.handle = _handle;
    5049             : 
    5050             :         /* Out parameters */
    5051             : 
    5052             :         /* Result */
    5053           0 :         NDR_ZERO_STRUCT(r.out.result);
    5054             : 
    5055           0 :         status = dcerpc_spoolss_AbortPrinter_r(h, mem_ctx, &r);
    5056           0 :         if (!NT_STATUS_IS_OK(status)) {
    5057           0 :                 return status;
    5058             :         }
    5059             : 
    5060             :         /* Return variables */
    5061             : 
    5062             :         /* Return result */
    5063           0 :         *result = r.out.result;
    5064             : 
    5065           0 :         return NT_STATUS_OK;
    5066             : }
    5067             : 
    5068             : struct dcerpc_spoolss_ReadPrinter_r_state {
    5069             :         TALLOC_CTX *out_mem_ctx;
    5070             : };
    5071             : 
    5072             : static void dcerpc_spoolss_ReadPrinter_r_done(struct tevent_req *subreq);
    5073             : 
    5074           0 : struct tevent_req *dcerpc_spoolss_ReadPrinter_r_send(TALLOC_CTX *mem_ctx,
    5075             :         struct tevent_context *ev,
    5076             :         struct dcerpc_binding_handle *h,
    5077             :         struct spoolss_ReadPrinter *r)
    5078             : {
    5079           0 :         struct tevent_req *req;
    5080           0 :         struct dcerpc_spoolss_ReadPrinter_r_state *state;
    5081           0 :         struct tevent_req *subreq;
    5082             : 
    5083           0 :         req = tevent_req_create(mem_ctx, &state,
    5084             :                                 struct dcerpc_spoolss_ReadPrinter_r_state);
    5085           0 :         if (req == NULL) {
    5086           0 :                 return NULL;
    5087             :         }
    5088             : 
    5089           0 :         state->out_mem_ctx = talloc_new(state);
    5090           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    5091           0 :                 return tevent_req_post(req, ev);
    5092             :         }
    5093             : 
    5094           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    5095             :                         NULL, &ndr_table_spoolss,
    5096           0 :                         NDR_SPOOLSS_READPRINTER, state->out_mem_ctx, r);
    5097           0 :         if (tevent_req_nomem(subreq, req)) {
    5098           0 :                 return tevent_req_post(req, ev);
    5099             :         }
    5100           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_ReadPrinter_r_done, req);
    5101             : 
    5102           0 :         return req;
    5103             : }
    5104             : 
    5105           0 : static void dcerpc_spoolss_ReadPrinter_r_done(struct tevent_req *subreq)
    5106             : {
    5107           0 :         struct tevent_req *req =
    5108           0 :                 tevent_req_callback_data(subreq,
    5109             :                 struct tevent_req);
    5110           0 :         NTSTATUS status;
    5111             : 
    5112           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    5113           0 :         TALLOC_FREE(subreq);
    5114           0 :         if (tevent_req_nterror(req, status)) {
    5115           0 :                 return;
    5116             :         }
    5117             : 
    5118           0 :         tevent_req_done(req);
    5119             : }
    5120             : 
    5121           0 : NTSTATUS dcerpc_spoolss_ReadPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    5122             : {
    5123           0 :         struct dcerpc_spoolss_ReadPrinter_r_state *state =
    5124           0 :                 tevent_req_data(req,
    5125             :                 struct dcerpc_spoolss_ReadPrinter_r_state);
    5126           0 :         NTSTATUS status;
    5127             : 
    5128           0 :         if (tevent_req_is_nterror(req, &status)) {
    5129           0 :                 tevent_req_received(req);
    5130           0 :                 return status;
    5131             :         }
    5132             : 
    5133           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    5134             : 
    5135           0 :         tevent_req_received(req);
    5136           0 :         return NT_STATUS_OK;
    5137             : }
    5138             : 
    5139           0 : NTSTATUS dcerpc_spoolss_ReadPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ReadPrinter *r)
    5140             : {
    5141           0 :         NTSTATUS status;
    5142             : 
    5143           0 :         status = dcerpc_binding_handle_call(h,
    5144             :                         NULL, &ndr_table_spoolss,
    5145             :                         NDR_SPOOLSS_READPRINTER, mem_ctx, r);
    5146             : 
    5147           0 :         return status;
    5148             : }
    5149             : 
    5150             : struct dcerpc_spoolss_ReadPrinter_state {
    5151             :         struct spoolss_ReadPrinter orig;
    5152             :         struct spoolss_ReadPrinter tmp;
    5153             :         TALLOC_CTX *out_mem_ctx;
    5154             : };
    5155             : 
    5156             : static void dcerpc_spoolss_ReadPrinter_done(struct tevent_req *subreq);
    5157             : 
    5158           0 : struct tevent_req *dcerpc_spoolss_ReadPrinter_send(TALLOC_CTX *mem_ctx,
    5159             :                                                    struct tevent_context *ev,
    5160             :                                                    struct dcerpc_binding_handle *h,
    5161             :                                                    struct policy_handle *_handle /* [in] [ref] */,
    5162             :                                                    uint8_t *_data /* [out] [ref,size_is(data_size)] */,
    5163             :                                                    uint32_t _data_size /* [in]  */,
    5164             :                                                    uint32_t *__data_size /* [out] [ref] */)
    5165             : {
    5166           0 :         struct tevent_req *req;
    5167           0 :         struct dcerpc_spoolss_ReadPrinter_state *state;
    5168           0 :         struct tevent_req *subreq;
    5169             : 
    5170           0 :         req = tevent_req_create(mem_ctx, &state,
    5171             :                                 struct dcerpc_spoolss_ReadPrinter_state);
    5172           0 :         if (req == NULL) {
    5173           0 :                 return NULL;
    5174             :         }
    5175           0 :         state->out_mem_ctx = NULL;
    5176             : 
    5177             :         /* In parameters */
    5178           0 :         state->orig.in.handle = _handle;
    5179           0 :         state->orig.in.data_size = _data_size;
    5180             : 
    5181             :         /* Out parameters */
    5182           0 :         state->orig.out.data = _data;
    5183           0 :         state->orig.out._data_size = __data_size;
    5184             : 
    5185             :         /* Result */
    5186           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    5187             : 
    5188           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    5189             :                              "dcerpc_spoolss_ReadPrinter_out_memory");
    5190           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    5191           0 :                 return tevent_req_post(req, ev);
    5192             :         }
    5193             : 
    5194             :         /* make a temporary copy, that we pass to the dispatch function */
    5195           0 :         state->tmp = state->orig;
    5196             : 
    5197           0 :         subreq = dcerpc_spoolss_ReadPrinter_r_send(state, ev, h, &state->tmp);
    5198           0 :         if (tevent_req_nomem(subreq, req)) {
    5199           0 :                 return tevent_req_post(req, ev);
    5200             :         }
    5201           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_ReadPrinter_done, req);
    5202           0 :         return req;
    5203             : }
    5204             : 
    5205           0 : static void dcerpc_spoolss_ReadPrinter_done(struct tevent_req *subreq)
    5206             : {
    5207           0 :         struct tevent_req *req = tevent_req_callback_data(
    5208             :                 subreq, struct tevent_req);
    5209           0 :         struct dcerpc_spoolss_ReadPrinter_state *state = tevent_req_data(
    5210             :                 req, struct dcerpc_spoolss_ReadPrinter_state);
    5211           0 :         NTSTATUS status;
    5212           0 :         TALLOC_CTX *mem_ctx;
    5213             : 
    5214           0 :         if (state->out_mem_ctx) {
    5215           0 :                 mem_ctx = state->out_mem_ctx;
    5216             :         } else {
    5217           0 :                 mem_ctx = state;
    5218             :         }
    5219             : 
    5220           0 :         status = dcerpc_spoolss_ReadPrinter_r_recv(subreq, mem_ctx);
    5221           0 :         TALLOC_FREE(subreq);
    5222           0 :         if (tevent_req_nterror(req, status)) {
    5223           0 :                 return;
    5224             :         }
    5225             : 
    5226             :         /* Copy out parameters */
    5227             :         {
    5228           0 :                 size_t _copy_len_data;
    5229           0 :                 _copy_len_data = state->tmp.in.data_size;
    5230           0 :                 if (state->orig.out.data != state->tmp.out.data) {
    5231           0 :                         memcpy(state->orig.out.data, state->tmp.out.data, _copy_len_data * sizeof(*state->orig.out.data));
    5232             :                 }
    5233             :         }
    5234           0 :         *state->orig.out._data_size = *state->tmp.out._data_size;
    5235             : 
    5236             :         /* Copy result */
    5237           0 :         state->orig.out.result = state->tmp.out.result;
    5238             : 
    5239             :         /* Reset temporary structure */
    5240           0 :         NDR_ZERO_STRUCT(state->tmp);
    5241             : 
    5242           0 :         tevent_req_done(req);
    5243             : }
    5244             : 
    5245           0 : NTSTATUS dcerpc_spoolss_ReadPrinter_recv(struct tevent_req *req,
    5246             :                                          TALLOC_CTX *mem_ctx,
    5247             :                                          WERROR *result)
    5248             : {
    5249           0 :         struct dcerpc_spoolss_ReadPrinter_state *state = tevent_req_data(
    5250             :                 req, struct dcerpc_spoolss_ReadPrinter_state);
    5251           0 :         NTSTATUS status;
    5252             : 
    5253           0 :         if (tevent_req_is_nterror(req, &status)) {
    5254           0 :                 tevent_req_received(req);
    5255           0 :                 return status;
    5256             :         }
    5257             : 
    5258             :         /* Steal possible out parameters to the callers context */
    5259           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    5260             : 
    5261             :         /* Return result */
    5262           0 :         *result = state->orig.out.result;
    5263             : 
    5264           0 :         tevent_req_received(req);
    5265           0 :         return NT_STATUS_OK;
    5266             : }
    5267             : 
    5268           0 : NTSTATUS dcerpc_spoolss_ReadPrinter(struct dcerpc_binding_handle *h,
    5269             :                                     TALLOC_CTX *mem_ctx,
    5270             :                                     struct policy_handle *_handle /* [in] [ref] */,
    5271             :                                     uint8_t *_data /* [out] [ref,size_is(data_size)] */,
    5272             :                                     uint32_t _data_size /* [in]  */,
    5273             :                                     uint32_t *__data_size /* [out] [ref] */,
    5274             :                                     WERROR *result)
    5275             : {
    5276           0 :         struct spoolss_ReadPrinter r;
    5277           0 :         NTSTATUS status;
    5278             : 
    5279             :         /* In parameters */
    5280           0 :         r.in.handle = _handle;
    5281           0 :         r.in.data_size = _data_size;
    5282             : 
    5283             :         /* Out parameters */
    5284           0 :         r.out.data = _data;
    5285           0 :         r.out._data_size = __data_size;
    5286             : 
    5287             :         /* Result */
    5288           0 :         NDR_ZERO_STRUCT(r.out.result);
    5289             : 
    5290           0 :         status = dcerpc_spoolss_ReadPrinter_r(h, mem_ctx, &r);
    5291           0 :         if (!NT_STATUS_IS_OK(status)) {
    5292           0 :                 return status;
    5293             :         }
    5294             : 
    5295             :         /* Return variables */
    5296             :         {
    5297           0 :                 size_t _copy_len_data;
    5298           0 :                 _copy_len_data = r.in.data_size;
    5299           0 :                 if (_data != r.out.data) {
    5300           0 :                         memcpy(_data, r.out.data, _copy_len_data * sizeof(*_data));
    5301             :                 }
    5302             :         }
    5303           0 :         *__data_size = *r.out._data_size;
    5304             : 
    5305             :         /* Return result */
    5306           0 :         *result = r.out.result;
    5307             : 
    5308           0 :         return NT_STATUS_OK;
    5309             : }
    5310             : 
    5311             : struct dcerpc_spoolss_EndDocPrinter_r_state {
    5312             :         TALLOC_CTX *out_mem_ctx;
    5313             : };
    5314             : 
    5315             : static void dcerpc_spoolss_EndDocPrinter_r_done(struct tevent_req *subreq);
    5316             : 
    5317           0 : struct tevent_req *dcerpc_spoolss_EndDocPrinter_r_send(TALLOC_CTX *mem_ctx,
    5318             :         struct tevent_context *ev,
    5319             :         struct dcerpc_binding_handle *h,
    5320             :         struct spoolss_EndDocPrinter *r)
    5321             : {
    5322           0 :         struct tevent_req *req;
    5323           0 :         struct dcerpc_spoolss_EndDocPrinter_r_state *state;
    5324           0 :         struct tevent_req *subreq;
    5325             : 
    5326           0 :         req = tevent_req_create(mem_ctx, &state,
    5327             :                                 struct dcerpc_spoolss_EndDocPrinter_r_state);
    5328           0 :         if (req == NULL) {
    5329           0 :                 return NULL;
    5330             :         }
    5331             : 
    5332           0 :         state->out_mem_ctx = NULL;
    5333             : 
    5334           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    5335             :                         NULL, &ndr_table_spoolss,
    5336             :                         NDR_SPOOLSS_ENDDOCPRINTER, state, r);
    5337           0 :         if (tevent_req_nomem(subreq, req)) {
    5338           0 :                 return tevent_req_post(req, ev);
    5339             :         }
    5340           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EndDocPrinter_r_done, req);
    5341             : 
    5342           0 :         return req;
    5343             : }
    5344             : 
    5345           0 : static void dcerpc_spoolss_EndDocPrinter_r_done(struct tevent_req *subreq)
    5346             : {
    5347           0 :         struct tevent_req *req =
    5348           0 :                 tevent_req_callback_data(subreq,
    5349             :                 struct tevent_req);
    5350           0 :         NTSTATUS status;
    5351             : 
    5352           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    5353           0 :         TALLOC_FREE(subreq);
    5354           0 :         if (tevent_req_nterror(req, status)) {
    5355           0 :                 return;
    5356             :         }
    5357             : 
    5358           0 :         tevent_req_done(req);
    5359             : }
    5360             : 
    5361           0 : NTSTATUS dcerpc_spoolss_EndDocPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    5362             : {
    5363           0 :         struct dcerpc_spoolss_EndDocPrinter_r_state *state =
    5364           0 :                 tevent_req_data(req,
    5365             :                 struct dcerpc_spoolss_EndDocPrinter_r_state);
    5366           0 :         NTSTATUS status;
    5367             : 
    5368           0 :         if (tevent_req_is_nterror(req, &status)) {
    5369           0 :                 tevent_req_received(req);
    5370           0 :                 return status;
    5371             :         }
    5372             : 
    5373           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    5374             : 
    5375           0 :         tevent_req_received(req);
    5376           0 :         return NT_STATUS_OK;
    5377             : }
    5378             : 
    5379         640 : NTSTATUS dcerpc_spoolss_EndDocPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EndDocPrinter *r)
    5380             : {
    5381           0 :         NTSTATUS status;
    5382             : 
    5383         640 :         status = dcerpc_binding_handle_call(h,
    5384             :                         NULL, &ndr_table_spoolss,
    5385             :                         NDR_SPOOLSS_ENDDOCPRINTER, mem_ctx, r);
    5386             : 
    5387         640 :         return status;
    5388             : }
    5389             : 
    5390             : struct dcerpc_spoolss_EndDocPrinter_state {
    5391             :         struct spoolss_EndDocPrinter orig;
    5392             :         struct spoolss_EndDocPrinter tmp;
    5393             :         TALLOC_CTX *out_mem_ctx;
    5394             : };
    5395             : 
    5396             : static void dcerpc_spoolss_EndDocPrinter_done(struct tevent_req *subreq);
    5397             : 
    5398           0 : struct tevent_req *dcerpc_spoolss_EndDocPrinter_send(TALLOC_CTX *mem_ctx,
    5399             :                                                      struct tevent_context *ev,
    5400             :                                                      struct dcerpc_binding_handle *h,
    5401             :                                                      struct policy_handle *_handle /* [in] [ref] */)
    5402             : {
    5403           0 :         struct tevent_req *req;
    5404           0 :         struct dcerpc_spoolss_EndDocPrinter_state *state;
    5405           0 :         struct tevent_req *subreq;
    5406             : 
    5407           0 :         req = tevent_req_create(mem_ctx, &state,
    5408             :                                 struct dcerpc_spoolss_EndDocPrinter_state);
    5409           0 :         if (req == NULL) {
    5410           0 :                 return NULL;
    5411             :         }
    5412           0 :         state->out_mem_ctx = NULL;
    5413             : 
    5414             :         /* In parameters */
    5415           0 :         state->orig.in.handle = _handle;
    5416             : 
    5417             :         /* Out parameters */
    5418             : 
    5419             :         /* Result */
    5420           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    5421             : 
    5422             :         /* make a temporary copy, that we pass to the dispatch function */
    5423           0 :         state->tmp = state->orig;
    5424             : 
    5425           0 :         subreq = dcerpc_spoolss_EndDocPrinter_r_send(state, ev, h, &state->tmp);
    5426           0 :         if (tevent_req_nomem(subreq, req)) {
    5427           0 :                 return tevent_req_post(req, ev);
    5428             :         }
    5429           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EndDocPrinter_done, req);
    5430           0 :         return req;
    5431             : }
    5432             : 
    5433           0 : static void dcerpc_spoolss_EndDocPrinter_done(struct tevent_req *subreq)
    5434             : {
    5435           0 :         struct tevent_req *req = tevent_req_callback_data(
    5436             :                 subreq, struct tevent_req);
    5437           0 :         struct dcerpc_spoolss_EndDocPrinter_state *state = tevent_req_data(
    5438             :                 req, struct dcerpc_spoolss_EndDocPrinter_state);
    5439           0 :         NTSTATUS status;
    5440           0 :         TALLOC_CTX *mem_ctx;
    5441             : 
    5442           0 :         if (state->out_mem_ctx) {
    5443           0 :                 mem_ctx = state->out_mem_ctx;
    5444             :         } else {
    5445           0 :                 mem_ctx = state;
    5446             :         }
    5447             : 
    5448           0 :         status = dcerpc_spoolss_EndDocPrinter_r_recv(subreq, mem_ctx);
    5449           0 :         TALLOC_FREE(subreq);
    5450           0 :         if (tevent_req_nterror(req, status)) {
    5451           0 :                 return;
    5452             :         }
    5453             : 
    5454             :         /* Copy out parameters */
    5455             : 
    5456             :         /* Copy result */
    5457           0 :         state->orig.out.result = state->tmp.out.result;
    5458             : 
    5459             :         /* Reset temporary structure */
    5460           0 :         NDR_ZERO_STRUCT(state->tmp);
    5461             : 
    5462           0 :         tevent_req_done(req);
    5463             : }
    5464             : 
    5465           0 : NTSTATUS dcerpc_spoolss_EndDocPrinter_recv(struct tevent_req *req,
    5466             :                                            TALLOC_CTX *mem_ctx,
    5467             :                                            WERROR *result)
    5468             : {
    5469           0 :         struct dcerpc_spoolss_EndDocPrinter_state *state = tevent_req_data(
    5470             :                 req, struct dcerpc_spoolss_EndDocPrinter_state);
    5471           0 :         NTSTATUS status;
    5472             : 
    5473           0 :         if (tevent_req_is_nterror(req, &status)) {
    5474           0 :                 tevent_req_received(req);
    5475           0 :                 return status;
    5476             :         }
    5477             : 
    5478             :         /* Steal possible out parameters to the callers context */
    5479           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    5480             : 
    5481             :         /* Return result */
    5482           0 :         *result = state->orig.out.result;
    5483             : 
    5484           0 :         tevent_req_received(req);
    5485           0 :         return NT_STATUS_OK;
    5486             : }
    5487             : 
    5488           0 : NTSTATUS dcerpc_spoolss_EndDocPrinter(struct dcerpc_binding_handle *h,
    5489             :                                       TALLOC_CTX *mem_ctx,
    5490             :                                       struct policy_handle *_handle /* [in] [ref] */,
    5491             :                                       WERROR *result)
    5492             : {
    5493           0 :         struct spoolss_EndDocPrinter r;
    5494           0 :         NTSTATUS status;
    5495             : 
    5496             :         /* In parameters */
    5497           0 :         r.in.handle = _handle;
    5498             : 
    5499             :         /* Out parameters */
    5500             : 
    5501             :         /* Result */
    5502           0 :         NDR_ZERO_STRUCT(r.out.result);
    5503             : 
    5504           0 :         status = dcerpc_spoolss_EndDocPrinter_r(h, mem_ctx, &r);
    5505           0 :         if (!NT_STATUS_IS_OK(status)) {
    5506           0 :                 return status;
    5507             :         }
    5508             : 
    5509             :         /* Return variables */
    5510             : 
    5511             :         /* Return result */
    5512           0 :         *result = r.out.result;
    5513             : 
    5514           0 :         return NT_STATUS_OK;
    5515             : }
    5516             : 
    5517             : struct dcerpc_spoolss_AddJob_r_state {
    5518             :         TALLOC_CTX *out_mem_ctx;
    5519             : };
    5520             : 
    5521             : static void dcerpc_spoolss_AddJob_r_done(struct tevent_req *subreq);
    5522             : 
    5523           0 : struct tevent_req *dcerpc_spoolss_AddJob_r_send(TALLOC_CTX *mem_ctx,
    5524             :         struct tevent_context *ev,
    5525             :         struct dcerpc_binding_handle *h,
    5526             :         struct spoolss_AddJob *r)
    5527             : {
    5528           0 :         struct tevent_req *req;
    5529           0 :         struct dcerpc_spoolss_AddJob_r_state *state;
    5530           0 :         struct tevent_req *subreq;
    5531             : 
    5532           0 :         req = tevent_req_create(mem_ctx, &state,
    5533             :                                 struct dcerpc_spoolss_AddJob_r_state);
    5534           0 :         if (req == NULL) {
    5535           0 :                 return NULL;
    5536             :         }
    5537             : 
    5538           0 :         state->out_mem_ctx = talloc_new(state);
    5539           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    5540           0 :                 return tevent_req_post(req, ev);
    5541             :         }
    5542             : 
    5543           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    5544             :                         NULL, &ndr_table_spoolss,
    5545           0 :                         NDR_SPOOLSS_ADDJOB, state->out_mem_ctx, r);
    5546           0 :         if (tevent_req_nomem(subreq, req)) {
    5547           0 :                 return tevent_req_post(req, ev);
    5548             :         }
    5549           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddJob_r_done, req);
    5550             : 
    5551           0 :         return req;
    5552             : }
    5553             : 
    5554           0 : static void dcerpc_spoolss_AddJob_r_done(struct tevent_req *subreq)
    5555             : {
    5556           0 :         struct tevent_req *req =
    5557           0 :                 tevent_req_callback_data(subreq,
    5558             :                 struct tevent_req);
    5559           0 :         NTSTATUS status;
    5560             : 
    5561           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    5562           0 :         TALLOC_FREE(subreq);
    5563           0 :         if (tevent_req_nterror(req, status)) {
    5564           0 :                 return;
    5565             :         }
    5566             : 
    5567           0 :         tevent_req_done(req);
    5568             : }
    5569             : 
    5570           0 : NTSTATUS dcerpc_spoolss_AddJob_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    5571             : {
    5572           0 :         struct dcerpc_spoolss_AddJob_r_state *state =
    5573           0 :                 tevent_req_data(req,
    5574             :                 struct dcerpc_spoolss_AddJob_r_state);
    5575           0 :         NTSTATUS status;
    5576             : 
    5577           0 :         if (tevent_req_is_nterror(req, &status)) {
    5578           0 :                 tevent_req_received(req);
    5579           0 :                 return status;
    5580             :         }
    5581             : 
    5582           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    5583             : 
    5584           0 :         tevent_req_received(req);
    5585           0 :         return NT_STATUS_OK;
    5586             : }
    5587             : 
    5588          16 : NTSTATUS dcerpc_spoolss_AddJob_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddJob *r)
    5589             : {
    5590           0 :         NTSTATUS status;
    5591             : 
    5592          16 :         status = dcerpc_binding_handle_call(h,
    5593             :                         NULL, &ndr_table_spoolss,
    5594             :                         NDR_SPOOLSS_ADDJOB, mem_ctx, r);
    5595             : 
    5596          16 :         return status;
    5597             : }
    5598             : 
    5599             : struct dcerpc_spoolss_AddJob_state {
    5600             :         struct spoolss_AddJob orig;
    5601             :         struct spoolss_AddJob tmp;
    5602             :         TALLOC_CTX *out_mem_ctx;
    5603             : };
    5604             : 
    5605             : static void dcerpc_spoolss_AddJob_done(struct tevent_req *subreq);
    5606             : 
    5607           0 : struct tevent_req *dcerpc_spoolss_AddJob_send(TALLOC_CTX *mem_ctx,
    5608             :                                               struct tevent_context *ev,
    5609             :                                               struct dcerpc_binding_handle *h,
    5610             :                                               struct policy_handle *_handle /* [in] [ref] */,
    5611             :                                               uint32_t _level /* [in]  */,
    5612             :                                               uint8_t *_buffer /* [in,out] [size_is(offered),unique] */,
    5613             :                                               uint32_t _offered /* [in]  */,
    5614             :                                               uint32_t *_needed /* [out] [ref] */)
    5615             : {
    5616           0 :         struct tevent_req *req;
    5617           0 :         struct dcerpc_spoolss_AddJob_state *state;
    5618           0 :         struct tevent_req *subreq;
    5619             : 
    5620           0 :         req = tevent_req_create(mem_ctx, &state,
    5621             :                                 struct dcerpc_spoolss_AddJob_state);
    5622           0 :         if (req == NULL) {
    5623           0 :                 return NULL;
    5624             :         }
    5625           0 :         state->out_mem_ctx = NULL;
    5626             : 
    5627             :         /* In parameters */
    5628           0 :         state->orig.in.handle = _handle;
    5629           0 :         state->orig.in.level = _level;
    5630           0 :         state->orig.in.buffer = _buffer;
    5631           0 :         state->orig.in.offered = _offered;
    5632             : 
    5633             :         /* Out parameters */
    5634           0 :         state->orig.out.buffer = _buffer;
    5635           0 :         state->orig.out.needed = _needed;
    5636             : 
    5637             :         /* Result */
    5638           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    5639             : 
    5640           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    5641             :                              "dcerpc_spoolss_AddJob_out_memory");
    5642           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    5643           0 :                 return tevent_req_post(req, ev);
    5644             :         }
    5645             : 
    5646             :         /* make a temporary copy, that we pass to the dispatch function */
    5647           0 :         state->tmp = state->orig;
    5648             : 
    5649           0 :         subreq = dcerpc_spoolss_AddJob_r_send(state, ev, h, &state->tmp);
    5650           0 :         if (tevent_req_nomem(subreq, req)) {
    5651           0 :                 return tevent_req_post(req, ev);
    5652             :         }
    5653           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddJob_done, req);
    5654           0 :         return req;
    5655             : }
    5656             : 
    5657           0 : static void dcerpc_spoolss_AddJob_done(struct tevent_req *subreq)
    5658             : {
    5659           0 :         struct tevent_req *req = tevent_req_callback_data(
    5660             :                 subreq, struct tevent_req);
    5661           0 :         struct dcerpc_spoolss_AddJob_state *state = tevent_req_data(
    5662             :                 req, struct dcerpc_spoolss_AddJob_state);
    5663           0 :         NTSTATUS status;
    5664           0 :         TALLOC_CTX *mem_ctx;
    5665             : 
    5666           0 :         if (state->out_mem_ctx) {
    5667           0 :                 mem_ctx = state->out_mem_ctx;
    5668             :         } else {
    5669           0 :                 mem_ctx = state;
    5670             :         }
    5671             : 
    5672           0 :         status = dcerpc_spoolss_AddJob_r_recv(subreq, mem_ctx);
    5673           0 :         TALLOC_FREE(subreq);
    5674           0 :         if (tevent_req_nterror(req, status)) {
    5675           0 :                 return;
    5676             :         }
    5677             : 
    5678             :         /* Copy out parameters */
    5679           0 :         if (state->orig.out.buffer && state->tmp.out.buffer) {
    5680             :                 {
    5681           0 :                         size_t _copy_len_buffer;
    5682           0 :                         _copy_len_buffer = state->tmp.in.offered;
    5683           0 :                         if (state->orig.out.buffer != state->tmp.out.buffer) {
    5684           0 :                                 memcpy(state->orig.out.buffer, state->tmp.out.buffer, _copy_len_buffer * sizeof(*state->orig.out.buffer));
    5685             :                         }
    5686             :                 }
    5687             :         }
    5688           0 :         *state->orig.out.needed = *state->tmp.out.needed;
    5689             : 
    5690             :         /* Copy result */
    5691           0 :         state->orig.out.result = state->tmp.out.result;
    5692             : 
    5693             :         /* Reset temporary structure */
    5694           0 :         NDR_ZERO_STRUCT(state->tmp);
    5695             : 
    5696           0 :         tevent_req_done(req);
    5697             : }
    5698             : 
    5699           0 : NTSTATUS dcerpc_spoolss_AddJob_recv(struct tevent_req *req,
    5700             :                                     TALLOC_CTX *mem_ctx,
    5701             :                                     WERROR *result)
    5702             : {
    5703           0 :         struct dcerpc_spoolss_AddJob_state *state = tevent_req_data(
    5704             :                 req, struct dcerpc_spoolss_AddJob_state);
    5705           0 :         NTSTATUS status;
    5706             : 
    5707           0 :         if (tevent_req_is_nterror(req, &status)) {
    5708           0 :                 tevent_req_received(req);
    5709           0 :                 return status;
    5710             :         }
    5711             : 
    5712             :         /* Steal possible out parameters to the callers context */
    5713           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    5714             : 
    5715             :         /* Return result */
    5716           0 :         *result = state->orig.out.result;
    5717             : 
    5718           0 :         tevent_req_received(req);
    5719           0 :         return NT_STATUS_OK;
    5720             : }
    5721             : 
    5722           0 : NTSTATUS dcerpc_spoolss_AddJob(struct dcerpc_binding_handle *h,
    5723             :                                TALLOC_CTX *mem_ctx,
    5724             :                                struct policy_handle *_handle /* [in] [ref] */,
    5725             :                                uint32_t _level /* [in]  */,
    5726             :                                uint8_t *_buffer /* [in,out] [size_is(offered),unique] */,
    5727             :                                uint32_t _offered /* [in]  */,
    5728             :                                uint32_t *_needed /* [out] [ref] */,
    5729             :                                WERROR *result)
    5730             : {
    5731           0 :         struct spoolss_AddJob r;
    5732           0 :         NTSTATUS status;
    5733             : 
    5734             :         /* In parameters */
    5735           0 :         r.in.handle = _handle;
    5736           0 :         r.in.level = _level;
    5737           0 :         r.in.buffer = _buffer;
    5738           0 :         r.in.offered = _offered;
    5739             : 
    5740             :         /* Out parameters */
    5741           0 :         r.out.buffer = _buffer;
    5742           0 :         r.out.needed = _needed;
    5743             : 
    5744             :         /* Result */
    5745           0 :         NDR_ZERO_STRUCT(r.out.result);
    5746             : 
    5747           0 :         status = dcerpc_spoolss_AddJob_r(h, mem_ctx, &r);
    5748           0 :         if (!NT_STATUS_IS_OK(status)) {
    5749           0 :                 return status;
    5750             :         }
    5751             : 
    5752             :         /* Return variables */
    5753           0 :         if (_buffer && r.out.buffer) {
    5754             :                 {
    5755           0 :                         size_t _copy_len_buffer;
    5756           0 :                         _copy_len_buffer = r.in.offered;
    5757           0 :                         if (_buffer != r.out.buffer) {
    5758           0 :                                 memcpy(_buffer, r.out.buffer, _copy_len_buffer * sizeof(*_buffer));
    5759             :                         }
    5760             :                 }
    5761             :         }
    5762           0 :         *_needed = *r.out.needed;
    5763             : 
    5764             :         /* Return result */
    5765           0 :         *result = r.out.result;
    5766             : 
    5767           0 :         return NT_STATUS_OK;
    5768             : }
    5769             : 
    5770             : struct dcerpc_spoolss_ScheduleJob_r_state {
    5771             :         TALLOC_CTX *out_mem_ctx;
    5772             : };
    5773             : 
    5774             : static void dcerpc_spoolss_ScheduleJob_r_done(struct tevent_req *subreq);
    5775             : 
    5776           0 : struct tevent_req *dcerpc_spoolss_ScheduleJob_r_send(TALLOC_CTX *mem_ctx,
    5777             :         struct tevent_context *ev,
    5778             :         struct dcerpc_binding_handle *h,
    5779             :         struct spoolss_ScheduleJob *r)
    5780             : {
    5781           0 :         struct tevent_req *req;
    5782           0 :         struct dcerpc_spoolss_ScheduleJob_r_state *state;
    5783           0 :         struct tevent_req *subreq;
    5784             : 
    5785           0 :         req = tevent_req_create(mem_ctx, &state,
    5786             :                                 struct dcerpc_spoolss_ScheduleJob_r_state);
    5787           0 :         if (req == NULL) {
    5788           0 :                 return NULL;
    5789             :         }
    5790             : 
    5791           0 :         state->out_mem_ctx = NULL;
    5792             : 
    5793           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    5794             :                         NULL, &ndr_table_spoolss,
    5795             :                         NDR_SPOOLSS_SCHEDULEJOB, state, r);
    5796           0 :         if (tevent_req_nomem(subreq, req)) {
    5797           0 :                 return tevent_req_post(req, ev);
    5798             :         }
    5799           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_ScheduleJob_r_done, req);
    5800             : 
    5801           0 :         return req;
    5802             : }
    5803             : 
    5804           0 : static void dcerpc_spoolss_ScheduleJob_r_done(struct tevent_req *subreq)
    5805             : {
    5806           0 :         struct tevent_req *req =
    5807           0 :                 tevent_req_callback_data(subreq,
    5808             :                 struct tevent_req);
    5809           0 :         NTSTATUS status;
    5810             : 
    5811           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    5812           0 :         TALLOC_FREE(subreq);
    5813           0 :         if (tevent_req_nterror(req, status)) {
    5814           0 :                 return;
    5815             :         }
    5816             : 
    5817           0 :         tevent_req_done(req);
    5818             : }
    5819             : 
    5820           0 : NTSTATUS dcerpc_spoolss_ScheduleJob_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    5821             : {
    5822           0 :         struct dcerpc_spoolss_ScheduleJob_r_state *state =
    5823           0 :                 tevent_req_data(req,
    5824             :                 struct dcerpc_spoolss_ScheduleJob_r_state);
    5825           0 :         NTSTATUS status;
    5826             : 
    5827           0 :         if (tevent_req_is_nterror(req, &status)) {
    5828           0 :                 tevent_req_received(req);
    5829           0 :                 return status;
    5830             :         }
    5831             : 
    5832           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    5833             : 
    5834           0 :         tevent_req_received(req);
    5835           0 :         return NT_STATUS_OK;
    5836             : }
    5837             : 
    5838           0 : NTSTATUS dcerpc_spoolss_ScheduleJob_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ScheduleJob *r)
    5839             : {
    5840           0 :         NTSTATUS status;
    5841             : 
    5842           0 :         status = dcerpc_binding_handle_call(h,
    5843             :                         NULL, &ndr_table_spoolss,
    5844             :                         NDR_SPOOLSS_SCHEDULEJOB, mem_ctx, r);
    5845             : 
    5846           0 :         return status;
    5847             : }
    5848             : 
    5849             : struct dcerpc_spoolss_ScheduleJob_state {
    5850             :         struct spoolss_ScheduleJob orig;
    5851             :         struct spoolss_ScheduleJob tmp;
    5852             :         TALLOC_CTX *out_mem_ctx;
    5853             : };
    5854             : 
    5855             : static void dcerpc_spoolss_ScheduleJob_done(struct tevent_req *subreq);
    5856             : 
    5857           0 : struct tevent_req *dcerpc_spoolss_ScheduleJob_send(TALLOC_CTX *mem_ctx,
    5858             :                                                    struct tevent_context *ev,
    5859             :                                                    struct dcerpc_binding_handle *h,
    5860             :                                                    struct policy_handle *_handle /* [in] [ref] */,
    5861             :                                                    uint32_t _jobid /* [in]  */)
    5862             : {
    5863           0 :         struct tevent_req *req;
    5864           0 :         struct dcerpc_spoolss_ScheduleJob_state *state;
    5865           0 :         struct tevent_req *subreq;
    5866             : 
    5867           0 :         req = tevent_req_create(mem_ctx, &state,
    5868             :                                 struct dcerpc_spoolss_ScheduleJob_state);
    5869           0 :         if (req == NULL) {
    5870           0 :                 return NULL;
    5871             :         }
    5872           0 :         state->out_mem_ctx = NULL;
    5873             : 
    5874             :         /* In parameters */
    5875           0 :         state->orig.in.handle = _handle;
    5876           0 :         state->orig.in.jobid = _jobid;
    5877             : 
    5878             :         /* Out parameters */
    5879             : 
    5880             :         /* Result */
    5881           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    5882             : 
    5883             :         /* make a temporary copy, that we pass to the dispatch function */
    5884           0 :         state->tmp = state->orig;
    5885             : 
    5886           0 :         subreq = dcerpc_spoolss_ScheduleJob_r_send(state, ev, h, &state->tmp);
    5887           0 :         if (tevent_req_nomem(subreq, req)) {
    5888           0 :                 return tevent_req_post(req, ev);
    5889             :         }
    5890           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_ScheduleJob_done, req);
    5891           0 :         return req;
    5892             : }
    5893             : 
    5894           0 : static void dcerpc_spoolss_ScheduleJob_done(struct tevent_req *subreq)
    5895             : {
    5896           0 :         struct tevent_req *req = tevent_req_callback_data(
    5897             :                 subreq, struct tevent_req);
    5898           0 :         struct dcerpc_spoolss_ScheduleJob_state *state = tevent_req_data(
    5899             :                 req, struct dcerpc_spoolss_ScheduleJob_state);
    5900           0 :         NTSTATUS status;
    5901           0 :         TALLOC_CTX *mem_ctx;
    5902             : 
    5903           0 :         if (state->out_mem_ctx) {
    5904           0 :                 mem_ctx = state->out_mem_ctx;
    5905             :         } else {
    5906           0 :                 mem_ctx = state;
    5907             :         }
    5908             : 
    5909           0 :         status = dcerpc_spoolss_ScheduleJob_r_recv(subreq, mem_ctx);
    5910           0 :         TALLOC_FREE(subreq);
    5911           0 :         if (tevent_req_nterror(req, status)) {
    5912           0 :                 return;
    5913             :         }
    5914             : 
    5915             :         /* Copy out parameters */
    5916             : 
    5917             :         /* Copy result */
    5918           0 :         state->orig.out.result = state->tmp.out.result;
    5919             : 
    5920             :         /* Reset temporary structure */
    5921           0 :         NDR_ZERO_STRUCT(state->tmp);
    5922             : 
    5923           0 :         tevent_req_done(req);
    5924             : }
    5925             : 
    5926           0 : NTSTATUS dcerpc_spoolss_ScheduleJob_recv(struct tevent_req *req,
    5927             :                                          TALLOC_CTX *mem_ctx,
    5928             :                                          WERROR *result)
    5929             : {
    5930           0 :         struct dcerpc_spoolss_ScheduleJob_state *state = tevent_req_data(
    5931             :                 req, struct dcerpc_spoolss_ScheduleJob_state);
    5932           0 :         NTSTATUS status;
    5933             : 
    5934           0 :         if (tevent_req_is_nterror(req, &status)) {
    5935           0 :                 tevent_req_received(req);
    5936           0 :                 return status;
    5937             :         }
    5938             : 
    5939             :         /* Steal possible out parameters to the callers context */
    5940           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    5941             : 
    5942             :         /* Return result */
    5943           0 :         *result = state->orig.out.result;
    5944             : 
    5945           0 :         tevent_req_received(req);
    5946           0 :         return NT_STATUS_OK;
    5947             : }
    5948             : 
    5949           0 : NTSTATUS dcerpc_spoolss_ScheduleJob(struct dcerpc_binding_handle *h,
    5950             :                                     TALLOC_CTX *mem_ctx,
    5951             :                                     struct policy_handle *_handle /* [in] [ref] */,
    5952             :                                     uint32_t _jobid /* [in]  */,
    5953             :                                     WERROR *result)
    5954             : {
    5955           0 :         struct spoolss_ScheduleJob r;
    5956           0 :         NTSTATUS status;
    5957             : 
    5958             :         /* In parameters */
    5959           0 :         r.in.handle = _handle;
    5960           0 :         r.in.jobid = _jobid;
    5961             : 
    5962             :         /* Out parameters */
    5963             : 
    5964             :         /* Result */
    5965           0 :         NDR_ZERO_STRUCT(r.out.result);
    5966             : 
    5967           0 :         status = dcerpc_spoolss_ScheduleJob_r(h, mem_ctx, &r);
    5968           0 :         if (!NT_STATUS_IS_OK(status)) {
    5969           0 :                 return status;
    5970             :         }
    5971             : 
    5972             :         /* Return variables */
    5973             : 
    5974             :         /* Return result */
    5975           0 :         *result = r.out.result;
    5976             : 
    5977           0 :         return NT_STATUS_OK;
    5978             : }
    5979             : 
    5980             : struct dcerpc_spoolss_GetPrinterData_r_state {
    5981             :         TALLOC_CTX *out_mem_ctx;
    5982             : };
    5983             : 
    5984             : static void dcerpc_spoolss_GetPrinterData_r_done(struct tevent_req *subreq);
    5985             : 
    5986           0 : struct tevent_req *dcerpc_spoolss_GetPrinterData_r_send(TALLOC_CTX *mem_ctx,
    5987             :         struct tevent_context *ev,
    5988             :         struct dcerpc_binding_handle *h,
    5989             :         struct spoolss_GetPrinterData *r)
    5990             : {
    5991           0 :         struct tevent_req *req;
    5992           0 :         struct dcerpc_spoolss_GetPrinterData_r_state *state;
    5993           0 :         struct tevent_req *subreq;
    5994             : 
    5995           0 :         req = tevent_req_create(mem_ctx, &state,
    5996             :                                 struct dcerpc_spoolss_GetPrinterData_r_state);
    5997           0 :         if (req == NULL) {
    5998           0 :                 return NULL;
    5999             :         }
    6000             : 
    6001           0 :         state->out_mem_ctx = talloc_new(state);
    6002           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    6003           0 :                 return tevent_req_post(req, ev);
    6004             :         }
    6005             : 
    6006           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    6007             :                         NULL, &ndr_table_spoolss,
    6008           0 :                         NDR_SPOOLSS_GETPRINTERDATA, state->out_mem_ctx, r);
    6009           0 :         if (tevent_req_nomem(subreq, req)) {
    6010           0 :                 return tevent_req_post(req, ev);
    6011             :         }
    6012           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterData_r_done, req);
    6013             : 
    6014           0 :         return req;
    6015             : }
    6016             : 
    6017           0 : static void dcerpc_spoolss_GetPrinterData_r_done(struct tevent_req *subreq)
    6018             : {
    6019           0 :         struct tevent_req *req =
    6020           0 :                 tevent_req_callback_data(subreq,
    6021             :                 struct tevent_req);
    6022           0 :         NTSTATUS status;
    6023             : 
    6024           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    6025           0 :         TALLOC_FREE(subreq);
    6026           0 :         if (tevent_req_nterror(req, status)) {
    6027           0 :                 return;
    6028             :         }
    6029             : 
    6030           0 :         tevent_req_done(req);
    6031             : }
    6032             : 
    6033           0 : NTSTATUS dcerpc_spoolss_GetPrinterData_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    6034             : {
    6035           0 :         struct dcerpc_spoolss_GetPrinterData_r_state *state =
    6036           0 :                 tevent_req_data(req,
    6037             :                 struct dcerpc_spoolss_GetPrinterData_r_state);
    6038           0 :         NTSTATUS status;
    6039             : 
    6040           0 :         if (tevent_req_is_nterror(req, &status)) {
    6041           0 :                 tevent_req_received(req);
    6042           0 :                 return status;
    6043             :         }
    6044             : 
    6045           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    6046             : 
    6047           0 :         tevent_req_received(req);
    6048           0 :         return NT_STATUS_OK;
    6049             : }
    6050             : 
    6051         480 : NTSTATUS dcerpc_spoolss_GetPrinterData_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterData *r)
    6052             : {
    6053           0 :         NTSTATUS status;
    6054             : 
    6055         480 :         status = dcerpc_binding_handle_call(h,
    6056             :                         NULL, &ndr_table_spoolss,
    6057             :                         NDR_SPOOLSS_GETPRINTERDATA, mem_ctx, r);
    6058             : 
    6059         480 :         return status;
    6060             : }
    6061             : 
    6062             : struct dcerpc_spoolss_GetPrinterData_state {
    6063             :         struct spoolss_GetPrinterData orig;
    6064             :         struct spoolss_GetPrinterData tmp;
    6065             :         TALLOC_CTX *out_mem_ctx;
    6066             : };
    6067             : 
    6068             : static void dcerpc_spoolss_GetPrinterData_done(struct tevent_req *subreq);
    6069             : 
    6070           0 : struct tevent_req *dcerpc_spoolss_GetPrinterData_send(TALLOC_CTX *mem_ctx,
    6071             :                                                       struct tevent_context *ev,
    6072             :                                                       struct dcerpc_binding_handle *h,
    6073             :                                                       struct policy_handle *_handle /* [in] [ref] */,
    6074             :                                                       const char *_value_name /* [in] [charset(UTF16)] */,
    6075             :                                                       enum winreg_Type *_type /* [out] [ref] */,
    6076             :                                                       uint8_t *_data /* [out] [ref,size_is(offered)] */,
    6077             :                                                       uint32_t _offered /* [in]  */,
    6078             :                                                       uint32_t *_needed /* [out] [ref] */)
    6079             : {
    6080           0 :         struct tevent_req *req;
    6081           0 :         struct dcerpc_spoolss_GetPrinterData_state *state;
    6082           0 :         struct tevent_req *subreq;
    6083             : 
    6084           0 :         req = tevent_req_create(mem_ctx, &state,
    6085             :                                 struct dcerpc_spoolss_GetPrinterData_state);
    6086           0 :         if (req == NULL) {
    6087           0 :                 return NULL;
    6088             :         }
    6089           0 :         state->out_mem_ctx = NULL;
    6090             : 
    6091             :         /* In parameters */
    6092           0 :         state->orig.in.handle = _handle;
    6093           0 :         state->orig.in.value_name = _value_name;
    6094           0 :         state->orig.in.offered = _offered;
    6095             : 
    6096             :         /* Out parameters */
    6097           0 :         state->orig.out.type = _type;
    6098           0 :         state->orig.out.data = _data;
    6099           0 :         state->orig.out.needed = _needed;
    6100             : 
    6101             :         /* Result */
    6102           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    6103             : 
    6104           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    6105             :                              "dcerpc_spoolss_GetPrinterData_out_memory");
    6106           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    6107           0 :                 return tevent_req_post(req, ev);
    6108             :         }
    6109             : 
    6110             :         /* make a temporary copy, that we pass to the dispatch function */
    6111           0 :         state->tmp = state->orig;
    6112             : 
    6113           0 :         subreq = dcerpc_spoolss_GetPrinterData_r_send(state, ev, h, &state->tmp);
    6114           0 :         if (tevent_req_nomem(subreq, req)) {
    6115           0 :                 return tevent_req_post(req, ev);
    6116             :         }
    6117           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterData_done, req);
    6118           0 :         return req;
    6119             : }
    6120             : 
    6121           0 : static void dcerpc_spoolss_GetPrinterData_done(struct tevent_req *subreq)
    6122             : {
    6123           0 :         struct tevent_req *req = tevent_req_callback_data(
    6124             :                 subreq, struct tevent_req);
    6125           0 :         struct dcerpc_spoolss_GetPrinterData_state *state = tevent_req_data(
    6126             :                 req, struct dcerpc_spoolss_GetPrinterData_state);
    6127           0 :         NTSTATUS status;
    6128           0 :         TALLOC_CTX *mem_ctx;
    6129             : 
    6130           0 :         if (state->out_mem_ctx) {
    6131           0 :                 mem_ctx = state->out_mem_ctx;
    6132             :         } else {
    6133           0 :                 mem_ctx = state;
    6134             :         }
    6135             : 
    6136           0 :         status = dcerpc_spoolss_GetPrinterData_r_recv(subreq, mem_ctx);
    6137           0 :         TALLOC_FREE(subreq);
    6138           0 :         if (tevent_req_nterror(req, status)) {
    6139           0 :                 return;
    6140             :         }
    6141             : 
    6142             :         /* Copy out parameters */
    6143           0 :         *state->orig.out.type = *state->tmp.out.type;
    6144             :         {
    6145           0 :                 size_t _copy_len_data;
    6146           0 :                 _copy_len_data = state->tmp.in.offered;
    6147           0 :                 if (state->orig.out.data != state->tmp.out.data) {
    6148           0 :                         memcpy(state->orig.out.data, state->tmp.out.data, _copy_len_data * sizeof(*state->orig.out.data));
    6149             :                 }
    6150             :         }
    6151           0 :         *state->orig.out.needed = *state->tmp.out.needed;
    6152             : 
    6153             :         /* Copy result */
    6154           0 :         state->orig.out.result = state->tmp.out.result;
    6155             : 
    6156             :         /* Reset temporary structure */
    6157           0 :         NDR_ZERO_STRUCT(state->tmp);
    6158             : 
    6159           0 :         tevent_req_done(req);
    6160             : }
    6161             : 
    6162           0 : NTSTATUS dcerpc_spoolss_GetPrinterData_recv(struct tevent_req *req,
    6163             :                                             TALLOC_CTX *mem_ctx,
    6164             :                                             WERROR *result)
    6165             : {
    6166           0 :         struct dcerpc_spoolss_GetPrinterData_state *state = tevent_req_data(
    6167             :                 req, struct dcerpc_spoolss_GetPrinterData_state);
    6168           0 :         NTSTATUS status;
    6169             : 
    6170           0 :         if (tevent_req_is_nterror(req, &status)) {
    6171           0 :                 tevent_req_received(req);
    6172           0 :                 return status;
    6173             :         }
    6174             : 
    6175             :         /* Steal possible out parameters to the callers context */
    6176           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    6177             : 
    6178             :         /* Return result */
    6179           0 :         *result = state->orig.out.result;
    6180             : 
    6181           0 :         tevent_req_received(req);
    6182           0 :         return NT_STATUS_OK;
    6183             : }
    6184             : 
    6185           0 : NTSTATUS dcerpc_spoolss_GetPrinterData(struct dcerpc_binding_handle *h,
    6186             :                                        TALLOC_CTX *mem_ctx,
    6187             :                                        struct policy_handle *_handle /* [in] [ref] */,
    6188             :                                        const char *_value_name /* [in] [charset(UTF16)] */,
    6189             :                                        enum winreg_Type *_type /* [out] [ref] */,
    6190             :                                        uint8_t *_data /* [out] [ref,size_is(offered)] */,
    6191             :                                        uint32_t _offered /* [in]  */,
    6192             :                                        uint32_t *_needed /* [out] [ref] */,
    6193             :                                        WERROR *result)
    6194             : {
    6195           0 :         struct spoolss_GetPrinterData r;
    6196           0 :         NTSTATUS status;
    6197             : 
    6198             :         /* In parameters */
    6199           0 :         r.in.handle = _handle;
    6200           0 :         r.in.value_name = _value_name;
    6201           0 :         r.in.offered = _offered;
    6202             : 
    6203             :         /* Out parameters */
    6204           0 :         r.out.type = _type;
    6205           0 :         r.out.data = _data;
    6206           0 :         r.out.needed = _needed;
    6207             : 
    6208             :         /* Result */
    6209           0 :         NDR_ZERO_STRUCT(r.out.result);
    6210             : 
    6211           0 :         status = dcerpc_spoolss_GetPrinterData_r(h, mem_ctx, &r);
    6212           0 :         if (!NT_STATUS_IS_OK(status)) {
    6213           0 :                 return status;
    6214             :         }
    6215             : 
    6216             :         /* Return variables */
    6217           0 :         *_type = *r.out.type;
    6218             :         {
    6219           0 :                 size_t _copy_len_data;
    6220           0 :                 _copy_len_data = r.in.offered;
    6221           0 :                 if (_data != r.out.data) {
    6222           0 :                         memcpy(_data, r.out.data, _copy_len_data * sizeof(*_data));
    6223             :                 }
    6224             :         }
    6225           0 :         *_needed = *r.out.needed;
    6226             : 
    6227             :         /* Return result */
    6228           0 :         *result = r.out.result;
    6229             : 
    6230           0 :         return NT_STATUS_OK;
    6231             : }
    6232             : 
    6233             : struct dcerpc_spoolss_SetPrinterData_r_state {
    6234             :         TALLOC_CTX *out_mem_ctx;
    6235             : };
    6236             : 
    6237             : static void dcerpc_spoolss_SetPrinterData_r_done(struct tevent_req *subreq);
    6238             : 
    6239           0 : struct tevent_req *dcerpc_spoolss_SetPrinterData_r_send(TALLOC_CTX *mem_ctx,
    6240             :         struct tevent_context *ev,
    6241             :         struct dcerpc_binding_handle *h,
    6242             :         struct spoolss_SetPrinterData *r)
    6243             : {
    6244           0 :         struct tevent_req *req;
    6245           0 :         struct dcerpc_spoolss_SetPrinterData_r_state *state;
    6246           0 :         struct tevent_req *subreq;
    6247             : 
    6248           0 :         req = tevent_req_create(mem_ctx, &state,
    6249             :                                 struct dcerpc_spoolss_SetPrinterData_r_state);
    6250           0 :         if (req == NULL) {
    6251           0 :                 return NULL;
    6252             :         }
    6253             : 
    6254           0 :         state->out_mem_ctx = NULL;
    6255             : 
    6256           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    6257             :                         NULL, &ndr_table_spoolss,
    6258             :                         NDR_SPOOLSS_SETPRINTERDATA, state, r);
    6259           0 :         if (tevent_req_nomem(subreq, req)) {
    6260           0 :                 return tevent_req_post(req, ev);
    6261             :         }
    6262           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_SetPrinterData_r_done, req);
    6263             : 
    6264           0 :         return req;
    6265             : }
    6266             : 
    6267           0 : static void dcerpc_spoolss_SetPrinterData_r_done(struct tevent_req *subreq)
    6268             : {
    6269           0 :         struct tevent_req *req =
    6270           0 :                 tevent_req_callback_data(subreq,
    6271             :                 struct tevent_req);
    6272           0 :         NTSTATUS status;
    6273             : 
    6274           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    6275           0 :         TALLOC_FREE(subreq);
    6276           0 :         if (tevent_req_nterror(req, status)) {
    6277           0 :                 return;
    6278             :         }
    6279             : 
    6280           0 :         tevent_req_done(req);
    6281             : }
    6282             : 
    6283           0 : NTSTATUS dcerpc_spoolss_SetPrinterData_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    6284             : {
    6285           0 :         struct dcerpc_spoolss_SetPrinterData_r_state *state =
    6286           0 :                 tevent_req_data(req,
    6287             :                 struct dcerpc_spoolss_SetPrinterData_r_state);
    6288           0 :         NTSTATUS status;
    6289             : 
    6290           0 :         if (tevent_req_is_nterror(req, &status)) {
    6291           0 :                 tevent_req_received(req);
    6292           0 :                 return status;
    6293             :         }
    6294             : 
    6295           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    6296             : 
    6297           0 :         tevent_req_received(req);
    6298           0 :         return NT_STATUS_OK;
    6299             : }
    6300             : 
    6301         168 : NTSTATUS dcerpc_spoolss_SetPrinterData_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_SetPrinterData *r)
    6302             : {
    6303           0 :         NTSTATUS status;
    6304             : 
    6305         168 :         status = dcerpc_binding_handle_call(h,
    6306             :                         NULL, &ndr_table_spoolss,
    6307             :                         NDR_SPOOLSS_SETPRINTERDATA, mem_ctx, r);
    6308             : 
    6309         168 :         return status;
    6310             : }
    6311             : 
    6312             : struct dcerpc_spoolss_SetPrinterData_state {
    6313             :         struct spoolss_SetPrinterData orig;
    6314             :         struct spoolss_SetPrinterData tmp;
    6315             :         TALLOC_CTX *out_mem_ctx;
    6316             : };
    6317             : 
    6318             : static void dcerpc_spoolss_SetPrinterData_done(struct tevent_req *subreq);
    6319             : 
    6320           0 : struct tevent_req *dcerpc_spoolss_SetPrinterData_send(TALLOC_CTX *mem_ctx,
    6321             :                                                       struct tevent_context *ev,
    6322             :                                                       struct dcerpc_binding_handle *h,
    6323             :                                                       struct policy_handle *_handle /* [in] [ref] */,
    6324             :                                                       const char *_value_name /* [in] [charset(UTF16)] */,
    6325             :                                                       enum winreg_Type _type /* [in]  */,
    6326             :                                                       uint8_t *_data /* [in] [ref,size_is(offered)] */,
    6327             :                                                       uint32_t _offered /* [in]  */)
    6328             : {
    6329           0 :         struct tevent_req *req;
    6330           0 :         struct dcerpc_spoolss_SetPrinterData_state *state;
    6331           0 :         struct tevent_req *subreq;
    6332             : 
    6333           0 :         req = tevent_req_create(mem_ctx, &state,
    6334             :                                 struct dcerpc_spoolss_SetPrinterData_state);
    6335           0 :         if (req == NULL) {
    6336           0 :                 return NULL;
    6337             :         }
    6338           0 :         state->out_mem_ctx = NULL;
    6339             : 
    6340             :         /* In parameters */
    6341           0 :         state->orig.in.handle = _handle;
    6342           0 :         state->orig.in.value_name = _value_name;
    6343           0 :         state->orig.in.type = _type;
    6344           0 :         state->orig.in.data = _data;
    6345           0 :         state->orig.in.offered = _offered;
    6346             : 
    6347             :         /* Out parameters */
    6348             : 
    6349             :         /* Result */
    6350           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    6351             : 
    6352             :         /* make a temporary copy, that we pass to the dispatch function */
    6353           0 :         state->tmp = state->orig;
    6354             : 
    6355           0 :         subreq = dcerpc_spoolss_SetPrinterData_r_send(state, ev, h, &state->tmp);
    6356           0 :         if (tevent_req_nomem(subreq, req)) {
    6357           0 :                 return tevent_req_post(req, ev);
    6358             :         }
    6359           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_SetPrinterData_done, req);
    6360           0 :         return req;
    6361             : }
    6362             : 
    6363           0 : static void dcerpc_spoolss_SetPrinterData_done(struct tevent_req *subreq)
    6364             : {
    6365           0 :         struct tevent_req *req = tevent_req_callback_data(
    6366             :                 subreq, struct tevent_req);
    6367           0 :         struct dcerpc_spoolss_SetPrinterData_state *state = tevent_req_data(
    6368             :                 req, struct dcerpc_spoolss_SetPrinterData_state);
    6369           0 :         NTSTATUS status;
    6370           0 :         TALLOC_CTX *mem_ctx;
    6371             : 
    6372           0 :         if (state->out_mem_ctx) {
    6373           0 :                 mem_ctx = state->out_mem_ctx;
    6374             :         } else {
    6375           0 :                 mem_ctx = state;
    6376             :         }
    6377             : 
    6378           0 :         status = dcerpc_spoolss_SetPrinterData_r_recv(subreq, mem_ctx);
    6379           0 :         TALLOC_FREE(subreq);
    6380           0 :         if (tevent_req_nterror(req, status)) {
    6381           0 :                 return;
    6382             :         }
    6383             : 
    6384             :         /* Copy out parameters */
    6385             : 
    6386             :         /* Copy result */
    6387           0 :         state->orig.out.result = state->tmp.out.result;
    6388             : 
    6389             :         /* Reset temporary structure */
    6390           0 :         NDR_ZERO_STRUCT(state->tmp);
    6391             : 
    6392           0 :         tevent_req_done(req);
    6393             : }
    6394             : 
    6395           0 : NTSTATUS dcerpc_spoolss_SetPrinterData_recv(struct tevent_req *req,
    6396             :                                             TALLOC_CTX *mem_ctx,
    6397             :                                             WERROR *result)
    6398             : {
    6399           0 :         struct dcerpc_spoolss_SetPrinterData_state *state = tevent_req_data(
    6400             :                 req, struct dcerpc_spoolss_SetPrinterData_state);
    6401           0 :         NTSTATUS status;
    6402             : 
    6403           0 :         if (tevent_req_is_nterror(req, &status)) {
    6404           0 :                 tevent_req_received(req);
    6405           0 :                 return status;
    6406             :         }
    6407             : 
    6408             :         /* Steal possible out parameters to the callers context */
    6409           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    6410             : 
    6411             :         /* Return result */
    6412           0 :         *result = state->orig.out.result;
    6413             : 
    6414           0 :         tevent_req_received(req);
    6415           0 :         return NT_STATUS_OK;
    6416             : }
    6417             : 
    6418           0 : NTSTATUS dcerpc_spoolss_SetPrinterData(struct dcerpc_binding_handle *h,
    6419             :                                        TALLOC_CTX *mem_ctx,
    6420             :                                        struct policy_handle *_handle /* [in] [ref] */,
    6421             :                                        const char *_value_name /* [in] [charset(UTF16)] */,
    6422             :                                        enum winreg_Type _type /* [in]  */,
    6423             :                                        uint8_t *_data /* [in] [ref,size_is(offered)] */,
    6424             :                                        uint32_t _offered /* [in]  */,
    6425             :                                        WERROR *result)
    6426             : {
    6427           0 :         struct spoolss_SetPrinterData r;
    6428           0 :         NTSTATUS status;
    6429             : 
    6430             :         /* In parameters */
    6431           0 :         r.in.handle = _handle;
    6432           0 :         r.in.value_name = _value_name;
    6433           0 :         r.in.type = _type;
    6434           0 :         r.in.data = _data;
    6435           0 :         r.in.offered = _offered;
    6436             : 
    6437             :         /* Out parameters */
    6438             : 
    6439             :         /* Result */
    6440           0 :         NDR_ZERO_STRUCT(r.out.result);
    6441             : 
    6442           0 :         status = dcerpc_spoolss_SetPrinterData_r(h, mem_ctx, &r);
    6443           0 :         if (!NT_STATUS_IS_OK(status)) {
    6444           0 :                 return status;
    6445             :         }
    6446             : 
    6447             :         /* Return variables */
    6448             : 
    6449             :         /* Return result */
    6450           0 :         *result = r.out.result;
    6451             : 
    6452           0 :         return NT_STATUS_OK;
    6453             : }
    6454             : 
    6455             : struct dcerpc_spoolss_ClosePrinter_r_state {
    6456             :         TALLOC_CTX *out_mem_ctx;
    6457             : };
    6458             : 
    6459             : static void dcerpc_spoolss_ClosePrinter_r_done(struct tevent_req *subreq);
    6460             : 
    6461           0 : struct tevent_req *dcerpc_spoolss_ClosePrinter_r_send(TALLOC_CTX *mem_ctx,
    6462             :         struct tevent_context *ev,
    6463             :         struct dcerpc_binding_handle *h,
    6464             :         struct spoolss_ClosePrinter *r)
    6465             : {
    6466           0 :         struct tevent_req *req;
    6467           0 :         struct dcerpc_spoolss_ClosePrinter_r_state *state;
    6468           0 :         struct tevent_req *subreq;
    6469             : 
    6470           0 :         req = tevent_req_create(mem_ctx, &state,
    6471             :                                 struct dcerpc_spoolss_ClosePrinter_r_state);
    6472           0 :         if (req == NULL) {
    6473           0 :                 return NULL;
    6474             :         }
    6475             : 
    6476           0 :         state->out_mem_ctx = talloc_new(state);
    6477           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    6478           0 :                 return tevent_req_post(req, ev);
    6479             :         }
    6480             : 
    6481           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    6482             :                         NULL, &ndr_table_spoolss,
    6483           0 :                         NDR_SPOOLSS_CLOSEPRINTER, state->out_mem_ctx, r);
    6484           0 :         if (tevent_req_nomem(subreq, req)) {
    6485           0 :                 return tevent_req_post(req, ev);
    6486             :         }
    6487           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_ClosePrinter_r_done, req);
    6488             : 
    6489           0 :         return req;
    6490             : }
    6491             : 
    6492           0 : static void dcerpc_spoolss_ClosePrinter_r_done(struct tevent_req *subreq)
    6493             : {
    6494           0 :         struct tevent_req *req =
    6495           0 :                 tevent_req_callback_data(subreq,
    6496             :                 struct tevent_req);
    6497           0 :         NTSTATUS status;
    6498             : 
    6499           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    6500           0 :         TALLOC_FREE(subreq);
    6501           0 :         if (tevent_req_nterror(req, status)) {
    6502           0 :                 return;
    6503             :         }
    6504             : 
    6505           0 :         tevent_req_done(req);
    6506             : }
    6507             : 
    6508           0 : NTSTATUS dcerpc_spoolss_ClosePrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    6509             : {
    6510           0 :         struct dcerpc_spoolss_ClosePrinter_r_state *state =
    6511           0 :                 tevent_req_data(req,
    6512             :                 struct dcerpc_spoolss_ClosePrinter_r_state);
    6513           0 :         NTSTATUS status;
    6514             : 
    6515           0 :         if (tevent_req_is_nterror(req, &status)) {
    6516           0 :                 tevent_req_received(req);
    6517           0 :                 return status;
    6518             :         }
    6519             : 
    6520           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    6521             : 
    6522           0 :         tevent_req_received(req);
    6523           0 :         return NT_STATUS_OK;
    6524             : }
    6525             : 
    6526         620 : NTSTATUS dcerpc_spoolss_ClosePrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ClosePrinter *r)
    6527             : {
    6528           0 :         NTSTATUS status;
    6529             : 
    6530         620 :         status = dcerpc_binding_handle_call(h,
    6531             :                         NULL, &ndr_table_spoolss,
    6532             :                         NDR_SPOOLSS_CLOSEPRINTER, mem_ctx, r);
    6533             : 
    6534         620 :         return status;
    6535             : }
    6536             : 
    6537             : struct dcerpc_spoolss_ClosePrinter_state {
    6538             :         struct spoolss_ClosePrinter orig;
    6539             :         struct spoolss_ClosePrinter tmp;
    6540             :         TALLOC_CTX *out_mem_ctx;
    6541             : };
    6542             : 
    6543             : static void dcerpc_spoolss_ClosePrinter_done(struct tevent_req *subreq);
    6544             : 
    6545           0 : struct tevent_req *dcerpc_spoolss_ClosePrinter_send(TALLOC_CTX *mem_ctx,
    6546             :                                                     struct tevent_context *ev,
    6547             :                                                     struct dcerpc_binding_handle *h,
    6548             :                                                     struct policy_handle *_handle /* [in,out] [ref] */)
    6549             : {
    6550           0 :         struct tevent_req *req;
    6551           0 :         struct dcerpc_spoolss_ClosePrinter_state *state;
    6552           0 :         struct tevent_req *subreq;
    6553             : 
    6554           0 :         req = tevent_req_create(mem_ctx, &state,
    6555             :                                 struct dcerpc_spoolss_ClosePrinter_state);
    6556           0 :         if (req == NULL) {
    6557           0 :                 return NULL;
    6558             :         }
    6559           0 :         state->out_mem_ctx = NULL;
    6560             : 
    6561             :         /* In parameters */
    6562           0 :         state->orig.in.handle = _handle;
    6563             : 
    6564             :         /* Out parameters */
    6565           0 :         state->orig.out.handle = _handle;
    6566             : 
    6567             :         /* Result */
    6568           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    6569             : 
    6570           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    6571             :                              "dcerpc_spoolss_ClosePrinter_out_memory");
    6572           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    6573           0 :                 return tevent_req_post(req, ev);
    6574             :         }
    6575             : 
    6576             :         /* make a temporary copy, that we pass to the dispatch function */
    6577           0 :         state->tmp = state->orig;
    6578             : 
    6579           0 :         subreq = dcerpc_spoolss_ClosePrinter_r_send(state, ev, h, &state->tmp);
    6580           0 :         if (tevent_req_nomem(subreq, req)) {
    6581           0 :                 return tevent_req_post(req, ev);
    6582             :         }
    6583           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_ClosePrinter_done, req);
    6584           0 :         return req;
    6585             : }
    6586             : 
    6587           0 : static void dcerpc_spoolss_ClosePrinter_done(struct tevent_req *subreq)
    6588             : {
    6589           0 :         struct tevent_req *req = tevent_req_callback_data(
    6590             :                 subreq, struct tevent_req);
    6591           0 :         struct dcerpc_spoolss_ClosePrinter_state *state = tevent_req_data(
    6592             :                 req, struct dcerpc_spoolss_ClosePrinter_state);
    6593           0 :         NTSTATUS status;
    6594           0 :         TALLOC_CTX *mem_ctx;
    6595             : 
    6596           0 :         if (state->out_mem_ctx) {
    6597           0 :                 mem_ctx = state->out_mem_ctx;
    6598             :         } else {
    6599           0 :                 mem_ctx = state;
    6600             :         }
    6601             : 
    6602           0 :         status = dcerpc_spoolss_ClosePrinter_r_recv(subreq, mem_ctx);
    6603           0 :         TALLOC_FREE(subreq);
    6604           0 :         if (tevent_req_nterror(req, status)) {
    6605           0 :                 return;
    6606             :         }
    6607             : 
    6608             :         /* Copy out parameters */
    6609           0 :         *state->orig.out.handle = *state->tmp.out.handle;
    6610             : 
    6611             :         /* Copy result */
    6612           0 :         state->orig.out.result = state->tmp.out.result;
    6613             : 
    6614             :         /* Reset temporary structure */
    6615           0 :         NDR_ZERO_STRUCT(state->tmp);
    6616             : 
    6617           0 :         tevent_req_done(req);
    6618             : }
    6619             : 
    6620           0 : NTSTATUS dcerpc_spoolss_ClosePrinter_recv(struct tevent_req *req,
    6621             :                                           TALLOC_CTX *mem_ctx,
    6622             :                                           WERROR *result)
    6623             : {
    6624           0 :         struct dcerpc_spoolss_ClosePrinter_state *state = tevent_req_data(
    6625             :                 req, struct dcerpc_spoolss_ClosePrinter_state);
    6626           0 :         NTSTATUS status;
    6627             : 
    6628           0 :         if (tevent_req_is_nterror(req, &status)) {
    6629           0 :                 tevent_req_received(req);
    6630           0 :                 return status;
    6631             :         }
    6632             : 
    6633             :         /* Steal possible out parameters to the callers context */
    6634           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    6635             : 
    6636             :         /* Return result */
    6637           0 :         *result = state->orig.out.result;
    6638             : 
    6639           0 :         tevent_req_received(req);
    6640           0 :         return NT_STATUS_OK;
    6641             : }
    6642             : 
    6643          34 : NTSTATUS dcerpc_spoolss_ClosePrinter(struct dcerpc_binding_handle *h,
    6644             :                                      TALLOC_CTX *mem_ctx,
    6645             :                                      struct policy_handle *_handle /* [in,out] [ref] */,
    6646             :                                      WERROR *result)
    6647             : {
    6648           0 :         struct spoolss_ClosePrinter r;
    6649           0 :         NTSTATUS status;
    6650             : 
    6651             :         /* In parameters */
    6652          34 :         r.in.handle = _handle;
    6653             : 
    6654             :         /* Out parameters */
    6655          34 :         r.out.handle = _handle;
    6656             : 
    6657             :         /* Result */
    6658          34 :         NDR_ZERO_STRUCT(r.out.result);
    6659             : 
    6660          34 :         status = dcerpc_spoolss_ClosePrinter_r(h, mem_ctx, &r);
    6661          34 :         if (!NT_STATUS_IS_OK(status)) {
    6662           0 :                 return status;
    6663             :         }
    6664             : 
    6665             :         /* Return variables */
    6666          34 :         *_handle = *r.out.handle;
    6667             : 
    6668             :         /* Return result */
    6669          34 :         *result = r.out.result;
    6670             : 
    6671          34 :         return NT_STATUS_OK;
    6672             : }
    6673             : 
    6674             : struct dcerpc_spoolss_AddForm_r_state {
    6675             :         TALLOC_CTX *out_mem_ctx;
    6676             : };
    6677             : 
    6678             : static void dcerpc_spoolss_AddForm_r_done(struct tevent_req *subreq);
    6679             : 
    6680           0 : struct tevent_req *dcerpc_spoolss_AddForm_r_send(TALLOC_CTX *mem_ctx,
    6681             :         struct tevent_context *ev,
    6682             :         struct dcerpc_binding_handle *h,
    6683             :         struct spoolss_AddForm *r)
    6684             : {
    6685           0 :         struct tevent_req *req;
    6686           0 :         struct dcerpc_spoolss_AddForm_r_state *state;
    6687           0 :         struct tevent_req *subreq;
    6688             : 
    6689           0 :         req = tevent_req_create(mem_ctx, &state,
    6690             :                                 struct dcerpc_spoolss_AddForm_r_state);
    6691           0 :         if (req == NULL) {
    6692           0 :                 return NULL;
    6693             :         }
    6694             : 
    6695           0 :         state->out_mem_ctx = NULL;
    6696             : 
    6697           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    6698             :                         NULL, &ndr_table_spoolss,
    6699             :                         NDR_SPOOLSS_ADDFORM, state, r);
    6700           0 :         if (tevent_req_nomem(subreq, req)) {
    6701           0 :                 return tevent_req_post(req, ev);
    6702             :         }
    6703           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddForm_r_done, req);
    6704             : 
    6705           0 :         return req;
    6706             : }
    6707             : 
    6708           0 : static void dcerpc_spoolss_AddForm_r_done(struct tevent_req *subreq)
    6709             : {
    6710           0 :         struct tevent_req *req =
    6711           0 :                 tevent_req_callback_data(subreq,
    6712             :                 struct tevent_req);
    6713           0 :         NTSTATUS status;
    6714             : 
    6715           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    6716           0 :         TALLOC_FREE(subreq);
    6717           0 :         if (tevent_req_nterror(req, status)) {
    6718           0 :                 return;
    6719             :         }
    6720             : 
    6721           0 :         tevent_req_done(req);
    6722             : }
    6723             : 
    6724           0 : NTSTATUS dcerpc_spoolss_AddForm_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    6725             : {
    6726           0 :         struct dcerpc_spoolss_AddForm_r_state *state =
    6727           0 :                 tevent_req_data(req,
    6728             :                 struct dcerpc_spoolss_AddForm_r_state);
    6729           0 :         NTSTATUS status;
    6730             : 
    6731           0 :         if (tevent_req_is_nterror(req, &status)) {
    6732           0 :                 tevent_req_received(req);
    6733           0 :                 return status;
    6734             :         }
    6735             : 
    6736           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    6737             : 
    6738           0 :         tevent_req_received(req);
    6739           0 :         return NT_STATUS_OK;
    6740             : }
    6741             : 
    6742         576 : NTSTATUS dcerpc_spoolss_AddForm_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddForm *r)
    6743             : {
    6744           0 :         NTSTATUS status;
    6745             : 
    6746         576 :         status = dcerpc_binding_handle_call(h,
    6747             :                         NULL, &ndr_table_spoolss,
    6748             :                         NDR_SPOOLSS_ADDFORM, mem_ctx, r);
    6749             : 
    6750         576 :         return status;
    6751             : }
    6752             : 
    6753             : struct dcerpc_spoolss_AddForm_state {
    6754             :         struct spoolss_AddForm orig;
    6755             :         struct spoolss_AddForm tmp;
    6756             :         TALLOC_CTX *out_mem_ctx;
    6757             : };
    6758             : 
    6759             : static void dcerpc_spoolss_AddForm_done(struct tevent_req *subreq);
    6760             : 
    6761           0 : struct tevent_req *dcerpc_spoolss_AddForm_send(TALLOC_CTX *mem_ctx,
    6762             :                                                struct tevent_context *ev,
    6763             :                                                struct dcerpc_binding_handle *h,
    6764             :                                                struct policy_handle *_handle /* [in] [ref] */,
    6765             :                                                struct spoolss_AddFormInfoCtr *_info_ctr /* [in] [ref] */)
    6766             : {
    6767           0 :         struct tevent_req *req;
    6768           0 :         struct dcerpc_spoolss_AddForm_state *state;
    6769           0 :         struct tevent_req *subreq;
    6770             : 
    6771           0 :         req = tevent_req_create(mem_ctx, &state,
    6772             :                                 struct dcerpc_spoolss_AddForm_state);
    6773           0 :         if (req == NULL) {
    6774           0 :                 return NULL;
    6775             :         }
    6776           0 :         state->out_mem_ctx = NULL;
    6777             : 
    6778             :         /* In parameters */
    6779           0 :         state->orig.in.handle = _handle;
    6780           0 :         state->orig.in.info_ctr = _info_ctr;
    6781             : 
    6782             :         /* Out parameters */
    6783             : 
    6784             :         /* Result */
    6785           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    6786             : 
    6787             :         /* make a temporary copy, that we pass to the dispatch function */
    6788           0 :         state->tmp = state->orig;
    6789             : 
    6790           0 :         subreq = dcerpc_spoolss_AddForm_r_send(state, ev, h, &state->tmp);
    6791           0 :         if (tevent_req_nomem(subreq, req)) {
    6792           0 :                 return tevent_req_post(req, ev);
    6793             :         }
    6794           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddForm_done, req);
    6795           0 :         return req;
    6796             : }
    6797             : 
    6798           0 : static void dcerpc_spoolss_AddForm_done(struct tevent_req *subreq)
    6799             : {
    6800           0 :         struct tevent_req *req = tevent_req_callback_data(
    6801             :                 subreq, struct tevent_req);
    6802           0 :         struct dcerpc_spoolss_AddForm_state *state = tevent_req_data(
    6803             :                 req, struct dcerpc_spoolss_AddForm_state);
    6804           0 :         NTSTATUS status;
    6805           0 :         TALLOC_CTX *mem_ctx;
    6806             : 
    6807           0 :         if (state->out_mem_ctx) {
    6808           0 :                 mem_ctx = state->out_mem_ctx;
    6809             :         } else {
    6810           0 :                 mem_ctx = state;
    6811             :         }
    6812             : 
    6813           0 :         status = dcerpc_spoolss_AddForm_r_recv(subreq, mem_ctx);
    6814           0 :         TALLOC_FREE(subreq);
    6815           0 :         if (tevent_req_nterror(req, status)) {
    6816           0 :                 return;
    6817             :         }
    6818             : 
    6819             :         /* Copy out parameters */
    6820             : 
    6821             :         /* Copy result */
    6822           0 :         state->orig.out.result = state->tmp.out.result;
    6823             : 
    6824             :         /* Reset temporary structure */
    6825           0 :         NDR_ZERO_STRUCT(state->tmp);
    6826             : 
    6827           0 :         tevent_req_done(req);
    6828             : }
    6829             : 
    6830           0 : NTSTATUS dcerpc_spoolss_AddForm_recv(struct tevent_req *req,
    6831             :                                      TALLOC_CTX *mem_ctx,
    6832             :                                      WERROR *result)
    6833             : {
    6834           0 :         struct dcerpc_spoolss_AddForm_state *state = tevent_req_data(
    6835             :                 req, struct dcerpc_spoolss_AddForm_state);
    6836           0 :         NTSTATUS status;
    6837             : 
    6838           0 :         if (tevent_req_is_nterror(req, &status)) {
    6839           0 :                 tevent_req_received(req);
    6840           0 :                 return status;
    6841             :         }
    6842             : 
    6843             :         /* Steal possible out parameters to the callers context */
    6844           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    6845             : 
    6846             :         /* Return result */
    6847           0 :         *result = state->orig.out.result;
    6848             : 
    6849           0 :         tevent_req_received(req);
    6850           0 :         return NT_STATUS_OK;
    6851             : }
    6852             : 
    6853           0 : NTSTATUS dcerpc_spoolss_AddForm(struct dcerpc_binding_handle *h,
    6854             :                                 TALLOC_CTX *mem_ctx,
    6855             :                                 struct policy_handle *_handle /* [in] [ref] */,
    6856             :                                 struct spoolss_AddFormInfoCtr *_info_ctr /* [in] [ref] */,
    6857             :                                 WERROR *result)
    6858             : {
    6859           0 :         struct spoolss_AddForm r;
    6860           0 :         NTSTATUS status;
    6861             : 
    6862             :         /* In parameters */
    6863           0 :         r.in.handle = _handle;
    6864           0 :         r.in.info_ctr = _info_ctr;
    6865             : 
    6866             :         /* Out parameters */
    6867             : 
    6868             :         /* Result */
    6869           0 :         NDR_ZERO_STRUCT(r.out.result);
    6870             : 
    6871           0 :         status = dcerpc_spoolss_AddForm_r(h, mem_ctx, &r);
    6872           0 :         if (!NT_STATUS_IS_OK(status)) {
    6873           0 :                 return status;
    6874             :         }
    6875             : 
    6876             :         /* Return variables */
    6877             : 
    6878             :         /* Return result */
    6879           0 :         *result = r.out.result;
    6880             : 
    6881           0 :         return NT_STATUS_OK;
    6882             : }
    6883             : 
    6884             : struct dcerpc_spoolss_DeleteForm_r_state {
    6885             :         TALLOC_CTX *out_mem_ctx;
    6886             : };
    6887             : 
    6888             : static void dcerpc_spoolss_DeleteForm_r_done(struct tevent_req *subreq);
    6889             : 
    6890           0 : struct tevent_req *dcerpc_spoolss_DeleteForm_r_send(TALLOC_CTX *mem_ctx,
    6891             :         struct tevent_context *ev,
    6892             :         struct dcerpc_binding_handle *h,
    6893             :         struct spoolss_DeleteForm *r)
    6894             : {
    6895           0 :         struct tevent_req *req;
    6896           0 :         struct dcerpc_spoolss_DeleteForm_r_state *state;
    6897           0 :         struct tevent_req *subreq;
    6898             : 
    6899           0 :         req = tevent_req_create(mem_ctx, &state,
    6900             :                                 struct dcerpc_spoolss_DeleteForm_r_state);
    6901           0 :         if (req == NULL) {
    6902           0 :                 return NULL;
    6903             :         }
    6904             : 
    6905           0 :         state->out_mem_ctx = NULL;
    6906             : 
    6907           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    6908             :                         NULL, &ndr_table_spoolss,
    6909             :                         NDR_SPOOLSS_DELETEFORM, state, r);
    6910           0 :         if (tevent_req_nomem(subreq, req)) {
    6911           0 :                 return tevent_req_post(req, ev);
    6912             :         }
    6913           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeleteForm_r_done, req);
    6914             : 
    6915           0 :         return req;
    6916             : }
    6917             : 
    6918           0 : static void dcerpc_spoolss_DeleteForm_r_done(struct tevent_req *subreq)
    6919             : {
    6920           0 :         struct tevent_req *req =
    6921           0 :                 tevent_req_callback_data(subreq,
    6922             :                 struct tevent_req);
    6923           0 :         NTSTATUS status;
    6924             : 
    6925           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    6926           0 :         TALLOC_FREE(subreq);
    6927           0 :         if (tevent_req_nterror(req, status)) {
    6928           0 :                 return;
    6929             :         }
    6930             : 
    6931           0 :         tevent_req_done(req);
    6932             : }
    6933             : 
    6934           0 : NTSTATUS dcerpc_spoolss_DeleteForm_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    6935             : {
    6936           0 :         struct dcerpc_spoolss_DeleteForm_r_state *state =
    6937           0 :                 tevent_req_data(req,
    6938             :                 struct dcerpc_spoolss_DeleteForm_r_state);
    6939           0 :         NTSTATUS status;
    6940             : 
    6941           0 :         if (tevent_req_is_nterror(req, &status)) {
    6942           0 :                 tevent_req_received(req);
    6943           0 :                 return status;
    6944             :         }
    6945             : 
    6946           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    6947             : 
    6948           0 :         tevent_req_received(req);
    6949           0 :         return NT_STATUS_OK;
    6950             : }
    6951             : 
    6952         384 : NTSTATUS dcerpc_spoolss_DeleteForm_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeleteForm *r)
    6953             : {
    6954           0 :         NTSTATUS status;
    6955             : 
    6956         384 :         status = dcerpc_binding_handle_call(h,
    6957             :                         NULL, &ndr_table_spoolss,
    6958             :                         NDR_SPOOLSS_DELETEFORM, mem_ctx, r);
    6959             : 
    6960         384 :         return status;
    6961             : }
    6962             : 
    6963             : struct dcerpc_spoolss_DeleteForm_state {
    6964             :         struct spoolss_DeleteForm orig;
    6965             :         struct spoolss_DeleteForm tmp;
    6966             :         TALLOC_CTX *out_mem_ctx;
    6967             : };
    6968             : 
    6969             : static void dcerpc_spoolss_DeleteForm_done(struct tevent_req *subreq);
    6970             : 
    6971           0 : struct tevent_req *dcerpc_spoolss_DeleteForm_send(TALLOC_CTX *mem_ctx,
    6972             :                                                   struct tevent_context *ev,
    6973             :                                                   struct dcerpc_binding_handle *h,
    6974             :                                                   struct policy_handle *_handle /* [in] [ref] */,
    6975             :                                                   const char *_form_name /* [in] [charset(UTF16)] */)
    6976             : {
    6977           0 :         struct tevent_req *req;
    6978           0 :         struct dcerpc_spoolss_DeleteForm_state *state;
    6979           0 :         struct tevent_req *subreq;
    6980             : 
    6981           0 :         req = tevent_req_create(mem_ctx, &state,
    6982             :                                 struct dcerpc_spoolss_DeleteForm_state);
    6983           0 :         if (req == NULL) {
    6984           0 :                 return NULL;
    6985             :         }
    6986           0 :         state->out_mem_ctx = NULL;
    6987             : 
    6988             :         /* In parameters */
    6989           0 :         state->orig.in.handle = _handle;
    6990           0 :         state->orig.in.form_name = _form_name;
    6991             : 
    6992             :         /* Out parameters */
    6993             : 
    6994             :         /* Result */
    6995           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    6996             : 
    6997             :         /* make a temporary copy, that we pass to the dispatch function */
    6998           0 :         state->tmp = state->orig;
    6999             : 
    7000           0 :         subreq = dcerpc_spoolss_DeleteForm_r_send(state, ev, h, &state->tmp);
    7001           0 :         if (tevent_req_nomem(subreq, req)) {
    7002           0 :                 return tevent_req_post(req, ev);
    7003             :         }
    7004           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeleteForm_done, req);
    7005           0 :         return req;
    7006             : }
    7007             : 
    7008           0 : static void dcerpc_spoolss_DeleteForm_done(struct tevent_req *subreq)
    7009             : {
    7010           0 :         struct tevent_req *req = tevent_req_callback_data(
    7011             :                 subreq, struct tevent_req);
    7012           0 :         struct dcerpc_spoolss_DeleteForm_state *state = tevent_req_data(
    7013             :                 req, struct dcerpc_spoolss_DeleteForm_state);
    7014           0 :         NTSTATUS status;
    7015           0 :         TALLOC_CTX *mem_ctx;
    7016             : 
    7017           0 :         if (state->out_mem_ctx) {
    7018           0 :                 mem_ctx = state->out_mem_ctx;
    7019             :         } else {
    7020           0 :                 mem_ctx = state;
    7021             :         }
    7022             : 
    7023           0 :         status = dcerpc_spoolss_DeleteForm_r_recv(subreq, mem_ctx);
    7024           0 :         TALLOC_FREE(subreq);
    7025           0 :         if (tevent_req_nterror(req, status)) {
    7026           0 :                 return;
    7027             :         }
    7028             : 
    7029             :         /* Copy out parameters */
    7030             : 
    7031             :         /* Copy result */
    7032           0 :         state->orig.out.result = state->tmp.out.result;
    7033             : 
    7034             :         /* Reset temporary structure */
    7035           0 :         NDR_ZERO_STRUCT(state->tmp);
    7036             : 
    7037           0 :         tevent_req_done(req);
    7038             : }
    7039             : 
    7040           0 : NTSTATUS dcerpc_spoolss_DeleteForm_recv(struct tevent_req *req,
    7041             :                                         TALLOC_CTX *mem_ctx,
    7042             :                                         WERROR *result)
    7043             : {
    7044           0 :         struct dcerpc_spoolss_DeleteForm_state *state = tevent_req_data(
    7045             :                 req, struct dcerpc_spoolss_DeleteForm_state);
    7046           0 :         NTSTATUS status;
    7047             : 
    7048           0 :         if (tevent_req_is_nterror(req, &status)) {
    7049           0 :                 tevent_req_received(req);
    7050           0 :                 return status;
    7051             :         }
    7052             : 
    7053             :         /* Steal possible out parameters to the callers context */
    7054           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    7055             : 
    7056             :         /* Return result */
    7057           0 :         *result = state->orig.out.result;
    7058             : 
    7059           0 :         tevent_req_received(req);
    7060           0 :         return NT_STATUS_OK;
    7061             : }
    7062             : 
    7063           0 : NTSTATUS dcerpc_spoolss_DeleteForm(struct dcerpc_binding_handle *h,
    7064             :                                    TALLOC_CTX *mem_ctx,
    7065             :                                    struct policy_handle *_handle /* [in] [ref] */,
    7066             :                                    const char *_form_name /* [in] [charset(UTF16)] */,
    7067             :                                    WERROR *result)
    7068             : {
    7069           0 :         struct spoolss_DeleteForm r;
    7070           0 :         NTSTATUS status;
    7071             : 
    7072             :         /* In parameters */
    7073           0 :         r.in.handle = _handle;
    7074           0 :         r.in.form_name = _form_name;
    7075             : 
    7076             :         /* Out parameters */
    7077             : 
    7078             :         /* Result */
    7079           0 :         NDR_ZERO_STRUCT(r.out.result);
    7080             : 
    7081           0 :         status = dcerpc_spoolss_DeleteForm_r(h, mem_ctx, &r);
    7082           0 :         if (!NT_STATUS_IS_OK(status)) {
    7083           0 :                 return status;
    7084             :         }
    7085             : 
    7086             :         /* Return variables */
    7087             : 
    7088             :         /* Return result */
    7089           0 :         *result = r.out.result;
    7090             : 
    7091           0 :         return NT_STATUS_OK;
    7092             : }
    7093             : 
    7094             : struct dcerpc_spoolss_GetForm_r_state {
    7095             :         TALLOC_CTX *out_mem_ctx;
    7096             : };
    7097             : 
    7098             : static void dcerpc_spoolss_GetForm_r_done(struct tevent_req *subreq);
    7099             : 
    7100           0 : struct tevent_req *dcerpc_spoolss_GetForm_r_send(TALLOC_CTX *mem_ctx,
    7101             :         struct tevent_context *ev,
    7102             :         struct dcerpc_binding_handle *h,
    7103             :         struct spoolss_GetForm *r)
    7104             : {
    7105           0 :         struct tevent_req *req;
    7106           0 :         struct dcerpc_spoolss_GetForm_r_state *state;
    7107           0 :         struct tevent_req *subreq;
    7108             : 
    7109           0 :         req = tevent_req_create(mem_ctx, &state,
    7110             :                                 struct dcerpc_spoolss_GetForm_r_state);
    7111           0 :         if (req == NULL) {
    7112           0 :                 return NULL;
    7113             :         }
    7114             : 
    7115           0 :         state->out_mem_ctx = talloc_new(state);
    7116           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    7117           0 :                 return tevent_req_post(req, ev);
    7118             :         }
    7119             : 
    7120           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    7121             :                         NULL, &ndr_table_spoolss,
    7122           0 :                         NDR_SPOOLSS_GETFORM, state->out_mem_ctx, r);
    7123           0 :         if (tevent_req_nomem(subreq, req)) {
    7124           0 :                 return tevent_req_post(req, ev);
    7125             :         }
    7126           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetForm_r_done, req);
    7127             : 
    7128           0 :         return req;
    7129             : }
    7130             : 
    7131           0 : static void dcerpc_spoolss_GetForm_r_done(struct tevent_req *subreq)
    7132             : {
    7133           0 :         struct tevent_req *req =
    7134           0 :                 tevent_req_callback_data(subreq,
    7135             :                 struct tevent_req);
    7136           0 :         NTSTATUS status;
    7137             : 
    7138           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    7139           0 :         TALLOC_FREE(subreq);
    7140           0 :         if (tevent_req_nterror(req, status)) {
    7141           0 :                 return;
    7142             :         }
    7143             : 
    7144           0 :         tevent_req_done(req);
    7145             : }
    7146             : 
    7147           0 : NTSTATUS dcerpc_spoolss_GetForm_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    7148             : {
    7149           0 :         struct dcerpc_spoolss_GetForm_r_state *state =
    7150           0 :                 tevent_req_data(req,
    7151             :                 struct dcerpc_spoolss_GetForm_r_state);
    7152           0 :         NTSTATUS status;
    7153             : 
    7154           0 :         if (tevent_req_is_nterror(req, &status)) {
    7155           0 :                 tevent_req_received(req);
    7156           0 :                 return status;
    7157             :         }
    7158             : 
    7159           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    7160             : 
    7161           0 :         tevent_req_received(req);
    7162           0 :         return NT_STATUS_OK;
    7163             : }
    7164             : 
    7165        5040 : NTSTATUS dcerpc_spoolss_GetForm_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetForm *r)
    7166             : {
    7167           0 :         NTSTATUS status;
    7168             : 
    7169        5040 :         status = dcerpc_binding_handle_call(h,
    7170             :                         NULL, &ndr_table_spoolss,
    7171             :                         NDR_SPOOLSS_GETFORM, mem_ctx, r);
    7172             : 
    7173        5040 :         return status;
    7174             : }
    7175             : 
    7176             : struct dcerpc_spoolss_GetForm_state {
    7177             :         struct spoolss_GetForm orig;
    7178             :         struct spoolss_GetForm tmp;
    7179             :         TALLOC_CTX *out_mem_ctx;
    7180             : };
    7181             : 
    7182             : static void dcerpc_spoolss_GetForm_done(struct tevent_req *subreq);
    7183             : 
    7184           0 : struct tevent_req *dcerpc_spoolss_GetForm_send(TALLOC_CTX *mem_ctx,
    7185             :                                                struct tevent_context *ev,
    7186             :                                                struct dcerpc_binding_handle *h,
    7187             :                                                struct policy_handle *_handle /* [in] [ref] */,
    7188             :                                                const char *_form_name /* [in] [charset(UTF16)] */,
    7189             :                                                uint32_t _level /* [in]  */,
    7190             :                                                DATA_BLOB *_buffer /* [in] [unique] */,
    7191             :                                                uint32_t _offered /* [in]  */,
    7192             :                                                union spoolss_FormInfo *_info /* [out] [subcontext(4),subcontext_size(offered),switch_is(level),unique] */,
    7193             :                                                uint32_t *_needed /* [out] [ref] */)
    7194             : {
    7195           0 :         struct tevent_req *req;
    7196           0 :         struct dcerpc_spoolss_GetForm_state *state;
    7197           0 :         struct tevent_req *subreq;
    7198             : 
    7199           0 :         req = tevent_req_create(mem_ctx, &state,
    7200             :                                 struct dcerpc_spoolss_GetForm_state);
    7201           0 :         if (req == NULL) {
    7202           0 :                 return NULL;
    7203             :         }
    7204           0 :         state->out_mem_ctx = NULL;
    7205             : 
    7206             :         /* In parameters */
    7207           0 :         state->orig.in.handle = _handle;
    7208           0 :         state->orig.in.form_name = _form_name;
    7209           0 :         state->orig.in.level = _level;
    7210           0 :         state->orig.in.buffer = _buffer;
    7211           0 :         state->orig.in.offered = _offered;
    7212             : 
    7213             :         /* Out parameters */
    7214           0 :         state->orig.out.info = _info;
    7215           0 :         state->orig.out.needed = _needed;
    7216             : 
    7217             :         /* Result */
    7218           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    7219             : 
    7220           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    7221             :                              "dcerpc_spoolss_GetForm_out_memory");
    7222           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    7223           0 :                 return tevent_req_post(req, ev);
    7224             :         }
    7225             : 
    7226             :         /* make a temporary copy, that we pass to the dispatch function */
    7227           0 :         state->tmp = state->orig;
    7228             : 
    7229           0 :         subreq = dcerpc_spoolss_GetForm_r_send(state, ev, h, &state->tmp);
    7230           0 :         if (tevent_req_nomem(subreq, req)) {
    7231           0 :                 return tevent_req_post(req, ev);
    7232             :         }
    7233           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetForm_done, req);
    7234           0 :         return req;
    7235             : }
    7236             : 
    7237           0 : static void dcerpc_spoolss_GetForm_done(struct tevent_req *subreq)
    7238             : {
    7239           0 :         struct tevent_req *req = tevent_req_callback_data(
    7240             :                 subreq, struct tevent_req);
    7241           0 :         struct dcerpc_spoolss_GetForm_state *state = tevent_req_data(
    7242             :                 req, struct dcerpc_spoolss_GetForm_state);
    7243           0 :         NTSTATUS status;
    7244           0 :         TALLOC_CTX *mem_ctx;
    7245             : 
    7246           0 :         if (state->out_mem_ctx) {
    7247           0 :                 mem_ctx = state->out_mem_ctx;
    7248             :         } else {
    7249           0 :                 mem_ctx = state;
    7250             :         }
    7251             : 
    7252           0 :         status = dcerpc_spoolss_GetForm_r_recv(subreq, mem_ctx);
    7253           0 :         TALLOC_FREE(subreq);
    7254           0 :         if (tevent_req_nterror(req, status)) {
    7255           0 :                 return;
    7256             :         }
    7257             : 
    7258             :         /* Copy out parameters */
    7259           0 :         if (state->orig.out.info && state->tmp.out.info) {
    7260           0 :                 *state->orig.out.info = *state->tmp.out.info;
    7261             :         }
    7262           0 :         *state->orig.out.needed = *state->tmp.out.needed;
    7263             : 
    7264             :         /* Copy result */
    7265           0 :         state->orig.out.result = state->tmp.out.result;
    7266             : 
    7267             :         /* Reset temporary structure */
    7268           0 :         NDR_ZERO_STRUCT(state->tmp);
    7269             : 
    7270           0 :         tevent_req_done(req);
    7271             : }
    7272             : 
    7273           0 : NTSTATUS dcerpc_spoolss_GetForm_recv(struct tevent_req *req,
    7274             :                                      TALLOC_CTX *mem_ctx,
    7275             :                                      WERROR *result)
    7276             : {
    7277           0 :         struct dcerpc_spoolss_GetForm_state *state = tevent_req_data(
    7278             :                 req, struct dcerpc_spoolss_GetForm_state);
    7279           0 :         NTSTATUS status;
    7280             : 
    7281           0 :         if (tevent_req_is_nterror(req, &status)) {
    7282           0 :                 tevent_req_received(req);
    7283           0 :                 return status;
    7284             :         }
    7285             : 
    7286             :         /* Steal possible out parameters to the callers context */
    7287           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    7288             : 
    7289             :         /* Return result */
    7290           0 :         *result = state->orig.out.result;
    7291             : 
    7292           0 :         tevent_req_received(req);
    7293           0 :         return NT_STATUS_OK;
    7294             : }
    7295             : 
    7296           0 : NTSTATUS dcerpc_spoolss_GetForm(struct dcerpc_binding_handle *h,
    7297             :                                 TALLOC_CTX *mem_ctx,
    7298             :                                 struct policy_handle *_handle /* [in] [ref] */,
    7299             :                                 const char *_form_name /* [in] [charset(UTF16)] */,
    7300             :                                 uint32_t _level /* [in]  */,
    7301             :                                 DATA_BLOB *_buffer /* [in] [unique] */,
    7302             :                                 uint32_t _offered /* [in]  */,
    7303             :                                 union spoolss_FormInfo *_info /* [out] [subcontext(4),subcontext_size(offered),switch_is(level),unique] */,
    7304             :                                 uint32_t *_needed /* [out] [ref] */,
    7305             :                                 WERROR *result)
    7306             : {
    7307           0 :         struct spoolss_GetForm r;
    7308           0 :         NTSTATUS status;
    7309             : 
    7310             :         /* In parameters */
    7311           0 :         r.in.handle = _handle;
    7312           0 :         r.in.form_name = _form_name;
    7313           0 :         r.in.level = _level;
    7314           0 :         r.in.buffer = _buffer;
    7315           0 :         r.in.offered = _offered;
    7316             : 
    7317             :         /* Out parameters */
    7318           0 :         r.out.info = _info;
    7319           0 :         r.out.needed = _needed;
    7320             : 
    7321             :         /* Result */
    7322           0 :         NDR_ZERO_STRUCT(r.out.result);
    7323             : 
    7324           0 :         status = dcerpc_spoolss_GetForm_r(h, mem_ctx, &r);
    7325           0 :         if (!NT_STATUS_IS_OK(status)) {
    7326           0 :                 return status;
    7327             :         }
    7328             : 
    7329             :         /* Return variables */
    7330           0 :         if (_info && r.out.info) {
    7331           0 :                 *_info = *r.out.info;
    7332             :         }
    7333           0 :         *_needed = *r.out.needed;
    7334             : 
    7335             :         /* Return result */
    7336           0 :         *result = r.out.result;
    7337             : 
    7338           0 :         return NT_STATUS_OK;
    7339             : }
    7340             : 
    7341             : struct dcerpc_spoolss_SetForm_r_state {
    7342             :         TALLOC_CTX *out_mem_ctx;
    7343             : };
    7344             : 
    7345             : static void dcerpc_spoolss_SetForm_r_done(struct tevent_req *subreq);
    7346             : 
    7347           0 : struct tevent_req *dcerpc_spoolss_SetForm_r_send(TALLOC_CTX *mem_ctx,
    7348             :         struct tevent_context *ev,
    7349             :         struct dcerpc_binding_handle *h,
    7350             :         struct spoolss_SetForm *r)
    7351             : {
    7352           0 :         struct tevent_req *req;
    7353           0 :         struct dcerpc_spoolss_SetForm_r_state *state;
    7354           0 :         struct tevent_req *subreq;
    7355             : 
    7356           0 :         req = tevent_req_create(mem_ctx, &state,
    7357             :                                 struct dcerpc_spoolss_SetForm_r_state);
    7358           0 :         if (req == NULL) {
    7359           0 :                 return NULL;
    7360             :         }
    7361             : 
    7362           0 :         state->out_mem_ctx = NULL;
    7363             : 
    7364           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    7365             :                         NULL, &ndr_table_spoolss,
    7366             :                         NDR_SPOOLSS_SETFORM, state, r);
    7367           0 :         if (tevent_req_nomem(subreq, req)) {
    7368           0 :                 return tevent_req_post(req, ev);
    7369             :         }
    7370           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_SetForm_r_done, req);
    7371             : 
    7372           0 :         return req;
    7373             : }
    7374             : 
    7375           0 : static void dcerpc_spoolss_SetForm_r_done(struct tevent_req *subreq)
    7376             : {
    7377           0 :         struct tevent_req *req =
    7378           0 :                 tevent_req_callback_data(subreq,
    7379             :                 struct tevent_req);
    7380           0 :         NTSTATUS status;
    7381             : 
    7382           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    7383           0 :         TALLOC_FREE(subreq);
    7384           0 :         if (tevent_req_nterror(req, status)) {
    7385           0 :                 return;
    7386             :         }
    7387             : 
    7388           0 :         tevent_req_done(req);
    7389             : }
    7390             : 
    7391           0 : NTSTATUS dcerpc_spoolss_SetForm_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    7392             : {
    7393           0 :         struct dcerpc_spoolss_SetForm_r_state *state =
    7394           0 :                 tevent_req_data(req,
    7395             :                 struct dcerpc_spoolss_SetForm_r_state);
    7396           0 :         NTSTATUS status;
    7397             : 
    7398           0 :         if (tevent_req_is_nterror(req, &status)) {
    7399           0 :                 tevent_req_received(req);
    7400           0 :                 return status;
    7401             :         }
    7402             : 
    7403           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    7404             : 
    7405           0 :         tevent_req_received(req);
    7406           0 :         return NT_STATUS_OK;
    7407             : }
    7408             : 
    7409          80 : NTSTATUS dcerpc_spoolss_SetForm_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_SetForm *r)
    7410             : {
    7411           0 :         NTSTATUS status;
    7412             : 
    7413          80 :         status = dcerpc_binding_handle_call(h,
    7414             :                         NULL, &ndr_table_spoolss,
    7415             :                         NDR_SPOOLSS_SETFORM, mem_ctx, r);
    7416             : 
    7417          80 :         return status;
    7418             : }
    7419             : 
    7420             : struct dcerpc_spoolss_SetForm_state {
    7421             :         struct spoolss_SetForm orig;
    7422             :         struct spoolss_SetForm tmp;
    7423             :         TALLOC_CTX *out_mem_ctx;
    7424             : };
    7425             : 
    7426             : static void dcerpc_spoolss_SetForm_done(struct tevent_req *subreq);
    7427             : 
    7428           0 : struct tevent_req *dcerpc_spoolss_SetForm_send(TALLOC_CTX *mem_ctx,
    7429             :                                                struct tevent_context *ev,
    7430             :                                                struct dcerpc_binding_handle *h,
    7431             :                                                struct policy_handle *_handle /* [in] [ref] */,
    7432             :                                                const char *_form_name /* [in] [charset(UTF16)] */,
    7433             :                                                struct spoolss_AddFormInfoCtr *_info_ctr /* [in] [ref] */)
    7434             : {
    7435           0 :         struct tevent_req *req;
    7436           0 :         struct dcerpc_spoolss_SetForm_state *state;
    7437           0 :         struct tevent_req *subreq;
    7438             : 
    7439           0 :         req = tevent_req_create(mem_ctx, &state,
    7440             :                                 struct dcerpc_spoolss_SetForm_state);
    7441           0 :         if (req == NULL) {
    7442           0 :                 return NULL;
    7443             :         }
    7444           0 :         state->out_mem_ctx = NULL;
    7445             : 
    7446             :         /* In parameters */
    7447           0 :         state->orig.in.handle = _handle;
    7448           0 :         state->orig.in.form_name = _form_name;
    7449           0 :         state->orig.in.info_ctr = _info_ctr;
    7450             : 
    7451             :         /* Out parameters */
    7452             : 
    7453             :         /* Result */
    7454           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    7455             : 
    7456             :         /* make a temporary copy, that we pass to the dispatch function */
    7457           0 :         state->tmp = state->orig;
    7458             : 
    7459           0 :         subreq = dcerpc_spoolss_SetForm_r_send(state, ev, h, &state->tmp);
    7460           0 :         if (tevent_req_nomem(subreq, req)) {
    7461           0 :                 return tevent_req_post(req, ev);
    7462             :         }
    7463           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_SetForm_done, req);
    7464           0 :         return req;
    7465             : }
    7466             : 
    7467           0 : static void dcerpc_spoolss_SetForm_done(struct tevent_req *subreq)
    7468             : {
    7469           0 :         struct tevent_req *req = tevent_req_callback_data(
    7470             :                 subreq, struct tevent_req);
    7471           0 :         struct dcerpc_spoolss_SetForm_state *state = tevent_req_data(
    7472             :                 req, struct dcerpc_spoolss_SetForm_state);
    7473           0 :         NTSTATUS status;
    7474           0 :         TALLOC_CTX *mem_ctx;
    7475             : 
    7476           0 :         if (state->out_mem_ctx) {
    7477           0 :                 mem_ctx = state->out_mem_ctx;
    7478             :         } else {
    7479           0 :                 mem_ctx = state;
    7480             :         }
    7481             : 
    7482           0 :         status = dcerpc_spoolss_SetForm_r_recv(subreq, mem_ctx);
    7483           0 :         TALLOC_FREE(subreq);
    7484           0 :         if (tevent_req_nterror(req, status)) {
    7485           0 :                 return;
    7486             :         }
    7487             : 
    7488             :         /* Copy out parameters */
    7489             : 
    7490             :         /* Copy result */
    7491           0 :         state->orig.out.result = state->tmp.out.result;
    7492             : 
    7493             :         /* Reset temporary structure */
    7494           0 :         NDR_ZERO_STRUCT(state->tmp);
    7495             : 
    7496           0 :         tevent_req_done(req);
    7497             : }
    7498             : 
    7499           0 : NTSTATUS dcerpc_spoolss_SetForm_recv(struct tevent_req *req,
    7500             :                                      TALLOC_CTX *mem_ctx,
    7501             :                                      WERROR *result)
    7502             : {
    7503           0 :         struct dcerpc_spoolss_SetForm_state *state = tevent_req_data(
    7504             :                 req, struct dcerpc_spoolss_SetForm_state);
    7505           0 :         NTSTATUS status;
    7506             : 
    7507           0 :         if (tevent_req_is_nterror(req, &status)) {
    7508           0 :                 tevent_req_received(req);
    7509           0 :                 return status;
    7510             :         }
    7511             : 
    7512             :         /* Steal possible out parameters to the callers context */
    7513           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    7514             : 
    7515             :         /* Return result */
    7516           0 :         *result = state->orig.out.result;
    7517             : 
    7518           0 :         tevent_req_received(req);
    7519           0 :         return NT_STATUS_OK;
    7520             : }
    7521             : 
    7522           0 : NTSTATUS dcerpc_spoolss_SetForm(struct dcerpc_binding_handle *h,
    7523             :                                 TALLOC_CTX *mem_ctx,
    7524             :                                 struct policy_handle *_handle /* [in] [ref] */,
    7525             :                                 const char *_form_name /* [in] [charset(UTF16)] */,
    7526             :                                 struct spoolss_AddFormInfoCtr *_info_ctr /* [in] [ref] */,
    7527             :                                 WERROR *result)
    7528             : {
    7529           0 :         struct spoolss_SetForm r;
    7530           0 :         NTSTATUS status;
    7531             : 
    7532             :         /* In parameters */
    7533           0 :         r.in.handle = _handle;
    7534           0 :         r.in.form_name = _form_name;
    7535           0 :         r.in.info_ctr = _info_ctr;
    7536             : 
    7537             :         /* Out parameters */
    7538             : 
    7539             :         /* Result */
    7540           0 :         NDR_ZERO_STRUCT(r.out.result);
    7541             : 
    7542           0 :         status = dcerpc_spoolss_SetForm_r(h, mem_ctx, &r);
    7543           0 :         if (!NT_STATUS_IS_OK(status)) {
    7544           0 :                 return status;
    7545             :         }
    7546             : 
    7547             :         /* Return variables */
    7548             : 
    7549             :         /* Return result */
    7550           0 :         *result = r.out.result;
    7551             : 
    7552           0 :         return NT_STATUS_OK;
    7553             : }
    7554             : 
    7555             : struct dcerpc_spoolss_EnumForms_r_state {
    7556             :         TALLOC_CTX *out_mem_ctx;
    7557             : };
    7558             : 
    7559             : static void dcerpc_spoolss_EnumForms_r_done(struct tevent_req *subreq);
    7560             : 
    7561           0 : struct tevent_req *dcerpc_spoolss_EnumForms_r_send(TALLOC_CTX *mem_ctx,
    7562             :         struct tevent_context *ev,
    7563             :         struct dcerpc_binding_handle *h,
    7564             :         struct spoolss_EnumForms *r)
    7565             : {
    7566           0 :         struct tevent_req *req;
    7567           0 :         struct dcerpc_spoolss_EnumForms_r_state *state;
    7568           0 :         struct tevent_req *subreq;
    7569             : 
    7570           0 :         req = tevent_req_create(mem_ctx, &state,
    7571             :                                 struct dcerpc_spoolss_EnumForms_r_state);
    7572           0 :         if (req == NULL) {
    7573           0 :                 return NULL;
    7574             :         }
    7575             : 
    7576           0 :         state->out_mem_ctx = talloc_new(state);
    7577           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    7578           0 :                 return tevent_req_post(req, ev);
    7579             :         }
    7580             : 
    7581           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    7582             :                         NULL, &ndr_table_spoolss,
    7583           0 :                         NDR_SPOOLSS_ENUMFORMS, state->out_mem_ctx, r);
    7584           0 :         if (tevent_req_nomem(subreq, req)) {
    7585           0 :                 return tevent_req_post(req, ev);
    7586             :         }
    7587           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumForms_r_done, req);
    7588             : 
    7589           0 :         return req;
    7590             : }
    7591             : 
    7592           0 : static void dcerpc_spoolss_EnumForms_r_done(struct tevent_req *subreq)
    7593             : {
    7594           0 :         struct tevent_req *req =
    7595           0 :                 tevent_req_callback_data(subreq,
    7596             :                 struct tevent_req);
    7597           0 :         NTSTATUS status;
    7598             : 
    7599           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    7600           0 :         TALLOC_FREE(subreq);
    7601           0 :         if (tevent_req_nterror(req, status)) {
    7602           0 :                 return;
    7603             :         }
    7604             : 
    7605           0 :         tevent_req_done(req);
    7606             : }
    7607             : 
    7608           0 : NTSTATUS dcerpc_spoolss_EnumForms_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    7609             : {
    7610           0 :         struct dcerpc_spoolss_EnumForms_r_state *state =
    7611           0 :                 tevent_req_data(req,
    7612             :                 struct dcerpc_spoolss_EnumForms_r_state);
    7613           0 :         NTSTATUS status;
    7614             : 
    7615           0 :         if (tevent_req_is_nterror(req, &status)) {
    7616           0 :                 tevent_req_received(req);
    7617           0 :                 return status;
    7618             :         }
    7619             : 
    7620           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    7621             : 
    7622           0 :         tevent_req_received(req);
    7623           0 :         return NT_STATUS_OK;
    7624             : }
    7625             : 
    7626         560 : NTSTATUS dcerpc_spoolss_EnumForms_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumForms *r)
    7627             : {
    7628           0 :         NTSTATUS status;
    7629             : 
    7630         560 :         status = dcerpc_binding_handle_call(h,
    7631             :                         NULL, &ndr_table_spoolss,
    7632             :                         NDR_SPOOLSS_ENUMFORMS, mem_ctx, r);
    7633             : 
    7634         560 :         return status;
    7635             : }
    7636             : 
    7637             : struct dcerpc_spoolss_EnumForms_state {
    7638             :         struct spoolss_EnumForms orig;
    7639             :         struct spoolss_EnumForms tmp;
    7640             :         TALLOC_CTX *out_mem_ctx;
    7641             : };
    7642             : 
    7643             : static void dcerpc_spoolss_EnumForms_done(struct tevent_req *subreq);
    7644             : 
    7645           0 : struct tevent_req *dcerpc_spoolss_EnumForms_send(TALLOC_CTX *mem_ctx,
    7646             :                                                  struct tevent_context *ev,
    7647             :                                                  struct dcerpc_binding_handle *h,
    7648             :                                                  struct policy_handle *_handle /* [in] [ref] */,
    7649             :                                                  uint32_t _level /* [in]  */,
    7650             :                                                  DATA_BLOB *_buffer /* [in] [unique] */,
    7651             :                                                  uint32_t _offered /* [in]  */,
    7652             :                                                  uint32_t *_count /* [out] [ref] */,
    7653             :                                                  union spoolss_FormInfo **_info /* [out] [ref,size_is(,*count),switch_is(level)] */,
    7654             :                                                  uint32_t *_needed /* [out] [ref] */)
    7655             : {
    7656           0 :         struct tevent_req *req;
    7657           0 :         struct dcerpc_spoolss_EnumForms_state *state;
    7658           0 :         struct tevent_req *subreq;
    7659             : 
    7660           0 :         req = tevent_req_create(mem_ctx, &state,
    7661             :                                 struct dcerpc_spoolss_EnumForms_state);
    7662           0 :         if (req == NULL) {
    7663           0 :                 return NULL;
    7664             :         }
    7665           0 :         state->out_mem_ctx = NULL;
    7666             : 
    7667             :         /* In parameters */
    7668           0 :         state->orig.in.handle = _handle;
    7669           0 :         state->orig.in.level = _level;
    7670           0 :         state->orig.in.buffer = _buffer;
    7671           0 :         state->orig.in.offered = _offered;
    7672             : 
    7673             :         /* Out parameters */
    7674           0 :         state->orig.out.count = _count;
    7675           0 :         state->orig.out.info = _info;
    7676           0 :         state->orig.out.needed = _needed;
    7677             : 
    7678             :         /* Result */
    7679           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    7680             : 
    7681           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    7682             :                              "dcerpc_spoolss_EnumForms_out_memory");
    7683           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    7684           0 :                 return tevent_req_post(req, ev);
    7685             :         }
    7686             : 
    7687             :         /* make a temporary copy, that we pass to the dispatch function */
    7688           0 :         state->tmp = state->orig;
    7689             : 
    7690           0 :         subreq = dcerpc_spoolss_EnumForms_r_send(state, ev, h, &state->tmp);
    7691           0 :         if (tevent_req_nomem(subreq, req)) {
    7692           0 :                 return tevent_req_post(req, ev);
    7693             :         }
    7694           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumForms_done, req);
    7695           0 :         return req;
    7696             : }
    7697             : 
    7698           0 : static void dcerpc_spoolss_EnumForms_done(struct tevent_req *subreq)
    7699             : {
    7700           0 :         struct tevent_req *req = tevent_req_callback_data(
    7701             :                 subreq, struct tevent_req);
    7702           0 :         struct dcerpc_spoolss_EnumForms_state *state = tevent_req_data(
    7703             :                 req, struct dcerpc_spoolss_EnumForms_state);
    7704           0 :         NTSTATUS status;
    7705           0 :         TALLOC_CTX *mem_ctx;
    7706             : 
    7707           0 :         if (state->out_mem_ctx) {
    7708           0 :                 mem_ctx = state->out_mem_ctx;
    7709             :         } else {
    7710           0 :                 mem_ctx = state;
    7711             :         }
    7712             : 
    7713           0 :         status = dcerpc_spoolss_EnumForms_r_recv(subreq, mem_ctx);
    7714           0 :         TALLOC_FREE(subreq);
    7715           0 :         if (tevent_req_nterror(req, status)) {
    7716           0 :                 return;
    7717             :         }
    7718             : 
    7719             :         /* Copy out parameters */
    7720           0 :         *state->orig.out.count = *state->tmp.out.count;
    7721           0 :         *state->orig.out.info = *state->tmp.out.info;
    7722           0 :         *state->orig.out.needed = *state->tmp.out.needed;
    7723             : 
    7724             :         /* Copy result */
    7725           0 :         state->orig.out.result = state->tmp.out.result;
    7726             : 
    7727             :         /* Reset temporary structure */
    7728           0 :         NDR_ZERO_STRUCT(state->tmp);
    7729             : 
    7730           0 :         tevent_req_done(req);
    7731             : }
    7732             : 
    7733           0 : NTSTATUS dcerpc_spoolss_EnumForms_recv(struct tevent_req *req,
    7734             :                                        TALLOC_CTX *mem_ctx,
    7735             :                                        WERROR *result)
    7736             : {
    7737           0 :         struct dcerpc_spoolss_EnumForms_state *state = tevent_req_data(
    7738             :                 req, struct dcerpc_spoolss_EnumForms_state);
    7739           0 :         NTSTATUS status;
    7740             : 
    7741           0 :         if (tevent_req_is_nterror(req, &status)) {
    7742           0 :                 tevent_req_received(req);
    7743           0 :                 return status;
    7744             :         }
    7745             : 
    7746             :         /* Steal possible out parameters to the callers context */
    7747           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    7748             : 
    7749             :         /* Return result */
    7750           0 :         *result = state->orig.out.result;
    7751             : 
    7752           0 :         tevent_req_received(req);
    7753           0 :         return NT_STATUS_OK;
    7754             : }
    7755             : 
    7756           0 : NTSTATUS dcerpc_spoolss_EnumForms(struct dcerpc_binding_handle *h,
    7757             :                                   TALLOC_CTX *mem_ctx,
    7758             :                                   struct policy_handle *_handle /* [in] [ref] */,
    7759             :                                   uint32_t _level /* [in]  */,
    7760             :                                   DATA_BLOB *_buffer /* [in] [unique] */,
    7761             :                                   uint32_t _offered /* [in]  */,
    7762             :                                   uint32_t *_count /* [out] [ref] */,
    7763             :                                   union spoolss_FormInfo **_info /* [out] [ref,size_is(,*count),switch_is(level)] */,
    7764             :                                   uint32_t *_needed /* [out] [ref] */,
    7765             :                                   WERROR *result)
    7766             : {
    7767           0 :         struct spoolss_EnumForms r;
    7768           0 :         NTSTATUS status;
    7769             : 
    7770             :         /* In parameters */
    7771           0 :         r.in.handle = _handle;
    7772           0 :         r.in.level = _level;
    7773           0 :         r.in.buffer = _buffer;
    7774           0 :         r.in.offered = _offered;
    7775             : 
    7776             :         /* Out parameters */
    7777           0 :         r.out.count = _count;
    7778           0 :         r.out.info = _info;
    7779           0 :         r.out.needed = _needed;
    7780             : 
    7781             :         /* Result */
    7782           0 :         NDR_ZERO_STRUCT(r.out.result);
    7783             : 
    7784           0 :         status = dcerpc_spoolss_EnumForms_r(h, mem_ctx, &r);
    7785           0 :         if (!NT_STATUS_IS_OK(status)) {
    7786           0 :                 return status;
    7787             :         }
    7788             : 
    7789             :         /* Return variables */
    7790           0 :         *_count = *r.out.count;
    7791           0 :         *_info = *r.out.info;
    7792           0 :         *_needed = *r.out.needed;
    7793             : 
    7794             :         /* Return result */
    7795           0 :         *result = r.out.result;
    7796             : 
    7797           0 :         return NT_STATUS_OK;
    7798             : }
    7799             : 
    7800             : struct dcerpc_spoolss_EnumPorts_r_state {
    7801             :         TALLOC_CTX *out_mem_ctx;
    7802             : };
    7803             : 
    7804             : static void dcerpc_spoolss_EnumPorts_r_done(struct tevent_req *subreq);
    7805             : 
    7806           0 : struct tevent_req *dcerpc_spoolss_EnumPorts_r_send(TALLOC_CTX *mem_ctx,
    7807             :         struct tevent_context *ev,
    7808             :         struct dcerpc_binding_handle *h,
    7809             :         struct spoolss_EnumPorts *r)
    7810             : {
    7811           0 :         struct tevent_req *req;
    7812           0 :         struct dcerpc_spoolss_EnumPorts_r_state *state;
    7813           0 :         struct tevent_req *subreq;
    7814             : 
    7815           0 :         req = tevent_req_create(mem_ctx, &state,
    7816             :                                 struct dcerpc_spoolss_EnumPorts_r_state);
    7817           0 :         if (req == NULL) {
    7818           0 :                 return NULL;
    7819             :         }
    7820             : 
    7821           0 :         state->out_mem_ctx = talloc_new(state);
    7822           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    7823           0 :                 return tevent_req_post(req, ev);
    7824             :         }
    7825             : 
    7826           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    7827             :                         NULL, &ndr_table_spoolss,
    7828           0 :                         NDR_SPOOLSS_ENUMPORTS, state->out_mem_ctx, r);
    7829           0 :         if (tevent_req_nomem(subreq, req)) {
    7830           0 :                 return tevent_req_post(req, ev);
    7831             :         }
    7832           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPorts_r_done, req);
    7833             : 
    7834           0 :         return req;
    7835             : }
    7836             : 
    7837           0 : static void dcerpc_spoolss_EnumPorts_r_done(struct tevent_req *subreq)
    7838             : {
    7839           0 :         struct tevent_req *req =
    7840           0 :                 tevent_req_callback_data(subreq,
    7841             :                 struct tevent_req);
    7842           0 :         NTSTATUS status;
    7843             : 
    7844           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    7845           0 :         TALLOC_FREE(subreq);
    7846           0 :         if (tevent_req_nterror(req, status)) {
    7847           0 :                 return;
    7848             :         }
    7849             : 
    7850           0 :         tevent_req_done(req);
    7851             : }
    7852             : 
    7853           0 : NTSTATUS dcerpc_spoolss_EnumPorts_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    7854             : {
    7855           0 :         struct dcerpc_spoolss_EnumPorts_r_state *state =
    7856           0 :                 tevent_req_data(req,
    7857             :                 struct dcerpc_spoolss_EnumPorts_r_state);
    7858           0 :         NTSTATUS status;
    7859             : 
    7860           0 :         if (tevent_req_is_nterror(req, &status)) {
    7861           0 :                 tevent_req_received(req);
    7862           0 :                 return status;
    7863             :         }
    7864             : 
    7865           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    7866             : 
    7867           0 :         tevent_req_received(req);
    7868           0 :         return NT_STATUS_OK;
    7869             : }
    7870             : 
    7871          24 : NTSTATUS dcerpc_spoolss_EnumPorts_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPorts *r)
    7872             : {
    7873           0 :         NTSTATUS status;
    7874             : 
    7875          24 :         status = dcerpc_binding_handle_call(h,
    7876             :                         NULL, &ndr_table_spoolss,
    7877             :                         NDR_SPOOLSS_ENUMPORTS, mem_ctx, r);
    7878             : 
    7879          24 :         return status;
    7880             : }
    7881             : 
    7882             : struct dcerpc_spoolss_EnumPorts_state {
    7883             :         struct spoolss_EnumPorts orig;
    7884             :         struct spoolss_EnumPorts tmp;
    7885             :         TALLOC_CTX *out_mem_ctx;
    7886             : };
    7887             : 
    7888             : static void dcerpc_spoolss_EnumPorts_done(struct tevent_req *subreq);
    7889             : 
    7890           0 : struct tevent_req *dcerpc_spoolss_EnumPorts_send(TALLOC_CTX *mem_ctx,
    7891             :                                                  struct tevent_context *ev,
    7892             :                                                  struct dcerpc_binding_handle *h,
    7893             :                                                  const char *_servername /* [in] [charset(UTF16),unique] */,
    7894             :                                                  uint32_t _level /* [in]  */,
    7895             :                                                  DATA_BLOB *_buffer /* [in] [unique] */,
    7896             :                                                  uint32_t _offered /* [in]  */,
    7897             :                                                  uint32_t *_count /* [out] [ref] */,
    7898             :                                                  union spoolss_PortInfo **_info /* [out] [ref,size_is(,*count),switch_is(level)] */,
    7899             :                                                  uint32_t *_needed /* [out] [ref] */)
    7900             : {
    7901           0 :         struct tevent_req *req;
    7902           0 :         struct dcerpc_spoolss_EnumPorts_state *state;
    7903           0 :         struct tevent_req *subreq;
    7904             : 
    7905           0 :         req = tevent_req_create(mem_ctx, &state,
    7906             :                                 struct dcerpc_spoolss_EnumPorts_state);
    7907           0 :         if (req == NULL) {
    7908           0 :                 return NULL;
    7909             :         }
    7910           0 :         state->out_mem_ctx = NULL;
    7911             : 
    7912             :         /* In parameters */
    7913           0 :         state->orig.in.servername = _servername;
    7914           0 :         state->orig.in.level = _level;
    7915           0 :         state->orig.in.buffer = _buffer;
    7916           0 :         state->orig.in.offered = _offered;
    7917             : 
    7918             :         /* Out parameters */
    7919           0 :         state->orig.out.count = _count;
    7920           0 :         state->orig.out.info = _info;
    7921           0 :         state->orig.out.needed = _needed;
    7922             : 
    7923             :         /* Result */
    7924           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    7925             : 
    7926           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    7927             :                              "dcerpc_spoolss_EnumPorts_out_memory");
    7928           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    7929           0 :                 return tevent_req_post(req, ev);
    7930             :         }
    7931             : 
    7932             :         /* make a temporary copy, that we pass to the dispatch function */
    7933           0 :         state->tmp = state->orig;
    7934             : 
    7935           0 :         subreq = dcerpc_spoolss_EnumPorts_r_send(state, ev, h, &state->tmp);
    7936           0 :         if (tevent_req_nomem(subreq, req)) {
    7937           0 :                 return tevent_req_post(req, ev);
    7938             :         }
    7939           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPorts_done, req);
    7940           0 :         return req;
    7941             : }
    7942             : 
    7943           0 : static void dcerpc_spoolss_EnumPorts_done(struct tevent_req *subreq)
    7944             : {
    7945           0 :         struct tevent_req *req = tevent_req_callback_data(
    7946             :                 subreq, struct tevent_req);
    7947           0 :         struct dcerpc_spoolss_EnumPorts_state *state = tevent_req_data(
    7948             :                 req, struct dcerpc_spoolss_EnumPorts_state);
    7949           0 :         NTSTATUS status;
    7950           0 :         TALLOC_CTX *mem_ctx;
    7951             : 
    7952           0 :         if (state->out_mem_ctx) {
    7953           0 :                 mem_ctx = state->out_mem_ctx;
    7954             :         } else {
    7955           0 :                 mem_ctx = state;
    7956             :         }
    7957             : 
    7958           0 :         status = dcerpc_spoolss_EnumPorts_r_recv(subreq, mem_ctx);
    7959           0 :         TALLOC_FREE(subreq);
    7960           0 :         if (tevent_req_nterror(req, status)) {
    7961           0 :                 return;
    7962             :         }
    7963             : 
    7964             :         /* Copy out parameters */
    7965           0 :         *state->orig.out.count = *state->tmp.out.count;
    7966           0 :         *state->orig.out.info = *state->tmp.out.info;
    7967           0 :         *state->orig.out.needed = *state->tmp.out.needed;
    7968             : 
    7969             :         /* Copy result */
    7970           0 :         state->orig.out.result = state->tmp.out.result;
    7971             : 
    7972             :         /* Reset temporary structure */
    7973           0 :         NDR_ZERO_STRUCT(state->tmp);
    7974             : 
    7975           0 :         tevent_req_done(req);
    7976             : }
    7977             : 
    7978           0 : NTSTATUS dcerpc_spoolss_EnumPorts_recv(struct tevent_req *req,
    7979             :                                        TALLOC_CTX *mem_ctx,
    7980             :                                        WERROR *result)
    7981             : {
    7982           0 :         struct dcerpc_spoolss_EnumPorts_state *state = tevent_req_data(
    7983             :                 req, struct dcerpc_spoolss_EnumPorts_state);
    7984           0 :         NTSTATUS status;
    7985             : 
    7986           0 :         if (tevent_req_is_nterror(req, &status)) {
    7987           0 :                 tevent_req_received(req);
    7988           0 :                 return status;
    7989             :         }
    7990             : 
    7991             :         /* Steal possible out parameters to the callers context */
    7992           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    7993             : 
    7994             :         /* Return result */
    7995           0 :         *result = state->orig.out.result;
    7996             : 
    7997           0 :         tevent_req_received(req);
    7998           0 :         return NT_STATUS_OK;
    7999             : }
    8000             : 
    8001           0 : NTSTATUS dcerpc_spoolss_EnumPorts(struct dcerpc_binding_handle *h,
    8002             :                                   TALLOC_CTX *mem_ctx,
    8003             :                                   const char *_servername /* [in] [charset(UTF16),unique] */,
    8004             :                                   uint32_t _level /* [in]  */,
    8005             :                                   DATA_BLOB *_buffer /* [in] [unique] */,
    8006             :                                   uint32_t _offered /* [in]  */,
    8007             :                                   uint32_t *_count /* [out] [ref] */,
    8008             :                                   union spoolss_PortInfo **_info /* [out] [ref,size_is(,*count),switch_is(level)] */,
    8009             :                                   uint32_t *_needed /* [out] [ref] */,
    8010             :                                   WERROR *result)
    8011             : {
    8012           0 :         struct spoolss_EnumPorts r;
    8013           0 :         NTSTATUS status;
    8014             : 
    8015             :         /* In parameters */
    8016           0 :         r.in.servername = _servername;
    8017           0 :         r.in.level = _level;
    8018           0 :         r.in.buffer = _buffer;
    8019           0 :         r.in.offered = _offered;
    8020             : 
    8021             :         /* Out parameters */
    8022           0 :         r.out.count = _count;
    8023           0 :         r.out.info = _info;
    8024           0 :         r.out.needed = _needed;
    8025             : 
    8026             :         /* Result */
    8027           0 :         NDR_ZERO_STRUCT(r.out.result);
    8028             : 
    8029           0 :         status = dcerpc_spoolss_EnumPorts_r(h, mem_ctx, &r);
    8030           0 :         if (!NT_STATUS_IS_OK(status)) {
    8031           0 :                 return status;
    8032             :         }
    8033             : 
    8034             :         /* Return variables */
    8035           0 :         *_count = *r.out.count;
    8036           0 :         *_info = *r.out.info;
    8037           0 :         *_needed = *r.out.needed;
    8038             : 
    8039             :         /* Return result */
    8040           0 :         *result = r.out.result;
    8041             : 
    8042           0 :         return NT_STATUS_OK;
    8043             : }
    8044             : 
    8045             : struct dcerpc_spoolss_EnumMonitors_r_state {
    8046             :         TALLOC_CTX *out_mem_ctx;
    8047             : };
    8048             : 
    8049             : static void dcerpc_spoolss_EnumMonitors_r_done(struct tevent_req *subreq);
    8050             : 
    8051           0 : struct tevent_req *dcerpc_spoolss_EnumMonitors_r_send(TALLOC_CTX *mem_ctx,
    8052             :         struct tevent_context *ev,
    8053             :         struct dcerpc_binding_handle *h,
    8054             :         struct spoolss_EnumMonitors *r)
    8055             : {
    8056           0 :         struct tevent_req *req;
    8057           0 :         struct dcerpc_spoolss_EnumMonitors_r_state *state;
    8058           0 :         struct tevent_req *subreq;
    8059             : 
    8060           0 :         req = tevent_req_create(mem_ctx, &state,
    8061             :                                 struct dcerpc_spoolss_EnumMonitors_r_state);
    8062           0 :         if (req == NULL) {
    8063           0 :                 return NULL;
    8064             :         }
    8065             : 
    8066           0 :         state->out_mem_ctx = talloc_new(state);
    8067           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    8068           0 :                 return tevent_req_post(req, ev);
    8069             :         }
    8070             : 
    8071           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    8072             :                         NULL, &ndr_table_spoolss,
    8073           0 :                         NDR_SPOOLSS_ENUMMONITORS, state->out_mem_ctx, r);
    8074           0 :         if (tevent_req_nomem(subreq, req)) {
    8075           0 :                 return tevent_req_post(req, ev);
    8076             :         }
    8077           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumMonitors_r_done, req);
    8078             : 
    8079           0 :         return req;
    8080             : }
    8081             : 
    8082           0 : static void dcerpc_spoolss_EnumMonitors_r_done(struct tevent_req *subreq)
    8083             : {
    8084           0 :         struct tevent_req *req =
    8085           0 :                 tevent_req_callback_data(subreq,
    8086             :                 struct tevent_req);
    8087           0 :         NTSTATUS status;
    8088             : 
    8089           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    8090           0 :         TALLOC_FREE(subreq);
    8091           0 :         if (tevent_req_nterror(req, status)) {
    8092           0 :                 return;
    8093             :         }
    8094             : 
    8095           0 :         tevent_req_done(req);
    8096             : }
    8097             : 
    8098           0 : NTSTATUS dcerpc_spoolss_EnumMonitors_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    8099             : {
    8100           0 :         struct dcerpc_spoolss_EnumMonitors_r_state *state =
    8101           0 :                 tevent_req_data(req,
    8102             :                 struct dcerpc_spoolss_EnumMonitors_r_state);
    8103           0 :         NTSTATUS status;
    8104             : 
    8105           0 :         if (tevent_req_is_nterror(req, &status)) {
    8106           0 :                 tevent_req_received(req);
    8107           0 :                 return status;
    8108             :         }
    8109             : 
    8110           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    8111             : 
    8112           0 :         tevent_req_received(req);
    8113           0 :         return NT_STATUS_OK;
    8114             : }
    8115             : 
    8116          16 : NTSTATUS dcerpc_spoolss_EnumMonitors_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumMonitors *r)
    8117             : {
    8118           0 :         NTSTATUS status;
    8119             : 
    8120          16 :         status = dcerpc_binding_handle_call(h,
    8121             :                         NULL, &ndr_table_spoolss,
    8122             :                         NDR_SPOOLSS_ENUMMONITORS, mem_ctx, r);
    8123             : 
    8124          16 :         return status;
    8125             : }
    8126             : 
    8127             : struct dcerpc_spoolss_EnumMonitors_state {
    8128             :         struct spoolss_EnumMonitors orig;
    8129             :         struct spoolss_EnumMonitors tmp;
    8130             :         TALLOC_CTX *out_mem_ctx;
    8131             : };
    8132             : 
    8133             : static void dcerpc_spoolss_EnumMonitors_done(struct tevent_req *subreq);
    8134             : 
    8135           0 : struct tevent_req *dcerpc_spoolss_EnumMonitors_send(TALLOC_CTX *mem_ctx,
    8136             :                                                     struct tevent_context *ev,
    8137             :                                                     struct dcerpc_binding_handle *h,
    8138             :                                                     const char *_servername /* [in] [charset(UTF16),unique] */,
    8139             :                                                     uint32_t _level /* [in]  */,
    8140             :                                                     DATA_BLOB *_buffer /* [in] [unique] */,
    8141             :                                                     uint32_t _offered /* [in]  */,
    8142             :                                                     uint32_t *_count /* [out] [ref] */,
    8143             :                                                     union spoolss_MonitorInfo **_info /* [out] [ref,size_is(,*count),switch_is(level)] */,
    8144             :                                                     uint32_t *_needed /* [out] [ref] */)
    8145             : {
    8146           0 :         struct tevent_req *req;
    8147           0 :         struct dcerpc_spoolss_EnumMonitors_state *state;
    8148           0 :         struct tevent_req *subreq;
    8149             : 
    8150           0 :         req = tevent_req_create(mem_ctx, &state,
    8151             :                                 struct dcerpc_spoolss_EnumMonitors_state);
    8152           0 :         if (req == NULL) {
    8153           0 :                 return NULL;
    8154             :         }
    8155           0 :         state->out_mem_ctx = NULL;
    8156             : 
    8157             :         /* In parameters */
    8158           0 :         state->orig.in.servername = _servername;
    8159           0 :         state->orig.in.level = _level;
    8160           0 :         state->orig.in.buffer = _buffer;
    8161           0 :         state->orig.in.offered = _offered;
    8162             : 
    8163             :         /* Out parameters */
    8164           0 :         state->orig.out.count = _count;
    8165           0 :         state->orig.out.info = _info;
    8166           0 :         state->orig.out.needed = _needed;
    8167             : 
    8168             :         /* Result */
    8169           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    8170             : 
    8171           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    8172             :                              "dcerpc_spoolss_EnumMonitors_out_memory");
    8173           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    8174           0 :                 return tevent_req_post(req, ev);
    8175             :         }
    8176             : 
    8177             :         /* make a temporary copy, that we pass to the dispatch function */
    8178           0 :         state->tmp = state->orig;
    8179             : 
    8180           0 :         subreq = dcerpc_spoolss_EnumMonitors_r_send(state, ev, h, &state->tmp);
    8181           0 :         if (tevent_req_nomem(subreq, req)) {
    8182           0 :                 return tevent_req_post(req, ev);
    8183             :         }
    8184           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumMonitors_done, req);
    8185           0 :         return req;
    8186             : }
    8187             : 
    8188           0 : static void dcerpc_spoolss_EnumMonitors_done(struct tevent_req *subreq)
    8189             : {
    8190           0 :         struct tevent_req *req = tevent_req_callback_data(
    8191             :                 subreq, struct tevent_req);
    8192           0 :         struct dcerpc_spoolss_EnumMonitors_state *state = tevent_req_data(
    8193             :                 req, struct dcerpc_spoolss_EnumMonitors_state);
    8194           0 :         NTSTATUS status;
    8195           0 :         TALLOC_CTX *mem_ctx;
    8196             : 
    8197           0 :         if (state->out_mem_ctx) {
    8198           0 :                 mem_ctx = state->out_mem_ctx;
    8199             :         } else {
    8200           0 :                 mem_ctx = state;
    8201             :         }
    8202             : 
    8203           0 :         status = dcerpc_spoolss_EnumMonitors_r_recv(subreq, mem_ctx);
    8204           0 :         TALLOC_FREE(subreq);
    8205           0 :         if (tevent_req_nterror(req, status)) {
    8206           0 :                 return;
    8207             :         }
    8208             : 
    8209             :         /* Copy out parameters */
    8210           0 :         *state->orig.out.count = *state->tmp.out.count;
    8211           0 :         *state->orig.out.info = *state->tmp.out.info;
    8212           0 :         *state->orig.out.needed = *state->tmp.out.needed;
    8213             : 
    8214             :         /* Copy result */
    8215           0 :         state->orig.out.result = state->tmp.out.result;
    8216             : 
    8217             :         /* Reset temporary structure */
    8218           0 :         NDR_ZERO_STRUCT(state->tmp);
    8219             : 
    8220           0 :         tevent_req_done(req);
    8221             : }
    8222             : 
    8223           0 : NTSTATUS dcerpc_spoolss_EnumMonitors_recv(struct tevent_req *req,
    8224             :                                           TALLOC_CTX *mem_ctx,
    8225             :                                           WERROR *result)
    8226             : {
    8227           0 :         struct dcerpc_spoolss_EnumMonitors_state *state = tevent_req_data(
    8228             :                 req, struct dcerpc_spoolss_EnumMonitors_state);
    8229           0 :         NTSTATUS status;
    8230             : 
    8231           0 :         if (tevent_req_is_nterror(req, &status)) {
    8232           0 :                 tevent_req_received(req);
    8233           0 :                 return status;
    8234             :         }
    8235             : 
    8236             :         /* Steal possible out parameters to the callers context */
    8237           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    8238             : 
    8239             :         /* Return result */
    8240           0 :         *result = state->orig.out.result;
    8241             : 
    8242           0 :         tevent_req_received(req);
    8243           0 :         return NT_STATUS_OK;
    8244             : }
    8245             : 
    8246           0 : NTSTATUS dcerpc_spoolss_EnumMonitors(struct dcerpc_binding_handle *h,
    8247             :                                      TALLOC_CTX *mem_ctx,
    8248             :                                      const char *_servername /* [in] [charset(UTF16),unique] */,
    8249             :                                      uint32_t _level /* [in]  */,
    8250             :                                      DATA_BLOB *_buffer /* [in] [unique] */,
    8251             :                                      uint32_t _offered /* [in]  */,
    8252             :                                      uint32_t *_count /* [out] [ref] */,
    8253             :                                      union spoolss_MonitorInfo **_info /* [out] [ref,size_is(,*count),switch_is(level)] */,
    8254             :                                      uint32_t *_needed /* [out] [ref] */,
    8255             :                                      WERROR *result)
    8256             : {
    8257           0 :         struct spoolss_EnumMonitors r;
    8258           0 :         NTSTATUS status;
    8259             : 
    8260             :         /* In parameters */
    8261           0 :         r.in.servername = _servername;
    8262           0 :         r.in.level = _level;
    8263           0 :         r.in.buffer = _buffer;
    8264           0 :         r.in.offered = _offered;
    8265             : 
    8266             :         /* Out parameters */
    8267           0 :         r.out.count = _count;
    8268           0 :         r.out.info = _info;
    8269           0 :         r.out.needed = _needed;
    8270             : 
    8271             :         /* Result */
    8272           0 :         NDR_ZERO_STRUCT(r.out.result);
    8273             : 
    8274           0 :         status = dcerpc_spoolss_EnumMonitors_r(h, mem_ctx, &r);
    8275           0 :         if (!NT_STATUS_IS_OK(status)) {
    8276           0 :                 return status;
    8277             :         }
    8278             : 
    8279             :         /* Return variables */
    8280           0 :         *_count = *r.out.count;
    8281           0 :         *_info = *r.out.info;
    8282           0 :         *_needed = *r.out.needed;
    8283             : 
    8284             :         /* Return result */
    8285           0 :         *result = r.out.result;
    8286             : 
    8287           0 :         return NT_STATUS_OK;
    8288             : }
    8289             : 
    8290             : struct dcerpc_spoolss_AddPort_r_state {
    8291             :         TALLOC_CTX *out_mem_ctx;
    8292             : };
    8293             : 
    8294             : static void dcerpc_spoolss_AddPort_r_done(struct tevent_req *subreq);
    8295             : 
    8296           0 : struct tevent_req *dcerpc_spoolss_AddPort_r_send(TALLOC_CTX *mem_ctx,
    8297             :         struct tevent_context *ev,
    8298             :         struct dcerpc_binding_handle *h,
    8299             :         struct spoolss_AddPort *r)
    8300             : {
    8301           0 :         struct tevent_req *req;
    8302           0 :         struct dcerpc_spoolss_AddPort_r_state *state;
    8303           0 :         struct tevent_req *subreq;
    8304             : 
    8305           0 :         req = tevent_req_create(mem_ctx, &state,
    8306             :                                 struct dcerpc_spoolss_AddPort_r_state);
    8307           0 :         if (req == NULL) {
    8308           0 :                 return NULL;
    8309             :         }
    8310             : 
    8311           0 :         state->out_mem_ctx = NULL;
    8312             : 
    8313           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    8314             :                         NULL, &ndr_table_spoolss,
    8315             :                         NDR_SPOOLSS_ADDPORT, state, r);
    8316           0 :         if (tevent_req_nomem(subreq, req)) {
    8317           0 :                 return tevent_req_post(req, ev);
    8318             :         }
    8319           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddPort_r_done, req);
    8320             : 
    8321           0 :         return req;
    8322             : }
    8323             : 
    8324           0 : static void dcerpc_spoolss_AddPort_r_done(struct tevent_req *subreq)
    8325             : {
    8326           0 :         struct tevent_req *req =
    8327           0 :                 tevent_req_callback_data(subreq,
    8328             :                 struct tevent_req);
    8329           0 :         NTSTATUS status;
    8330             : 
    8331           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    8332           0 :         TALLOC_FREE(subreq);
    8333           0 :         if (tevent_req_nterror(req, status)) {
    8334           0 :                 return;
    8335             :         }
    8336             : 
    8337           0 :         tevent_req_done(req);
    8338             : }
    8339             : 
    8340           0 : NTSTATUS dcerpc_spoolss_AddPort_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    8341             : {
    8342           0 :         struct dcerpc_spoolss_AddPort_r_state *state =
    8343           0 :                 tevent_req_data(req,
    8344             :                 struct dcerpc_spoolss_AddPort_r_state);
    8345           0 :         NTSTATUS status;
    8346             : 
    8347           0 :         if (tevent_req_is_nterror(req, &status)) {
    8348           0 :                 tevent_req_received(req);
    8349           0 :                 return status;
    8350             :         }
    8351             : 
    8352           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    8353             : 
    8354           0 :         tevent_req_received(req);
    8355           0 :         return NT_STATUS_OK;
    8356             : }
    8357             : 
    8358           4 : NTSTATUS dcerpc_spoolss_AddPort_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPort *r)
    8359             : {
    8360           0 :         NTSTATUS status;
    8361             : 
    8362           4 :         status = dcerpc_binding_handle_call(h,
    8363             :                         NULL, &ndr_table_spoolss,
    8364             :                         NDR_SPOOLSS_ADDPORT, mem_ctx, r);
    8365             : 
    8366           4 :         return status;
    8367             : }
    8368             : 
    8369             : struct dcerpc_spoolss_AddPort_state {
    8370             :         struct spoolss_AddPort orig;
    8371             :         struct spoolss_AddPort tmp;
    8372             :         TALLOC_CTX *out_mem_ctx;
    8373             : };
    8374             : 
    8375             : static void dcerpc_spoolss_AddPort_done(struct tevent_req *subreq);
    8376             : 
    8377           0 : struct tevent_req *dcerpc_spoolss_AddPort_send(TALLOC_CTX *mem_ctx,
    8378             :                                                struct tevent_context *ev,
    8379             :                                                struct dcerpc_binding_handle *h,
    8380             :                                                const char *_server_name /* [in] [charset(UTF16),unique] */,
    8381             :                                                uint32_t _unknown /* [in]  */,
    8382             :                                                const char *_monitor_name /* [in] [charset(UTF16)] */)
    8383             : {
    8384           0 :         struct tevent_req *req;
    8385           0 :         struct dcerpc_spoolss_AddPort_state *state;
    8386           0 :         struct tevent_req *subreq;
    8387             : 
    8388           0 :         req = tevent_req_create(mem_ctx, &state,
    8389             :                                 struct dcerpc_spoolss_AddPort_state);
    8390           0 :         if (req == NULL) {
    8391           0 :                 return NULL;
    8392             :         }
    8393           0 :         state->out_mem_ctx = NULL;
    8394             : 
    8395             :         /* In parameters */
    8396           0 :         state->orig.in.server_name = _server_name;
    8397           0 :         state->orig.in.unknown = _unknown;
    8398           0 :         state->orig.in.monitor_name = _monitor_name;
    8399             : 
    8400             :         /* Out parameters */
    8401             : 
    8402             :         /* Result */
    8403           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    8404             : 
    8405             :         /* make a temporary copy, that we pass to the dispatch function */
    8406           0 :         state->tmp = state->orig;
    8407             : 
    8408           0 :         subreq = dcerpc_spoolss_AddPort_r_send(state, ev, h, &state->tmp);
    8409           0 :         if (tevent_req_nomem(subreq, req)) {
    8410           0 :                 return tevent_req_post(req, ev);
    8411             :         }
    8412           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddPort_done, req);
    8413           0 :         return req;
    8414             : }
    8415             : 
    8416           0 : static void dcerpc_spoolss_AddPort_done(struct tevent_req *subreq)
    8417             : {
    8418           0 :         struct tevent_req *req = tevent_req_callback_data(
    8419             :                 subreq, struct tevent_req);
    8420           0 :         struct dcerpc_spoolss_AddPort_state *state = tevent_req_data(
    8421             :                 req, struct dcerpc_spoolss_AddPort_state);
    8422           0 :         NTSTATUS status;
    8423           0 :         TALLOC_CTX *mem_ctx;
    8424             : 
    8425           0 :         if (state->out_mem_ctx) {
    8426           0 :                 mem_ctx = state->out_mem_ctx;
    8427             :         } else {
    8428           0 :                 mem_ctx = state;
    8429             :         }
    8430             : 
    8431           0 :         status = dcerpc_spoolss_AddPort_r_recv(subreq, mem_ctx);
    8432           0 :         TALLOC_FREE(subreq);
    8433           0 :         if (tevent_req_nterror(req, status)) {
    8434           0 :                 return;
    8435             :         }
    8436             : 
    8437             :         /* Copy out parameters */
    8438             : 
    8439             :         /* Copy result */
    8440           0 :         state->orig.out.result = state->tmp.out.result;
    8441             : 
    8442             :         /* Reset temporary structure */
    8443           0 :         NDR_ZERO_STRUCT(state->tmp);
    8444             : 
    8445           0 :         tevent_req_done(req);
    8446             : }
    8447             : 
    8448           0 : NTSTATUS dcerpc_spoolss_AddPort_recv(struct tevent_req *req,
    8449             :                                      TALLOC_CTX *mem_ctx,
    8450             :                                      WERROR *result)
    8451             : {
    8452           0 :         struct dcerpc_spoolss_AddPort_state *state = tevent_req_data(
    8453             :                 req, struct dcerpc_spoolss_AddPort_state);
    8454           0 :         NTSTATUS status;
    8455             : 
    8456           0 :         if (tevent_req_is_nterror(req, &status)) {
    8457           0 :                 tevent_req_received(req);
    8458           0 :                 return status;
    8459             :         }
    8460             : 
    8461             :         /* Steal possible out parameters to the callers context */
    8462           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    8463             : 
    8464             :         /* Return result */
    8465           0 :         *result = state->orig.out.result;
    8466             : 
    8467           0 :         tevent_req_received(req);
    8468           0 :         return NT_STATUS_OK;
    8469             : }
    8470             : 
    8471           0 : NTSTATUS dcerpc_spoolss_AddPort(struct dcerpc_binding_handle *h,
    8472             :                                 TALLOC_CTX *mem_ctx,
    8473             :                                 const char *_server_name /* [in] [charset(UTF16),unique] */,
    8474             :                                 uint32_t _unknown /* [in]  */,
    8475             :                                 const char *_monitor_name /* [in] [charset(UTF16)] */,
    8476             :                                 WERROR *result)
    8477             : {
    8478           0 :         struct spoolss_AddPort r;
    8479           0 :         NTSTATUS status;
    8480             : 
    8481             :         /* In parameters */
    8482           0 :         r.in.server_name = _server_name;
    8483           0 :         r.in.unknown = _unknown;
    8484           0 :         r.in.monitor_name = _monitor_name;
    8485             : 
    8486             :         /* Out parameters */
    8487             : 
    8488             :         /* Result */
    8489           0 :         NDR_ZERO_STRUCT(r.out.result);
    8490             : 
    8491           0 :         status = dcerpc_spoolss_AddPort_r(h, mem_ctx, &r);
    8492           0 :         if (!NT_STATUS_IS_OK(status)) {
    8493           0 :                 return status;
    8494             :         }
    8495             : 
    8496             :         /* Return variables */
    8497             : 
    8498             :         /* Return result */
    8499           0 :         *result = r.out.result;
    8500             : 
    8501           0 :         return NT_STATUS_OK;
    8502             : }
    8503             : 
    8504             : struct dcerpc_spoolss_DeletePort_r_state {
    8505             :         TALLOC_CTX *out_mem_ctx;
    8506             : };
    8507             : 
    8508             : static void dcerpc_spoolss_DeletePort_r_done(struct tevent_req *subreq);
    8509             : 
    8510           0 : struct tevent_req *dcerpc_spoolss_DeletePort_r_send(TALLOC_CTX *mem_ctx,
    8511             :         struct tevent_context *ev,
    8512             :         struct dcerpc_binding_handle *h,
    8513             :         struct spoolss_DeletePort *r)
    8514             : {
    8515           0 :         struct tevent_req *req;
    8516           0 :         struct dcerpc_spoolss_DeletePort_r_state *state;
    8517           0 :         struct tevent_req *subreq;
    8518             : 
    8519           0 :         req = tevent_req_create(mem_ctx, &state,
    8520             :                                 struct dcerpc_spoolss_DeletePort_r_state);
    8521           0 :         if (req == NULL) {
    8522           0 :                 return NULL;
    8523             :         }
    8524             : 
    8525           0 :         state->out_mem_ctx = NULL;
    8526             : 
    8527           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    8528             :                         NULL, &ndr_table_spoolss,
    8529             :                         NDR_SPOOLSS_DELETEPORT, state, r);
    8530           0 :         if (tevent_req_nomem(subreq, req)) {
    8531           0 :                 return tevent_req_post(req, ev);
    8532             :         }
    8533           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePort_r_done, req);
    8534             : 
    8535           0 :         return req;
    8536             : }
    8537             : 
    8538           0 : static void dcerpc_spoolss_DeletePort_r_done(struct tevent_req *subreq)
    8539             : {
    8540           0 :         struct tevent_req *req =
    8541           0 :                 tevent_req_callback_data(subreq,
    8542             :                 struct tevent_req);
    8543           0 :         NTSTATUS status;
    8544             : 
    8545           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    8546           0 :         TALLOC_FREE(subreq);
    8547           0 :         if (tevent_req_nterror(req, status)) {
    8548           0 :                 return;
    8549             :         }
    8550             : 
    8551           0 :         tevent_req_done(req);
    8552             : }
    8553             : 
    8554           0 : NTSTATUS dcerpc_spoolss_DeletePort_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    8555             : {
    8556           0 :         struct dcerpc_spoolss_DeletePort_r_state *state =
    8557           0 :                 tevent_req_data(req,
    8558             :                 struct dcerpc_spoolss_DeletePort_r_state);
    8559           0 :         NTSTATUS status;
    8560             : 
    8561           0 :         if (tevent_req_is_nterror(req, &status)) {
    8562           0 :                 tevent_req_received(req);
    8563           0 :                 return status;
    8564             :         }
    8565             : 
    8566           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    8567             : 
    8568           0 :         tevent_req_received(req);
    8569           0 :         return NT_STATUS_OK;
    8570             : }
    8571             : 
    8572           0 : NTSTATUS dcerpc_spoolss_DeletePort_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePort *r)
    8573             : {
    8574           0 :         NTSTATUS status;
    8575             : 
    8576           0 :         status = dcerpc_binding_handle_call(h,
    8577             :                         NULL, &ndr_table_spoolss,
    8578             :                         NDR_SPOOLSS_DELETEPORT, mem_ctx, r);
    8579             : 
    8580           0 :         return status;
    8581             : }
    8582             : 
    8583             : struct dcerpc_spoolss_DeletePort_state {
    8584             :         struct spoolss_DeletePort orig;
    8585             :         struct spoolss_DeletePort tmp;
    8586             :         TALLOC_CTX *out_mem_ctx;
    8587             : };
    8588             : 
    8589             : static void dcerpc_spoolss_DeletePort_done(struct tevent_req *subreq);
    8590             : 
    8591           0 : struct tevent_req *dcerpc_spoolss_DeletePort_send(TALLOC_CTX *mem_ctx,
    8592             :                                                   struct tevent_context *ev,
    8593             :                                                   struct dcerpc_binding_handle *h,
    8594             :                                                   const char *_server_name /* [in] [charset(UTF16),unique] */,
    8595             :                                                   uint32_t _ptr /* [in]  */,
    8596             :                                                   const char *_port_name /* [in] [charset(UTF16),ref] */)
    8597             : {
    8598           0 :         struct tevent_req *req;
    8599           0 :         struct dcerpc_spoolss_DeletePort_state *state;
    8600           0 :         struct tevent_req *subreq;
    8601             : 
    8602           0 :         req = tevent_req_create(mem_ctx, &state,
    8603             :                                 struct dcerpc_spoolss_DeletePort_state);
    8604           0 :         if (req == NULL) {
    8605           0 :                 return NULL;
    8606             :         }
    8607           0 :         state->out_mem_ctx = NULL;
    8608             : 
    8609             :         /* In parameters */
    8610           0 :         state->orig.in.server_name = _server_name;
    8611           0 :         state->orig.in.ptr = _ptr;
    8612           0 :         state->orig.in.port_name = _port_name;
    8613             : 
    8614             :         /* Out parameters */
    8615             : 
    8616             :         /* Result */
    8617           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    8618             : 
    8619             :         /* make a temporary copy, that we pass to the dispatch function */
    8620           0 :         state->tmp = state->orig;
    8621             : 
    8622           0 :         subreq = dcerpc_spoolss_DeletePort_r_send(state, ev, h, &state->tmp);
    8623           0 :         if (tevent_req_nomem(subreq, req)) {
    8624           0 :                 return tevent_req_post(req, ev);
    8625             :         }
    8626           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePort_done, req);
    8627           0 :         return req;
    8628             : }
    8629             : 
    8630           0 : static void dcerpc_spoolss_DeletePort_done(struct tevent_req *subreq)
    8631             : {
    8632           0 :         struct tevent_req *req = tevent_req_callback_data(
    8633             :                 subreq, struct tevent_req);
    8634           0 :         struct dcerpc_spoolss_DeletePort_state *state = tevent_req_data(
    8635             :                 req, struct dcerpc_spoolss_DeletePort_state);
    8636           0 :         NTSTATUS status;
    8637           0 :         TALLOC_CTX *mem_ctx;
    8638             : 
    8639           0 :         if (state->out_mem_ctx) {
    8640           0 :                 mem_ctx = state->out_mem_ctx;
    8641             :         } else {
    8642           0 :                 mem_ctx = state;
    8643             :         }
    8644             : 
    8645           0 :         status = dcerpc_spoolss_DeletePort_r_recv(subreq, mem_ctx);
    8646           0 :         TALLOC_FREE(subreq);
    8647           0 :         if (tevent_req_nterror(req, status)) {
    8648           0 :                 return;
    8649             :         }
    8650             : 
    8651             :         /* Copy out parameters */
    8652             : 
    8653             :         /* Copy result */
    8654           0 :         state->orig.out.result = state->tmp.out.result;
    8655             : 
    8656             :         /* Reset temporary structure */
    8657           0 :         NDR_ZERO_STRUCT(state->tmp);
    8658             : 
    8659           0 :         tevent_req_done(req);
    8660             : }
    8661             : 
    8662           0 : NTSTATUS dcerpc_spoolss_DeletePort_recv(struct tevent_req *req,
    8663             :                                         TALLOC_CTX *mem_ctx,
    8664             :                                         WERROR *result)
    8665             : {
    8666           0 :         struct dcerpc_spoolss_DeletePort_state *state = tevent_req_data(
    8667             :                 req, struct dcerpc_spoolss_DeletePort_state);
    8668           0 :         NTSTATUS status;
    8669             : 
    8670           0 :         if (tevent_req_is_nterror(req, &status)) {
    8671           0 :                 tevent_req_received(req);
    8672           0 :                 return status;
    8673             :         }
    8674             : 
    8675             :         /* Steal possible out parameters to the callers context */
    8676           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    8677             : 
    8678             :         /* Return result */
    8679           0 :         *result = state->orig.out.result;
    8680             : 
    8681           0 :         tevent_req_received(req);
    8682           0 :         return NT_STATUS_OK;
    8683             : }
    8684             : 
    8685           0 : NTSTATUS dcerpc_spoolss_DeletePort(struct dcerpc_binding_handle *h,
    8686             :                                    TALLOC_CTX *mem_ctx,
    8687             :                                    const char *_server_name /* [in] [charset(UTF16),unique] */,
    8688             :                                    uint32_t _ptr /* [in]  */,
    8689             :                                    const char *_port_name /* [in] [charset(UTF16),ref] */,
    8690             :                                    WERROR *result)
    8691             : {
    8692           0 :         struct spoolss_DeletePort r;
    8693           0 :         NTSTATUS status;
    8694             : 
    8695             :         /* In parameters */
    8696           0 :         r.in.server_name = _server_name;
    8697           0 :         r.in.ptr = _ptr;
    8698           0 :         r.in.port_name = _port_name;
    8699             : 
    8700             :         /* Out parameters */
    8701             : 
    8702             :         /* Result */
    8703           0 :         NDR_ZERO_STRUCT(r.out.result);
    8704             : 
    8705           0 :         status = dcerpc_spoolss_DeletePort_r(h, mem_ctx, &r);
    8706           0 :         if (!NT_STATUS_IS_OK(status)) {
    8707           0 :                 return status;
    8708             :         }
    8709             : 
    8710             :         /* Return variables */
    8711             : 
    8712             :         /* Return result */
    8713           0 :         *result = r.out.result;
    8714             : 
    8715           0 :         return NT_STATUS_OK;
    8716             : }
    8717             : 
    8718             : struct dcerpc_spoolss_CreatePrinterIC_r_state {
    8719             :         TALLOC_CTX *out_mem_ctx;
    8720             : };
    8721             : 
    8722             : static void dcerpc_spoolss_CreatePrinterIC_r_done(struct tevent_req *subreq);
    8723             : 
    8724           0 : struct tevent_req *dcerpc_spoolss_CreatePrinterIC_r_send(TALLOC_CTX *mem_ctx,
    8725             :         struct tevent_context *ev,
    8726             :         struct dcerpc_binding_handle *h,
    8727             :         struct spoolss_CreatePrinterIC *r)
    8728             : {
    8729           0 :         struct tevent_req *req;
    8730           0 :         struct dcerpc_spoolss_CreatePrinterIC_r_state *state;
    8731           0 :         struct tevent_req *subreq;
    8732             : 
    8733           0 :         req = tevent_req_create(mem_ctx, &state,
    8734             :                                 struct dcerpc_spoolss_CreatePrinterIC_r_state);
    8735           0 :         if (req == NULL) {
    8736           0 :                 return NULL;
    8737             :         }
    8738             : 
    8739           0 :         state->out_mem_ctx = talloc_new(state);
    8740           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    8741           0 :                 return tevent_req_post(req, ev);
    8742             :         }
    8743             : 
    8744           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    8745             :                         NULL, &ndr_table_spoolss,
    8746           0 :                         NDR_SPOOLSS_CREATEPRINTERIC, state->out_mem_ctx, r);
    8747           0 :         if (tevent_req_nomem(subreq, req)) {
    8748           0 :                 return tevent_req_post(req, ev);
    8749             :         }
    8750           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_CreatePrinterIC_r_done, req);
    8751             : 
    8752           0 :         return req;
    8753             : }
    8754             : 
    8755           0 : static void dcerpc_spoolss_CreatePrinterIC_r_done(struct tevent_req *subreq)
    8756             : {
    8757           0 :         struct tevent_req *req =
    8758           0 :                 tevent_req_callback_data(subreq,
    8759             :                 struct tevent_req);
    8760           0 :         NTSTATUS status;
    8761             : 
    8762           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    8763           0 :         TALLOC_FREE(subreq);
    8764           0 :         if (tevent_req_nterror(req, status)) {
    8765           0 :                 return;
    8766             :         }
    8767             : 
    8768           0 :         tevent_req_done(req);
    8769             : }
    8770             : 
    8771           0 : NTSTATUS dcerpc_spoolss_CreatePrinterIC_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    8772             : {
    8773           0 :         struct dcerpc_spoolss_CreatePrinterIC_r_state *state =
    8774           0 :                 tevent_req_data(req,
    8775             :                 struct dcerpc_spoolss_CreatePrinterIC_r_state);
    8776           0 :         NTSTATUS status;
    8777             : 
    8778           0 :         if (tevent_req_is_nterror(req, &status)) {
    8779           0 :                 tevent_req_received(req);
    8780           0 :                 return status;
    8781             :         }
    8782             : 
    8783           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    8784             : 
    8785           0 :         tevent_req_received(req);
    8786           0 :         return NT_STATUS_OK;
    8787             : }
    8788             : 
    8789           0 : NTSTATUS dcerpc_spoolss_CreatePrinterIC_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_CreatePrinterIC *r)
    8790             : {
    8791           0 :         NTSTATUS status;
    8792             : 
    8793           0 :         status = dcerpc_binding_handle_call(h,
    8794             :                         NULL, &ndr_table_spoolss,
    8795             :                         NDR_SPOOLSS_CREATEPRINTERIC, mem_ctx, r);
    8796             : 
    8797           0 :         return status;
    8798             : }
    8799             : 
    8800             : struct dcerpc_spoolss_CreatePrinterIC_state {
    8801             :         struct spoolss_CreatePrinterIC orig;
    8802             :         struct spoolss_CreatePrinterIC tmp;
    8803             :         TALLOC_CTX *out_mem_ctx;
    8804             : };
    8805             : 
    8806             : static void dcerpc_spoolss_CreatePrinterIC_done(struct tevent_req *subreq);
    8807             : 
    8808           0 : struct tevent_req *dcerpc_spoolss_CreatePrinterIC_send(TALLOC_CTX *mem_ctx,
    8809             :                                                        struct tevent_context *ev,
    8810             :                                                        struct dcerpc_binding_handle *h,
    8811             :                                                        struct policy_handle *_handle /* [in] [ref] */,
    8812             :                                                        struct policy_handle *_gdi_handle /* [out] [ref] */,
    8813             :                                                        struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */)
    8814             : {
    8815           0 :         struct tevent_req *req;
    8816           0 :         struct dcerpc_spoolss_CreatePrinterIC_state *state;
    8817           0 :         struct tevent_req *subreq;
    8818             : 
    8819           0 :         req = tevent_req_create(mem_ctx, &state,
    8820             :                                 struct dcerpc_spoolss_CreatePrinterIC_state);
    8821           0 :         if (req == NULL) {
    8822           0 :                 return NULL;
    8823             :         }
    8824           0 :         state->out_mem_ctx = NULL;
    8825             : 
    8826             :         /* In parameters */
    8827           0 :         state->orig.in.handle = _handle;
    8828           0 :         state->orig.in.devmode_ctr = _devmode_ctr;
    8829             : 
    8830             :         /* Out parameters */
    8831           0 :         state->orig.out.gdi_handle = _gdi_handle;
    8832             : 
    8833             :         /* Result */
    8834           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    8835             : 
    8836           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    8837             :                              "dcerpc_spoolss_CreatePrinterIC_out_memory");
    8838           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    8839           0 :                 return tevent_req_post(req, ev);
    8840             :         }
    8841             : 
    8842             :         /* make a temporary copy, that we pass to the dispatch function */
    8843           0 :         state->tmp = state->orig;
    8844             : 
    8845           0 :         subreq = dcerpc_spoolss_CreatePrinterIC_r_send(state, ev, h, &state->tmp);
    8846           0 :         if (tevent_req_nomem(subreq, req)) {
    8847           0 :                 return tevent_req_post(req, ev);
    8848             :         }
    8849           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_CreatePrinterIC_done, req);
    8850           0 :         return req;
    8851             : }
    8852             : 
    8853           0 : static void dcerpc_spoolss_CreatePrinterIC_done(struct tevent_req *subreq)
    8854             : {
    8855           0 :         struct tevent_req *req = tevent_req_callback_data(
    8856             :                 subreq, struct tevent_req);
    8857           0 :         struct dcerpc_spoolss_CreatePrinterIC_state *state = tevent_req_data(
    8858             :                 req, struct dcerpc_spoolss_CreatePrinterIC_state);
    8859           0 :         NTSTATUS status;
    8860           0 :         TALLOC_CTX *mem_ctx;
    8861             : 
    8862           0 :         if (state->out_mem_ctx) {
    8863           0 :                 mem_ctx = state->out_mem_ctx;
    8864             :         } else {
    8865           0 :                 mem_ctx = state;
    8866             :         }
    8867             : 
    8868           0 :         status = dcerpc_spoolss_CreatePrinterIC_r_recv(subreq, mem_ctx);
    8869           0 :         TALLOC_FREE(subreq);
    8870           0 :         if (tevent_req_nterror(req, status)) {
    8871           0 :                 return;
    8872             :         }
    8873             : 
    8874             :         /* Copy out parameters */
    8875           0 :         *state->orig.out.gdi_handle = *state->tmp.out.gdi_handle;
    8876             : 
    8877             :         /* Copy result */
    8878           0 :         state->orig.out.result = state->tmp.out.result;
    8879             : 
    8880             :         /* Reset temporary structure */
    8881           0 :         NDR_ZERO_STRUCT(state->tmp);
    8882             : 
    8883           0 :         tevent_req_done(req);
    8884             : }
    8885             : 
    8886           0 : NTSTATUS dcerpc_spoolss_CreatePrinterIC_recv(struct tevent_req *req,
    8887             :                                              TALLOC_CTX *mem_ctx,
    8888             :                                              WERROR *result)
    8889             : {
    8890           0 :         struct dcerpc_spoolss_CreatePrinterIC_state *state = tevent_req_data(
    8891             :                 req, struct dcerpc_spoolss_CreatePrinterIC_state);
    8892           0 :         NTSTATUS status;
    8893             : 
    8894           0 :         if (tevent_req_is_nterror(req, &status)) {
    8895           0 :                 tevent_req_received(req);
    8896           0 :                 return status;
    8897             :         }
    8898             : 
    8899             :         /* Steal possible out parameters to the callers context */
    8900           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    8901             : 
    8902             :         /* Return result */
    8903           0 :         *result = state->orig.out.result;
    8904             : 
    8905           0 :         tevent_req_received(req);
    8906           0 :         return NT_STATUS_OK;
    8907             : }
    8908             : 
    8909           0 : NTSTATUS dcerpc_spoolss_CreatePrinterIC(struct dcerpc_binding_handle *h,
    8910             :                                         TALLOC_CTX *mem_ctx,
    8911             :                                         struct policy_handle *_handle /* [in] [ref] */,
    8912             :                                         struct policy_handle *_gdi_handle /* [out] [ref] */,
    8913             :                                         struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
    8914             :                                         WERROR *result)
    8915             : {
    8916           0 :         struct spoolss_CreatePrinterIC r;
    8917           0 :         NTSTATUS status;
    8918             : 
    8919             :         /* In parameters */
    8920           0 :         r.in.handle = _handle;
    8921           0 :         r.in.devmode_ctr = _devmode_ctr;
    8922             : 
    8923             :         /* Out parameters */
    8924           0 :         r.out.gdi_handle = _gdi_handle;
    8925             : 
    8926             :         /* Result */
    8927           0 :         NDR_ZERO_STRUCT(r.out.result);
    8928             : 
    8929           0 :         status = dcerpc_spoolss_CreatePrinterIC_r(h, mem_ctx, &r);
    8930           0 :         if (!NT_STATUS_IS_OK(status)) {
    8931           0 :                 return status;
    8932             :         }
    8933             : 
    8934             :         /* Return variables */
    8935           0 :         *_gdi_handle = *r.out.gdi_handle;
    8936             : 
    8937             :         /* Return result */
    8938           0 :         *result = r.out.result;
    8939             : 
    8940           0 :         return NT_STATUS_OK;
    8941             : }
    8942             : 
    8943             : struct dcerpc_spoolss_PlayGDIScriptOnPrinterIC_r_state {
    8944             :         TALLOC_CTX *out_mem_ctx;
    8945             : };
    8946             : 
    8947             : static void dcerpc_spoolss_PlayGDIScriptOnPrinterIC_r_done(struct tevent_req *subreq);
    8948             : 
    8949           0 : struct tevent_req *dcerpc_spoolss_PlayGDIScriptOnPrinterIC_r_send(TALLOC_CTX *mem_ctx,
    8950             :         struct tevent_context *ev,
    8951             :         struct dcerpc_binding_handle *h,
    8952             :         struct spoolss_PlayGDIScriptOnPrinterIC *r)
    8953             : {
    8954           0 :         struct tevent_req *req;
    8955           0 :         struct dcerpc_spoolss_PlayGDIScriptOnPrinterIC_r_state *state;
    8956           0 :         struct tevent_req *subreq;
    8957             : 
    8958           0 :         req = tevent_req_create(mem_ctx, &state,
    8959             :                                 struct dcerpc_spoolss_PlayGDIScriptOnPrinterIC_r_state);
    8960           0 :         if (req == NULL) {
    8961           0 :                 return NULL;
    8962             :         }
    8963             : 
    8964           0 :         state->out_mem_ctx = talloc_new(state);
    8965           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    8966           0 :                 return tevent_req_post(req, ev);
    8967             :         }
    8968             : 
    8969           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    8970             :                         NULL, &ndr_table_spoolss,
    8971           0 :                         NDR_SPOOLSS_PLAYGDISCRIPTONPRINTERIC, state->out_mem_ctx, r);
    8972           0 :         if (tevent_req_nomem(subreq, req)) {
    8973           0 :                 return tevent_req_post(req, ev);
    8974             :         }
    8975           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_PlayGDIScriptOnPrinterIC_r_done, req);
    8976             : 
    8977           0 :         return req;
    8978             : }
    8979             : 
    8980           0 : static void dcerpc_spoolss_PlayGDIScriptOnPrinterIC_r_done(struct tevent_req *subreq)
    8981             : {
    8982           0 :         struct tevent_req *req =
    8983           0 :                 tevent_req_callback_data(subreq,
    8984             :                 struct tevent_req);
    8985           0 :         NTSTATUS status;
    8986             : 
    8987           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    8988           0 :         TALLOC_FREE(subreq);
    8989           0 :         if (tevent_req_nterror(req, status)) {
    8990           0 :                 return;
    8991             :         }
    8992             : 
    8993           0 :         tevent_req_done(req);
    8994             : }
    8995             : 
    8996           0 : NTSTATUS dcerpc_spoolss_PlayGDIScriptOnPrinterIC_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    8997             : {
    8998           0 :         struct dcerpc_spoolss_PlayGDIScriptOnPrinterIC_r_state *state =
    8999           0 :                 tevent_req_data(req,
    9000             :                 struct dcerpc_spoolss_PlayGDIScriptOnPrinterIC_r_state);
    9001           0 :         NTSTATUS status;
    9002             : 
    9003           0 :         if (tevent_req_is_nterror(req, &status)) {
    9004           0 :                 tevent_req_received(req);
    9005           0 :                 return status;
    9006             :         }
    9007             : 
    9008           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    9009             : 
    9010           0 :         tevent_req_received(req);
    9011           0 :         return NT_STATUS_OK;
    9012             : }
    9013             : 
    9014           0 : NTSTATUS dcerpc_spoolss_PlayGDIScriptOnPrinterIC_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_PlayGDIScriptOnPrinterIC *r)
    9015             : {
    9016           0 :         NTSTATUS status;
    9017             : 
    9018           0 :         status = dcerpc_binding_handle_call(h,
    9019             :                         NULL, &ndr_table_spoolss,
    9020             :                         NDR_SPOOLSS_PLAYGDISCRIPTONPRINTERIC, mem_ctx, r);
    9021             : 
    9022           0 :         return status;
    9023             : }
    9024             : 
    9025             : struct dcerpc_spoolss_PlayGDIScriptOnPrinterIC_state {
    9026             :         struct spoolss_PlayGDIScriptOnPrinterIC orig;
    9027             :         struct spoolss_PlayGDIScriptOnPrinterIC tmp;
    9028             :         TALLOC_CTX *out_mem_ctx;
    9029             : };
    9030             : 
    9031             : static void dcerpc_spoolss_PlayGDIScriptOnPrinterIC_done(struct tevent_req *subreq);
    9032             : 
    9033           0 : struct tevent_req *dcerpc_spoolss_PlayGDIScriptOnPrinterIC_send(TALLOC_CTX *mem_ctx,
    9034             :                                                                 struct tevent_context *ev,
    9035             :                                                                 struct dcerpc_binding_handle *h,
    9036             :                                                                 struct policy_handle *_gdi_handle /* [in] [ref] */,
    9037             :                                                                 uint8_t *_pIn /* [in] [ref,size_is(cIn)] */,
    9038             :                                                                 uint32_t _cIn /* [in]  */,
    9039             :                                                                 uint8_t *_pOut /* [out] [ref,size_is(cOut)] */,
    9040             :                                                                 uint32_t _cOut /* [in]  */,
    9041             :                                                                 uint32_t _ul /* [in]  */)
    9042             : {
    9043           0 :         struct tevent_req *req;
    9044           0 :         struct dcerpc_spoolss_PlayGDIScriptOnPrinterIC_state *state;
    9045           0 :         struct tevent_req *subreq;
    9046             : 
    9047           0 :         req = tevent_req_create(mem_ctx, &state,
    9048             :                                 struct dcerpc_spoolss_PlayGDIScriptOnPrinterIC_state);
    9049           0 :         if (req == NULL) {
    9050           0 :                 return NULL;
    9051             :         }
    9052           0 :         state->out_mem_ctx = NULL;
    9053             : 
    9054             :         /* In parameters */
    9055           0 :         state->orig.in.gdi_handle = _gdi_handle;
    9056           0 :         state->orig.in.pIn = _pIn;
    9057           0 :         state->orig.in.cIn = _cIn;
    9058           0 :         state->orig.in.cOut = _cOut;
    9059           0 :         state->orig.in.ul = _ul;
    9060             : 
    9061             :         /* Out parameters */
    9062           0 :         state->orig.out.pOut = _pOut;
    9063             : 
    9064             :         /* Result */
    9065           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    9066             : 
    9067           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    9068             :                              "dcerpc_spoolss_PlayGDIScriptOnPrinterIC_out_memory");
    9069           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    9070           0 :                 return tevent_req_post(req, ev);
    9071             :         }
    9072             : 
    9073             :         /* make a temporary copy, that we pass to the dispatch function */
    9074           0 :         state->tmp = state->orig;
    9075             : 
    9076           0 :         subreq = dcerpc_spoolss_PlayGDIScriptOnPrinterIC_r_send(state, ev, h, &state->tmp);
    9077           0 :         if (tevent_req_nomem(subreq, req)) {
    9078           0 :                 return tevent_req_post(req, ev);
    9079             :         }
    9080           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_PlayGDIScriptOnPrinterIC_done, req);
    9081           0 :         return req;
    9082             : }
    9083             : 
    9084           0 : static void dcerpc_spoolss_PlayGDIScriptOnPrinterIC_done(struct tevent_req *subreq)
    9085             : {
    9086           0 :         struct tevent_req *req = tevent_req_callback_data(
    9087             :                 subreq, struct tevent_req);
    9088           0 :         struct dcerpc_spoolss_PlayGDIScriptOnPrinterIC_state *state = tevent_req_data(
    9089             :                 req, struct dcerpc_spoolss_PlayGDIScriptOnPrinterIC_state);
    9090           0 :         NTSTATUS status;
    9091           0 :         TALLOC_CTX *mem_ctx;
    9092             : 
    9093           0 :         if (state->out_mem_ctx) {
    9094           0 :                 mem_ctx = state->out_mem_ctx;
    9095             :         } else {
    9096           0 :                 mem_ctx = state;
    9097             :         }
    9098             : 
    9099           0 :         status = dcerpc_spoolss_PlayGDIScriptOnPrinterIC_r_recv(subreq, mem_ctx);
    9100           0 :         TALLOC_FREE(subreq);
    9101           0 :         if (tevent_req_nterror(req, status)) {
    9102           0 :                 return;
    9103             :         }
    9104             : 
    9105             :         /* Copy out parameters */
    9106             :         {
    9107           0 :                 size_t _copy_len_pOut;
    9108           0 :                 _copy_len_pOut = state->tmp.in.cOut;
    9109           0 :                 if (state->orig.out.pOut != state->tmp.out.pOut) {
    9110           0 :                         memcpy(state->orig.out.pOut, state->tmp.out.pOut, _copy_len_pOut * sizeof(*state->orig.out.pOut));
    9111             :                 }
    9112             :         }
    9113             : 
    9114             :         /* Copy result */
    9115           0 :         state->orig.out.result = state->tmp.out.result;
    9116             : 
    9117             :         /* Reset temporary structure */
    9118           0 :         NDR_ZERO_STRUCT(state->tmp);
    9119             : 
    9120           0 :         tevent_req_done(req);
    9121             : }
    9122             : 
    9123           0 : NTSTATUS dcerpc_spoolss_PlayGDIScriptOnPrinterIC_recv(struct tevent_req *req,
    9124             :                                                       TALLOC_CTX *mem_ctx,
    9125             :                                                       WERROR *result)
    9126             : {
    9127           0 :         struct dcerpc_spoolss_PlayGDIScriptOnPrinterIC_state *state = tevent_req_data(
    9128             :                 req, struct dcerpc_spoolss_PlayGDIScriptOnPrinterIC_state);
    9129           0 :         NTSTATUS status;
    9130             : 
    9131           0 :         if (tevent_req_is_nterror(req, &status)) {
    9132           0 :                 tevent_req_received(req);
    9133           0 :                 return status;
    9134             :         }
    9135             : 
    9136             :         /* Steal possible out parameters to the callers context */
    9137           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    9138             : 
    9139             :         /* Return result */
    9140           0 :         *result = state->orig.out.result;
    9141             : 
    9142           0 :         tevent_req_received(req);
    9143           0 :         return NT_STATUS_OK;
    9144             : }
    9145             : 
    9146           0 : NTSTATUS dcerpc_spoolss_PlayGDIScriptOnPrinterIC(struct dcerpc_binding_handle *h,
    9147             :                                                  TALLOC_CTX *mem_ctx,
    9148             :                                                  struct policy_handle *_gdi_handle /* [in] [ref] */,
    9149             :                                                  uint8_t *_pIn /* [in] [ref,size_is(cIn)] */,
    9150             :                                                  uint32_t _cIn /* [in]  */,
    9151             :                                                  uint8_t *_pOut /* [out] [ref,size_is(cOut)] */,
    9152             :                                                  uint32_t _cOut /* [in]  */,
    9153             :                                                  uint32_t _ul /* [in]  */,
    9154             :                                                  WERROR *result)
    9155             : {
    9156           0 :         struct spoolss_PlayGDIScriptOnPrinterIC r;
    9157           0 :         NTSTATUS status;
    9158             : 
    9159             :         /* In parameters */
    9160           0 :         r.in.gdi_handle = _gdi_handle;
    9161           0 :         r.in.pIn = _pIn;
    9162           0 :         r.in.cIn = _cIn;
    9163           0 :         r.in.cOut = _cOut;
    9164           0 :         r.in.ul = _ul;
    9165             : 
    9166             :         /* Out parameters */
    9167           0 :         r.out.pOut = _pOut;
    9168             : 
    9169             :         /* Result */
    9170           0 :         NDR_ZERO_STRUCT(r.out.result);
    9171             : 
    9172           0 :         status = dcerpc_spoolss_PlayGDIScriptOnPrinterIC_r(h, mem_ctx, &r);
    9173           0 :         if (!NT_STATUS_IS_OK(status)) {
    9174           0 :                 return status;
    9175             :         }
    9176             : 
    9177             :         /* Return variables */
    9178             :         {
    9179           0 :                 size_t _copy_len_pOut;
    9180           0 :                 _copy_len_pOut = r.in.cOut;
    9181           0 :                 if (_pOut != r.out.pOut) {
    9182           0 :                         memcpy(_pOut, r.out.pOut, _copy_len_pOut * sizeof(*_pOut));
    9183             :                 }
    9184             :         }
    9185             : 
    9186             :         /* Return result */
    9187           0 :         *result = r.out.result;
    9188             : 
    9189           0 :         return NT_STATUS_OK;
    9190             : }
    9191             : 
    9192             : struct dcerpc_spoolss_DeletePrinterIC_r_state {
    9193             :         TALLOC_CTX *out_mem_ctx;
    9194             : };
    9195             : 
    9196             : static void dcerpc_spoolss_DeletePrinterIC_r_done(struct tevent_req *subreq);
    9197             : 
    9198           0 : struct tevent_req *dcerpc_spoolss_DeletePrinterIC_r_send(TALLOC_CTX *mem_ctx,
    9199             :         struct tevent_context *ev,
    9200             :         struct dcerpc_binding_handle *h,
    9201             :         struct spoolss_DeletePrinterIC *r)
    9202             : {
    9203           0 :         struct tevent_req *req;
    9204           0 :         struct dcerpc_spoolss_DeletePrinterIC_r_state *state;
    9205           0 :         struct tevent_req *subreq;
    9206             : 
    9207           0 :         req = tevent_req_create(mem_ctx, &state,
    9208             :                                 struct dcerpc_spoolss_DeletePrinterIC_r_state);
    9209           0 :         if (req == NULL) {
    9210           0 :                 return NULL;
    9211             :         }
    9212             : 
    9213           0 :         state->out_mem_ctx = talloc_new(state);
    9214           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    9215           0 :                 return tevent_req_post(req, ev);
    9216             :         }
    9217             : 
    9218           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    9219             :                         NULL, &ndr_table_spoolss,
    9220           0 :                         NDR_SPOOLSS_DELETEPRINTERIC, state->out_mem_ctx, r);
    9221           0 :         if (tevent_req_nomem(subreq, req)) {
    9222           0 :                 return tevent_req_post(req, ev);
    9223             :         }
    9224           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterIC_r_done, req);
    9225             : 
    9226           0 :         return req;
    9227             : }
    9228             : 
    9229           0 : static void dcerpc_spoolss_DeletePrinterIC_r_done(struct tevent_req *subreq)
    9230             : {
    9231           0 :         struct tevent_req *req =
    9232           0 :                 tevent_req_callback_data(subreq,
    9233             :                 struct tevent_req);
    9234           0 :         NTSTATUS status;
    9235             : 
    9236           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    9237           0 :         TALLOC_FREE(subreq);
    9238           0 :         if (tevent_req_nterror(req, status)) {
    9239           0 :                 return;
    9240             :         }
    9241             : 
    9242           0 :         tevent_req_done(req);
    9243             : }
    9244             : 
    9245           0 : NTSTATUS dcerpc_spoolss_DeletePrinterIC_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    9246             : {
    9247           0 :         struct dcerpc_spoolss_DeletePrinterIC_r_state *state =
    9248           0 :                 tevent_req_data(req,
    9249             :                 struct dcerpc_spoolss_DeletePrinterIC_r_state);
    9250           0 :         NTSTATUS status;
    9251             : 
    9252           0 :         if (tevent_req_is_nterror(req, &status)) {
    9253           0 :                 tevent_req_received(req);
    9254           0 :                 return status;
    9255             :         }
    9256             : 
    9257           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    9258             : 
    9259           0 :         tevent_req_received(req);
    9260           0 :         return NT_STATUS_OK;
    9261             : }
    9262             : 
    9263           0 : NTSTATUS dcerpc_spoolss_DeletePrinterIC_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterIC *r)
    9264             : {
    9265           0 :         NTSTATUS status;
    9266             : 
    9267           0 :         status = dcerpc_binding_handle_call(h,
    9268             :                         NULL, &ndr_table_spoolss,
    9269             :                         NDR_SPOOLSS_DELETEPRINTERIC, mem_ctx, r);
    9270             : 
    9271           0 :         return status;
    9272             : }
    9273             : 
    9274             : struct dcerpc_spoolss_DeletePrinterIC_state {
    9275             :         struct spoolss_DeletePrinterIC orig;
    9276             :         struct spoolss_DeletePrinterIC tmp;
    9277             :         TALLOC_CTX *out_mem_ctx;
    9278             : };
    9279             : 
    9280             : static void dcerpc_spoolss_DeletePrinterIC_done(struct tevent_req *subreq);
    9281             : 
    9282           0 : struct tevent_req *dcerpc_spoolss_DeletePrinterIC_send(TALLOC_CTX *mem_ctx,
    9283             :                                                        struct tevent_context *ev,
    9284             :                                                        struct dcerpc_binding_handle *h,
    9285             :                                                        struct policy_handle *_gdi_handle /* [in,out] [ref] */)
    9286             : {
    9287           0 :         struct tevent_req *req;
    9288           0 :         struct dcerpc_spoolss_DeletePrinterIC_state *state;
    9289           0 :         struct tevent_req *subreq;
    9290             : 
    9291           0 :         req = tevent_req_create(mem_ctx, &state,
    9292             :                                 struct dcerpc_spoolss_DeletePrinterIC_state);
    9293           0 :         if (req == NULL) {
    9294           0 :                 return NULL;
    9295             :         }
    9296           0 :         state->out_mem_ctx = NULL;
    9297             : 
    9298             :         /* In parameters */
    9299           0 :         state->orig.in.gdi_handle = _gdi_handle;
    9300             : 
    9301             :         /* Out parameters */
    9302           0 :         state->orig.out.gdi_handle = _gdi_handle;
    9303             : 
    9304             :         /* Result */
    9305           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    9306             : 
    9307           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    9308             :                              "dcerpc_spoolss_DeletePrinterIC_out_memory");
    9309           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    9310           0 :                 return tevent_req_post(req, ev);
    9311             :         }
    9312             : 
    9313             :         /* make a temporary copy, that we pass to the dispatch function */
    9314           0 :         state->tmp = state->orig;
    9315             : 
    9316           0 :         subreq = dcerpc_spoolss_DeletePrinterIC_r_send(state, ev, h, &state->tmp);
    9317           0 :         if (tevent_req_nomem(subreq, req)) {
    9318           0 :                 return tevent_req_post(req, ev);
    9319             :         }
    9320           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterIC_done, req);
    9321           0 :         return req;
    9322             : }
    9323             : 
    9324           0 : static void dcerpc_spoolss_DeletePrinterIC_done(struct tevent_req *subreq)
    9325             : {
    9326           0 :         struct tevent_req *req = tevent_req_callback_data(
    9327             :                 subreq, struct tevent_req);
    9328           0 :         struct dcerpc_spoolss_DeletePrinterIC_state *state = tevent_req_data(
    9329             :                 req, struct dcerpc_spoolss_DeletePrinterIC_state);
    9330           0 :         NTSTATUS status;
    9331           0 :         TALLOC_CTX *mem_ctx;
    9332             : 
    9333           0 :         if (state->out_mem_ctx) {
    9334           0 :                 mem_ctx = state->out_mem_ctx;
    9335             :         } else {
    9336           0 :                 mem_ctx = state;
    9337             :         }
    9338             : 
    9339           0 :         status = dcerpc_spoolss_DeletePrinterIC_r_recv(subreq, mem_ctx);
    9340           0 :         TALLOC_FREE(subreq);
    9341           0 :         if (tevent_req_nterror(req, status)) {
    9342           0 :                 return;
    9343             :         }
    9344             : 
    9345             :         /* Copy out parameters */
    9346           0 :         *state->orig.out.gdi_handle = *state->tmp.out.gdi_handle;
    9347             : 
    9348             :         /* Copy result */
    9349           0 :         state->orig.out.result = state->tmp.out.result;
    9350             : 
    9351             :         /* Reset temporary structure */
    9352           0 :         NDR_ZERO_STRUCT(state->tmp);
    9353             : 
    9354           0 :         tevent_req_done(req);
    9355             : }
    9356             : 
    9357           0 : NTSTATUS dcerpc_spoolss_DeletePrinterIC_recv(struct tevent_req *req,
    9358             :                                              TALLOC_CTX *mem_ctx,
    9359             :                                              WERROR *result)
    9360             : {
    9361           0 :         struct dcerpc_spoolss_DeletePrinterIC_state *state = tevent_req_data(
    9362             :                 req, struct dcerpc_spoolss_DeletePrinterIC_state);
    9363           0 :         NTSTATUS status;
    9364             : 
    9365           0 :         if (tevent_req_is_nterror(req, &status)) {
    9366           0 :                 tevent_req_received(req);
    9367           0 :                 return status;
    9368             :         }
    9369             : 
    9370             :         /* Steal possible out parameters to the callers context */
    9371           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    9372             : 
    9373             :         /* Return result */
    9374           0 :         *result = state->orig.out.result;
    9375             : 
    9376           0 :         tevent_req_received(req);
    9377           0 :         return NT_STATUS_OK;
    9378             : }
    9379             : 
    9380           0 : NTSTATUS dcerpc_spoolss_DeletePrinterIC(struct dcerpc_binding_handle *h,
    9381             :                                         TALLOC_CTX *mem_ctx,
    9382             :                                         struct policy_handle *_gdi_handle /* [in,out] [ref] */,
    9383             :                                         WERROR *result)
    9384             : {
    9385           0 :         struct spoolss_DeletePrinterIC r;
    9386           0 :         NTSTATUS status;
    9387             : 
    9388             :         /* In parameters */
    9389           0 :         r.in.gdi_handle = _gdi_handle;
    9390             : 
    9391             :         /* Out parameters */
    9392           0 :         r.out.gdi_handle = _gdi_handle;
    9393             : 
    9394             :         /* Result */
    9395           0 :         NDR_ZERO_STRUCT(r.out.result);
    9396             : 
    9397           0 :         status = dcerpc_spoolss_DeletePrinterIC_r(h, mem_ctx, &r);
    9398           0 :         if (!NT_STATUS_IS_OK(status)) {
    9399           0 :                 return status;
    9400             :         }
    9401             : 
    9402             :         /* Return variables */
    9403           0 :         *_gdi_handle = *r.out.gdi_handle;
    9404             : 
    9405             :         /* Return result */
    9406           0 :         *result = r.out.result;
    9407             : 
    9408           0 :         return NT_STATUS_OK;
    9409             : }
    9410             : 
    9411             : struct dcerpc_spoolss_DeletePrintProcessor_r_state {
    9412             :         TALLOC_CTX *out_mem_ctx;
    9413             : };
    9414             : 
    9415             : static void dcerpc_spoolss_DeletePrintProcessor_r_done(struct tevent_req *subreq);
    9416             : 
    9417           0 : struct tevent_req *dcerpc_spoolss_DeletePrintProcessor_r_send(TALLOC_CTX *mem_ctx,
    9418             :         struct tevent_context *ev,
    9419             :         struct dcerpc_binding_handle *h,
    9420             :         struct spoolss_DeletePrintProcessor *r)
    9421             : {
    9422           0 :         struct tevent_req *req;
    9423           0 :         struct dcerpc_spoolss_DeletePrintProcessor_r_state *state;
    9424           0 :         struct tevent_req *subreq;
    9425             : 
    9426           0 :         req = tevent_req_create(mem_ctx, &state,
    9427             :                                 struct dcerpc_spoolss_DeletePrintProcessor_r_state);
    9428           0 :         if (req == NULL) {
    9429           0 :                 return NULL;
    9430             :         }
    9431             : 
    9432           0 :         state->out_mem_ctx = NULL;
    9433             : 
    9434           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    9435             :                         NULL, &ndr_table_spoolss,
    9436             :                         NDR_SPOOLSS_DELETEPRINTPROCESSOR, state, r);
    9437           0 :         if (tevent_req_nomem(subreq, req)) {
    9438           0 :                 return tevent_req_post(req, ev);
    9439             :         }
    9440           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrintProcessor_r_done, req);
    9441             : 
    9442           0 :         return req;
    9443             : }
    9444             : 
    9445           0 : static void dcerpc_spoolss_DeletePrintProcessor_r_done(struct tevent_req *subreq)
    9446             : {
    9447           0 :         struct tevent_req *req =
    9448           0 :                 tevent_req_callback_data(subreq,
    9449             :                 struct tevent_req);
    9450           0 :         NTSTATUS status;
    9451             : 
    9452           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    9453           0 :         TALLOC_FREE(subreq);
    9454           0 :         if (tevent_req_nterror(req, status)) {
    9455           0 :                 return;
    9456             :         }
    9457             : 
    9458           0 :         tevent_req_done(req);
    9459             : }
    9460             : 
    9461           0 : NTSTATUS dcerpc_spoolss_DeletePrintProcessor_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    9462             : {
    9463           0 :         struct dcerpc_spoolss_DeletePrintProcessor_r_state *state =
    9464           0 :                 tevent_req_data(req,
    9465             :                 struct dcerpc_spoolss_DeletePrintProcessor_r_state);
    9466           0 :         NTSTATUS status;
    9467             : 
    9468           0 :         if (tevent_req_is_nterror(req, &status)) {
    9469           0 :                 tevent_req_received(req);
    9470           0 :                 return status;
    9471             :         }
    9472             : 
    9473           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    9474             : 
    9475           0 :         tevent_req_received(req);
    9476           0 :         return NT_STATUS_OK;
    9477             : }
    9478             : 
    9479           0 : NTSTATUS dcerpc_spoolss_DeletePrintProcessor_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrintProcessor *r)
    9480             : {
    9481           0 :         NTSTATUS status;
    9482             : 
    9483           0 :         status = dcerpc_binding_handle_call(h,
    9484             :                         NULL, &ndr_table_spoolss,
    9485             :                         NDR_SPOOLSS_DELETEPRINTPROCESSOR, mem_ctx, r);
    9486             : 
    9487           0 :         return status;
    9488             : }
    9489             : 
    9490             : struct dcerpc_spoolss_DeletePrintProcessor_state {
    9491             :         struct spoolss_DeletePrintProcessor orig;
    9492             :         struct spoolss_DeletePrintProcessor tmp;
    9493             :         TALLOC_CTX *out_mem_ctx;
    9494             : };
    9495             : 
    9496             : static void dcerpc_spoolss_DeletePrintProcessor_done(struct tevent_req *subreq);
    9497             : 
    9498           0 : struct tevent_req *dcerpc_spoolss_DeletePrintProcessor_send(TALLOC_CTX *mem_ctx,
    9499             :                                                             struct tevent_context *ev,
    9500             :                                                             struct dcerpc_binding_handle *h,
    9501             :                                                             const char *_server /* [in] [charset(UTF16),unique] */,
    9502             :                                                             const char *_architecture /* [in] [charset(UTF16),unique] */,
    9503             :                                                             const char *_print_processor_name /* [in] [charset(UTF16)] */)
    9504             : {
    9505           0 :         struct tevent_req *req;
    9506           0 :         struct dcerpc_spoolss_DeletePrintProcessor_state *state;
    9507           0 :         struct tevent_req *subreq;
    9508             : 
    9509           0 :         req = tevent_req_create(mem_ctx, &state,
    9510             :                                 struct dcerpc_spoolss_DeletePrintProcessor_state);
    9511           0 :         if (req == NULL) {
    9512           0 :                 return NULL;
    9513             :         }
    9514           0 :         state->out_mem_ctx = NULL;
    9515             : 
    9516             :         /* In parameters */
    9517           0 :         state->orig.in.server = _server;
    9518           0 :         state->orig.in.architecture = _architecture;
    9519           0 :         state->orig.in.print_processor_name = _print_processor_name;
    9520             : 
    9521             :         /* Out parameters */
    9522             : 
    9523             :         /* Result */
    9524           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    9525             : 
    9526             :         /* make a temporary copy, that we pass to the dispatch function */
    9527           0 :         state->tmp = state->orig;
    9528             : 
    9529           0 :         subreq = dcerpc_spoolss_DeletePrintProcessor_r_send(state, ev, h, &state->tmp);
    9530           0 :         if (tevent_req_nomem(subreq, req)) {
    9531           0 :                 return tevent_req_post(req, ev);
    9532             :         }
    9533           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrintProcessor_done, req);
    9534           0 :         return req;
    9535             : }
    9536             : 
    9537           0 : static void dcerpc_spoolss_DeletePrintProcessor_done(struct tevent_req *subreq)
    9538             : {
    9539           0 :         struct tevent_req *req = tevent_req_callback_data(
    9540             :                 subreq, struct tevent_req);
    9541           0 :         struct dcerpc_spoolss_DeletePrintProcessor_state *state = tevent_req_data(
    9542             :                 req, struct dcerpc_spoolss_DeletePrintProcessor_state);
    9543           0 :         NTSTATUS status;
    9544           0 :         TALLOC_CTX *mem_ctx;
    9545             : 
    9546           0 :         if (state->out_mem_ctx) {
    9547           0 :                 mem_ctx = state->out_mem_ctx;
    9548             :         } else {
    9549           0 :                 mem_ctx = state;
    9550             :         }
    9551             : 
    9552           0 :         status = dcerpc_spoolss_DeletePrintProcessor_r_recv(subreq, mem_ctx);
    9553           0 :         TALLOC_FREE(subreq);
    9554           0 :         if (tevent_req_nterror(req, status)) {
    9555           0 :                 return;
    9556             :         }
    9557             : 
    9558             :         /* Copy out parameters */
    9559             : 
    9560             :         /* Copy result */
    9561           0 :         state->orig.out.result = state->tmp.out.result;
    9562             : 
    9563             :         /* Reset temporary structure */
    9564           0 :         NDR_ZERO_STRUCT(state->tmp);
    9565             : 
    9566           0 :         tevent_req_done(req);
    9567             : }
    9568             : 
    9569           0 : NTSTATUS dcerpc_spoolss_DeletePrintProcessor_recv(struct tevent_req *req,
    9570             :                                                   TALLOC_CTX *mem_ctx,
    9571             :                                                   WERROR *result)
    9572             : {
    9573           0 :         struct dcerpc_spoolss_DeletePrintProcessor_state *state = tevent_req_data(
    9574             :                 req, struct dcerpc_spoolss_DeletePrintProcessor_state);
    9575           0 :         NTSTATUS status;
    9576             : 
    9577           0 :         if (tevent_req_is_nterror(req, &status)) {
    9578           0 :                 tevent_req_received(req);
    9579           0 :                 return status;
    9580             :         }
    9581             : 
    9582             :         /* Steal possible out parameters to the callers context */
    9583           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    9584             : 
    9585             :         /* Return result */
    9586           0 :         *result = state->orig.out.result;
    9587             : 
    9588           0 :         tevent_req_received(req);
    9589           0 :         return NT_STATUS_OK;
    9590             : }
    9591             : 
    9592           0 : NTSTATUS dcerpc_spoolss_DeletePrintProcessor(struct dcerpc_binding_handle *h,
    9593             :                                              TALLOC_CTX *mem_ctx,
    9594             :                                              const char *_server /* [in] [charset(UTF16),unique] */,
    9595             :                                              const char *_architecture /* [in] [charset(UTF16),unique] */,
    9596             :                                              const char *_print_processor_name /* [in] [charset(UTF16)] */,
    9597             :                                              WERROR *result)
    9598             : {
    9599           0 :         struct spoolss_DeletePrintProcessor r;
    9600           0 :         NTSTATUS status;
    9601             : 
    9602             :         /* In parameters */
    9603           0 :         r.in.server = _server;
    9604           0 :         r.in.architecture = _architecture;
    9605           0 :         r.in.print_processor_name = _print_processor_name;
    9606             : 
    9607             :         /* Out parameters */
    9608             : 
    9609             :         /* Result */
    9610           0 :         NDR_ZERO_STRUCT(r.out.result);
    9611             : 
    9612           0 :         status = dcerpc_spoolss_DeletePrintProcessor_r(h, mem_ctx, &r);
    9613           0 :         if (!NT_STATUS_IS_OK(status)) {
    9614           0 :                 return status;
    9615             :         }
    9616             : 
    9617             :         /* Return variables */
    9618             : 
    9619             :         /* Return result */
    9620           0 :         *result = r.out.result;
    9621             : 
    9622           0 :         return NT_STATUS_OK;
    9623             : }
    9624             : 
    9625             : struct dcerpc_spoolss_EnumPrintProcessorDataTypes_r_state {
    9626             :         TALLOC_CTX *out_mem_ctx;
    9627             : };
    9628             : 
    9629             : static void dcerpc_spoolss_EnumPrintProcessorDataTypes_r_done(struct tevent_req *subreq);
    9630             : 
    9631           0 : struct tevent_req *dcerpc_spoolss_EnumPrintProcessorDataTypes_r_send(TALLOC_CTX *mem_ctx,
    9632             :         struct tevent_context *ev,
    9633             :         struct dcerpc_binding_handle *h,
    9634             :         struct spoolss_EnumPrintProcessorDataTypes *r)
    9635             : {
    9636           0 :         struct tevent_req *req;
    9637           0 :         struct dcerpc_spoolss_EnumPrintProcessorDataTypes_r_state *state;
    9638           0 :         struct tevent_req *subreq;
    9639             : 
    9640           0 :         req = tevent_req_create(mem_ctx, &state,
    9641             :                                 struct dcerpc_spoolss_EnumPrintProcessorDataTypes_r_state);
    9642           0 :         if (req == NULL) {
    9643           0 :                 return NULL;
    9644             :         }
    9645             : 
    9646           0 :         state->out_mem_ctx = talloc_new(state);
    9647           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    9648           0 :                 return tevent_req_post(req, ev);
    9649             :         }
    9650             : 
    9651           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    9652             :                         NULL, &ndr_table_spoolss,
    9653           0 :                         NDR_SPOOLSS_ENUMPRINTPROCESSORDATATYPES, state->out_mem_ctx, r);
    9654           0 :         if (tevent_req_nomem(subreq, req)) {
    9655           0 :                 return tevent_req_post(req, ev);
    9656             :         }
    9657           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrintProcessorDataTypes_r_done, req);
    9658             : 
    9659           0 :         return req;
    9660             : }
    9661             : 
    9662           0 : static void dcerpc_spoolss_EnumPrintProcessorDataTypes_r_done(struct tevent_req *subreq)
    9663             : {
    9664           0 :         struct tevent_req *req =
    9665           0 :                 tevent_req_callback_data(subreq,
    9666             :                 struct tevent_req);
    9667           0 :         NTSTATUS status;
    9668             : 
    9669           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    9670           0 :         TALLOC_FREE(subreq);
    9671           0 :         if (tevent_req_nterror(req, status)) {
    9672           0 :                 return;
    9673             :         }
    9674             : 
    9675           0 :         tevent_req_done(req);
    9676             : }
    9677             : 
    9678           0 : NTSTATUS dcerpc_spoolss_EnumPrintProcessorDataTypes_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    9679             : {
    9680           0 :         struct dcerpc_spoolss_EnumPrintProcessorDataTypes_r_state *state =
    9681           0 :                 tevent_req_data(req,
    9682             :                 struct dcerpc_spoolss_EnumPrintProcessorDataTypes_r_state);
    9683           0 :         NTSTATUS status;
    9684             : 
    9685           0 :         if (tevent_req_is_nterror(req, &status)) {
    9686           0 :                 tevent_req_received(req);
    9687           0 :                 return status;
    9688             :         }
    9689             : 
    9690           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    9691             : 
    9692           0 :         tevent_req_received(req);
    9693           0 :         return NT_STATUS_OK;
    9694             : }
    9695             : 
    9696          44 : NTSTATUS dcerpc_spoolss_EnumPrintProcessorDataTypes_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrintProcessorDataTypes *r)
    9697             : {
    9698           0 :         NTSTATUS status;
    9699             : 
    9700          44 :         status = dcerpc_binding_handle_call(h,
    9701             :                         NULL, &ndr_table_spoolss,
    9702             :                         NDR_SPOOLSS_ENUMPRINTPROCESSORDATATYPES, mem_ctx, r);
    9703             : 
    9704          44 :         return status;
    9705             : }
    9706             : 
    9707             : struct dcerpc_spoolss_EnumPrintProcessorDataTypes_state {
    9708             :         struct spoolss_EnumPrintProcessorDataTypes orig;
    9709             :         struct spoolss_EnumPrintProcessorDataTypes tmp;
    9710             :         TALLOC_CTX *out_mem_ctx;
    9711             : };
    9712             : 
    9713             : static void dcerpc_spoolss_EnumPrintProcessorDataTypes_done(struct tevent_req *subreq);
    9714             : 
    9715           0 : struct tevent_req *dcerpc_spoolss_EnumPrintProcessorDataTypes_send(TALLOC_CTX *mem_ctx,
    9716             :                                                                    struct tevent_context *ev,
    9717             :                                                                    struct dcerpc_binding_handle *h,
    9718             :                                                                    const char *_servername /* [in] [charset(UTF16),unique] */,
    9719             :                                                                    const char *_print_processor_name /* [in] [charset(UTF16),unique] */,
    9720             :                                                                    uint32_t _level /* [in]  */,
    9721             :                                                                    DATA_BLOB *_buffer /* [in] [unique] */,
    9722             :                                                                    uint32_t _offered /* [in]  */,
    9723             :                                                                    uint32_t *_count /* [out] [ref] */,
    9724             :                                                                    union spoolss_PrintProcDataTypesInfo **_info /* [out] [ref,size_is(,*count),switch_is(level)] */,
    9725             :                                                                    uint32_t *_needed /* [out] [ref] */)
    9726             : {
    9727           0 :         struct tevent_req *req;
    9728           0 :         struct dcerpc_spoolss_EnumPrintProcessorDataTypes_state *state;
    9729           0 :         struct tevent_req *subreq;
    9730             : 
    9731           0 :         req = tevent_req_create(mem_ctx, &state,
    9732             :                                 struct dcerpc_spoolss_EnumPrintProcessorDataTypes_state);
    9733           0 :         if (req == NULL) {
    9734           0 :                 return NULL;
    9735             :         }
    9736           0 :         state->out_mem_ctx = NULL;
    9737             : 
    9738             :         /* In parameters */
    9739           0 :         state->orig.in.servername = _servername;
    9740           0 :         state->orig.in.print_processor_name = _print_processor_name;
    9741           0 :         state->orig.in.level = _level;
    9742           0 :         state->orig.in.buffer = _buffer;
    9743           0 :         state->orig.in.offered = _offered;
    9744             : 
    9745             :         /* Out parameters */
    9746           0 :         state->orig.out.count = _count;
    9747           0 :         state->orig.out.info = _info;
    9748           0 :         state->orig.out.needed = _needed;
    9749             : 
    9750             :         /* Result */
    9751           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    9752             : 
    9753           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
    9754             :                              "dcerpc_spoolss_EnumPrintProcessorDataTypes_out_memory");
    9755           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
    9756           0 :                 return tevent_req_post(req, ev);
    9757             :         }
    9758             : 
    9759             :         /* make a temporary copy, that we pass to the dispatch function */
    9760           0 :         state->tmp = state->orig;
    9761             : 
    9762           0 :         subreq = dcerpc_spoolss_EnumPrintProcessorDataTypes_r_send(state, ev, h, &state->tmp);
    9763           0 :         if (tevent_req_nomem(subreq, req)) {
    9764           0 :                 return tevent_req_post(req, ev);
    9765             :         }
    9766           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrintProcessorDataTypes_done, req);
    9767           0 :         return req;
    9768             : }
    9769             : 
    9770           0 : static void dcerpc_spoolss_EnumPrintProcessorDataTypes_done(struct tevent_req *subreq)
    9771             : {
    9772           0 :         struct tevent_req *req = tevent_req_callback_data(
    9773             :                 subreq, struct tevent_req);
    9774           0 :         struct dcerpc_spoolss_EnumPrintProcessorDataTypes_state *state = tevent_req_data(
    9775             :                 req, struct dcerpc_spoolss_EnumPrintProcessorDataTypes_state);
    9776           0 :         NTSTATUS status;
    9777           0 :         TALLOC_CTX *mem_ctx;
    9778             : 
    9779           0 :         if (state->out_mem_ctx) {
    9780           0 :                 mem_ctx = state->out_mem_ctx;
    9781             :         } else {
    9782           0 :                 mem_ctx = state;
    9783             :         }
    9784             : 
    9785           0 :         status = dcerpc_spoolss_EnumPrintProcessorDataTypes_r_recv(subreq, mem_ctx);
    9786           0 :         TALLOC_FREE(subreq);
    9787           0 :         if (tevent_req_nterror(req, status)) {
    9788           0 :                 return;
    9789             :         }
    9790             : 
    9791             :         /* Copy out parameters */
    9792           0 :         *state->orig.out.count = *state->tmp.out.count;
    9793           0 :         *state->orig.out.info = *state->tmp.out.info;
    9794           0 :         *state->orig.out.needed = *state->tmp.out.needed;
    9795             : 
    9796             :         /* Copy result */
    9797           0 :         state->orig.out.result = state->tmp.out.result;
    9798             : 
    9799             :         /* Reset temporary structure */
    9800           0 :         NDR_ZERO_STRUCT(state->tmp);
    9801             : 
    9802           0 :         tevent_req_done(req);
    9803             : }
    9804             : 
    9805           0 : NTSTATUS dcerpc_spoolss_EnumPrintProcessorDataTypes_recv(struct tevent_req *req,
    9806             :                                                          TALLOC_CTX *mem_ctx,
    9807             :                                                          WERROR *result)
    9808             : {
    9809           0 :         struct dcerpc_spoolss_EnumPrintProcessorDataTypes_state *state = tevent_req_data(
    9810             :                 req, struct dcerpc_spoolss_EnumPrintProcessorDataTypes_state);
    9811           0 :         NTSTATUS status;
    9812             : 
    9813           0 :         if (tevent_req_is_nterror(req, &status)) {
    9814           0 :                 tevent_req_received(req);
    9815           0 :                 return status;
    9816             :         }
    9817             : 
    9818             :         /* Steal possible out parameters to the callers context */
    9819           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    9820             : 
    9821             :         /* Return result */
    9822           0 :         *result = state->orig.out.result;
    9823             : 
    9824           0 :         tevent_req_received(req);
    9825           0 :         return NT_STATUS_OK;
    9826             : }
    9827             : 
    9828           0 : NTSTATUS dcerpc_spoolss_EnumPrintProcessorDataTypes(struct dcerpc_binding_handle *h,
    9829             :                                                     TALLOC_CTX *mem_ctx,
    9830             :                                                     const char *_servername /* [in] [charset(UTF16),unique] */,
    9831             :                                                     const char *_print_processor_name /* [in] [charset(UTF16),unique] */,
    9832             :                                                     uint32_t _level /* [in]  */,
    9833             :                                                     DATA_BLOB *_buffer /* [in] [unique] */,
    9834             :                                                     uint32_t _offered /* [in]  */,
    9835             :                                                     uint32_t *_count /* [out] [ref] */,
    9836             :                                                     union spoolss_PrintProcDataTypesInfo **_info /* [out] [ref,size_is(,*count),switch_is(level)] */,
    9837             :                                                     uint32_t *_needed /* [out] [ref] */,
    9838             :                                                     WERROR *result)
    9839             : {
    9840           0 :         struct spoolss_EnumPrintProcessorDataTypes r;
    9841           0 :         NTSTATUS status;
    9842             : 
    9843             :         /* In parameters */
    9844           0 :         r.in.servername = _servername;
    9845           0 :         r.in.print_processor_name = _print_processor_name;
    9846           0 :         r.in.level = _level;
    9847           0 :         r.in.buffer = _buffer;
    9848           0 :         r.in.offered = _offered;
    9849             : 
    9850             :         /* Out parameters */
    9851           0 :         r.out.count = _count;
    9852           0 :         r.out.info = _info;
    9853           0 :         r.out.needed = _needed;
    9854             : 
    9855             :         /* Result */
    9856           0 :         NDR_ZERO_STRUCT(r.out.result);
    9857             : 
    9858           0 :         status = dcerpc_spoolss_EnumPrintProcessorDataTypes_r(h, mem_ctx, &r);
    9859           0 :         if (!NT_STATUS_IS_OK(status)) {
    9860           0 :                 return status;
    9861             :         }
    9862             : 
    9863             :         /* Return variables */
    9864           0 :         *_count = *r.out.count;
    9865           0 :         *_info = *r.out.info;
    9866           0 :         *_needed = *r.out.needed;
    9867             : 
    9868             :         /* Return result */
    9869           0 :         *result = r.out.result;
    9870             : 
    9871           0 :         return NT_STATUS_OK;
    9872             : }
    9873             : 
    9874             : struct dcerpc_spoolss_ResetPrinter_r_state {
    9875             :         TALLOC_CTX *out_mem_ctx;
    9876             : };
    9877             : 
    9878             : static void dcerpc_spoolss_ResetPrinter_r_done(struct tevent_req *subreq);
    9879             : 
    9880           0 : struct tevent_req *dcerpc_spoolss_ResetPrinter_r_send(TALLOC_CTX *mem_ctx,
    9881             :         struct tevent_context *ev,
    9882             :         struct dcerpc_binding_handle *h,
    9883             :         struct spoolss_ResetPrinter *r)
    9884             : {
    9885           0 :         struct tevent_req *req;
    9886           0 :         struct dcerpc_spoolss_ResetPrinter_r_state *state;
    9887           0 :         struct tevent_req *subreq;
    9888             : 
    9889           0 :         req = tevent_req_create(mem_ctx, &state,
    9890             :                                 struct dcerpc_spoolss_ResetPrinter_r_state);
    9891           0 :         if (req == NULL) {
    9892           0 :                 return NULL;
    9893             :         }
    9894             : 
    9895           0 :         state->out_mem_ctx = NULL;
    9896             : 
    9897           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
    9898             :                         NULL, &ndr_table_spoolss,
    9899             :                         NDR_SPOOLSS_RESETPRINTER, state, r);
    9900           0 :         if (tevent_req_nomem(subreq, req)) {
    9901           0 :                 return tevent_req_post(req, ev);
    9902             :         }
    9903           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_ResetPrinter_r_done, req);
    9904             : 
    9905           0 :         return req;
    9906             : }
    9907             : 
    9908           0 : static void dcerpc_spoolss_ResetPrinter_r_done(struct tevent_req *subreq)
    9909             : {
    9910           0 :         struct tevent_req *req =
    9911           0 :                 tevent_req_callback_data(subreq,
    9912             :                 struct tevent_req);
    9913           0 :         NTSTATUS status;
    9914             : 
    9915           0 :         status = dcerpc_binding_handle_call_recv(subreq);
    9916           0 :         TALLOC_FREE(subreq);
    9917           0 :         if (tevent_req_nterror(req, status)) {
    9918           0 :                 return;
    9919             :         }
    9920             : 
    9921           0 :         tevent_req_done(req);
    9922             : }
    9923             : 
    9924           0 : NTSTATUS dcerpc_spoolss_ResetPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
    9925             : {
    9926           0 :         struct dcerpc_spoolss_ResetPrinter_r_state *state =
    9927           0 :                 tevent_req_data(req,
    9928             :                 struct dcerpc_spoolss_ResetPrinter_r_state);
    9929           0 :         NTSTATUS status;
    9930             : 
    9931           0 :         if (tevent_req_is_nterror(req, &status)) {
    9932           0 :                 tevent_req_received(req);
    9933           0 :                 return status;
    9934             :         }
    9935             : 
    9936           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
    9937             : 
    9938           0 :         tevent_req_received(req);
    9939           0 :         return NT_STATUS_OK;
    9940             : }
    9941             : 
    9942           0 : NTSTATUS dcerpc_spoolss_ResetPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ResetPrinter *r)
    9943             : {
    9944           0 :         NTSTATUS status;
    9945             : 
    9946           0 :         status = dcerpc_binding_handle_call(h,
    9947             :                         NULL, &ndr_table_spoolss,
    9948             :                         NDR_SPOOLSS_RESETPRINTER, mem_ctx, r);
    9949             : 
    9950           0 :         return status;
    9951             : }
    9952             : 
    9953             : struct dcerpc_spoolss_ResetPrinter_state {
    9954             :         struct spoolss_ResetPrinter orig;
    9955             :         struct spoolss_ResetPrinter tmp;
    9956             :         TALLOC_CTX *out_mem_ctx;
    9957             : };
    9958             : 
    9959             : static void dcerpc_spoolss_ResetPrinter_done(struct tevent_req *subreq);
    9960             : 
    9961           0 : struct tevent_req *dcerpc_spoolss_ResetPrinter_send(TALLOC_CTX *mem_ctx,
    9962             :                                                     struct tevent_context *ev,
    9963             :                                                     struct dcerpc_binding_handle *h,
    9964             :                                                     struct policy_handle *_handle /* [in] [ref] */,
    9965             :                                                     const char *_data_type /* [in] [charset(UTF16),unique] */,
    9966             :                                                     struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */)
    9967             : {
    9968           0 :         struct tevent_req *req;
    9969           0 :         struct dcerpc_spoolss_ResetPrinter_state *state;
    9970           0 :         struct tevent_req *subreq;
    9971             : 
    9972           0 :         req = tevent_req_create(mem_ctx, &state,
    9973             :                                 struct dcerpc_spoolss_ResetPrinter_state);
    9974           0 :         if (req == NULL) {
    9975           0 :                 return NULL;
    9976             :         }
    9977           0 :         state->out_mem_ctx = NULL;
    9978             : 
    9979             :         /* In parameters */
    9980           0 :         state->orig.in.handle = _handle;
    9981           0 :         state->orig.in.data_type = _data_type;
    9982           0 :         state->orig.in.devmode_ctr = _devmode_ctr;
    9983             : 
    9984             :         /* Out parameters */
    9985             : 
    9986             :         /* Result */
    9987           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
    9988             : 
    9989             :         /* make a temporary copy, that we pass to the dispatch function */
    9990           0 :         state->tmp = state->orig;
    9991             : 
    9992           0 :         subreq = dcerpc_spoolss_ResetPrinter_r_send(state, ev, h, &state->tmp);
    9993           0 :         if (tevent_req_nomem(subreq, req)) {
    9994           0 :                 return tevent_req_post(req, ev);
    9995             :         }
    9996           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_ResetPrinter_done, req);
    9997           0 :         return req;
    9998             : }
    9999             : 
   10000           0 : static void dcerpc_spoolss_ResetPrinter_done(struct tevent_req *subreq)
   10001             : {
   10002           0 :         struct tevent_req *req = tevent_req_callback_data(
   10003             :                 subreq, struct tevent_req);
   10004           0 :         struct dcerpc_spoolss_ResetPrinter_state *state = tevent_req_data(
   10005             :                 req, struct dcerpc_spoolss_ResetPrinter_state);
   10006           0 :         NTSTATUS status;
   10007           0 :         TALLOC_CTX *mem_ctx;
   10008             : 
   10009           0 :         if (state->out_mem_ctx) {
   10010           0 :                 mem_ctx = state->out_mem_ctx;
   10011             :         } else {
   10012           0 :                 mem_ctx = state;
   10013             :         }
   10014             : 
   10015           0 :         status = dcerpc_spoolss_ResetPrinter_r_recv(subreq, mem_ctx);
   10016           0 :         TALLOC_FREE(subreq);
   10017           0 :         if (tevent_req_nterror(req, status)) {
   10018           0 :                 return;
   10019             :         }
   10020             : 
   10021             :         /* Copy out parameters */
   10022             : 
   10023             :         /* Copy result */
   10024           0 :         state->orig.out.result = state->tmp.out.result;
   10025             : 
   10026             :         /* Reset temporary structure */
   10027           0 :         NDR_ZERO_STRUCT(state->tmp);
   10028             : 
   10029           0 :         tevent_req_done(req);
   10030             : }
   10031             : 
   10032           0 : NTSTATUS dcerpc_spoolss_ResetPrinter_recv(struct tevent_req *req,
   10033             :                                           TALLOC_CTX *mem_ctx,
   10034             :                                           WERROR *result)
   10035             : {
   10036           0 :         struct dcerpc_spoolss_ResetPrinter_state *state = tevent_req_data(
   10037             :                 req, struct dcerpc_spoolss_ResetPrinter_state);
   10038           0 :         NTSTATUS status;
   10039             : 
   10040           0 :         if (tevent_req_is_nterror(req, &status)) {
   10041           0 :                 tevent_req_received(req);
   10042           0 :                 return status;
   10043             :         }
   10044             : 
   10045             :         /* Steal possible out parameters to the callers context */
   10046           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   10047             : 
   10048             :         /* Return result */
   10049           0 :         *result = state->orig.out.result;
   10050             : 
   10051           0 :         tevent_req_received(req);
   10052           0 :         return NT_STATUS_OK;
   10053             : }
   10054             : 
   10055           0 : NTSTATUS dcerpc_spoolss_ResetPrinter(struct dcerpc_binding_handle *h,
   10056             :                                      TALLOC_CTX *mem_ctx,
   10057             :                                      struct policy_handle *_handle /* [in] [ref] */,
   10058             :                                      const char *_data_type /* [in] [charset(UTF16),unique] */,
   10059             :                                      struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
   10060             :                                      WERROR *result)
   10061             : {
   10062           0 :         struct spoolss_ResetPrinter r;
   10063           0 :         NTSTATUS status;
   10064             : 
   10065             :         /* In parameters */
   10066           0 :         r.in.handle = _handle;
   10067           0 :         r.in.data_type = _data_type;
   10068           0 :         r.in.devmode_ctr = _devmode_ctr;
   10069             : 
   10070             :         /* Out parameters */
   10071             : 
   10072             :         /* Result */
   10073           0 :         NDR_ZERO_STRUCT(r.out.result);
   10074             : 
   10075           0 :         status = dcerpc_spoolss_ResetPrinter_r(h, mem_ctx, &r);
   10076           0 :         if (!NT_STATUS_IS_OK(status)) {
   10077           0 :                 return status;
   10078             :         }
   10079             : 
   10080             :         /* Return variables */
   10081             : 
   10082             :         /* Return result */
   10083           0 :         *result = r.out.result;
   10084             : 
   10085           0 :         return NT_STATUS_OK;
   10086             : }
   10087             : 
   10088             : struct dcerpc_spoolss_GetPrinterDriver2_r_state {
   10089             :         TALLOC_CTX *out_mem_ctx;
   10090             : };
   10091             : 
   10092             : static void dcerpc_spoolss_GetPrinterDriver2_r_done(struct tevent_req *subreq);
   10093             : 
   10094           0 : struct tevent_req *dcerpc_spoolss_GetPrinterDriver2_r_send(TALLOC_CTX *mem_ctx,
   10095             :         struct tevent_context *ev,
   10096             :         struct dcerpc_binding_handle *h,
   10097             :         struct spoolss_GetPrinterDriver2 *r)
   10098             : {
   10099           0 :         struct tevent_req *req;
   10100           0 :         struct dcerpc_spoolss_GetPrinterDriver2_r_state *state;
   10101           0 :         struct tevent_req *subreq;
   10102             : 
   10103           0 :         req = tevent_req_create(mem_ctx, &state,
   10104             :                                 struct dcerpc_spoolss_GetPrinterDriver2_r_state);
   10105           0 :         if (req == NULL) {
   10106           0 :                 return NULL;
   10107             :         }
   10108             : 
   10109           0 :         state->out_mem_ctx = talloc_new(state);
   10110           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   10111           0 :                 return tevent_req_post(req, ev);
   10112             :         }
   10113             : 
   10114           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   10115             :                         NULL, &ndr_table_spoolss,
   10116           0 :                         NDR_SPOOLSS_GETPRINTERDRIVER2, state->out_mem_ctx, r);
   10117           0 :         if (tevent_req_nomem(subreq, req)) {
   10118           0 :                 return tevent_req_post(req, ev);
   10119             :         }
   10120           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriver2_r_done, req);
   10121             : 
   10122           0 :         return req;
   10123             : }
   10124             : 
   10125           0 : static void dcerpc_spoolss_GetPrinterDriver2_r_done(struct tevent_req *subreq)
   10126             : {
   10127           0 :         struct tevent_req *req =
   10128           0 :                 tevent_req_callback_data(subreq,
   10129             :                 struct tevent_req);
   10130           0 :         NTSTATUS status;
   10131             : 
   10132           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   10133           0 :         TALLOC_FREE(subreq);
   10134           0 :         if (tevent_req_nterror(req, status)) {
   10135           0 :                 return;
   10136             :         }
   10137             : 
   10138           0 :         tevent_req_done(req);
   10139             : }
   10140             : 
   10141           0 : NTSTATUS dcerpc_spoolss_GetPrinterDriver2_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   10142             : {
   10143           0 :         struct dcerpc_spoolss_GetPrinterDriver2_r_state *state =
   10144           0 :                 tevent_req_data(req,
   10145             :                 struct dcerpc_spoolss_GetPrinterDriver2_r_state);
   10146           0 :         NTSTATUS status;
   10147             : 
   10148           0 :         if (tevent_req_is_nterror(req, &status)) {
   10149           0 :                 tevent_req_received(req);
   10150           0 :                 return status;
   10151             :         }
   10152             : 
   10153           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   10154             : 
   10155           0 :         tevent_req_received(req);
   10156           0 :         return NT_STATUS_OK;
   10157             : }
   10158             : 
   10159           4 : NTSTATUS dcerpc_spoolss_GetPrinterDriver2_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDriver2 *r)
   10160             : {
   10161           0 :         NTSTATUS status;
   10162             : 
   10163           4 :         status = dcerpc_binding_handle_call(h,
   10164             :                         NULL, &ndr_table_spoolss,
   10165             :                         NDR_SPOOLSS_GETPRINTERDRIVER2, mem_ctx, r);
   10166             : 
   10167           4 :         return status;
   10168             : }
   10169             : 
   10170             : struct dcerpc_spoolss_GetPrinterDriver2_state {
   10171             :         struct spoolss_GetPrinterDriver2 orig;
   10172             :         struct spoolss_GetPrinterDriver2 tmp;
   10173             :         TALLOC_CTX *out_mem_ctx;
   10174             : };
   10175             : 
   10176             : static void dcerpc_spoolss_GetPrinterDriver2_done(struct tevent_req *subreq);
   10177             : 
   10178           0 : struct tevent_req *dcerpc_spoolss_GetPrinterDriver2_send(TALLOC_CTX *mem_ctx,
   10179             :                                                          struct tevent_context *ev,
   10180             :                                                          struct dcerpc_binding_handle *h,
   10181             :                                                          struct policy_handle *_handle /* [in] [ref] */,
   10182             :                                                          const char *_architecture /* [in] [charset(UTF16),unique] */,
   10183             :                                                          uint32_t _level /* [in]  */,
   10184             :                                                          DATA_BLOB *_buffer /* [in] [unique] */,
   10185             :                                                          uint32_t _offered /* [in]  */,
   10186             :                                                          uint32_t _client_major_version /* [in]  */,
   10187             :                                                          uint32_t _client_minor_version /* [in]  */,
   10188             :                                                          union spoolss_DriverInfo *_info /* [out] [subcontext(4),subcontext_size(offered),switch_is(level),unique] */,
   10189             :                                                          uint32_t *_needed /* [out] [ref] */,
   10190             :                                                          uint32_t *_server_major_version /* [out] [ref] */,
   10191             :                                                          uint32_t *_server_minor_version /* [out] [ref] */)
   10192             : {
   10193           0 :         struct tevent_req *req;
   10194           0 :         struct dcerpc_spoolss_GetPrinterDriver2_state *state;
   10195           0 :         struct tevent_req *subreq;
   10196             : 
   10197           0 :         req = tevent_req_create(mem_ctx, &state,
   10198             :                                 struct dcerpc_spoolss_GetPrinterDriver2_state);
   10199           0 :         if (req == NULL) {
   10200           0 :                 return NULL;
   10201             :         }
   10202           0 :         state->out_mem_ctx = NULL;
   10203             : 
   10204             :         /* In parameters */
   10205           0 :         state->orig.in.handle = _handle;
   10206           0 :         state->orig.in.architecture = _architecture;
   10207           0 :         state->orig.in.level = _level;
   10208           0 :         state->orig.in.buffer = _buffer;
   10209           0 :         state->orig.in.offered = _offered;
   10210           0 :         state->orig.in.client_major_version = _client_major_version;
   10211           0 :         state->orig.in.client_minor_version = _client_minor_version;
   10212             : 
   10213             :         /* Out parameters */
   10214           0 :         state->orig.out.info = _info;
   10215           0 :         state->orig.out.needed = _needed;
   10216           0 :         state->orig.out.server_major_version = _server_major_version;
   10217           0 :         state->orig.out.server_minor_version = _server_minor_version;
   10218             : 
   10219             :         /* Result */
   10220           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   10221             : 
   10222           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   10223             :                              "dcerpc_spoolss_GetPrinterDriver2_out_memory");
   10224           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   10225           0 :                 return tevent_req_post(req, ev);
   10226             :         }
   10227             : 
   10228             :         /* make a temporary copy, that we pass to the dispatch function */
   10229           0 :         state->tmp = state->orig;
   10230             : 
   10231           0 :         subreq = dcerpc_spoolss_GetPrinterDriver2_r_send(state, ev, h, &state->tmp);
   10232           0 :         if (tevent_req_nomem(subreq, req)) {
   10233           0 :                 return tevent_req_post(req, ev);
   10234             :         }
   10235           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriver2_done, req);
   10236           0 :         return req;
   10237             : }
   10238             : 
   10239           0 : static void dcerpc_spoolss_GetPrinterDriver2_done(struct tevent_req *subreq)
   10240             : {
   10241           0 :         struct tevent_req *req = tevent_req_callback_data(
   10242             :                 subreq, struct tevent_req);
   10243           0 :         struct dcerpc_spoolss_GetPrinterDriver2_state *state = tevent_req_data(
   10244             :                 req, struct dcerpc_spoolss_GetPrinterDriver2_state);
   10245           0 :         NTSTATUS status;
   10246           0 :         TALLOC_CTX *mem_ctx;
   10247             : 
   10248           0 :         if (state->out_mem_ctx) {
   10249           0 :                 mem_ctx = state->out_mem_ctx;
   10250             :         } else {
   10251           0 :                 mem_ctx = state;
   10252             :         }
   10253             : 
   10254           0 :         status = dcerpc_spoolss_GetPrinterDriver2_r_recv(subreq, mem_ctx);
   10255           0 :         TALLOC_FREE(subreq);
   10256           0 :         if (tevent_req_nterror(req, status)) {
   10257           0 :                 return;
   10258             :         }
   10259             : 
   10260             :         /* Copy out parameters */
   10261           0 :         if (state->orig.out.info && state->tmp.out.info) {
   10262           0 :                 *state->orig.out.info = *state->tmp.out.info;
   10263             :         }
   10264           0 :         *state->orig.out.needed = *state->tmp.out.needed;
   10265           0 :         *state->orig.out.server_major_version = *state->tmp.out.server_major_version;
   10266           0 :         *state->orig.out.server_minor_version = *state->tmp.out.server_minor_version;
   10267             : 
   10268             :         /* Copy result */
   10269           0 :         state->orig.out.result = state->tmp.out.result;
   10270             : 
   10271             :         /* Reset temporary structure */
   10272           0 :         NDR_ZERO_STRUCT(state->tmp);
   10273             : 
   10274           0 :         tevent_req_done(req);
   10275             : }
   10276             : 
   10277           0 : NTSTATUS dcerpc_spoolss_GetPrinterDriver2_recv(struct tevent_req *req,
   10278             :                                                TALLOC_CTX *mem_ctx,
   10279             :                                                WERROR *result)
   10280             : {
   10281           0 :         struct dcerpc_spoolss_GetPrinterDriver2_state *state = tevent_req_data(
   10282             :                 req, struct dcerpc_spoolss_GetPrinterDriver2_state);
   10283           0 :         NTSTATUS status;
   10284             : 
   10285           0 :         if (tevent_req_is_nterror(req, &status)) {
   10286           0 :                 tevent_req_received(req);
   10287           0 :                 return status;
   10288             :         }
   10289             : 
   10290             :         /* Steal possible out parameters to the callers context */
   10291           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   10292             : 
   10293             :         /* Return result */
   10294           0 :         *result = state->orig.out.result;
   10295             : 
   10296           0 :         tevent_req_received(req);
   10297           0 :         return NT_STATUS_OK;
   10298             : }
   10299             : 
   10300           0 : NTSTATUS dcerpc_spoolss_GetPrinterDriver2(struct dcerpc_binding_handle *h,
   10301             :                                           TALLOC_CTX *mem_ctx,
   10302             :                                           struct policy_handle *_handle /* [in] [ref] */,
   10303             :                                           const char *_architecture /* [in] [charset(UTF16),unique] */,
   10304             :                                           uint32_t _level /* [in]  */,
   10305             :                                           DATA_BLOB *_buffer /* [in] [unique] */,
   10306             :                                           uint32_t _offered /* [in]  */,
   10307             :                                           uint32_t _client_major_version /* [in]  */,
   10308             :                                           uint32_t _client_minor_version /* [in]  */,
   10309             :                                           union spoolss_DriverInfo *_info /* [out] [subcontext(4),subcontext_size(offered),switch_is(level),unique] */,
   10310             :                                           uint32_t *_needed /* [out] [ref] */,
   10311             :                                           uint32_t *_server_major_version /* [out] [ref] */,
   10312             :                                           uint32_t *_server_minor_version /* [out] [ref] */,
   10313             :                                           WERROR *result)
   10314             : {
   10315           0 :         struct spoolss_GetPrinterDriver2 r;
   10316           0 :         NTSTATUS status;
   10317             : 
   10318             :         /* In parameters */
   10319           0 :         r.in.handle = _handle;
   10320           0 :         r.in.architecture = _architecture;
   10321           0 :         r.in.level = _level;
   10322           0 :         r.in.buffer = _buffer;
   10323           0 :         r.in.offered = _offered;
   10324           0 :         r.in.client_major_version = _client_major_version;
   10325           0 :         r.in.client_minor_version = _client_minor_version;
   10326             : 
   10327             :         /* Out parameters */
   10328           0 :         r.out.info = _info;
   10329           0 :         r.out.needed = _needed;
   10330           0 :         r.out.server_major_version = _server_major_version;
   10331           0 :         r.out.server_minor_version = _server_minor_version;
   10332             : 
   10333             :         /* Result */
   10334           0 :         NDR_ZERO_STRUCT(r.out.result);
   10335             : 
   10336           0 :         status = dcerpc_spoolss_GetPrinterDriver2_r(h, mem_ctx, &r);
   10337           0 :         if (!NT_STATUS_IS_OK(status)) {
   10338           0 :                 return status;
   10339             :         }
   10340             : 
   10341             :         /* Return variables */
   10342           0 :         if (_info && r.out.info) {
   10343           0 :                 *_info = *r.out.info;
   10344             :         }
   10345           0 :         *_needed = *r.out.needed;
   10346           0 :         *_server_major_version = *r.out.server_major_version;
   10347           0 :         *_server_minor_version = *r.out.server_minor_version;
   10348             : 
   10349             :         /* Return result */
   10350           0 :         *result = r.out.result;
   10351             : 
   10352           0 :         return NT_STATUS_OK;
   10353             : }
   10354             : 
   10355             : struct dcerpc_spoolss_FindClosePrinterNotify_r_state {
   10356             :         TALLOC_CTX *out_mem_ctx;
   10357             : };
   10358             : 
   10359             : static void dcerpc_spoolss_FindClosePrinterNotify_r_done(struct tevent_req *subreq);
   10360             : 
   10361           0 : struct tevent_req *dcerpc_spoolss_FindClosePrinterNotify_r_send(TALLOC_CTX *mem_ctx,
   10362             :         struct tevent_context *ev,
   10363             :         struct dcerpc_binding_handle *h,
   10364             :         struct spoolss_FindClosePrinterNotify *r)
   10365             : {
   10366           0 :         struct tevent_req *req;
   10367           0 :         struct dcerpc_spoolss_FindClosePrinterNotify_r_state *state;
   10368           0 :         struct tevent_req *subreq;
   10369             : 
   10370           0 :         req = tevent_req_create(mem_ctx, &state,
   10371             :                                 struct dcerpc_spoolss_FindClosePrinterNotify_r_state);
   10372           0 :         if (req == NULL) {
   10373           0 :                 return NULL;
   10374             :         }
   10375             : 
   10376           0 :         state->out_mem_ctx = NULL;
   10377             : 
   10378           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   10379             :                         NULL, &ndr_table_spoolss,
   10380             :                         NDR_SPOOLSS_FINDCLOSEPRINTERNOTIFY, state, r);
   10381           0 :         if (tevent_req_nomem(subreq, req)) {
   10382           0 :                 return tevent_req_post(req, ev);
   10383             :         }
   10384           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_FindClosePrinterNotify_r_done, req);
   10385             : 
   10386           0 :         return req;
   10387             : }
   10388             : 
   10389           0 : static void dcerpc_spoolss_FindClosePrinterNotify_r_done(struct tevent_req *subreq)
   10390             : {
   10391           0 :         struct tevent_req *req =
   10392           0 :                 tevent_req_callback_data(subreq,
   10393             :                 struct tevent_req);
   10394           0 :         NTSTATUS status;
   10395             : 
   10396           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   10397           0 :         TALLOC_FREE(subreq);
   10398           0 :         if (tevent_req_nterror(req, status)) {
   10399           0 :                 return;
   10400             :         }
   10401             : 
   10402           0 :         tevent_req_done(req);
   10403             : }
   10404             : 
   10405           0 : NTSTATUS dcerpc_spoolss_FindClosePrinterNotify_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   10406             : {
   10407           0 :         struct dcerpc_spoolss_FindClosePrinterNotify_r_state *state =
   10408           0 :                 tevent_req_data(req,
   10409             :                 struct dcerpc_spoolss_FindClosePrinterNotify_r_state);
   10410           0 :         NTSTATUS status;
   10411             : 
   10412           0 :         if (tevent_req_is_nterror(req, &status)) {
   10413           0 :                 tevent_req_received(req);
   10414           0 :                 return status;
   10415             :         }
   10416             : 
   10417           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   10418             : 
   10419           0 :         tevent_req_received(req);
   10420           0 :         return NT_STATUS_OK;
   10421             : }
   10422             : 
   10423           0 : NTSTATUS dcerpc_spoolss_FindClosePrinterNotify_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_FindClosePrinterNotify *r)
   10424             : {
   10425           0 :         NTSTATUS status;
   10426             : 
   10427           0 :         status = dcerpc_binding_handle_call(h,
   10428             :                         NULL, &ndr_table_spoolss,
   10429             :                         NDR_SPOOLSS_FINDCLOSEPRINTERNOTIFY, mem_ctx, r);
   10430             : 
   10431           0 :         return status;
   10432             : }
   10433             : 
   10434             : struct dcerpc_spoolss_FindClosePrinterNotify_state {
   10435             :         struct spoolss_FindClosePrinterNotify orig;
   10436             :         struct spoolss_FindClosePrinterNotify tmp;
   10437             :         TALLOC_CTX *out_mem_ctx;
   10438             : };
   10439             : 
   10440             : static void dcerpc_spoolss_FindClosePrinterNotify_done(struct tevent_req *subreq);
   10441             : 
   10442           0 : struct tevent_req *dcerpc_spoolss_FindClosePrinterNotify_send(TALLOC_CTX *mem_ctx,
   10443             :                                                               struct tevent_context *ev,
   10444             :                                                               struct dcerpc_binding_handle *h,
   10445             :                                                               struct policy_handle *_handle /* [in] [ref] */)
   10446             : {
   10447           0 :         struct tevent_req *req;
   10448           0 :         struct dcerpc_spoolss_FindClosePrinterNotify_state *state;
   10449           0 :         struct tevent_req *subreq;
   10450             : 
   10451           0 :         req = tevent_req_create(mem_ctx, &state,
   10452             :                                 struct dcerpc_spoolss_FindClosePrinterNotify_state);
   10453           0 :         if (req == NULL) {
   10454           0 :                 return NULL;
   10455             :         }
   10456           0 :         state->out_mem_ctx = NULL;
   10457             : 
   10458             :         /* In parameters */
   10459           0 :         state->orig.in.handle = _handle;
   10460             : 
   10461             :         /* Out parameters */
   10462             : 
   10463             :         /* Result */
   10464           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   10465             : 
   10466             :         /* make a temporary copy, that we pass to the dispatch function */
   10467           0 :         state->tmp = state->orig;
   10468             : 
   10469           0 :         subreq = dcerpc_spoolss_FindClosePrinterNotify_r_send(state, ev, h, &state->tmp);
   10470           0 :         if (tevent_req_nomem(subreq, req)) {
   10471           0 :                 return tevent_req_post(req, ev);
   10472             :         }
   10473           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_FindClosePrinterNotify_done, req);
   10474           0 :         return req;
   10475             : }
   10476             : 
   10477           0 : static void dcerpc_spoolss_FindClosePrinterNotify_done(struct tevent_req *subreq)
   10478             : {
   10479           0 :         struct tevent_req *req = tevent_req_callback_data(
   10480             :                 subreq, struct tevent_req);
   10481           0 :         struct dcerpc_spoolss_FindClosePrinterNotify_state *state = tevent_req_data(
   10482             :                 req, struct dcerpc_spoolss_FindClosePrinterNotify_state);
   10483           0 :         NTSTATUS status;
   10484           0 :         TALLOC_CTX *mem_ctx;
   10485             : 
   10486           0 :         if (state->out_mem_ctx) {
   10487           0 :                 mem_ctx = state->out_mem_ctx;
   10488             :         } else {
   10489           0 :                 mem_ctx = state;
   10490             :         }
   10491             : 
   10492           0 :         status = dcerpc_spoolss_FindClosePrinterNotify_r_recv(subreq, mem_ctx);
   10493           0 :         TALLOC_FREE(subreq);
   10494           0 :         if (tevent_req_nterror(req, status)) {
   10495           0 :                 return;
   10496             :         }
   10497             : 
   10498             :         /* Copy out parameters */
   10499             : 
   10500             :         /* Copy result */
   10501           0 :         state->orig.out.result = state->tmp.out.result;
   10502             : 
   10503             :         /* Reset temporary structure */
   10504           0 :         NDR_ZERO_STRUCT(state->tmp);
   10505             : 
   10506           0 :         tevent_req_done(req);
   10507             : }
   10508             : 
   10509           0 : NTSTATUS dcerpc_spoolss_FindClosePrinterNotify_recv(struct tevent_req *req,
   10510             :                                                     TALLOC_CTX *mem_ctx,
   10511             :                                                     WERROR *result)
   10512             : {
   10513           0 :         struct dcerpc_spoolss_FindClosePrinterNotify_state *state = tevent_req_data(
   10514             :                 req, struct dcerpc_spoolss_FindClosePrinterNotify_state);
   10515           0 :         NTSTATUS status;
   10516             : 
   10517           0 :         if (tevent_req_is_nterror(req, &status)) {
   10518           0 :                 tevent_req_received(req);
   10519           0 :                 return status;
   10520             :         }
   10521             : 
   10522             :         /* Steal possible out parameters to the callers context */
   10523           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   10524             : 
   10525             :         /* Return result */
   10526           0 :         *result = state->orig.out.result;
   10527             : 
   10528           0 :         tevent_req_received(req);
   10529           0 :         return NT_STATUS_OK;
   10530             : }
   10531             : 
   10532           0 : NTSTATUS dcerpc_spoolss_FindClosePrinterNotify(struct dcerpc_binding_handle *h,
   10533             :                                                TALLOC_CTX *mem_ctx,
   10534             :                                                struct policy_handle *_handle /* [in] [ref] */,
   10535             :                                                WERROR *result)
   10536             : {
   10537           0 :         struct spoolss_FindClosePrinterNotify r;
   10538           0 :         NTSTATUS status;
   10539             : 
   10540             :         /* In parameters */
   10541           0 :         r.in.handle = _handle;
   10542             : 
   10543             :         /* Out parameters */
   10544             : 
   10545             :         /* Result */
   10546           0 :         NDR_ZERO_STRUCT(r.out.result);
   10547             : 
   10548           0 :         status = dcerpc_spoolss_FindClosePrinterNotify_r(h, mem_ctx, &r);
   10549           0 :         if (!NT_STATUS_IS_OK(status)) {
   10550           0 :                 return status;
   10551             :         }
   10552             : 
   10553             :         /* Return variables */
   10554             : 
   10555             :         /* Return result */
   10556           0 :         *result = r.out.result;
   10557             : 
   10558           0 :         return NT_STATUS_OK;
   10559             : }
   10560             : 
   10561             : struct dcerpc_spoolss_ReplyOpenPrinter_r_state {
   10562             :         TALLOC_CTX *out_mem_ctx;
   10563             : };
   10564             : 
   10565             : static void dcerpc_spoolss_ReplyOpenPrinter_r_done(struct tevent_req *subreq);
   10566             : 
   10567           0 : struct tevent_req *dcerpc_spoolss_ReplyOpenPrinter_r_send(TALLOC_CTX *mem_ctx,
   10568             :         struct tevent_context *ev,
   10569             :         struct dcerpc_binding_handle *h,
   10570             :         struct spoolss_ReplyOpenPrinter *r)
   10571             : {
   10572           0 :         struct tevent_req *req;
   10573           0 :         struct dcerpc_spoolss_ReplyOpenPrinter_r_state *state;
   10574           0 :         struct tevent_req *subreq;
   10575             : 
   10576           0 :         req = tevent_req_create(mem_ctx, &state,
   10577             :                                 struct dcerpc_spoolss_ReplyOpenPrinter_r_state);
   10578           0 :         if (req == NULL) {
   10579           0 :                 return NULL;
   10580             :         }
   10581             : 
   10582           0 :         state->out_mem_ctx = talloc_new(state);
   10583           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   10584           0 :                 return tevent_req_post(req, ev);
   10585             :         }
   10586             : 
   10587           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   10588             :                         NULL, &ndr_table_spoolss,
   10589           0 :                         NDR_SPOOLSS_REPLYOPENPRINTER, state->out_mem_ctx, r);
   10590           0 :         if (tevent_req_nomem(subreq, req)) {
   10591           0 :                 return tevent_req_post(req, ev);
   10592             :         }
   10593           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_ReplyOpenPrinter_r_done, req);
   10594             : 
   10595           0 :         return req;
   10596             : }
   10597             : 
   10598           0 : static void dcerpc_spoolss_ReplyOpenPrinter_r_done(struct tevent_req *subreq)
   10599             : {
   10600           0 :         struct tevent_req *req =
   10601           0 :                 tevent_req_callback_data(subreq,
   10602             :                 struct tevent_req);
   10603           0 :         NTSTATUS status;
   10604             : 
   10605           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   10606           0 :         TALLOC_FREE(subreq);
   10607           0 :         if (tevent_req_nterror(req, status)) {
   10608           0 :                 return;
   10609             :         }
   10610             : 
   10611           0 :         tevent_req_done(req);
   10612             : }
   10613             : 
   10614           0 : NTSTATUS dcerpc_spoolss_ReplyOpenPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   10615             : {
   10616           0 :         struct dcerpc_spoolss_ReplyOpenPrinter_r_state *state =
   10617           0 :                 tevent_req_data(req,
   10618             :                 struct dcerpc_spoolss_ReplyOpenPrinter_r_state);
   10619           0 :         NTSTATUS status;
   10620             : 
   10621           0 :         if (tevent_req_is_nterror(req, &status)) {
   10622           0 :                 tevent_req_received(req);
   10623           0 :                 return status;
   10624             :         }
   10625             : 
   10626           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   10627             : 
   10628           0 :         tevent_req_received(req);
   10629           0 :         return NT_STATUS_OK;
   10630             : }
   10631             : 
   10632           2 : NTSTATUS dcerpc_spoolss_ReplyOpenPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ReplyOpenPrinter *r)
   10633             : {
   10634           0 :         NTSTATUS status;
   10635             : 
   10636           2 :         status = dcerpc_binding_handle_call(h,
   10637             :                         NULL, &ndr_table_spoolss,
   10638             :                         NDR_SPOOLSS_REPLYOPENPRINTER, mem_ctx, r);
   10639             : 
   10640           2 :         return status;
   10641             : }
   10642             : 
   10643             : struct dcerpc_spoolss_ReplyOpenPrinter_state {
   10644             :         struct spoolss_ReplyOpenPrinter orig;
   10645             :         struct spoolss_ReplyOpenPrinter tmp;
   10646             :         TALLOC_CTX *out_mem_ctx;
   10647             : };
   10648             : 
   10649             : static void dcerpc_spoolss_ReplyOpenPrinter_done(struct tevent_req *subreq);
   10650             : 
   10651           0 : struct tevent_req *dcerpc_spoolss_ReplyOpenPrinter_send(TALLOC_CTX *mem_ctx,
   10652             :                                                         struct tevent_context *ev,
   10653             :                                                         struct dcerpc_binding_handle *h,
   10654             :                                                         const char *_server_name /* [in] [charset(UTF16)] */,
   10655             :                                                         uint32_t _printer_local /* [in]  */,
   10656             :                                                         enum winreg_Type _type /* [in]  */,
   10657             :                                                         uint32_t _bufsize /* [in] [range(0,512)] */,
   10658             :                                                         uint8_t *_buffer /* [in] [size_is(bufsize),unique] */,
   10659             :                                                         struct policy_handle *_handle /* [out] [ref] */)
   10660             : {
   10661           0 :         struct tevent_req *req;
   10662           0 :         struct dcerpc_spoolss_ReplyOpenPrinter_state *state;
   10663           0 :         struct tevent_req *subreq;
   10664             : 
   10665           0 :         req = tevent_req_create(mem_ctx, &state,
   10666             :                                 struct dcerpc_spoolss_ReplyOpenPrinter_state);
   10667           0 :         if (req == NULL) {
   10668           0 :                 return NULL;
   10669             :         }
   10670           0 :         state->out_mem_ctx = NULL;
   10671             : 
   10672             :         /* In parameters */
   10673           0 :         state->orig.in.server_name = _server_name;
   10674           0 :         state->orig.in.printer_local = _printer_local;
   10675           0 :         state->orig.in.type = _type;
   10676           0 :         state->orig.in.bufsize = _bufsize;
   10677           0 :         state->orig.in.buffer = _buffer;
   10678             : 
   10679             :         /* Out parameters */
   10680           0 :         state->orig.out.handle = _handle;
   10681             : 
   10682             :         /* Result */
   10683           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   10684             : 
   10685           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   10686             :                              "dcerpc_spoolss_ReplyOpenPrinter_out_memory");
   10687           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   10688           0 :                 return tevent_req_post(req, ev);
   10689             :         }
   10690             : 
   10691             :         /* make a temporary copy, that we pass to the dispatch function */
   10692           0 :         state->tmp = state->orig;
   10693             : 
   10694           0 :         subreq = dcerpc_spoolss_ReplyOpenPrinter_r_send(state, ev, h, &state->tmp);
   10695           0 :         if (tevent_req_nomem(subreq, req)) {
   10696           0 :                 return tevent_req_post(req, ev);
   10697             :         }
   10698           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_ReplyOpenPrinter_done, req);
   10699           0 :         return req;
   10700             : }
   10701             : 
   10702           0 : static void dcerpc_spoolss_ReplyOpenPrinter_done(struct tevent_req *subreq)
   10703             : {
   10704           0 :         struct tevent_req *req = tevent_req_callback_data(
   10705             :                 subreq, struct tevent_req);
   10706           0 :         struct dcerpc_spoolss_ReplyOpenPrinter_state *state = tevent_req_data(
   10707             :                 req, struct dcerpc_spoolss_ReplyOpenPrinter_state);
   10708           0 :         NTSTATUS status;
   10709           0 :         TALLOC_CTX *mem_ctx;
   10710             : 
   10711           0 :         if (state->out_mem_ctx) {
   10712           0 :                 mem_ctx = state->out_mem_ctx;
   10713             :         } else {
   10714           0 :                 mem_ctx = state;
   10715             :         }
   10716             : 
   10717           0 :         status = dcerpc_spoolss_ReplyOpenPrinter_r_recv(subreq, mem_ctx);
   10718           0 :         TALLOC_FREE(subreq);
   10719           0 :         if (tevent_req_nterror(req, status)) {
   10720           0 :                 return;
   10721             :         }
   10722             : 
   10723             :         /* Copy out parameters */
   10724           0 :         *state->orig.out.handle = *state->tmp.out.handle;
   10725             : 
   10726             :         /* Copy result */
   10727           0 :         state->orig.out.result = state->tmp.out.result;
   10728             : 
   10729             :         /* Reset temporary structure */
   10730           0 :         NDR_ZERO_STRUCT(state->tmp);
   10731             : 
   10732           0 :         tevent_req_done(req);
   10733             : }
   10734             : 
   10735           0 : NTSTATUS dcerpc_spoolss_ReplyOpenPrinter_recv(struct tevent_req *req,
   10736             :                                               TALLOC_CTX *mem_ctx,
   10737             :                                               WERROR *result)
   10738             : {
   10739           0 :         struct dcerpc_spoolss_ReplyOpenPrinter_state *state = tevent_req_data(
   10740             :                 req, struct dcerpc_spoolss_ReplyOpenPrinter_state);
   10741           0 :         NTSTATUS status;
   10742             : 
   10743           0 :         if (tevent_req_is_nterror(req, &status)) {
   10744           0 :                 tevent_req_received(req);
   10745           0 :                 return status;
   10746             :         }
   10747             : 
   10748             :         /* Steal possible out parameters to the callers context */
   10749           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   10750             : 
   10751             :         /* Return result */
   10752           0 :         *result = state->orig.out.result;
   10753             : 
   10754           0 :         tevent_req_received(req);
   10755           0 :         return NT_STATUS_OK;
   10756             : }
   10757             : 
   10758           2 : NTSTATUS dcerpc_spoolss_ReplyOpenPrinter(struct dcerpc_binding_handle *h,
   10759             :                                          TALLOC_CTX *mem_ctx,
   10760             :                                          const char *_server_name /* [in] [charset(UTF16)] */,
   10761             :                                          uint32_t _printer_local /* [in]  */,
   10762             :                                          enum winreg_Type _type /* [in]  */,
   10763             :                                          uint32_t _bufsize /* [in] [range(0,512)] */,
   10764             :                                          uint8_t *_buffer /* [in] [size_is(bufsize),unique] */,
   10765             :                                          struct policy_handle *_handle /* [out] [ref] */,
   10766             :                                          WERROR *result)
   10767             : {
   10768           0 :         struct spoolss_ReplyOpenPrinter r;
   10769           0 :         NTSTATUS status;
   10770             : 
   10771             :         /* In parameters */
   10772           2 :         r.in.server_name = _server_name;
   10773           2 :         r.in.printer_local = _printer_local;
   10774           2 :         r.in.type = _type;
   10775           2 :         r.in.bufsize = _bufsize;
   10776           2 :         r.in.buffer = _buffer;
   10777             : 
   10778             :         /* Out parameters */
   10779           2 :         r.out.handle = _handle;
   10780             : 
   10781             :         /* Result */
   10782           2 :         NDR_ZERO_STRUCT(r.out.result);
   10783             : 
   10784           2 :         status = dcerpc_spoolss_ReplyOpenPrinter_r(h, mem_ctx, &r);
   10785           2 :         if (!NT_STATUS_IS_OK(status)) {
   10786           0 :                 return status;
   10787             :         }
   10788             : 
   10789             :         /* Return variables */
   10790           2 :         *_handle = *r.out.handle;
   10791             : 
   10792             :         /* Return result */
   10793           2 :         *result = r.out.result;
   10794             : 
   10795           2 :         return NT_STATUS_OK;
   10796             : }
   10797             : 
   10798             : struct dcerpc_spoolss_RouterReplyPrinter_r_state {
   10799             :         TALLOC_CTX *out_mem_ctx;
   10800             : };
   10801             : 
   10802             : static void dcerpc_spoolss_RouterReplyPrinter_r_done(struct tevent_req *subreq);
   10803             : 
   10804           0 : struct tevent_req *dcerpc_spoolss_RouterReplyPrinter_r_send(TALLOC_CTX *mem_ctx,
   10805             :         struct tevent_context *ev,
   10806             :         struct dcerpc_binding_handle *h,
   10807             :         struct spoolss_RouterReplyPrinter *r)
   10808             : {
   10809           0 :         struct tevent_req *req;
   10810           0 :         struct dcerpc_spoolss_RouterReplyPrinter_r_state *state;
   10811           0 :         struct tevent_req *subreq;
   10812             : 
   10813           0 :         req = tevent_req_create(mem_ctx, &state,
   10814             :                                 struct dcerpc_spoolss_RouterReplyPrinter_r_state);
   10815           0 :         if (req == NULL) {
   10816           0 :                 return NULL;
   10817             :         }
   10818             : 
   10819           0 :         state->out_mem_ctx = NULL;
   10820             : 
   10821           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   10822             :                         NULL, &ndr_table_spoolss,
   10823             :                         NDR_SPOOLSS_ROUTERREPLYPRINTER, state, r);
   10824           0 :         if (tevent_req_nomem(subreq, req)) {
   10825           0 :                 return tevent_req_post(req, ev);
   10826             :         }
   10827           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_RouterReplyPrinter_r_done, req);
   10828             : 
   10829           0 :         return req;
   10830             : }
   10831             : 
   10832           0 : static void dcerpc_spoolss_RouterReplyPrinter_r_done(struct tevent_req *subreq)
   10833             : {
   10834           0 :         struct tevent_req *req =
   10835           0 :                 tevent_req_callback_data(subreq,
   10836             :                 struct tevent_req);
   10837           0 :         NTSTATUS status;
   10838             : 
   10839           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   10840           0 :         TALLOC_FREE(subreq);
   10841           0 :         if (tevent_req_nterror(req, status)) {
   10842           0 :                 return;
   10843             :         }
   10844             : 
   10845           0 :         tevent_req_done(req);
   10846             : }
   10847             : 
   10848           0 : NTSTATUS dcerpc_spoolss_RouterReplyPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   10849             : {
   10850           0 :         struct dcerpc_spoolss_RouterReplyPrinter_r_state *state =
   10851           0 :                 tevent_req_data(req,
   10852             :                 struct dcerpc_spoolss_RouterReplyPrinter_r_state);
   10853           0 :         NTSTATUS status;
   10854             : 
   10855           0 :         if (tevent_req_is_nterror(req, &status)) {
   10856           0 :                 tevent_req_received(req);
   10857           0 :                 return status;
   10858             :         }
   10859             : 
   10860           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   10861             : 
   10862           0 :         tevent_req_received(req);
   10863           0 :         return NT_STATUS_OK;
   10864             : }
   10865             : 
   10866           0 : NTSTATUS dcerpc_spoolss_RouterReplyPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_RouterReplyPrinter *r)
   10867             : {
   10868           0 :         NTSTATUS status;
   10869             : 
   10870           0 :         status = dcerpc_binding_handle_call(h,
   10871             :                         NULL, &ndr_table_spoolss,
   10872             :                         NDR_SPOOLSS_ROUTERREPLYPRINTER, mem_ctx, r);
   10873             : 
   10874           0 :         return status;
   10875             : }
   10876             : 
   10877             : struct dcerpc_spoolss_RouterReplyPrinter_state {
   10878             :         struct spoolss_RouterReplyPrinter orig;
   10879             :         struct spoolss_RouterReplyPrinter tmp;
   10880             :         TALLOC_CTX *out_mem_ctx;
   10881             : };
   10882             : 
   10883             : static void dcerpc_spoolss_RouterReplyPrinter_done(struct tevent_req *subreq);
   10884             : 
   10885           0 : struct tevent_req *dcerpc_spoolss_RouterReplyPrinter_send(TALLOC_CTX *mem_ctx,
   10886             :                                                           struct tevent_context *ev,
   10887             :                                                           struct dcerpc_binding_handle *h,
   10888             :                                                           struct policy_handle *_handle /* [in] [ref] */,
   10889             :                                                           uint32_t _flags /* [in]  */,
   10890             :                                                           uint32_t _bufsize /* [in] [range(0,512)] */,
   10891             :                                                           uint8_t *_buffer /* [in] [size_is(bufsize),unique] */)
   10892             : {
   10893           0 :         struct tevent_req *req;
   10894           0 :         struct dcerpc_spoolss_RouterReplyPrinter_state *state;
   10895           0 :         struct tevent_req *subreq;
   10896             : 
   10897           0 :         req = tevent_req_create(mem_ctx, &state,
   10898             :                                 struct dcerpc_spoolss_RouterReplyPrinter_state);
   10899           0 :         if (req == NULL) {
   10900           0 :                 return NULL;
   10901             :         }
   10902           0 :         state->out_mem_ctx = NULL;
   10903             : 
   10904             :         /* In parameters */
   10905           0 :         state->orig.in.handle = _handle;
   10906           0 :         state->orig.in.flags = _flags;
   10907           0 :         state->orig.in.bufsize = _bufsize;
   10908           0 :         state->orig.in.buffer = _buffer;
   10909             : 
   10910             :         /* Out parameters */
   10911             : 
   10912             :         /* Result */
   10913           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   10914             : 
   10915             :         /* make a temporary copy, that we pass to the dispatch function */
   10916           0 :         state->tmp = state->orig;
   10917             : 
   10918           0 :         subreq = dcerpc_spoolss_RouterReplyPrinter_r_send(state, ev, h, &state->tmp);
   10919           0 :         if (tevent_req_nomem(subreq, req)) {
   10920           0 :                 return tevent_req_post(req, ev);
   10921             :         }
   10922           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_RouterReplyPrinter_done, req);
   10923           0 :         return req;
   10924             : }
   10925             : 
   10926           0 : static void dcerpc_spoolss_RouterReplyPrinter_done(struct tevent_req *subreq)
   10927             : {
   10928           0 :         struct tevent_req *req = tevent_req_callback_data(
   10929             :                 subreq, struct tevent_req);
   10930           0 :         struct dcerpc_spoolss_RouterReplyPrinter_state *state = tevent_req_data(
   10931             :                 req, struct dcerpc_spoolss_RouterReplyPrinter_state);
   10932           0 :         NTSTATUS status;
   10933           0 :         TALLOC_CTX *mem_ctx;
   10934             : 
   10935           0 :         if (state->out_mem_ctx) {
   10936           0 :                 mem_ctx = state->out_mem_ctx;
   10937             :         } else {
   10938           0 :                 mem_ctx = state;
   10939             :         }
   10940             : 
   10941           0 :         status = dcerpc_spoolss_RouterReplyPrinter_r_recv(subreq, mem_ctx);
   10942           0 :         TALLOC_FREE(subreq);
   10943           0 :         if (tevent_req_nterror(req, status)) {
   10944           0 :                 return;
   10945             :         }
   10946             : 
   10947             :         /* Copy out parameters */
   10948             : 
   10949             :         /* Copy result */
   10950           0 :         state->orig.out.result = state->tmp.out.result;
   10951             : 
   10952             :         /* Reset temporary structure */
   10953           0 :         NDR_ZERO_STRUCT(state->tmp);
   10954             : 
   10955           0 :         tevent_req_done(req);
   10956             : }
   10957             : 
   10958           0 : NTSTATUS dcerpc_spoolss_RouterReplyPrinter_recv(struct tevent_req *req,
   10959             :                                                 TALLOC_CTX *mem_ctx,
   10960             :                                                 WERROR *result)
   10961             : {
   10962           0 :         struct dcerpc_spoolss_RouterReplyPrinter_state *state = tevent_req_data(
   10963             :                 req, struct dcerpc_spoolss_RouterReplyPrinter_state);
   10964           0 :         NTSTATUS status;
   10965             : 
   10966           0 :         if (tevent_req_is_nterror(req, &status)) {
   10967           0 :                 tevent_req_received(req);
   10968           0 :                 return status;
   10969             :         }
   10970             : 
   10971             :         /* Steal possible out parameters to the callers context */
   10972           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   10973             : 
   10974             :         /* Return result */
   10975           0 :         *result = state->orig.out.result;
   10976             : 
   10977           0 :         tevent_req_received(req);
   10978           0 :         return NT_STATUS_OK;
   10979             : }
   10980             : 
   10981           0 : NTSTATUS dcerpc_spoolss_RouterReplyPrinter(struct dcerpc_binding_handle *h,
   10982             :                                            TALLOC_CTX *mem_ctx,
   10983             :                                            struct policy_handle *_handle /* [in] [ref] */,
   10984             :                                            uint32_t _flags /* [in]  */,
   10985             :                                            uint32_t _bufsize /* [in] [range(0,512)] */,
   10986             :                                            uint8_t *_buffer /* [in] [size_is(bufsize),unique] */,
   10987             :                                            WERROR *result)
   10988             : {
   10989           0 :         struct spoolss_RouterReplyPrinter r;
   10990           0 :         NTSTATUS status;
   10991             : 
   10992             :         /* In parameters */
   10993           0 :         r.in.handle = _handle;
   10994           0 :         r.in.flags = _flags;
   10995           0 :         r.in.bufsize = _bufsize;
   10996           0 :         r.in.buffer = _buffer;
   10997             : 
   10998             :         /* Out parameters */
   10999             : 
   11000             :         /* Result */
   11001           0 :         NDR_ZERO_STRUCT(r.out.result);
   11002             : 
   11003           0 :         status = dcerpc_spoolss_RouterReplyPrinter_r(h, mem_ctx, &r);
   11004           0 :         if (!NT_STATUS_IS_OK(status)) {
   11005           0 :                 return status;
   11006             :         }
   11007             : 
   11008             :         /* Return variables */
   11009             : 
   11010             :         /* Return result */
   11011           0 :         *result = r.out.result;
   11012             : 
   11013           0 :         return NT_STATUS_OK;
   11014             : }
   11015             : 
   11016             : struct dcerpc_spoolss_ReplyClosePrinter_r_state {
   11017             :         TALLOC_CTX *out_mem_ctx;
   11018             : };
   11019             : 
   11020             : static void dcerpc_spoolss_ReplyClosePrinter_r_done(struct tevent_req *subreq);
   11021             : 
   11022           0 : struct tevent_req *dcerpc_spoolss_ReplyClosePrinter_r_send(TALLOC_CTX *mem_ctx,
   11023             :         struct tevent_context *ev,
   11024             :         struct dcerpc_binding_handle *h,
   11025             :         struct spoolss_ReplyClosePrinter *r)
   11026             : {
   11027           0 :         struct tevent_req *req;
   11028           0 :         struct dcerpc_spoolss_ReplyClosePrinter_r_state *state;
   11029           0 :         struct tevent_req *subreq;
   11030             : 
   11031           0 :         req = tevent_req_create(mem_ctx, &state,
   11032             :                                 struct dcerpc_spoolss_ReplyClosePrinter_r_state);
   11033           0 :         if (req == NULL) {
   11034           0 :                 return NULL;
   11035             :         }
   11036             : 
   11037           0 :         state->out_mem_ctx = talloc_new(state);
   11038           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   11039           0 :                 return tevent_req_post(req, ev);
   11040             :         }
   11041             : 
   11042           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   11043             :                         NULL, &ndr_table_spoolss,
   11044           0 :                         NDR_SPOOLSS_REPLYCLOSEPRINTER, state->out_mem_ctx, r);
   11045           0 :         if (tevent_req_nomem(subreq, req)) {
   11046           0 :                 return tevent_req_post(req, ev);
   11047             :         }
   11048           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_ReplyClosePrinter_r_done, req);
   11049             : 
   11050           0 :         return req;
   11051             : }
   11052             : 
   11053           0 : static void dcerpc_spoolss_ReplyClosePrinter_r_done(struct tevent_req *subreq)
   11054             : {
   11055           0 :         struct tevent_req *req =
   11056           0 :                 tevent_req_callback_data(subreq,
   11057             :                 struct tevent_req);
   11058           0 :         NTSTATUS status;
   11059             : 
   11060           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   11061           0 :         TALLOC_FREE(subreq);
   11062           0 :         if (tevent_req_nterror(req, status)) {
   11063           0 :                 return;
   11064             :         }
   11065             : 
   11066           0 :         tevent_req_done(req);
   11067             : }
   11068             : 
   11069           0 : NTSTATUS dcerpc_spoolss_ReplyClosePrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   11070             : {
   11071           0 :         struct dcerpc_spoolss_ReplyClosePrinter_r_state *state =
   11072           0 :                 tevent_req_data(req,
   11073             :                 struct dcerpc_spoolss_ReplyClosePrinter_r_state);
   11074           0 :         NTSTATUS status;
   11075             : 
   11076           0 :         if (tevent_req_is_nterror(req, &status)) {
   11077           0 :                 tevent_req_received(req);
   11078           0 :                 return status;
   11079             :         }
   11080             : 
   11081           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   11082             : 
   11083           0 :         tevent_req_received(req);
   11084           0 :         return NT_STATUS_OK;
   11085             : }
   11086             : 
   11087           2 : NTSTATUS dcerpc_spoolss_ReplyClosePrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ReplyClosePrinter *r)
   11088             : {
   11089           0 :         NTSTATUS status;
   11090             : 
   11091           2 :         status = dcerpc_binding_handle_call(h,
   11092             :                         NULL, &ndr_table_spoolss,
   11093             :                         NDR_SPOOLSS_REPLYCLOSEPRINTER, mem_ctx, r);
   11094             : 
   11095           2 :         return status;
   11096             : }
   11097             : 
   11098             : struct dcerpc_spoolss_ReplyClosePrinter_state {
   11099             :         struct spoolss_ReplyClosePrinter orig;
   11100             :         struct spoolss_ReplyClosePrinter tmp;
   11101             :         TALLOC_CTX *out_mem_ctx;
   11102             : };
   11103             : 
   11104             : static void dcerpc_spoolss_ReplyClosePrinter_done(struct tevent_req *subreq);
   11105             : 
   11106           0 : struct tevent_req *dcerpc_spoolss_ReplyClosePrinter_send(TALLOC_CTX *mem_ctx,
   11107             :                                                          struct tevent_context *ev,
   11108             :                                                          struct dcerpc_binding_handle *h,
   11109             :                                                          struct policy_handle *_handle /* [in,out] [ref] */)
   11110             : {
   11111           0 :         struct tevent_req *req;
   11112           0 :         struct dcerpc_spoolss_ReplyClosePrinter_state *state;
   11113           0 :         struct tevent_req *subreq;
   11114             : 
   11115           0 :         req = tevent_req_create(mem_ctx, &state,
   11116             :                                 struct dcerpc_spoolss_ReplyClosePrinter_state);
   11117           0 :         if (req == NULL) {
   11118           0 :                 return NULL;
   11119             :         }
   11120           0 :         state->out_mem_ctx = NULL;
   11121             : 
   11122             :         /* In parameters */
   11123           0 :         state->orig.in.handle = _handle;
   11124             : 
   11125             :         /* Out parameters */
   11126           0 :         state->orig.out.handle = _handle;
   11127             : 
   11128             :         /* Result */
   11129           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   11130             : 
   11131           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   11132             :                              "dcerpc_spoolss_ReplyClosePrinter_out_memory");
   11133           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   11134           0 :                 return tevent_req_post(req, ev);
   11135             :         }
   11136             : 
   11137             :         /* make a temporary copy, that we pass to the dispatch function */
   11138           0 :         state->tmp = state->orig;
   11139             : 
   11140           0 :         subreq = dcerpc_spoolss_ReplyClosePrinter_r_send(state, ev, h, &state->tmp);
   11141           0 :         if (tevent_req_nomem(subreq, req)) {
   11142           0 :                 return tevent_req_post(req, ev);
   11143             :         }
   11144           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_ReplyClosePrinter_done, req);
   11145           0 :         return req;
   11146             : }
   11147             : 
   11148           0 : static void dcerpc_spoolss_ReplyClosePrinter_done(struct tevent_req *subreq)
   11149             : {
   11150           0 :         struct tevent_req *req = tevent_req_callback_data(
   11151             :                 subreq, struct tevent_req);
   11152           0 :         struct dcerpc_spoolss_ReplyClosePrinter_state *state = tevent_req_data(
   11153             :                 req, struct dcerpc_spoolss_ReplyClosePrinter_state);
   11154           0 :         NTSTATUS status;
   11155           0 :         TALLOC_CTX *mem_ctx;
   11156             : 
   11157           0 :         if (state->out_mem_ctx) {
   11158           0 :                 mem_ctx = state->out_mem_ctx;
   11159             :         } else {
   11160           0 :                 mem_ctx = state;
   11161             :         }
   11162             : 
   11163           0 :         status = dcerpc_spoolss_ReplyClosePrinter_r_recv(subreq, mem_ctx);
   11164           0 :         TALLOC_FREE(subreq);
   11165           0 :         if (tevent_req_nterror(req, status)) {
   11166           0 :                 return;
   11167             :         }
   11168             : 
   11169             :         /* Copy out parameters */
   11170           0 :         *state->orig.out.handle = *state->tmp.out.handle;
   11171             : 
   11172             :         /* Copy result */
   11173           0 :         state->orig.out.result = state->tmp.out.result;
   11174             : 
   11175             :         /* Reset temporary structure */
   11176           0 :         NDR_ZERO_STRUCT(state->tmp);
   11177             : 
   11178           0 :         tevent_req_done(req);
   11179             : }
   11180             : 
   11181           0 : NTSTATUS dcerpc_spoolss_ReplyClosePrinter_recv(struct tevent_req *req,
   11182             :                                                TALLOC_CTX *mem_ctx,
   11183             :                                                WERROR *result)
   11184             : {
   11185           0 :         struct dcerpc_spoolss_ReplyClosePrinter_state *state = tevent_req_data(
   11186             :                 req, struct dcerpc_spoolss_ReplyClosePrinter_state);
   11187           0 :         NTSTATUS status;
   11188             : 
   11189           0 :         if (tevent_req_is_nterror(req, &status)) {
   11190           0 :                 tevent_req_received(req);
   11191           0 :                 return status;
   11192             :         }
   11193             : 
   11194             :         /* Steal possible out parameters to the callers context */
   11195           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   11196             : 
   11197             :         /* Return result */
   11198           0 :         *result = state->orig.out.result;
   11199             : 
   11200           0 :         tevent_req_received(req);
   11201           0 :         return NT_STATUS_OK;
   11202             : }
   11203             : 
   11204           2 : NTSTATUS dcerpc_spoolss_ReplyClosePrinter(struct dcerpc_binding_handle *h,
   11205             :                                           TALLOC_CTX *mem_ctx,
   11206             :                                           struct policy_handle *_handle /* [in,out] [ref] */,
   11207             :                                           WERROR *result)
   11208             : {
   11209           0 :         struct spoolss_ReplyClosePrinter r;
   11210           0 :         NTSTATUS status;
   11211             : 
   11212             :         /* In parameters */
   11213           2 :         r.in.handle = _handle;
   11214             : 
   11215             :         /* Out parameters */
   11216           2 :         r.out.handle = _handle;
   11217             : 
   11218             :         /* Result */
   11219           2 :         NDR_ZERO_STRUCT(r.out.result);
   11220             : 
   11221           2 :         status = dcerpc_spoolss_ReplyClosePrinter_r(h, mem_ctx, &r);
   11222           2 :         if (!NT_STATUS_IS_OK(status)) {
   11223           0 :                 return status;
   11224             :         }
   11225             : 
   11226             :         /* Return variables */
   11227           2 :         *_handle = *r.out.handle;
   11228             : 
   11229             :         /* Return result */
   11230           2 :         *result = r.out.result;
   11231             : 
   11232           2 :         return NT_STATUS_OK;
   11233             : }
   11234             : 
   11235             : struct dcerpc_spoolss_AddPortEx_r_state {
   11236             :         TALLOC_CTX *out_mem_ctx;
   11237             : };
   11238             : 
   11239             : static void dcerpc_spoolss_AddPortEx_r_done(struct tevent_req *subreq);
   11240             : 
   11241           0 : struct tevent_req *dcerpc_spoolss_AddPortEx_r_send(TALLOC_CTX *mem_ctx,
   11242             :         struct tevent_context *ev,
   11243             :         struct dcerpc_binding_handle *h,
   11244             :         struct spoolss_AddPortEx *r)
   11245             : {
   11246           0 :         struct tevent_req *req;
   11247           0 :         struct dcerpc_spoolss_AddPortEx_r_state *state;
   11248           0 :         struct tevent_req *subreq;
   11249             : 
   11250           0 :         req = tevent_req_create(mem_ctx, &state,
   11251             :                                 struct dcerpc_spoolss_AddPortEx_r_state);
   11252           0 :         if (req == NULL) {
   11253           0 :                 return NULL;
   11254             :         }
   11255             : 
   11256           0 :         state->out_mem_ctx = NULL;
   11257             : 
   11258           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   11259             :                         NULL, &ndr_table_spoolss,
   11260             :                         NDR_SPOOLSS_ADDPORTEX, state, r);
   11261           0 :         if (tevent_req_nomem(subreq, req)) {
   11262           0 :                 return tevent_req_post(req, ev);
   11263             :         }
   11264           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddPortEx_r_done, req);
   11265             : 
   11266           0 :         return req;
   11267             : }
   11268             : 
   11269           0 : static void dcerpc_spoolss_AddPortEx_r_done(struct tevent_req *subreq)
   11270             : {
   11271           0 :         struct tevent_req *req =
   11272           0 :                 tevent_req_callback_data(subreq,
   11273             :                 struct tevent_req);
   11274           0 :         NTSTATUS status;
   11275             : 
   11276           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   11277           0 :         TALLOC_FREE(subreq);
   11278           0 :         if (tevent_req_nterror(req, status)) {
   11279           0 :                 return;
   11280             :         }
   11281             : 
   11282           0 :         tevent_req_done(req);
   11283             : }
   11284             : 
   11285           0 : NTSTATUS dcerpc_spoolss_AddPortEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   11286             : {
   11287           0 :         struct dcerpc_spoolss_AddPortEx_r_state *state =
   11288           0 :                 tevent_req_data(req,
   11289             :                 struct dcerpc_spoolss_AddPortEx_r_state);
   11290           0 :         NTSTATUS status;
   11291             : 
   11292           0 :         if (tevent_req_is_nterror(req, &status)) {
   11293           0 :                 tevent_req_received(req);
   11294           0 :                 return status;
   11295             :         }
   11296             : 
   11297           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   11298             : 
   11299           0 :         tevent_req_received(req);
   11300           0 :         return NT_STATUS_OK;
   11301             : }
   11302             : 
   11303           0 : NTSTATUS dcerpc_spoolss_AddPortEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPortEx *r)
   11304             : {
   11305           0 :         NTSTATUS status;
   11306             : 
   11307           0 :         status = dcerpc_binding_handle_call(h,
   11308             :                         NULL, &ndr_table_spoolss,
   11309             :                         NDR_SPOOLSS_ADDPORTEX, mem_ctx, r);
   11310             : 
   11311           0 :         return status;
   11312             : }
   11313             : 
   11314             : struct dcerpc_spoolss_AddPortEx_state {
   11315             :         struct spoolss_AddPortEx orig;
   11316             :         struct spoolss_AddPortEx tmp;
   11317             :         TALLOC_CTX *out_mem_ctx;
   11318             : };
   11319             : 
   11320             : static void dcerpc_spoolss_AddPortEx_done(struct tevent_req *subreq);
   11321             : 
   11322           0 : struct tevent_req *dcerpc_spoolss_AddPortEx_send(TALLOC_CTX *mem_ctx,
   11323             :                                                  struct tevent_context *ev,
   11324             :                                                  struct dcerpc_binding_handle *h,
   11325             :                                                  const char *_servername /* [in] [charset(UTF16),unique] */,
   11326             :                                                  struct spoolss_SetPortInfoContainer *_port_ctr /* [in] [ref] */,
   11327             :                                                  struct spoolss_PortVarContainer *_port_var_ctr /* [in] [ref] */,
   11328             :                                                  const char *_monitor_name /* [in] [charset(UTF16),unique] */)
   11329             : {
   11330           0 :         struct tevent_req *req;
   11331           0 :         struct dcerpc_spoolss_AddPortEx_state *state;
   11332           0 :         struct tevent_req *subreq;
   11333             : 
   11334           0 :         req = tevent_req_create(mem_ctx, &state,
   11335             :                                 struct dcerpc_spoolss_AddPortEx_state);
   11336           0 :         if (req == NULL) {
   11337           0 :                 return NULL;
   11338             :         }
   11339           0 :         state->out_mem_ctx = NULL;
   11340             : 
   11341             :         /* In parameters */
   11342           0 :         state->orig.in.servername = _servername;
   11343           0 :         state->orig.in.port_ctr = _port_ctr;
   11344           0 :         state->orig.in.port_var_ctr = _port_var_ctr;
   11345           0 :         state->orig.in.monitor_name = _monitor_name;
   11346             : 
   11347             :         /* Out parameters */
   11348             : 
   11349             :         /* Result */
   11350           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   11351             : 
   11352             :         /* make a temporary copy, that we pass to the dispatch function */
   11353           0 :         state->tmp = state->orig;
   11354             : 
   11355           0 :         subreq = dcerpc_spoolss_AddPortEx_r_send(state, ev, h, &state->tmp);
   11356           0 :         if (tevent_req_nomem(subreq, req)) {
   11357           0 :                 return tevent_req_post(req, ev);
   11358             :         }
   11359           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddPortEx_done, req);
   11360           0 :         return req;
   11361             : }
   11362             : 
   11363           0 : static void dcerpc_spoolss_AddPortEx_done(struct tevent_req *subreq)
   11364             : {
   11365           0 :         struct tevent_req *req = tevent_req_callback_data(
   11366             :                 subreq, struct tevent_req);
   11367           0 :         struct dcerpc_spoolss_AddPortEx_state *state = tevent_req_data(
   11368             :                 req, struct dcerpc_spoolss_AddPortEx_state);
   11369           0 :         NTSTATUS status;
   11370           0 :         TALLOC_CTX *mem_ctx;
   11371             : 
   11372           0 :         if (state->out_mem_ctx) {
   11373           0 :                 mem_ctx = state->out_mem_ctx;
   11374             :         } else {
   11375           0 :                 mem_ctx = state;
   11376             :         }
   11377             : 
   11378           0 :         status = dcerpc_spoolss_AddPortEx_r_recv(subreq, mem_ctx);
   11379           0 :         TALLOC_FREE(subreq);
   11380           0 :         if (tevent_req_nterror(req, status)) {
   11381           0 :                 return;
   11382             :         }
   11383             : 
   11384             :         /* Copy out parameters */
   11385             : 
   11386             :         /* Copy result */
   11387           0 :         state->orig.out.result = state->tmp.out.result;
   11388             : 
   11389             :         /* Reset temporary structure */
   11390           0 :         NDR_ZERO_STRUCT(state->tmp);
   11391             : 
   11392           0 :         tevent_req_done(req);
   11393             : }
   11394             : 
   11395           0 : NTSTATUS dcerpc_spoolss_AddPortEx_recv(struct tevent_req *req,
   11396             :                                        TALLOC_CTX *mem_ctx,
   11397             :                                        WERROR *result)
   11398             : {
   11399           0 :         struct dcerpc_spoolss_AddPortEx_state *state = tevent_req_data(
   11400             :                 req, struct dcerpc_spoolss_AddPortEx_state);
   11401           0 :         NTSTATUS status;
   11402             : 
   11403           0 :         if (tevent_req_is_nterror(req, &status)) {
   11404           0 :                 tevent_req_received(req);
   11405           0 :                 return status;
   11406             :         }
   11407             : 
   11408             :         /* Steal possible out parameters to the callers context */
   11409           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   11410             : 
   11411             :         /* Return result */
   11412           0 :         *result = state->orig.out.result;
   11413             : 
   11414           0 :         tevent_req_received(req);
   11415           0 :         return NT_STATUS_OK;
   11416             : }
   11417             : 
   11418           0 : NTSTATUS dcerpc_spoolss_AddPortEx(struct dcerpc_binding_handle *h,
   11419             :                                   TALLOC_CTX *mem_ctx,
   11420             :                                   const char *_servername /* [in] [charset(UTF16),unique] */,
   11421             :                                   struct spoolss_SetPortInfoContainer *_port_ctr /* [in] [ref] */,
   11422             :                                   struct spoolss_PortVarContainer *_port_var_ctr /* [in] [ref] */,
   11423             :                                   const char *_monitor_name /* [in] [charset(UTF16),unique] */,
   11424             :                                   WERROR *result)
   11425             : {
   11426           0 :         struct spoolss_AddPortEx r;
   11427           0 :         NTSTATUS status;
   11428             : 
   11429             :         /* In parameters */
   11430           0 :         r.in.servername = _servername;
   11431           0 :         r.in.port_ctr = _port_ctr;
   11432           0 :         r.in.port_var_ctr = _port_var_ctr;
   11433           0 :         r.in.monitor_name = _monitor_name;
   11434             : 
   11435             :         /* Out parameters */
   11436             : 
   11437             :         /* Result */
   11438           0 :         NDR_ZERO_STRUCT(r.out.result);
   11439             : 
   11440           0 :         status = dcerpc_spoolss_AddPortEx_r(h, mem_ctx, &r);
   11441           0 :         if (!NT_STATUS_IS_OK(status)) {
   11442           0 :                 return status;
   11443             :         }
   11444             : 
   11445             :         /* Return variables */
   11446             : 
   11447             :         /* Return result */
   11448           0 :         *result = r.out.result;
   11449             : 
   11450           0 :         return NT_STATUS_OK;
   11451             : }
   11452             : 
   11453             : struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_state {
   11454             :         TALLOC_CTX *out_mem_ctx;
   11455             : };
   11456             : 
   11457             : static void dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_done(struct tevent_req *subreq);
   11458             : 
   11459           0 : struct tevent_req *dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_send(TALLOC_CTX *mem_ctx,
   11460             :         struct tevent_context *ev,
   11461             :         struct dcerpc_binding_handle *h,
   11462             :         struct spoolss_RemoteFindFirstPrinterChangeNotifyEx *r)
   11463             : {
   11464           0 :         struct tevent_req *req;
   11465           0 :         struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_state *state;
   11466           0 :         struct tevent_req *subreq;
   11467             : 
   11468           0 :         req = tevent_req_create(mem_ctx, &state,
   11469             :                                 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_state);
   11470           0 :         if (req == NULL) {
   11471           0 :                 return NULL;
   11472             :         }
   11473             : 
   11474           0 :         state->out_mem_ctx = NULL;
   11475             : 
   11476           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   11477             :                         NULL, &ndr_table_spoolss,
   11478             :                         NDR_SPOOLSS_REMOTEFINDFIRSTPRINTERCHANGENOTIFYEX, state, r);
   11479           0 :         if (tevent_req_nomem(subreq, req)) {
   11480           0 :                 return tevent_req_post(req, ev);
   11481             :         }
   11482           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_done, req);
   11483             : 
   11484           0 :         return req;
   11485             : }
   11486             : 
   11487           0 : static void dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_done(struct tevent_req *subreq)
   11488             : {
   11489           0 :         struct tevent_req *req =
   11490           0 :                 tevent_req_callback_data(subreq,
   11491             :                 struct tevent_req);
   11492           0 :         NTSTATUS status;
   11493             : 
   11494           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   11495           0 :         TALLOC_FREE(subreq);
   11496           0 :         if (tevent_req_nterror(req, status)) {
   11497           0 :                 return;
   11498             :         }
   11499             : 
   11500           0 :         tevent_req_done(req);
   11501             : }
   11502             : 
   11503           0 : NTSTATUS dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   11504             : {
   11505           0 :         struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_state *state =
   11506           0 :                 tevent_req_data(req,
   11507             :                 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_state);
   11508           0 :         NTSTATUS status;
   11509             : 
   11510           0 :         if (tevent_req_is_nterror(req, &status)) {
   11511           0 :                 tevent_req_received(req);
   11512           0 :                 return status;
   11513             :         }
   11514             : 
   11515           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   11516             : 
   11517           0 :         tevent_req_received(req);
   11518           0 :         return NT_STATUS_OK;
   11519             : }
   11520             : 
   11521           2 : NTSTATUS dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_RemoteFindFirstPrinterChangeNotifyEx *r)
   11522             : {
   11523           0 :         NTSTATUS status;
   11524             : 
   11525           2 :         status = dcerpc_binding_handle_call(h,
   11526             :                         NULL, &ndr_table_spoolss,
   11527             :                         NDR_SPOOLSS_REMOTEFINDFIRSTPRINTERCHANGENOTIFYEX, mem_ctx, r);
   11528             : 
   11529           2 :         return status;
   11530             : }
   11531             : 
   11532             : struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state {
   11533             :         struct spoolss_RemoteFindFirstPrinterChangeNotifyEx orig;
   11534             :         struct spoolss_RemoteFindFirstPrinterChangeNotifyEx tmp;
   11535             :         TALLOC_CTX *out_mem_ctx;
   11536             : };
   11537             : 
   11538             : static void dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_done(struct tevent_req *subreq);
   11539             : 
   11540           0 : struct tevent_req *dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_send(TALLOC_CTX *mem_ctx,
   11541             :                                                                             struct tevent_context *ev,
   11542             :                                                                             struct dcerpc_binding_handle *h,
   11543             :                                                                             struct policy_handle *_handle /* [in] [ref] */,
   11544             :                                                                             uint32_t _flags /* [in]  */,
   11545             :                                                                             uint32_t _options /* [in]  */,
   11546             :                                                                             const char *_local_machine /* [in] [charset(UTF16),unique] */,
   11547             :                                                                             uint32_t _printer_local /* [in]  */,
   11548             :                                                                             struct spoolss_NotifyOption *_notify_options /* [in] [unique] */)
   11549             : {
   11550           0 :         struct tevent_req *req;
   11551           0 :         struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state *state;
   11552           0 :         struct tevent_req *subreq;
   11553             : 
   11554           0 :         req = tevent_req_create(mem_ctx, &state,
   11555             :                                 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state);
   11556           0 :         if (req == NULL) {
   11557           0 :                 return NULL;
   11558             :         }
   11559           0 :         state->out_mem_ctx = NULL;
   11560             : 
   11561             :         /* In parameters */
   11562           0 :         state->orig.in.handle = _handle;
   11563           0 :         state->orig.in.flags = _flags;
   11564           0 :         state->orig.in.options = _options;
   11565           0 :         state->orig.in.local_machine = _local_machine;
   11566           0 :         state->orig.in.printer_local = _printer_local;
   11567           0 :         state->orig.in.notify_options = _notify_options;
   11568             : 
   11569             :         /* Out parameters */
   11570             : 
   11571             :         /* Result */
   11572           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   11573             : 
   11574             :         /* make a temporary copy, that we pass to the dispatch function */
   11575           0 :         state->tmp = state->orig;
   11576             : 
   11577           0 :         subreq = dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_send(state, ev, h, &state->tmp);
   11578           0 :         if (tevent_req_nomem(subreq, req)) {
   11579           0 :                 return tevent_req_post(req, ev);
   11580             :         }
   11581           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_done, req);
   11582           0 :         return req;
   11583             : }
   11584             : 
   11585           0 : static void dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_done(struct tevent_req *subreq)
   11586             : {
   11587           0 :         struct tevent_req *req = tevent_req_callback_data(
   11588             :                 subreq, struct tevent_req);
   11589           0 :         struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state *state = tevent_req_data(
   11590             :                 req, struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state);
   11591           0 :         NTSTATUS status;
   11592           0 :         TALLOC_CTX *mem_ctx;
   11593             : 
   11594           0 :         if (state->out_mem_ctx) {
   11595           0 :                 mem_ctx = state->out_mem_ctx;
   11596             :         } else {
   11597           0 :                 mem_ctx = state;
   11598             :         }
   11599             : 
   11600           0 :         status = dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_recv(subreq, mem_ctx);
   11601           0 :         TALLOC_FREE(subreq);
   11602           0 :         if (tevent_req_nterror(req, status)) {
   11603           0 :                 return;
   11604             :         }
   11605             : 
   11606             :         /* Copy out parameters */
   11607             : 
   11608             :         /* Copy result */
   11609           0 :         state->orig.out.result = state->tmp.out.result;
   11610             : 
   11611             :         /* Reset temporary structure */
   11612           0 :         NDR_ZERO_STRUCT(state->tmp);
   11613             : 
   11614           0 :         tevent_req_done(req);
   11615             : }
   11616             : 
   11617           0 : NTSTATUS dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_recv(struct tevent_req *req,
   11618             :                                                                   TALLOC_CTX *mem_ctx,
   11619             :                                                                   WERROR *result)
   11620             : {
   11621           0 :         struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state *state = tevent_req_data(
   11622             :                 req, struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state);
   11623           0 :         NTSTATUS status;
   11624             : 
   11625           0 :         if (tevent_req_is_nterror(req, &status)) {
   11626           0 :                 tevent_req_received(req);
   11627           0 :                 return status;
   11628             :         }
   11629             : 
   11630             :         /* Steal possible out parameters to the callers context */
   11631           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   11632             : 
   11633             :         /* Return result */
   11634           0 :         *result = state->orig.out.result;
   11635             : 
   11636           0 :         tevent_req_received(req);
   11637           0 :         return NT_STATUS_OK;
   11638             : }
   11639             : 
   11640           0 : NTSTATUS dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx(struct dcerpc_binding_handle *h,
   11641             :                                                              TALLOC_CTX *mem_ctx,
   11642             :                                                              struct policy_handle *_handle /* [in] [ref] */,
   11643             :                                                              uint32_t _flags /* [in]  */,
   11644             :                                                              uint32_t _options /* [in]  */,
   11645             :                                                              const char *_local_machine /* [in] [charset(UTF16),unique] */,
   11646             :                                                              uint32_t _printer_local /* [in]  */,
   11647             :                                                              struct spoolss_NotifyOption *_notify_options /* [in] [unique] */,
   11648             :                                                              WERROR *result)
   11649             : {
   11650           0 :         struct spoolss_RemoteFindFirstPrinterChangeNotifyEx r;
   11651           0 :         NTSTATUS status;
   11652             : 
   11653             :         /* In parameters */
   11654           0 :         r.in.handle = _handle;
   11655           0 :         r.in.flags = _flags;
   11656           0 :         r.in.options = _options;
   11657           0 :         r.in.local_machine = _local_machine;
   11658           0 :         r.in.printer_local = _printer_local;
   11659           0 :         r.in.notify_options = _notify_options;
   11660             : 
   11661             :         /* Out parameters */
   11662             : 
   11663             :         /* Result */
   11664           0 :         NDR_ZERO_STRUCT(r.out.result);
   11665             : 
   11666           0 :         status = dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r(h, mem_ctx, &r);
   11667           0 :         if (!NT_STATUS_IS_OK(status)) {
   11668           0 :                 return status;
   11669             :         }
   11670             : 
   11671             :         /* Return variables */
   11672             : 
   11673             :         /* Return result */
   11674           0 :         *result = r.out.result;
   11675             : 
   11676           0 :         return NT_STATUS_OK;
   11677             : }
   11678             : 
   11679             : struct dcerpc_spoolss_RouterReplyPrinterEx_r_state {
   11680             :         TALLOC_CTX *out_mem_ctx;
   11681             : };
   11682             : 
   11683             : static void dcerpc_spoolss_RouterReplyPrinterEx_r_done(struct tevent_req *subreq);
   11684             : 
   11685           0 : struct tevent_req *dcerpc_spoolss_RouterReplyPrinterEx_r_send(TALLOC_CTX *mem_ctx,
   11686             :         struct tevent_context *ev,
   11687             :         struct dcerpc_binding_handle *h,
   11688             :         struct spoolss_RouterReplyPrinterEx *r)
   11689             : {
   11690           0 :         struct tevent_req *req;
   11691           0 :         struct dcerpc_spoolss_RouterReplyPrinterEx_r_state *state;
   11692           0 :         struct tevent_req *subreq;
   11693             : 
   11694           0 :         req = tevent_req_create(mem_ctx, &state,
   11695             :                                 struct dcerpc_spoolss_RouterReplyPrinterEx_r_state);
   11696           0 :         if (req == NULL) {
   11697           0 :                 return NULL;
   11698             :         }
   11699             : 
   11700           0 :         state->out_mem_ctx = talloc_new(state);
   11701           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   11702           0 :                 return tevent_req_post(req, ev);
   11703             :         }
   11704             : 
   11705           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   11706             :                         NULL, &ndr_table_spoolss,
   11707           0 :                         NDR_SPOOLSS_ROUTERREPLYPRINTEREX, state->out_mem_ctx, r);
   11708           0 :         if (tevent_req_nomem(subreq, req)) {
   11709           0 :                 return tevent_req_post(req, ev);
   11710             :         }
   11711           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_RouterReplyPrinterEx_r_done, req);
   11712             : 
   11713           0 :         return req;
   11714             : }
   11715             : 
   11716           0 : static void dcerpc_spoolss_RouterReplyPrinterEx_r_done(struct tevent_req *subreq)
   11717             : {
   11718           0 :         struct tevent_req *req =
   11719           0 :                 tevent_req_callback_data(subreq,
   11720             :                 struct tevent_req);
   11721           0 :         NTSTATUS status;
   11722             : 
   11723           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   11724           0 :         TALLOC_FREE(subreq);
   11725           0 :         if (tevent_req_nterror(req, status)) {
   11726           0 :                 return;
   11727             :         }
   11728             : 
   11729           0 :         tevent_req_done(req);
   11730             : }
   11731             : 
   11732           0 : NTSTATUS dcerpc_spoolss_RouterReplyPrinterEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   11733             : {
   11734           0 :         struct dcerpc_spoolss_RouterReplyPrinterEx_r_state *state =
   11735           0 :                 tevent_req_data(req,
   11736             :                 struct dcerpc_spoolss_RouterReplyPrinterEx_r_state);
   11737           0 :         NTSTATUS status;
   11738             : 
   11739           0 :         if (tevent_req_is_nterror(req, &status)) {
   11740           0 :                 tevent_req_received(req);
   11741           0 :                 return status;
   11742             :         }
   11743             : 
   11744           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   11745             : 
   11746           0 :         tevent_req_received(req);
   11747           0 :         return NT_STATUS_OK;
   11748             : }
   11749             : 
   11750           0 : NTSTATUS dcerpc_spoolss_RouterReplyPrinterEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_RouterReplyPrinterEx *r)
   11751             : {
   11752           0 :         NTSTATUS status;
   11753             : 
   11754           0 :         status = dcerpc_binding_handle_call(h,
   11755             :                         NULL, &ndr_table_spoolss,
   11756             :                         NDR_SPOOLSS_ROUTERREPLYPRINTEREX, mem_ctx, r);
   11757             : 
   11758           0 :         return status;
   11759             : }
   11760             : 
   11761             : struct dcerpc_spoolss_RouterReplyPrinterEx_state {
   11762             :         struct spoolss_RouterReplyPrinterEx orig;
   11763             :         struct spoolss_RouterReplyPrinterEx tmp;
   11764             :         TALLOC_CTX *out_mem_ctx;
   11765             : };
   11766             : 
   11767             : static void dcerpc_spoolss_RouterReplyPrinterEx_done(struct tevent_req *subreq);
   11768             : 
   11769           0 : struct tevent_req *dcerpc_spoolss_RouterReplyPrinterEx_send(TALLOC_CTX *mem_ctx,
   11770             :                                                             struct tevent_context *ev,
   11771             :                                                             struct dcerpc_binding_handle *h,
   11772             :                                                             struct policy_handle *_handle /* [in] [ref] */,
   11773             :                                                             uint32_t _color /* [in]  */,
   11774             :                                                             uint32_t _flags /* [in]  */,
   11775             :                                                             uint32_t *_reply_result /* [out] [ref] */,
   11776             :                                                             uint32_t _reply_type /* [in]  */,
   11777             :                                                             union spoolss_ReplyPrinterInfo _info /* [in] [switch_is(reply_type)] */)
   11778             : {
   11779           0 :         struct tevent_req *req;
   11780           0 :         struct dcerpc_spoolss_RouterReplyPrinterEx_state *state;
   11781           0 :         struct tevent_req *subreq;
   11782             : 
   11783           0 :         req = tevent_req_create(mem_ctx, &state,
   11784             :                                 struct dcerpc_spoolss_RouterReplyPrinterEx_state);
   11785           0 :         if (req == NULL) {
   11786           0 :                 return NULL;
   11787             :         }
   11788           0 :         state->out_mem_ctx = NULL;
   11789             : 
   11790             :         /* In parameters */
   11791           0 :         state->orig.in.handle = _handle;
   11792           0 :         state->orig.in.color = _color;
   11793           0 :         state->orig.in.flags = _flags;
   11794           0 :         state->orig.in.reply_type = _reply_type;
   11795           0 :         state->orig.in.info = _info;
   11796             : 
   11797             :         /* Out parameters */
   11798           0 :         state->orig.out.reply_result = _reply_result;
   11799             : 
   11800             :         /* Result */
   11801           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   11802             : 
   11803           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   11804             :                              "dcerpc_spoolss_RouterReplyPrinterEx_out_memory");
   11805           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   11806           0 :                 return tevent_req_post(req, ev);
   11807             :         }
   11808             : 
   11809             :         /* make a temporary copy, that we pass to the dispatch function */
   11810           0 :         state->tmp = state->orig;
   11811             : 
   11812           0 :         subreq = dcerpc_spoolss_RouterReplyPrinterEx_r_send(state, ev, h, &state->tmp);
   11813           0 :         if (tevent_req_nomem(subreq, req)) {
   11814           0 :                 return tevent_req_post(req, ev);
   11815             :         }
   11816           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_RouterReplyPrinterEx_done, req);
   11817           0 :         return req;
   11818             : }
   11819             : 
   11820           0 : static void dcerpc_spoolss_RouterReplyPrinterEx_done(struct tevent_req *subreq)
   11821             : {
   11822           0 :         struct tevent_req *req = tevent_req_callback_data(
   11823             :                 subreq, struct tevent_req);
   11824           0 :         struct dcerpc_spoolss_RouterReplyPrinterEx_state *state = tevent_req_data(
   11825             :                 req, struct dcerpc_spoolss_RouterReplyPrinterEx_state);
   11826           0 :         NTSTATUS status;
   11827           0 :         TALLOC_CTX *mem_ctx;
   11828             : 
   11829           0 :         if (state->out_mem_ctx) {
   11830           0 :                 mem_ctx = state->out_mem_ctx;
   11831             :         } else {
   11832           0 :                 mem_ctx = state;
   11833             :         }
   11834             : 
   11835           0 :         status = dcerpc_spoolss_RouterReplyPrinterEx_r_recv(subreq, mem_ctx);
   11836           0 :         TALLOC_FREE(subreq);
   11837           0 :         if (tevent_req_nterror(req, status)) {
   11838           0 :                 return;
   11839             :         }
   11840             : 
   11841             :         /* Copy out parameters */
   11842           0 :         *state->orig.out.reply_result = *state->tmp.out.reply_result;
   11843             : 
   11844             :         /* Copy result */
   11845           0 :         state->orig.out.result = state->tmp.out.result;
   11846             : 
   11847             :         /* Reset temporary structure */
   11848           0 :         NDR_ZERO_STRUCT(state->tmp);
   11849             : 
   11850           0 :         tevent_req_done(req);
   11851             : }
   11852             : 
   11853           0 : NTSTATUS dcerpc_spoolss_RouterReplyPrinterEx_recv(struct tevent_req *req,
   11854             :                                                   TALLOC_CTX *mem_ctx,
   11855             :                                                   WERROR *result)
   11856             : {
   11857           0 :         struct dcerpc_spoolss_RouterReplyPrinterEx_state *state = tevent_req_data(
   11858             :                 req, struct dcerpc_spoolss_RouterReplyPrinterEx_state);
   11859           0 :         NTSTATUS status;
   11860             : 
   11861           0 :         if (tevent_req_is_nterror(req, &status)) {
   11862           0 :                 tevent_req_received(req);
   11863           0 :                 return status;
   11864             :         }
   11865             : 
   11866             :         /* Steal possible out parameters to the callers context */
   11867           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   11868             : 
   11869             :         /* Return result */
   11870           0 :         *result = state->orig.out.result;
   11871             : 
   11872           0 :         tevent_req_received(req);
   11873           0 :         return NT_STATUS_OK;
   11874             : }
   11875             : 
   11876           0 : NTSTATUS dcerpc_spoolss_RouterReplyPrinterEx(struct dcerpc_binding_handle *h,
   11877             :                                              TALLOC_CTX *mem_ctx,
   11878             :                                              struct policy_handle *_handle /* [in] [ref] */,
   11879             :                                              uint32_t _color /* [in]  */,
   11880             :                                              uint32_t _flags /* [in]  */,
   11881             :                                              uint32_t *_reply_result /* [out] [ref] */,
   11882             :                                              uint32_t _reply_type /* [in]  */,
   11883             :                                              union spoolss_ReplyPrinterInfo _info /* [in] [switch_is(reply_type)] */,
   11884             :                                              WERROR *result)
   11885             : {
   11886           0 :         struct spoolss_RouterReplyPrinterEx r;
   11887           0 :         NTSTATUS status;
   11888             : 
   11889             :         /* In parameters */
   11890           0 :         r.in.handle = _handle;
   11891           0 :         r.in.color = _color;
   11892           0 :         r.in.flags = _flags;
   11893           0 :         r.in.reply_type = _reply_type;
   11894           0 :         r.in.info = _info;
   11895             : 
   11896             :         /* Out parameters */
   11897           0 :         r.out.reply_result = _reply_result;
   11898             : 
   11899             :         /* Result */
   11900           0 :         NDR_ZERO_STRUCT(r.out.result);
   11901             : 
   11902           0 :         status = dcerpc_spoolss_RouterReplyPrinterEx_r(h, mem_ctx, &r);
   11903           0 :         if (!NT_STATUS_IS_OK(status)) {
   11904           0 :                 return status;
   11905             :         }
   11906             : 
   11907             :         /* Return variables */
   11908           0 :         *_reply_result = *r.out.reply_result;
   11909             : 
   11910             :         /* Return result */
   11911           0 :         *result = r.out.result;
   11912             : 
   11913           0 :         return NT_STATUS_OK;
   11914             : }
   11915             : 
   11916             : struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_state {
   11917             :         TALLOC_CTX *out_mem_ctx;
   11918             : };
   11919             : 
   11920             : static void dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_done(struct tevent_req *subreq);
   11921             : 
   11922           0 : struct tevent_req *dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_send(TALLOC_CTX *mem_ctx,
   11923             :         struct tevent_context *ev,
   11924             :         struct dcerpc_binding_handle *h,
   11925             :         struct spoolss_RouterRefreshPrinterChangeNotify *r)
   11926             : {
   11927           0 :         struct tevent_req *req;
   11928           0 :         struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_state *state;
   11929           0 :         struct tevent_req *subreq;
   11930             : 
   11931           0 :         req = tevent_req_create(mem_ctx, &state,
   11932             :                                 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_state);
   11933           0 :         if (req == NULL) {
   11934           0 :                 return NULL;
   11935             :         }
   11936             : 
   11937           0 :         state->out_mem_ctx = talloc_new(state);
   11938           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   11939           0 :                 return tevent_req_post(req, ev);
   11940             :         }
   11941             : 
   11942           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   11943             :                         NULL, &ndr_table_spoolss,
   11944           0 :                         NDR_SPOOLSS_ROUTERREFRESHPRINTERCHANGENOTIFY, state->out_mem_ctx, r);
   11945           0 :         if (tevent_req_nomem(subreq, req)) {
   11946           0 :                 return tevent_req_post(req, ev);
   11947             :         }
   11948           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_done, req);
   11949             : 
   11950           0 :         return req;
   11951             : }
   11952             : 
   11953           0 : static void dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_done(struct tevent_req *subreq)
   11954             : {
   11955           0 :         struct tevent_req *req =
   11956           0 :                 tevent_req_callback_data(subreq,
   11957             :                 struct tevent_req);
   11958           0 :         NTSTATUS status;
   11959             : 
   11960           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   11961           0 :         TALLOC_FREE(subreq);
   11962           0 :         if (tevent_req_nterror(req, status)) {
   11963           0 :                 return;
   11964             :         }
   11965             : 
   11966           0 :         tevent_req_done(req);
   11967             : }
   11968             : 
   11969           0 : NTSTATUS dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   11970             : {
   11971           0 :         struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_state *state =
   11972           0 :                 tevent_req_data(req,
   11973             :                 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_state);
   11974           0 :         NTSTATUS status;
   11975             : 
   11976           0 :         if (tevent_req_is_nterror(req, &status)) {
   11977           0 :                 tevent_req_received(req);
   11978           0 :                 return status;
   11979             :         }
   11980             : 
   11981           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   11982             : 
   11983           0 :         tevent_req_received(req);
   11984           0 :         return NT_STATUS_OK;
   11985             : }
   11986             : 
   11987           4 : NTSTATUS dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_RouterRefreshPrinterChangeNotify *r)
   11988             : {
   11989           0 :         NTSTATUS status;
   11990             : 
   11991           4 :         status = dcerpc_binding_handle_call(h,
   11992             :                         NULL, &ndr_table_spoolss,
   11993             :                         NDR_SPOOLSS_ROUTERREFRESHPRINTERCHANGENOTIFY, mem_ctx, r);
   11994             : 
   11995           4 :         return status;
   11996             : }
   11997             : 
   11998             : struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state {
   11999             :         struct spoolss_RouterRefreshPrinterChangeNotify orig;
   12000             :         struct spoolss_RouterRefreshPrinterChangeNotify tmp;
   12001             :         TALLOC_CTX *out_mem_ctx;
   12002             : };
   12003             : 
   12004             : static void dcerpc_spoolss_RouterRefreshPrinterChangeNotify_done(struct tevent_req *subreq);
   12005             : 
   12006           0 : struct tevent_req *dcerpc_spoolss_RouterRefreshPrinterChangeNotify_send(TALLOC_CTX *mem_ctx,
   12007             :                                                                         struct tevent_context *ev,
   12008             :                                                                         struct dcerpc_binding_handle *h,
   12009             :                                                                         struct policy_handle *_handle /* [in] [ref] */,
   12010             :                                                                         uint32_t _change_low /* [in]  */,
   12011             :                                                                         struct spoolss_NotifyOption *_options /* [in] [unique] */,
   12012             :                                                                         struct spoolss_NotifyInfo **_info /* [out] [ref] */)
   12013             : {
   12014           0 :         struct tevent_req *req;
   12015           0 :         struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state *state;
   12016           0 :         struct tevent_req *subreq;
   12017             : 
   12018           0 :         req = tevent_req_create(mem_ctx, &state,
   12019             :                                 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state);
   12020           0 :         if (req == NULL) {
   12021           0 :                 return NULL;
   12022             :         }
   12023           0 :         state->out_mem_ctx = NULL;
   12024             : 
   12025             :         /* In parameters */
   12026           0 :         state->orig.in.handle = _handle;
   12027           0 :         state->orig.in.change_low = _change_low;
   12028           0 :         state->orig.in.options = _options;
   12029             : 
   12030             :         /* Out parameters */
   12031           0 :         state->orig.out.info = _info;
   12032             : 
   12033             :         /* Result */
   12034           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   12035             : 
   12036           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   12037             :                              "dcerpc_spoolss_RouterRefreshPrinterChangeNotify_out_memory");
   12038           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   12039           0 :                 return tevent_req_post(req, ev);
   12040             :         }
   12041             : 
   12042             :         /* make a temporary copy, that we pass to the dispatch function */
   12043           0 :         state->tmp = state->orig;
   12044             : 
   12045           0 :         subreq = dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_send(state, ev, h, &state->tmp);
   12046           0 :         if (tevent_req_nomem(subreq, req)) {
   12047           0 :                 return tevent_req_post(req, ev);
   12048             :         }
   12049           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_RouterRefreshPrinterChangeNotify_done, req);
   12050           0 :         return req;
   12051             : }
   12052             : 
   12053           0 : static void dcerpc_spoolss_RouterRefreshPrinterChangeNotify_done(struct tevent_req *subreq)
   12054             : {
   12055           0 :         struct tevent_req *req = tevent_req_callback_data(
   12056             :                 subreq, struct tevent_req);
   12057           0 :         struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state *state = tevent_req_data(
   12058             :                 req, struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state);
   12059           0 :         NTSTATUS status;
   12060           0 :         TALLOC_CTX *mem_ctx;
   12061             : 
   12062           0 :         if (state->out_mem_ctx) {
   12063           0 :                 mem_ctx = state->out_mem_ctx;
   12064             :         } else {
   12065           0 :                 mem_ctx = state;
   12066             :         }
   12067             : 
   12068           0 :         status = dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_recv(subreq, mem_ctx);
   12069           0 :         TALLOC_FREE(subreq);
   12070           0 :         if (tevent_req_nterror(req, status)) {
   12071           0 :                 return;
   12072             :         }
   12073             : 
   12074             :         /* Copy out parameters */
   12075           0 :         *state->orig.out.info = *state->tmp.out.info;
   12076             : 
   12077             :         /* Copy result */
   12078           0 :         state->orig.out.result = state->tmp.out.result;
   12079             : 
   12080             :         /* Reset temporary structure */
   12081           0 :         NDR_ZERO_STRUCT(state->tmp);
   12082             : 
   12083           0 :         tevent_req_done(req);
   12084             : }
   12085             : 
   12086           0 : NTSTATUS dcerpc_spoolss_RouterRefreshPrinterChangeNotify_recv(struct tevent_req *req,
   12087             :                                                               TALLOC_CTX *mem_ctx,
   12088             :                                                               WERROR *result)
   12089             : {
   12090           0 :         struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state *state = tevent_req_data(
   12091             :                 req, struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state);
   12092           0 :         NTSTATUS status;
   12093             : 
   12094           0 :         if (tevent_req_is_nterror(req, &status)) {
   12095           0 :                 tevent_req_received(req);
   12096           0 :                 return status;
   12097             :         }
   12098             : 
   12099             :         /* Steal possible out parameters to the callers context */
   12100           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   12101             : 
   12102             :         /* Return result */
   12103           0 :         *result = state->orig.out.result;
   12104             : 
   12105           0 :         tevent_req_received(req);
   12106           0 :         return NT_STATUS_OK;
   12107             : }
   12108             : 
   12109           0 : NTSTATUS dcerpc_spoolss_RouterRefreshPrinterChangeNotify(struct dcerpc_binding_handle *h,
   12110             :                                                          TALLOC_CTX *mem_ctx,
   12111             :                                                          struct policy_handle *_handle /* [in] [ref] */,
   12112             :                                                          uint32_t _change_low /* [in]  */,
   12113             :                                                          struct spoolss_NotifyOption *_options /* [in] [unique] */,
   12114             :                                                          struct spoolss_NotifyInfo **_info /* [out] [ref] */,
   12115             :                                                          WERROR *result)
   12116             : {
   12117           0 :         struct spoolss_RouterRefreshPrinterChangeNotify r;
   12118           0 :         NTSTATUS status;
   12119             : 
   12120             :         /* In parameters */
   12121           0 :         r.in.handle = _handle;
   12122           0 :         r.in.change_low = _change_low;
   12123           0 :         r.in.options = _options;
   12124             : 
   12125             :         /* Out parameters */
   12126           0 :         r.out.info = _info;
   12127             : 
   12128             :         /* Result */
   12129           0 :         NDR_ZERO_STRUCT(r.out.result);
   12130             : 
   12131           0 :         status = dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r(h, mem_ctx, &r);
   12132           0 :         if (!NT_STATUS_IS_OK(status)) {
   12133           0 :                 return status;
   12134             :         }
   12135             : 
   12136             :         /* Return variables */
   12137           0 :         *_info = *r.out.info;
   12138             : 
   12139             :         /* Return result */
   12140           0 :         *result = r.out.result;
   12141             : 
   12142           0 :         return NT_STATUS_OK;
   12143             : }
   12144             : 
   12145             : struct dcerpc_spoolss_OpenPrinterEx_r_state {
   12146             :         TALLOC_CTX *out_mem_ctx;
   12147             : };
   12148             : 
   12149             : static void dcerpc_spoolss_OpenPrinterEx_r_done(struct tevent_req *subreq);
   12150             : 
   12151           0 : struct tevent_req *dcerpc_spoolss_OpenPrinterEx_r_send(TALLOC_CTX *mem_ctx,
   12152             :         struct tevent_context *ev,
   12153             :         struct dcerpc_binding_handle *h,
   12154             :         struct spoolss_OpenPrinterEx *r)
   12155             : {
   12156           0 :         struct tevent_req *req;
   12157           0 :         struct dcerpc_spoolss_OpenPrinterEx_r_state *state;
   12158           0 :         struct tevent_req *subreq;
   12159             : 
   12160           0 :         req = tevent_req_create(mem_ctx, &state,
   12161             :                                 struct dcerpc_spoolss_OpenPrinterEx_r_state);
   12162           0 :         if (req == NULL) {
   12163           0 :                 return NULL;
   12164             :         }
   12165             : 
   12166           0 :         state->out_mem_ctx = talloc_new(state);
   12167           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   12168           0 :                 return tevent_req_post(req, ev);
   12169             :         }
   12170             : 
   12171           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   12172             :                         NULL, &ndr_table_spoolss,
   12173           0 :                         NDR_SPOOLSS_OPENPRINTEREX, state->out_mem_ctx, r);
   12174           0 :         if (tevent_req_nomem(subreq, req)) {
   12175           0 :                 return tevent_req_post(req, ev);
   12176             :         }
   12177           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_OpenPrinterEx_r_done, req);
   12178             : 
   12179           0 :         return req;
   12180             : }
   12181             : 
   12182           0 : static void dcerpc_spoolss_OpenPrinterEx_r_done(struct tevent_req *subreq)
   12183             : {
   12184           0 :         struct tevent_req *req =
   12185           0 :                 tevent_req_callback_data(subreq,
   12186             :                 struct tevent_req);
   12187           0 :         NTSTATUS status;
   12188             : 
   12189           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   12190           0 :         TALLOC_FREE(subreq);
   12191           0 :         if (tevent_req_nterror(req, status)) {
   12192           0 :                 return;
   12193             :         }
   12194             : 
   12195           0 :         tevent_req_done(req);
   12196             : }
   12197             : 
   12198           0 : NTSTATUS dcerpc_spoolss_OpenPrinterEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   12199             : {
   12200           0 :         struct dcerpc_spoolss_OpenPrinterEx_r_state *state =
   12201           0 :                 tevent_req_data(req,
   12202             :                 struct dcerpc_spoolss_OpenPrinterEx_r_state);
   12203           0 :         NTSTATUS status;
   12204             : 
   12205           0 :         if (tevent_req_is_nterror(req, &status)) {
   12206           0 :                 tevent_req_received(req);
   12207           0 :                 return status;
   12208             :         }
   12209             : 
   12210           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   12211             : 
   12212           0 :         tevent_req_received(req);
   12213           0 :         return NT_STATUS_OK;
   12214             : }
   12215             : 
   12216         794 : NTSTATUS dcerpc_spoolss_OpenPrinterEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_OpenPrinterEx *r)
   12217             : {
   12218           0 :         NTSTATUS status;
   12219             : 
   12220         794 :         status = dcerpc_binding_handle_call(h,
   12221             :                         NULL, &ndr_table_spoolss,
   12222             :                         NDR_SPOOLSS_OPENPRINTEREX, mem_ctx, r);
   12223             : 
   12224         794 :         return status;
   12225             : }
   12226             : 
   12227             : struct dcerpc_spoolss_OpenPrinterEx_state {
   12228             :         struct spoolss_OpenPrinterEx orig;
   12229             :         struct spoolss_OpenPrinterEx tmp;
   12230             :         TALLOC_CTX *out_mem_ctx;
   12231             : };
   12232             : 
   12233             : static void dcerpc_spoolss_OpenPrinterEx_done(struct tevent_req *subreq);
   12234             : 
   12235           0 : struct tevent_req *dcerpc_spoolss_OpenPrinterEx_send(TALLOC_CTX *mem_ctx,
   12236             :                                                      struct tevent_context *ev,
   12237             :                                                      struct dcerpc_binding_handle *h,
   12238             :                                                      const char *_printername /* [in] [charset(UTF16),unique] */,
   12239             :                                                      const char *_datatype /* [in] [charset(UTF16),unique] */,
   12240             :                                                      struct spoolss_DevmodeContainer _devmode_ctr /* [in]  */,
   12241             :                                                      uint32_t _access_mask /* [in]  */,
   12242             :                                                      struct spoolss_UserLevelCtr _userlevel_ctr /* [in]  */,
   12243             :                                                      struct policy_handle *_handle /* [out] [ref] */)
   12244             : {
   12245           0 :         struct tevent_req *req;
   12246           0 :         struct dcerpc_spoolss_OpenPrinterEx_state *state;
   12247           0 :         struct tevent_req *subreq;
   12248             : 
   12249           0 :         req = tevent_req_create(mem_ctx, &state,
   12250             :                                 struct dcerpc_spoolss_OpenPrinterEx_state);
   12251           0 :         if (req == NULL) {
   12252           0 :                 return NULL;
   12253             :         }
   12254           0 :         state->out_mem_ctx = NULL;
   12255             : 
   12256             :         /* In parameters */
   12257           0 :         state->orig.in.printername = _printername;
   12258           0 :         state->orig.in.datatype = _datatype;
   12259           0 :         state->orig.in.devmode_ctr = _devmode_ctr;
   12260           0 :         state->orig.in.access_mask = _access_mask;
   12261           0 :         state->orig.in.userlevel_ctr = _userlevel_ctr;
   12262             : 
   12263             :         /* Out parameters */
   12264           0 :         state->orig.out.handle = _handle;
   12265             : 
   12266             :         /* Result */
   12267           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   12268             : 
   12269           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   12270             :                              "dcerpc_spoolss_OpenPrinterEx_out_memory");
   12271           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   12272           0 :                 return tevent_req_post(req, ev);
   12273             :         }
   12274             : 
   12275             :         /* make a temporary copy, that we pass to the dispatch function */
   12276           0 :         state->tmp = state->orig;
   12277             : 
   12278           0 :         subreq = dcerpc_spoolss_OpenPrinterEx_r_send(state, ev, h, &state->tmp);
   12279           0 :         if (tevent_req_nomem(subreq, req)) {
   12280           0 :                 return tevent_req_post(req, ev);
   12281             :         }
   12282           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_OpenPrinterEx_done, req);
   12283           0 :         return req;
   12284             : }
   12285             : 
   12286           0 : static void dcerpc_spoolss_OpenPrinterEx_done(struct tevent_req *subreq)
   12287             : {
   12288           0 :         struct tevent_req *req = tevent_req_callback_data(
   12289             :                 subreq, struct tevent_req);
   12290           0 :         struct dcerpc_spoolss_OpenPrinterEx_state *state = tevent_req_data(
   12291             :                 req, struct dcerpc_spoolss_OpenPrinterEx_state);
   12292           0 :         NTSTATUS status;
   12293           0 :         TALLOC_CTX *mem_ctx;
   12294             : 
   12295           0 :         if (state->out_mem_ctx) {
   12296           0 :                 mem_ctx = state->out_mem_ctx;
   12297             :         } else {
   12298           0 :                 mem_ctx = state;
   12299             :         }
   12300             : 
   12301           0 :         status = dcerpc_spoolss_OpenPrinterEx_r_recv(subreq, mem_ctx);
   12302           0 :         TALLOC_FREE(subreq);
   12303           0 :         if (tevent_req_nterror(req, status)) {
   12304           0 :                 return;
   12305             :         }
   12306             : 
   12307             :         /* Copy out parameters */
   12308           0 :         *state->orig.out.handle = *state->tmp.out.handle;
   12309             : 
   12310             :         /* Copy result */
   12311           0 :         state->orig.out.result = state->tmp.out.result;
   12312             : 
   12313             :         /* Reset temporary structure */
   12314           0 :         NDR_ZERO_STRUCT(state->tmp);
   12315             : 
   12316           0 :         tevent_req_done(req);
   12317             : }
   12318             : 
   12319           0 : NTSTATUS dcerpc_spoolss_OpenPrinterEx_recv(struct tevent_req *req,
   12320             :                                            TALLOC_CTX *mem_ctx,
   12321             :                                            WERROR *result)
   12322             : {
   12323           0 :         struct dcerpc_spoolss_OpenPrinterEx_state *state = tevent_req_data(
   12324             :                 req, struct dcerpc_spoolss_OpenPrinterEx_state);
   12325           0 :         NTSTATUS status;
   12326             : 
   12327           0 :         if (tevent_req_is_nterror(req, &status)) {
   12328           0 :                 tevent_req_received(req);
   12329           0 :                 return status;
   12330             :         }
   12331             : 
   12332             :         /* Steal possible out parameters to the callers context */
   12333           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   12334             : 
   12335             :         /* Return result */
   12336           0 :         *result = state->orig.out.result;
   12337             : 
   12338           0 :         tevent_req_received(req);
   12339           0 :         return NT_STATUS_OK;
   12340             : }
   12341             : 
   12342           6 : NTSTATUS dcerpc_spoolss_OpenPrinterEx(struct dcerpc_binding_handle *h,
   12343             :                                       TALLOC_CTX *mem_ctx,
   12344             :                                       const char *_printername /* [in] [charset(UTF16),unique] */,
   12345             :                                       const char *_datatype /* [in] [charset(UTF16),unique] */,
   12346             :                                       struct spoolss_DevmodeContainer _devmode_ctr /* [in]  */,
   12347             :                                       uint32_t _access_mask /* [in]  */,
   12348             :                                       struct spoolss_UserLevelCtr _userlevel_ctr /* [in]  */,
   12349             :                                       struct policy_handle *_handle /* [out] [ref] */,
   12350             :                                       WERROR *result)
   12351             : {
   12352           0 :         struct spoolss_OpenPrinterEx r;
   12353           0 :         NTSTATUS status;
   12354             : 
   12355             :         /* In parameters */
   12356           6 :         r.in.printername = _printername;
   12357           6 :         r.in.datatype = _datatype;
   12358           6 :         r.in.devmode_ctr = _devmode_ctr;
   12359           6 :         r.in.access_mask = _access_mask;
   12360           6 :         r.in.userlevel_ctr = _userlevel_ctr;
   12361             : 
   12362             :         /* Out parameters */
   12363           6 :         r.out.handle = _handle;
   12364             : 
   12365             :         /* Result */
   12366           6 :         NDR_ZERO_STRUCT(r.out.result);
   12367             : 
   12368           6 :         status = dcerpc_spoolss_OpenPrinterEx_r(h, mem_ctx, &r);
   12369           6 :         if (!NT_STATUS_IS_OK(status)) {
   12370           0 :                 return status;
   12371             :         }
   12372             : 
   12373             :         /* Return variables */
   12374           6 :         *_handle = *r.out.handle;
   12375             : 
   12376             :         /* Return result */
   12377           6 :         *result = r.out.result;
   12378             : 
   12379           6 :         return NT_STATUS_OK;
   12380             : }
   12381             : 
   12382             : struct dcerpc_spoolss_AddPrinterEx_r_state {
   12383             :         TALLOC_CTX *out_mem_ctx;
   12384             : };
   12385             : 
   12386             : static void dcerpc_spoolss_AddPrinterEx_r_done(struct tevent_req *subreq);
   12387             : 
   12388           0 : struct tevent_req *dcerpc_spoolss_AddPrinterEx_r_send(TALLOC_CTX *mem_ctx,
   12389             :         struct tevent_context *ev,
   12390             :         struct dcerpc_binding_handle *h,
   12391             :         struct spoolss_AddPrinterEx *r)
   12392             : {
   12393           0 :         struct tevent_req *req;
   12394           0 :         struct dcerpc_spoolss_AddPrinterEx_r_state *state;
   12395           0 :         struct tevent_req *subreq;
   12396             : 
   12397           0 :         req = tevent_req_create(mem_ctx, &state,
   12398             :                                 struct dcerpc_spoolss_AddPrinterEx_r_state);
   12399           0 :         if (req == NULL) {
   12400           0 :                 return NULL;
   12401             :         }
   12402             : 
   12403           0 :         state->out_mem_ctx = talloc_new(state);
   12404           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   12405           0 :                 return tevent_req_post(req, ev);
   12406             :         }
   12407             : 
   12408           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   12409             :                         NULL, &ndr_table_spoolss,
   12410           0 :                         NDR_SPOOLSS_ADDPRINTEREX, state->out_mem_ctx, r);
   12411           0 :         if (tevent_req_nomem(subreq, req)) {
   12412           0 :                 return tevent_req_post(req, ev);
   12413             :         }
   12414           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinterEx_r_done, req);
   12415             : 
   12416           0 :         return req;
   12417             : }
   12418             : 
   12419           0 : static void dcerpc_spoolss_AddPrinterEx_r_done(struct tevent_req *subreq)
   12420             : {
   12421           0 :         struct tevent_req *req =
   12422           0 :                 tevent_req_callback_data(subreq,
   12423             :                 struct tevent_req);
   12424           0 :         NTSTATUS status;
   12425             : 
   12426           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   12427           0 :         TALLOC_FREE(subreq);
   12428           0 :         if (tevent_req_nterror(req, status)) {
   12429           0 :                 return;
   12430             :         }
   12431             : 
   12432           0 :         tevent_req_done(req);
   12433             : }
   12434             : 
   12435           0 : NTSTATUS dcerpc_spoolss_AddPrinterEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   12436             : {
   12437           0 :         struct dcerpc_spoolss_AddPrinterEx_r_state *state =
   12438           0 :                 tevent_req_data(req,
   12439             :                 struct dcerpc_spoolss_AddPrinterEx_r_state);
   12440           0 :         NTSTATUS status;
   12441             : 
   12442           0 :         if (tevent_req_is_nterror(req, &status)) {
   12443           0 :                 tevent_req_received(req);
   12444           0 :                 return status;
   12445             :         }
   12446             : 
   12447           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   12448             : 
   12449           0 :         tevent_req_received(req);
   12450           0 :         return NT_STATUS_OK;
   12451             : }
   12452             : 
   12453          24 : NTSTATUS dcerpc_spoolss_AddPrinterEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPrinterEx *r)
   12454             : {
   12455           0 :         NTSTATUS status;
   12456             : 
   12457          24 :         status = dcerpc_binding_handle_call(h,
   12458             :                         NULL, &ndr_table_spoolss,
   12459             :                         NDR_SPOOLSS_ADDPRINTEREX, mem_ctx, r);
   12460             : 
   12461          24 :         return status;
   12462             : }
   12463             : 
   12464             : struct dcerpc_spoolss_AddPrinterEx_state {
   12465             :         struct spoolss_AddPrinterEx orig;
   12466             :         struct spoolss_AddPrinterEx tmp;
   12467             :         TALLOC_CTX *out_mem_ctx;
   12468             : };
   12469             : 
   12470             : static void dcerpc_spoolss_AddPrinterEx_done(struct tevent_req *subreq);
   12471             : 
   12472           0 : struct tevent_req *dcerpc_spoolss_AddPrinterEx_send(TALLOC_CTX *mem_ctx,
   12473             :                                                     struct tevent_context *ev,
   12474             :                                                     struct dcerpc_binding_handle *h,
   12475             :                                                     const char *_server /* [in] [charset(UTF16),unique] */,
   12476             :                                                     struct spoolss_SetPrinterInfoCtr *_info_ctr /* [in] [ref] */,
   12477             :                                                     struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
   12478             :                                                     struct sec_desc_buf *_secdesc_ctr /* [in] [ref] */,
   12479             :                                                     struct spoolss_UserLevelCtr *_userlevel_ctr /* [in] [ref] */,
   12480             :                                                     struct policy_handle *_handle /* [out] [ref] */)
   12481             : {
   12482           0 :         struct tevent_req *req;
   12483           0 :         struct dcerpc_spoolss_AddPrinterEx_state *state;
   12484           0 :         struct tevent_req *subreq;
   12485             : 
   12486           0 :         req = tevent_req_create(mem_ctx, &state,
   12487             :                                 struct dcerpc_spoolss_AddPrinterEx_state);
   12488           0 :         if (req == NULL) {
   12489           0 :                 return NULL;
   12490             :         }
   12491           0 :         state->out_mem_ctx = NULL;
   12492             : 
   12493             :         /* In parameters */
   12494           0 :         state->orig.in.server = _server;
   12495           0 :         state->orig.in.info_ctr = _info_ctr;
   12496           0 :         state->orig.in.devmode_ctr = _devmode_ctr;
   12497           0 :         state->orig.in.secdesc_ctr = _secdesc_ctr;
   12498           0 :         state->orig.in.userlevel_ctr = _userlevel_ctr;
   12499             : 
   12500             :         /* Out parameters */
   12501           0 :         state->orig.out.handle = _handle;
   12502             : 
   12503             :         /* Result */
   12504           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   12505             : 
   12506           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   12507             :                              "dcerpc_spoolss_AddPrinterEx_out_memory");
   12508           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   12509           0 :                 return tevent_req_post(req, ev);
   12510             :         }
   12511             : 
   12512             :         /* make a temporary copy, that we pass to the dispatch function */
   12513           0 :         state->tmp = state->orig;
   12514             : 
   12515           0 :         subreq = dcerpc_spoolss_AddPrinterEx_r_send(state, ev, h, &state->tmp);
   12516           0 :         if (tevent_req_nomem(subreq, req)) {
   12517           0 :                 return tevent_req_post(req, ev);
   12518             :         }
   12519           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinterEx_done, req);
   12520           0 :         return req;
   12521             : }
   12522             : 
   12523           0 : static void dcerpc_spoolss_AddPrinterEx_done(struct tevent_req *subreq)
   12524             : {
   12525           0 :         struct tevent_req *req = tevent_req_callback_data(
   12526             :                 subreq, struct tevent_req);
   12527           0 :         struct dcerpc_spoolss_AddPrinterEx_state *state = tevent_req_data(
   12528             :                 req, struct dcerpc_spoolss_AddPrinterEx_state);
   12529           0 :         NTSTATUS status;
   12530           0 :         TALLOC_CTX *mem_ctx;
   12531             : 
   12532           0 :         if (state->out_mem_ctx) {
   12533           0 :                 mem_ctx = state->out_mem_ctx;
   12534             :         } else {
   12535           0 :                 mem_ctx = state;
   12536             :         }
   12537             : 
   12538           0 :         status = dcerpc_spoolss_AddPrinterEx_r_recv(subreq, mem_ctx);
   12539           0 :         TALLOC_FREE(subreq);
   12540           0 :         if (tevent_req_nterror(req, status)) {
   12541           0 :                 return;
   12542             :         }
   12543             : 
   12544             :         /* Copy out parameters */
   12545           0 :         *state->orig.out.handle = *state->tmp.out.handle;
   12546             : 
   12547             :         /* Copy result */
   12548           0 :         state->orig.out.result = state->tmp.out.result;
   12549             : 
   12550             :         /* Reset temporary structure */
   12551           0 :         NDR_ZERO_STRUCT(state->tmp);
   12552             : 
   12553           0 :         tevent_req_done(req);
   12554             : }
   12555             : 
   12556           0 : NTSTATUS dcerpc_spoolss_AddPrinterEx_recv(struct tevent_req *req,
   12557             :                                           TALLOC_CTX *mem_ctx,
   12558             :                                           WERROR *result)
   12559             : {
   12560           0 :         struct dcerpc_spoolss_AddPrinterEx_state *state = tevent_req_data(
   12561             :                 req, struct dcerpc_spoolss_AddPrinterEx_state);
   12562           0 :         NTSTATUS status;
   12563             : 
   12564           0 :         if (tevent_req_is_nterror(req, &status)) {
   12565           0 :                 tevent_req_received(req);
   12566           0 :                 return status;
   12567             :         }
   12568             : 
   12569             :         /* Steal possible out parameters to the callers context */
   12570           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   12571             : 
   12572             :         /* Return result */
   12573           0 :         *result = state->orig.out.result;
   12574             : 
   12575           0 :         tevent_req_received(req);
   12576           0 :         return NT_STATUS_OK;
   12577             : }
   12578             : 
   12579           0 : NTSTATUS dcerpc_spoolss_AddPrinterEx(struct dcerpc_binding_handle *h,
   12580             :                                      TALLOC_CTX *mem_ctx,
   12581             :                                      const char *_server /* [in] [charset(UTF16),unique] */,
   12582             :                                      struct spoolss_SetPrinterInfoCtr *_info_ctr /* [in] [ref] */,
   12583             :                                      struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
   12584             :                                      struct sec_desc_buf *_secdesc_ctr /* [in] [ref] */,
   12585             :                                      struct spoolss_UserLevelCtr *_userlevel_ctr /* [in] [ref] */,
   12586             :                                      struct policy_handle *_handle /* [out] [ref] */,
   12587             :                                      WERROR *result)
   12588             : {
   12589           0 :         struct spoolss_AddPrinterEx r;
   12590           0 :         NTSTATUS status;
   12591             : 
   12592             :         /* In parameters */
   12593           0 :         r.in.server = _server;
   12594           0 :         r.in.info_ctr = _info_ctr;
   12595           0 :         r.in.devmode_ctr = _devmode_ctr;
   12596           0 :         r.in.secdesc_ctr = _secdesc_ctr;
   12597           0 :         r.in.userlevel_ctr = _userlevel_ctr;
   12598             : 
   12599             :         /* Out parameters */
   12600           0 :         r.out.handle = _handle;
   12601             : 
   12602             :         /* Result */
   12603           0 :         NDR_ZERO_STRUCT(r.out.result);
   12604             : 
   12605           0 :         status = dcerpc_spoolss_AddPrinterEx_r(h, mem_ctx, &r);
   12606           0 :         if (!NT_STATUS_IS_OK(status)) {
   12607           0 :                 return status;
   12608             :         }
   12609             : 
   12610             :         /* Return variables */
   12611           0 :         *_handle = *r.out.handle;
   12612             : 
   12613             :         /* Return result */
   12614           0 :         *result = r.out.result;
   12615             : 
   12616           0 :         return NT_STATUS_OK;
   12617             : }
   12618             : 
   12619             : struct dcerpc_spoolss_SetPort_r_state {
   12620             :         TALLOC_CTX *out_mem_ctx;
   12621             : };
   12622             : 
   12623             : static void dcerpc_spoolss_SetPort_r_done(struct tevent_req *subreq);
   12624             : 
   12625           0 : struct tevent_req *dcerpc_spoolss_SetPort_r_send(TALLOC_CTX *mem_ctx,
   12626             :         struct tevent_context *ev,
   12627             :         struct dcerpc_binding_handle *h,
   12628             :         struct spoolss_SetPort *r)
   12629             : {
   12630           0 :         struct tevent_req *req;
   12631           0 :         struct dcerpc_spoolss_SetPort_r_state *state;
   12632           0 :         struct tevent_req *subreq;
   12633             : 
   12634           0 :         req = tevent_req_create(mem_ctx, &state,
   12635             :                                 struct dcerpc_spoolss_SetPort_r_state);
   12636           0 :         if (req == NULL) {
   12637           0 :                 return NULL;
   12638             :         }
   12639             : 
   12640           0 :         state->out_mem_ctx = NULL;
   12641             : 
   12642           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   12643             :                         NULL, &ndr_table_spoolss,
   12644             :                         NDR_SPOOLSS_SETPORT, state, r);
   12645           0 :         if (tevent_req_nomem(subreq, req)) {
   12646           0 :                 return tevent_req_post(req, ev);
   12647             :         }
   12648           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_SetPort_r_done, req);
   12649             : 
   12650           0 :         return req;
   12651             : }
   12652             : 
   12653           0 : static void dcerpc_spoolss_SetPort_r_done(struct tevent_req *subreq)
   12654             : {
   12655           0 :         struct tevent_req *req =
   12656           0 :                 tevent_req_callback_data(subreq,
   12657             :                 struct tevent_req);
   12658           0 :         NTSTATUS status;
   12659             : 
   12660           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   12661           0 :         TALLOC_FREE(subreq);
   12662           0 :         if (tevent_req_nterror(req, status)) {
   12663           0 :                 return;
   12664             :         }
   12665             : 
   12666           0 :         tevent_req_done(req);
   12667             : }
   12668             : 
   12669           0 : NTSTATUS dcerpc_spoolss_SetPort_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   12670             : {
   12671           0 :         struct dcerpc_spoolss_SetPort_r_state *state =
   12672           0 :                 tevent_req_data(req,
   12673             :                 struct dcerpc_spoolss_SetPort_r_state);
   12674           0 :         NTSTATUS status;
   12675             : 
   12676           0 :         if (tevent_req_is_nterror(req, &status)) {
   12677           0 :                 tevent_req_received(req);
   12678           0 :                 return status;
   12679             :         }
   12680             : 
   12681           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   12682             : 
   12683           0 :         tevent_req_received(req);
   12684           0 :         return NT_STATUS_OK;
   12685             : }
   12686             : 
   12687           0 : NTSTATUS dcerpc_spoolss_SetPort_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_SetPort *r)
   12688             : {
   12689           0 :         NTSTATUS status;
   12690             : 
   12691           0 :         status = dcerpc_binding_handle_call(h,
   12692             :                         NULL, &ndr_table_spoolss,
   12693             :                         NDR_SPOOLSS_SETPORT, mem_ctx, r);
   12694             : 
   12695           0 :         return status;
   12696             : }
   12697             : 
   12698             : struct dcerpc_spoolss_SetPort_state {
   12699             :         struct spoolss_SetPort orig;
   12700             :         struct spoolss_SetPort tmp;
   12701             :         TALLOC_CTX *out_mem_ctx;
   12702             : };
   12703             : 
   12704             : static void dcerpc_spoolss_SetPort_done(struct tevent_req *subreq);
   12705             : 
   12706           0 : struct tevent_req *dcerpc_spoolss_SetPort_send(TALLOC_CTX *mem_ctx,
   12707             :                                                struct tevent_context *ev,
   12708             :                                                struct dcerpc_binding_handle *h,
   12709             :                                                const char *_servername /* [in] [charset(UTF16),unique] */,
   12710             :                                                const char *_port_name /* [in] [charset(UTF16),unique] */,
   12711             :                                                struct spoolss_SetPortInfoContainer *_port_ctr /* [in] [ref] */)
   12712             : {
   12713           0 :         struct tevent_req *req;
   12714           0 :         struct dcerpc_spoolss_SetPort_state *state;
   12715           0 :         struct tevent_req *subreq;
   12716             : 
   12717           0 :         req = tevent_req_create(mem_ctx, &state,
   12718             :                                 struct dcerpc_spoolss_SetPort_state);
   12719           0 :         if (req == NULL) {
   12720           0 :                 return NULL;
   12721             :         }
   12722           0 :         state->out_mem_ctx = NULL;
   12723             : 
   12724             :         /* In parameters */
   12725           0 :         state->orig.in.servername = _servername;
   12726           0 :         state->orig.in.port_name = _port_name;
   12727           0 :         state->orig.in.port_ctr = _port_ctr;
   12728             : 
   12729             :         /* Out parameters */
   12730             : 
   12731             :         /* Result */
   12732           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   12733             : 
   12734             :         /* make a temporary copy, that we pass to the dispatch function */
   12735           0 :         state->tmp = state->orig;
   12736             : 
   12737           0 :         subreq = dcerpc_spoolss_SetPort_r_send(state, ev, h, &state->tmp);
   12738           0 :         if (tevent_req_nomem(subreq, req)) {
   12739           0 :                 return tevent_req_post(req, ev);
   12740             :         }
   12741           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_SetPort_done, req);
   12742           0 :         return req;
   12743             : }
   12744             : 
   12745           0 : static void dcerpc_spoolss_SetPort_done(struct tevent_req *subreq)
   12746             : {
   12747           0 :         struct tevent_req *req = tevent_req_callback_data(
   12748             :                 subreq, struct tevent_req);
   12749           0 :         struct dcerpc_spoolss_SetPort_state *state = tevent_req_data(
   12750             :                 req, struct dcerpc_spoolss_SetPort_state);
   12751           0 :         NTSTATUS status;
   12752           0 :         TALLOC_CTX *mem_ctx;
   12753             : 
   12754           0 :         if (state->out_mem_ctx) {
   12755           0 :                 mem_ctx = state->out_mem_ctx;
   12756             :         } else {
   12757           0 :                 mem_ctx = state;
   12758             :         }
   12759             : 
   12760           0 :         status = dcerpc_spoolss_SetPort_r_recv(subreq, mem_ctx);
   12761           0 :         TALLOC_FREE(subreq);
   12762           0 :         if (tevent_req_nterror(req, status)) {
   12763           0 :                 return;
   12764             :         }
   12765             : 
   12766             :         /* Copy out parameters */
   12767             : 
   12768             :         /* Copy result */
   12769           0 :         state->orig.out.result = state->tmp.out.result;
   12770             : 
   12771             :         /* Reset temporary structure */
   12772           0 :         NDR_ZERO_STRUCT(state->tmp);
   12773             : 
   12774           0 :         tevent_req_done(req);
   12775             : }
   12776             : 
   12777           0 : NTSTATUS dcerpc_spoolss_SetPort_recv(struct tevent_req *req,
   12778             :                                      TALLOC_CTX *mem_ctx,
   12779             :                                      WERROR *result)
   12780             : {
   12781           0 :         struct dcerpc_spoolss_SetPort_state *state = tevent_req_data(
   12782             :                 req, struct dcerpc_spoolss_SetPort_state);
   12783           0 :         NTSTATUS status;
   12784             : 
   12785           0 :         if (tevent_req_is_nterror(req, &status)) {
   12786           0 :                 tevent_req_received(req);
   12787           0 :                 return status;
   12788             :         }
   12789             : 
   12790             :         /* Steal possible out parameters to the callers context */
   12791           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   12792             : 
   12793             :         /* Return result */
   12794           0 :         *result = state->orig.out.result;
   12795             : 
   12796           0 :         tevent_req_received(req);
   12797           0 :         return NT_STATUS_OK;
   12798             : }
   12799             : 
   12800           0 : NTSTATUS dcerpc_spoolss_SetPort(struct dcerpc_binding_handle *h,
   12801             :                                 TALLOC_CTX *mem_ctx,
   12802             :                                 const char *_servername /* [in] [charset(UTF16),unique] */,
   12803             :                                 const char *_port_name /* [in] [charset(UTF16),unique] */,
   12804             :                                 struct spoolss_SetPortInfoContainer *_port_ctr /* [in] [ref] */,
   12805             :                                 WERROR *result)
   12806             : {
   12807           0 :         struct spoolss_SetPort r;
   12808           0 :         NTSTATUS status;
   12809             : 
   12810             :         /* In parameters */
   12811           0 :         r.in.servername = _servername;
   12812           0 :         r.in.port_name = _port_name;
   12813           0 :         r.in.port_ctr = _port_ctr;
   12814             : 
   12815             :         /* Out parameters */
   12816             : 
   12817             :         /* Result */
   12818           0 :         NDR_ZERO_STRUCT(r.out.result);
   12819             : 
   12820           0 :         status = dcerpc_spoolss_SetPort_r(h, mem_ctx, &r);
   12821           0 :         if (!NT_STATUS_IS_OK(status)) {
   12822           0 :                 return status;
   12823             :         }
   12824             : 
   12825             :         /* Return variables */
   12826             : 
   12827             :         /* Return result */
   12828           0 :         *result = r.out.result;
   12829             : 
   12830           0 :         return NT_STATUS_OK;
   12831             : }
   12832             : 
   12833             : struct dcerpc_spoolss_EnumPrinterData_r_state {
   12834             :         TALLOC_CTX *out_mem_ctx;
   12835             : };
   12836             : 
   12837             : static void dcerpc_spoolss_EnumPrinterData_r_done(struct tevent_req *subreq);
   12838             : 
   12839           0 : struct tevent_req *dcerpc_spoolss_EnumPrinterData_r_send(TALLOC_CTX *mem_ctx,
   12840             :         struct tevent_context *ev,
   12841             :         struct dcerpc_binding_handle *h,
   12842             :         struct spoolss_EnumPrinterData *r)
   12843             : {
   12844           0 :         struct tevent_req *req;
   12845           0 :         struct dcerpc_spoolss_EnumPrinterData_r_state *state;
   12846           0 :         struct tevent_req *subreq;
   12847             : 
   12848           0 :         req = tevent_req_create(mem_ctx, &state,
   12849             :                                 struct dcerpc_spoolss_EnumPrinterData_r_state);
   12850           0 :         if (req == NULL) {
   12851           0 :                 return NULL;
   12852             :         }
   12853             : 
   12854           0 :         state->out_mem_ctx = talloc_new(state);
   12855           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   12856           0 :                 return tevent_req_post(req, ev);
   12857             :         }
   12858             : 
   12859           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   12860             :                         NULL, &ndr_table_spoolss,
   12861           0 :                         NDR_SPOOLSS_ENUMPRINTERDATA, state->out_mem_ctx, r);
   12862           0 :         if (tevent_req_nomem(subreq, req)) {
   12863           0 :                 return tevent_req_post(req, ev);
   12864             :         }
   12865           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterData_r_done, req);
   12866             : 
   12867           0 :         return req;
   12868             : }
   12869             : 
   12870           0 : static void dcerpc_spoolss_EnumPrinterData_r_done(struct tevent_req *subreq)
   12871             : {
   12872           0 :         struct tevent_req *req =
   12873           0 :                 tevent_req_callback_data(subreq,
   12874             :                 struct tevent_req);
   12875           0 :         NTSTATUS status;
   12876             : 
   12877           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   12878           0 :         TALLOC_FREE(subreq);
   12879           0 :         if (tevent_req_nterror(req, status)) {
   12880           0 :                 return;
   12881             :         }
   12882             : 
   12883           0 :         tevent_req_done(req);
   12884             : }
   12885             : 
   12886           0 : NTSTATUS dcerpc_spoolss_EnumPrinterData_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   12887             : {
   12888           0 :         struct dcerpc_spoolss_EnumPrinterData_r_state *state =
   12889           0 :                 tevent_req_data(req,
   12890             :                 struct dcerpc_spoolss_EnumPrinterData_r_state);
   12891           0 :         NTSTATUS status;
   12892             : 
   12893           0 :         if (tevent_req_is_nterror(req, &status)) {
   12894           0 :                 tevent_req_received(req);
   12895           0 :                 return status;
   12896             :         }
   12897             : 
   12898           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   12899             : 
   12900           0 :         tevent_req_received(req);
   12901           0 :         return NT_STATUS_OK;
   12902             : }
   12903             : 
   12904         152 : NTSTATUS dcerpc_spoolss_EnumPrinterData_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterData *r)
   12905             : {
   12906           0 :         NTSTATUS status;
   12907             : 
   12908         152 :         status = dcerpc_binding_handle_call(h,
   12909             :                         NULL, &ndr_table_spoolss,
   12910             :                         NDR_SPOOLSS_ENUMPRINTERDATA, mem_ctx, r);
   12911             : 
   12912         152 :         return status;
   12913             : }
   12914             : 
   12915             : struct dcerpc_spoolss_EnumPrinterData_state {
   12916             :         struct spoolss_EnumPrinterData orig;
   12917             :         struct spoolss_EnumPrinterData tmp;
   12918             :         TALLOC_CTX *out_mem_ctx;
   12919             : };
   12920             : 
   12921             : static void dcerpc_spoolss_EnumPrinterData_done(struct tevent_req *subreq);
   12922             : 
   12923           0 : struct tevent_req *dcerpc_spoolss_EnumPrinterData_send(TALLOC_CTX *mem_ctx,
   12924             :                                                        struct tevent_context *ev,
   12925             :                                                        struct dcerpc_binding_handle *h,
   12926             :                                                        struct policy_handle *_handle /* [in] [ref] */,
   12927             :                                                        uint32_t _enum_index /* [in]  */,
   12928             :                                                        const char *_value_name /* [out] [charset(UTF16),size_is(value_offered/2)] */,
   12929             :                                                        uint32_t _value_offered /* [in]  */,
   12930             :                                                        uint32_t *_value_needed /* [out] [ref] */,
   12931             :                                                        enum winreg_Type *_type /* [out] [ref] */,
   12932             :                                                        uint8_t *_data /* [out] [flag(LIBNDR_PRINT_ARRAY_HEX),ref,size_is(data_offered)] */,
   12933             :                                                        uint32_t _data_offered /* [in]  */,
   12934             :                                                        uint32_t *_data_needed /* [out] [ref] */)
   12935             : {
   12936           0 :         struct tevent_req *req;
   12937           0 :         struct dcerpc_spoolss_EnumPrinterData_state *state;
   12938           0 :         struct tevent_req *subreq;
   12939             : 
   12940           0 :         req = tevent_req_create(mem_ctx, &state,
   12941             :                                 struct dcerpc_spoolss_EnumPrinterData_state);
   12942           0 :         if (req == NULL) {
   12943           0 :                 return NULL;
   12944             :         }
   12945           0 :         state->out_mem_ctx = NULL;
   12946             : 
   12947             :         /* In parameters */
   12948           0 :         state->orig.in.handle = _handle;
   12949           0 :         state->orig.in.enum_index = _enum_index;
   12950           0 :         state->orig.in.value_offered = _value_offered;
   12951           0 :         state->orig.in.data_offered = _data_offered;
   12952             : 
   12953             :         /* Out parameters */
   12954           0 :         state->orig.out.value_name = _value_name;
   12955           0 :         state->orig.out.value_needed = _value_needed;
   12956           0 :         state->orig.out.type = _type;
   12957           0 :         state->orig.out.data = _data;
   12958           0 :         state->orig.out.data_needed = _data_needed;
   12959             : 
   12960             :         /* Result */
   12961           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   12962             : 
   12963           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   12964             :                              "dcerpc_spoolss_EnumPrinterData_out_memory");
   12965           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   12966           0 :                 return tevent_req_post(req, ev);
   12967             :         }
   12968             : 
   12969             :         /* make a temporary copy, that we pass to the dispatch function */
   12970           0 :         state->tmp = state->orig;
   12971             : 
   12972           0 :         subreq = dcerpc_spoolss_EnumPrinterData_r_send(state, ev, h, &state->tmp);
   12973           0 :         if (tevent_req_nomem(subreq, req)) {
   12974           0 :                 return tevent_req_post(req, ev);
   12975             :         }
   12976           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterData_done, req);
   12977           0 :         return req;
   12978             : }
   12979             : 
   12980           0 : static void dcerpc_spoolss_EnumPrinterData_done(struct tevent_req *subreq)
   12981             : {
   12982           0 :         struct tevent_req *req = tevent_req_callback_data(
   12983             :                 subreq, struct tevent_req);
   12984           0 :         struct dcerpc_spoolss_EnumPrinterData_state *state = tevent_req_data(
   12985             :                 req, struct dcerpc_spoolss_EnumPrinterData_state);
   12986           0 :         NTSTATUS status;
   12987           0 :         TALLOC_CTX *mem_ctx;
   12988             : 
   12989           0 :         if (state->out_mem_ctx) {
   12990           0 :                 mem_ctx = state->out_mem_ctx;
   12991             :         } else {
   12992           0 :                 mem_ctx = state;
   12993             :         }
   12994             : 
   12995           0 :         status = dcerpc_spoolss_EnumPrinterData_r_recv(subreq, mem_ctx);
   12996           0 :         TALLOC_FREE(subreq);
   12997           0 :         if (tevent_req_nterror(req, status)) {
   12998           0 :                 return;
   12999             :         }
   13000             : 
   13001             :         /* Copy out parameters */
   13002             :         {
   13003           0 :                 size_t _copy_len_value_name;
   13004           0 :                 _copy_len_value_name = ndr_charset_length(state->tmp.out.value_name, CH_UNIX);
   13005           0 :                 if (_copy_len_value_name > state->tmp.in.value_offered / 2) {
   13006           0 :                         tevent_req_nterror(req, NT_STATUS_INVALID_NETWORK_RESPONSE);
   13007           0 :                         return;
   13008             :                 }
   13009           0 :                 if (state->orig.out.value_name != state->tmp.out.value_name) {
   13010           0 :                         memcpy(discard_const_p(uint8_t *, state->orig.out.value_name), state->tmp.out.value_name, _copy_len_value_name * sizeof(*state->orig.out.value_name));
   13011             :                 }
   13012             :         }
   13013           0 :         *state->orig.out.value_needed = *state->tmp.out.value_needed;
   13014           0 :         *state->orig.out.type = *state->tmp.out.type;
   13015             :         {
   13016           0 :                 size_t _copy_len_data;
   13017           0 :                 _copy_len_data = state->tmp.in.data_offered;
   13018           0 :                 if (state->orig.out.data != state->tmp.out.data) {
   13019           0 :                         memcpy(state->orig.out.data, state->tmp.out.data, _copy_len_data * sizeof(*state->orig.out.data));
   13020             :                 }
   13021             :         }
   13022           0 :         *state->orig.out.data_needed = *state->tmp.out.data_needed;
   13023             : 
   13024             :         /* Copy result */
   13025           0 :         state->orig.out.result = state->tmp.out.result;
   13026             : 
   13027             :         /* Reset temporary structure */
   13028           0 :         NDR_ZERO_STRUCT(state->tmp);
   13029             : 
   13030           0 :         tevent_req_done(req);
   13031             : }
   13032             : 
   13033           0 : NTSTATUS dcerpc_spoolss_EnumPrinterData_recv(struct tevent_req *req,
   13034             :                                              TALLOC_CTX *mem_ctx,
   13035             :                                              WERROR *result)
   13036             : {
   13037           0 :         struct dcerpc_spoolss_EnumPrinterData_state *state = tevent_req_data(
   13038             :                 req, struct dcerpc_spoolss_EnumPrinterData_state);
   13039           0 :         NTSTATUS status;
   13040             : 
   13041           0 :         if (tevent_req_is_nterror(req, &status)) {
   13042           0 :                 tevent_req_received(req);
   13043           0 :                 return status;
   13044             :         }
   13045             : 
   13046             :         /* Steal possible out parameters to the callers context */
   13047           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   13048             : 
   13049             :         /* Return result */
   13050           0 :         *result = state->orig.out.result;
   13051             : 
   13052           0 :         tevent_req_received(req);
   13053           0 :         return NT_STATUS_OK;
   13054             : }
   13055             : 
   13056           0 : NTSTATUS dcerpc_spoolss_EnumPrinterData(struct dcerpc_binding_handle *h,
   13057             :                                         TALLOC_CTX *mem_ctx,
   13058             :                                         struct policy_handle *_handle /* [in] [ref] */,
   13059             :                                         uint32_t _enum_index /* [in]  */,
   13060             :                                         const char *_value_name /* [out] [charset(UTF16),size_is(value_offered/2)] */,
   13061             :                                         uint32_t _value_offered /* [in]  */,
   13062             :                                         uint32_t *_value_needed /* [out] [ref] */,
   13063             :                                         enum winreg_Type *_type /* [out] [ref] */,
   13064             :                                         uint8_t *_data /* [out] [flag(LIBNDR_PRINT_ARRAY_HEX),ref,size_is(data_offered)] */,
   13065             :                                         uint32_t _data_offered /* [in]  */,
   13066             :                                         uint32_t *_data_needed /* [out] [ref] */,
   13067             :                                         WERROR *result)
   13068             : {
   13069           0 :         struct spoolss_EnumPrinterData r;
   13070           0 :         NTSTATUS status;
   13071             : 
   13072             :         /* In parameters */
   13073           0 :         r.in.handle = _handle;
   13074           0 :         r.in.enum_index = _enum_index;
   13075           0 :         r.in.value_offered = _value_offered;
   13076           0 :         r.in.data_offered = _data_offered;
   13077             : 
   13078             :         /* Out parameters */
   13079           0 :         r.out.value_name = _value_name;
   13080           0 :         r.out.value_needed = _value_needed;
   13081           0 :         r.out.type = _type;
   13082           0 :         r.out.data = _data;
   13083           0 :         r.out.data_needed = _data_needed;
   13084             : 
   13085             :         /* Result */
   13086           0 :         NDR_ZERO_STRUCT(r.out.result);
   13087             : 
   13088           0 :         status = dcerpc_spoolss_EnumPrinterData_r(h, mem_ctx, &r);
   13089           0 :         if (!NT_STATUS_IS_OK(status)) {
   13090           0 :                 return status;
   13091             :         }
   13092             : 
   13093             :         /* Return variables */
   13094             :         {
   13095           0 :                 size_t _copy_len_value_name;
   13096           0 :                 _copy_len_value_name = ndr_charset_length(r.out.value_name, CH_UNIX);
   13097           0 :                 if (_copy_len_value_name > r.in.value_offered / 2) {
   13098           0 :                         return NT_STATUS_INVALID_NETWORK_RESPONSE;
   13099             :                 }
   13100           0 :                 if (_value_name != r.out.value_name) {
   13101           0 :                         memcpy(discard_const_p(uint8_t *, _value_name), r.out.value_name, _copy_len_value_name * sizeof(*_value_name));
   13102             :                 }
   13103             :         }
   13104           0 :         *_value_needed = *r.out.value_needed;
   13105           0 :         *_type = *r.out.type;
   13106             :         {
   13107           0 :                 size_t _copy_len_data;
   13108           0 :                 _copy_len_data = r.in.data_offered;
   13109           0 :                 if (_data != r.out.data) {
   13110           0 :                         memcpy(_data, r.out.data, _copy_len_data * sizeof(*_data));
   13111             :                 }
   13112             :         }
   13113           0 :         *_data_needed = *r.out.data_needed;
   13114             : 
   13115             :         /* Return result */
   13116           0 :         *result = r.out.result;
   13117             : 
   13118           0 :         return NT_STATUS_OK;
   13119             : }
   13120             : 
   13121             : struct dcerpc_spoolss_DeletePrinterData_r_state {
   13122             :         TALLOC_CTX *out_mem_ctx;
   13123             : };
   13124             : 
   13125             : static void dcerpc_spoolss_DeletePrinterData_r_done(struct tevent_req *subreq);
   13126             : 
   13127           0 : struct tevent_req *dcerpc_spoolss_DeletePrinterData_r_send(TALLOC_CTX *mem_ctx,
   13128             :         struct tevent_context *ev,
   13129             :         struct dcerpc_binding_handle *h,
   13130             :         struct spoolss_DeletePrinterData *r)
   13131             : {
   13132           0 :         struct tevent_req *req;
   13133           0 :         struct dcerpc_spoolss_DeletePrinterData_r_state *state;
   13134           0 :         struct tevent_req *subreq;
   13135             : 
   13136           0 :         req = tevent_req_create(mem_ctx, &state,
   13137             :                                 struct dcerpc_spoolss_DeletePrinterData_r_state);
   13138           0 :         if (req == NULL) {
   13139           0 :                 return NULL;
   13140             :         }
   13141             : 
   13142           0 :         state->out_mem_ctx = NULL;
   13143             : 
   13144           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   13145             :                         NULL, &ndr_table_spoolss,
   13146             :                         NDR_SPOOLSS_DELETEPRINTERDATA, state, r);
   13147           0 :         if (tevent_req_nomem(subreq, req)) {
   13148           0 :                 return tevent_req_post(req, ev);
   13149             :         }
   13150           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterData_r_done, req);
   13151             : 
   13152           0 :         return req;
   13153             : }
   13154             : 
   13155           0 : static void dcerpc_spoolss_DeletePrinterData_r_done(struct tevent_req *subreq)
   13156             : {
   13157           0 :         struct tevent_req *req =
   13158           0 :                 tevent_req_callback_data(subreq,
   13159             :                 struct tevent_req);
   13160           0 :         NTSTATUS status;
   13161             : 
   13162           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   13163           0 :         TALLOC_FREE(subreq);
   13164           0 :         if (tevent_req_nterror(req, status)) {
   13165           0 :                 return;
   13166             :         }
   13167             : 
   13168           0 :         tevent_req_done(req);
   13169             : }
   13170             : 
   13171           0 : NTSTATUS dcerpc_spoolss_DeletePrinterData_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   13172             : {
   13173           0 :         struct dcerpc_spoolss_DeletePrinterData_r_state *state =
   13174           0 :                 tevent_req_data(req,
   13175             :                 struct dcerpc_spoolss_DeletePrinterData_r_state);
   13176           0 :         NTSTATUS status;
   13177             : 
   13178           0 :         if (tevent_req_is_nterror(req, &status)) {
   13179           0 :                 tevent_req_received(req);
   13180           0 :                 return status;
   13181             :         }
   13182             : 
   13183           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   13184             : 
   13185           0 :         tevent_req_received(req);
   13186           0 :         return NT_STATUS_OK;
   13187             : }
   13188             : 
   13189         168 : NTSTATUS dcerpc_spoolss_DeletePrinterData_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterData *r)
   13190             : {
   13191           0 :         NTSTATUS status;
   13192             : 
   13193         168 :         status = dcerpc_binding_handle_call(h,
   13194             :                         NULL, &ndr_table_spoolss,
   13195             :                         NDR_SPOOLSS_DELETEPRINTERDATA, mem_ctx, r);
   13196             : 
   13197         168 :         return status;
   13198             : }
   13199             : 
   13200             : struct dcerpc_spoolss_DeletePrinterData_state {
   13201             :         struct spoolss_DeletePrinterData orig;
   13202             :         struct spoolss_DeletePrinterData tmp;
   13203             :         TALLOC_CTX *out_mem_ctx;
   13204             : };
   13205             : 
   13206             : static void dcerpc_spoolss_DeletePrinterData_done(struct tevent_req *subreq);
   13207             : 
   13208           0 : struct tevent_req *dcerpc_spoolss_DeletePrinterData_send(TALLOC_CTX *mem_ctx,
   13209             :                                                          struct tevent_context *ev,
   13210             :                                                          struct dcerpc_binding_handle *h,
   13211             :                                                          struct policy_handle *_handle /* [in] [ref] */,
   13212             :                                                          const char *_value_name /* [in] [charset(UTF16)] */)
   13213             : {
   13214           0 :         struct tevent_req *req;
   13215           0 :         struct dcerpc_spoolss_DeletePrinterData_state *state;
   13216           0 :         struct tevent_req *subreq;
   13217             : 
   13218           0 :         req = tevent_req_create(mem_ctx, &state,
   13219             :                                 struct dcerpc_spoolss_DeletePrinterData_state);
   13220           0 :         if (req == NULL) {
   13221           0 :                 return NULL;
   13222             :         }
   13223           0 :         state->out_mem_ctx = NULL;
   13224             : 
   13225             :         /* In parameters */
   13226           0 :         state->orig.in.handle = _handle;
   13227           0 :         state->orig.in.value_name = _value_name;
   13228             : 
   13229             :         /* Out parameters */
   13230             : 
   13231             :         /* Result */
   13232           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   13233             : 
   13234             :         /* make a temporary copy, that we pass to the dispatch function */
   13235           0 :         state->tmp = state->orig;
   13236             : 
   13237           0 :         subreq = dcerpc_spoolss_DeletePrinterData_r_send(state, ev, h, &state->tmp);
   13238           0 :         if (tevent_req_nomem(subreq, req)) {
   13239           0 :                 return tevent_req_post(req, ev);
   13240             :         }
   13241           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterData_done, req);
   13242           0 :         return req;
   13243             : }
   13244             : 
   13245           0 : static void dcerpc_spoolss_DeletePrinterData_done(struct tevent_req *subreq)
   13246             : {
   13247           0 :         struct tevent_req *req = tevent_req_callback_data(
   13248             :                 subreq, struct tevent_req);
   13249           0 :         struct dcerpc_spoolss_DeletePrinterData_state *state = tevent_req_data(
   13250             :                 req, struct dcerpc_spoolss_DeletePrinterData_state);
   13251           0 :         NTSTATUS status;
   13252           0 :         TALLOC_CTX *mem_ctx;
   13253             : 
   13254           0 :         if (state->out_mem_ctx) {
   13255           0 :                 mem_ctx = state->out_mem_ctx;
   13256             :         } else {
   13257           0 :                 mem_ctx = state;
   13258             :         }
   13259             : 
   13260           0 :         status = dcerpc_spoolss_DeletePrinterData_r_recv(subreq, mem_ctx);
   13261           0 :         TALLOC_FREE(subreq);
   13262           0 :         if (tevent_req_nterror(req, status)) {
   13263           0 :                 return;
   13264             :         }
   13265             : 
   13266             :         /* Copy out parameters */
   13267             : 
   13268             :         /* Copy result */
   13269           0 :         state->orig.out.result = state->tmp.out.result;
   13270             : 
   13271             :         /* Reset temporary structure */
   13272           0 :         NDR_ZERO_STRUCT(state->tmp);
   13273             : 
   13274           0 :         tevent_req_done(req);
   13275             : }
   13276             : 
   13277           0 : NTSTATUS dcerpc_spoolss_DeletePrinterData_recv(struct tevent_req *req,
   13278             :                                                TALLOC_CTX *mem_ctx,
   13279             :                                                WERROR *result)
   13280             : {
   13281           0 :         struct dcerpc_spoolss_DeletePrinterData_state *state = tevent_req_data(
   13282             :                 req, struct dcerpc_spoolss_DeletePrinterData_state);
   13283           0 :         NTSTATUS status;
   13284             : 
   13285           0 :         if (tevent_req_is_nterror(req, &status)) {
   13286           0 :                 tevent_req_received(req);
   13287           0 :                 return status;
   13288             :         }
   13289             : 
   13290             :         /* Steal possible out parameters to the callers context */
   13291           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   13292             : 
   13293             :         /* Return result */
   13294           0 :         *result = state->orig.out.result;
   13295             : 
   13296           0 :         tevent_req_received(req);
   13297           0 :         return NT_STATUS_OK;
   13298             : }
   13299             : 
   13300           0 : NTSTATUS dcerpc_spoolss_DeletePrinterData(struct dcerpc_binding_handle *h,
   13301             :                                           TALLOC_CTX *mem_ctx,
   13302             :                                           struct policy_handle *_handle /* [in] [ref] */,
   13303             :                                           const char *_value_name /* [in] [charset(UTF16)] */,
   13304             :                                           WERROR *result)
   13305             : {
   13306           0 :         struct spoolss_DeletePrinterData r;
   13307           0 :         NTSTATUS status;
   13308             : 
   13309             :         /* In parameters */
   13310           0 :         r.in.handle = _handle;
   13311           0 :         r.in.value_name = _value_name;
   13312             : 
   13313             :         /* Out parameters */
   13314             : 
   13315             :         /* Result */
   13316           0 :         NDR_ZERO_STRUCT(r.out.result);
   13317             : 
   13318           0 :         status = dcerpc_spoolss_DeletePrinterData_r(h, mem_ctx, &r);
   13319           0 :         if (!NT_STATUS_IS_OK(status)) {
   13320           0 :                 return status;
   13321             :         }
   13322             : 
   13323             :         /* Return variables */
   13324             : 
   13325             :         /* Return result */
   13326           0 :         *result = r.out.result;
   13327             : 
   13328           0 :         return NT_STATUS_OK;
   13329             : }
   13330             : 
   13331             : struct dcerpc_spoolss_SetPrinterDataEx_r_state {
   13332             :         TALLOC_CTX *out_mem_ctx;
   13333             : };
   13334             : 
   13335             : static void dcerpc_spoolss_SetPrinterDataEx_r_done(struct tevent_req *subreq);
   13336             : 
   13337           0 : struct tevent_req *dcerpc_spoolss_SetPrinterDataEx_r_send(TALLOC_CTX *mem_ctx,
   13338             :         struct tevent_context *ev,
   13339             :         struct dcerpc_binding_handle *h,
   13340             :         struct spoolss_SetPrinterDataEx *r)
   13341             : {
   13342           0 :         struct tevent_req *req;
   13343           0 :         struct dcerpc_spoolss_SetPrinterDataEx_r_state *state;
   13344           0 :         struct tevent_req *subreq;
   13345             : 
   13346           0 :         req = tevent_req_create(mem_ctx, &state,
   13347             :                                 struct dcerpc_spoolss_SetPrinterDataEx_r_state);
   13348           0 :         if (req == NULL) {
   13349           0 :                 return NULL;
   13350             :         }
   13351             : 
   13352           0 :         state->out_mem_ctx = NULL;
   13353             : 
   13354           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   13355             :                         NULL, &ndr_table_spoolss,
   13356             :                         NDR_SPOOLSS_SETPRINTERDATAEX, state, r);
   13357           0 :         if (tevent_req_nomem(subreq, req)) {
   13358           0 :                 return tevent_req_post(req, ev);
   13359             :         }
   13360           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_SetPrinterDataEx_r_done, req);
   13361             : 
   13362           0 :         return req;
   13363             : }
   13364             : 
   13365           0 : static void dcerpc_spoolss_SetPrinterDataEx_r_done(struct tevent_req *subreq)
   13366             : {
   13367           0 :         struct tevent_req *req =
   13368           0 :                 tevent_req_callback_data(subreq,
   13369             :                 struct tevent_req);
   13370           0 :         NTSTATUS status;
   13371             : 
   13372           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   13373           0 :         TALLOC_FREE(subreq);
   13374           0 :         if (tevent_req_nterror(req, status)) {
   13375           0 :                 return;
   13376             :         }
   13377             : 
   13378           0 :         tevent_req_done(req);
   13379             : }
   13380             : 
   13381           0 : NTSTATUS dcerpc_spoolss_SetPrinterDataEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   13382             : {
   13383           0 :         struct dcerpc_spoolss_SetPrinterDataEx_r_state *state =
   13384           0 :                 tevent_req_data(req,
   13385             :                 struct dcerpc_spoolss_SetPrinterDataEx_r_state);
   13386           0 :         NTSTATUS status;
   13387             : 
   13388           0 :         if (tevent_req_is_nterror(req, &status)) {
   13389           0 :                 tevent_req_received(req);
   13390           0 :                 return status;
   13391             :         }
   13392             : 
   13393           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   13394             : 
   13395           0 :         tevent_req_received(req);
   13396           0 :         return NT_STATUS_OK;
   13397             : }
   13398             : 
   13399        1200 : NTSTATUS dcerpc_spoolss_SetPrinterDataEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_SetPrinterDataEx *r)
   13400             : {
   13401           0 :         NTSTATUS status;
   13402             : 
   13403        1200 :         status = dcerpc_binding_handle_call(h,
   13404             :                         NULL, &ndr_table_spoolss,
   13405             :                         NDR_SPOOLSS_SETPRINTERDATAEX, mem_ctx, r);
   13406             : 
   13407        1200 :         return status;
   13408             : }
   13409             : 
   13410             : struct dcerpc_spoolss_SetPrinterDataEx_state {
   13411             :         struct spoolss_SetPrinterDataEx orig;
   13412             :         struct spoolss_SetPrinterDataEx tmp;
   13413             :         TALLOC_CTX *out_mem_ctx;
   13414             : };
   13415             : 
   13416             : static void dcerpc_spoolss_SetPrinterDataEx_done(struct tevent_req *subreq);
   13417             : 
   13418           0 : struct tevent_req *dcerpc_spoolss_SetPrinterDataEx_send(TALLOC_CTX *mem_ctx,
   13419             :                                                         struct tevent_context *ev,
   13420             :                                                         struct dcerpc_binding_handle *h,
   13421             :                                                         struct policy_handle *_handle /* [in] [ref] */,
   13422             :                                                         const char *_key_name /* [in] [charset(UTF16)] */,
   13423             :                                                         const char *_value_name /* [in] [charset(UTF16)] */,
   13424             :                                                         enum winreg_Type _type /* [in]  */,
   13425             :                                                         uint8_t *_data /* [in] [ref,size_is(offered)] */,
   13426             :                                                         uint32_t _offered /* [in]  */)
   13427             : {
   13428           0 :         struct tevent_req *req;
   13429           0 :         struct dcerpc_spoolss_SetPrinterDataEx_state *state;
   13430           0 :         struct tevent_req *subreq;
   13431             : 
   13432           0 :         req = tevent_req_create(mem_ctx, &state,
   13433             :                                 struct dcerpc_spoolss_SetPrinterDataEx_state);
   13434           0 :         if (req == NULL) {
   13435           0 :                 return NULL;
   13436             :         }
   13437           0 :         state->out_mem_ctx = NULL;
   13438             : 
   13439             :         /* In parameters */
   13440           0 :         state->orig.in.handle = _handle;
   13441           0 :         state->orig.in.key_name = _key_name;
   13442           0 :         state->orig.in.value_name = _value_name;
   13443           0 :         state->orig.in.type = _type;
   13444           0 :         state->orig.in.data = _data;
   13445           0 :         state->orig.in.offered = _offered;
   13446             : 
   13447             :         /* Out parameters */
   13448             : 
   13449             :         /* Result */
   13450           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   13451             : 
   13452             :         /* make a temporary copy, that we pass to the dispatch function */
   13453           0 :         state->tmp = state->orig;
   13454             : 
   13455           0 :         subreq = dcerpc_spoolss_SetPrinterDataEx_r_send(state, ev, h, &state->tmp);
   13456           0 :         if (tevent_req_nomem(subreq, req)) {
   13457           0 :                 return tevent_req_post(req, ev);
   13458             :         }
   13459           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_SetPrinterDataEx_done, req);
   13460           0 :         return req;
   13461             : }
   13462             : 
   13463           0 : static void dcerpc_spoolss_SetPrinterDataEx_done(struct tevent_req *subreq)
   13464             : {
   13465           0 :         struct tevent_req *req = tevent_req_callback_data(
   13466             :                 subreq, struct tevent_req);
   13467           0 :         struct dcerpc_spoolss_SetPrinterDataEx_state *state = tevent_req_data(
   13468             :                 req, struct dcerpc_spoolss_SetPrinterDataEx_state);
   13469           0 :         NTSTATUS status;
   13470           0 :         TALLOC_CTX *mem_ctx;
   13471             : 
   13472           0 :         if (state->out_mem_ctx) {
   13473           0 :                 mem_ctx = state->out_mem_ctx;
   13474             :         } else {
   13475           0 :                 mem_ctx = state;
   13476             :         }
   13477             : 
   13478           0 :         status = dcerpc_spoolss_SetPrinterDataEx_r_recv(subreq, mem_ctx);
   13479           0 :         TALLOC_FREE(subreq);
   13480           0 :         if (tevent_req_nterror(req, status)) {
   13481           0 :                 return;
   13482             :         }
   13483             : 
   13484             :         /* Copy out parameters */
   13485             : 
   13486             :         /* Copy result */
   13487           0 :         state->orig.out.result = state->tmp.out.result;
   13488             : 
   13489             :         /* Reset temporary structure */
   13490           0 :         NDR_ZERO_STRUCT(state->tmp);
   13491             : 
   13492           0 :         tevent_req_done(req);
   13493             : }
   13494             : 
   13495           0 : NTSTATUS dcerpc_spoolss_SetPrinterDataEx_recv(struct tevent_req *req,
   13496             :                                               TALLOC_CTX *mem_ctx,
   13497             :                                               WERROR *result)
   13498             : {
   13499           0 :         struct dcerpc_spoolss_SetPrinterDataEx_state *state = tevent_req_data(
   13500             :                 req, struct dcerpc_spoolss_SetPrinterDataEx_state);
   13501           0 :         NTSTATUS status;
   13502             : 
   13503           0 :         if (tevent_req_is_nterror(req, &status)) {
   13504           0 :                 tevent_req_received(req);
   13505           0 :                 return status;
   13506             :         }
   13507             : 
   13508             :         /* Steal possible out parameters to the callers context */
   13509           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   13510             : 
   13511             :         /* Return result */
   13512           0 :         *result = state->orig.out.result;
   13513             : 
   13514           0 :         tevent_req_received(req);
   13515           0 :         return NT_STATUS_OK;
   13516             : }
   13517             : 
   13518           0 : NTSTATUS dcerpc_spoolss_SetPrinterDataEx(struct dcerpc_binding_handle *h,
   13519             :                                          TALLOC_CTX *mem_ctx,
   13520             :                                          struct policy_handle *_handle /* [in] [ref] */,
   13521             :                                          const char *_key_name /* [in] [charset(UTF16)] */,
   13522             :                                          const char *_value_name /* [in] [charset(UTF16)] */,
   13523             :                                          enum winreg_Type _type /* [in]  */,
   13524             :                                          uint8_t *_data /* [in] [ref,size_is(offered)] */,
   13525             :                                          uint32_t _offered /* [in]  */,
   13526             :                                          WERROR *result)
   13527             : {
   13528           0 :         struct spoolss_SetPrinterDataEx r;
   13529           0 :         NTSTATUS status;
   13530             : 
   13531             :         /* In parameters */
   13532           0 :         r.in.handle = _handle;
   13533           0 :         r.in.key_name = _key_name;
   13534           0 :         r.in.value_name = _value_name;
   13535           0 :         r.in.type = _type;
   13536           0 :         r.in.data = _data;
   13537           0 :         r.in.offered = _offered;
   13538             : 
   13539             :         /* Out parameters */
   13540             : 
   13541             :         /* Result */
   13542           0 :         NDR_ZERO_STRUCT(r.out.result);
   13543             : 
   13544           0 :         status = dcerpc_spoolss_SetPrinterDataEx_r(h, mem_ctx, &r);
   13545           0 :         if (!NT_STATUS_IS_OK(status)) {
   13546           0 :                 return status;
   13547             :         }
   13548             : 
   13549             :         /* Return variables */
   13550             : 
   13551             :         /* Return result */
   13552           0 :         *result = r.out.result;
   13553             : 
   13554           0 :         return NT_STATUS_OK;
   13555             : }
   13556             : 
   13557             : struct dcerpc_spoolss_GetPrinterDataEx_r_state {
   13558             :         TALLOC_CTX *out_mem_ctx;
   13559             : };
   13560             : 
   13561             : static void dcerpc_spoolss_GetPrinterDataEx_r_done(struct tevent_req *subreq);
   13562             : 
   13563           0 : struct tevent_req *dcerpc_spoolss_GetPrinterDataEx_r_send(TALLOC_CTX *mem_ctx,
   13564             :         struct tevent_context *ev,
   13565             :         struct dcerpc_binding_handle *h,
   13566             :         struct spoolss_GetPrinterDataEx *r)
   13567             : {
   13568           0 :         struct tevent_req *req;
   13569           0 :         struct dcerpc_spoolss_GetPrinterDataEx_r_state *state;
   13570           0 :         struct tevent_req *subreq;
   13571             : 
   13572           0 :         req = tevent_req_create(mem_ctx, &state,
   13573             :                                 struct dcerpc_spoolss_GetPrinterDataEx_r_state);
   13574           0 :         if (req == NULL) {
   13575           0 :                 return NULL;
   13576             :         }
   13577             : 
   13578           0 :         state->out_mem_ctx = talloc_new(state);
   13579           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   13580           0 :                 return tevent_req_post(req, ev);
   13581             :         }
   13582             : 
   13583           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   13584             :                         NULL, &ndr_table_spoolss,
   13585           0 :                         NDR_SPOOLSS_GETPRINTERDATAEX, state->out_mem_ctx, r);
   13586           0 :         if (tevent_req_nomem(subreq, req)) {
   13587           0 :                 return tevent_req_post(req, ev);
   13588             :         }
   13589           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDataEx_r_done, req);
   13590             : 
   13591           0 :         return req;
   13592             : }
   13593             : 
   13594           0 : static void dcerpc_spoolss_GetPrinterDataEx_r_done(struct tevent_req *subreq)
   13595             : {
   13596           0 :         struct tevent_req *req =
   13597           0 :                 tevent_req_callback_data(subreq,
   13598             :                 struct tevent_req);
   13599           0 :         NTSTATUS status;
   13600             : 
   13601           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   13602           0 :         TALLOC_FREE(subreq);
   13603           0 :         if (tevent_req_nterror(req, status)) {
   13604           0 :                 return;
   13605             :         }
   13606             : 
   13607           0 :         tevent_req_done(req);
   13608             : }
   13609             : 
   13610           0 : NTSTATUS dcerpc_spoolss_GetPrinterDataEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   13611             : {
   13612           0 :         struct dcerpc_spoolss_GetPrinterDataEx_r_state *state =
   13613           0 :                 tevent_req_data(req,
   13614             :                 struct dcerpc_spoolss_GetPrinterDataEx_r_state);
   13615           0 :         NTSTATUS status;
   13616             : 
   13617           0 :         if (tevent_req_is_nterror(req, &status)) {
   13618           0 :                 tevent_req_received(req);
   13619           0 :                 return status;
   13620             :         }
   13621             : 
   13622           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   13623             : 
   13624           0 :         tevent_req_received(req);
   13625           0 :         return NT_STATUS_OK;
   13626             : }
   13627             : 
   13628        2700 : NTSTATUS dcerpc_spoolss_GetPrinterDataEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDataEx *r)
   13629             : {
   13630           0 :         NTSTATUS status;
   13631             : 
   13632        2700 :         status = dcerpc_binding_handle_call(h,
   13633             :                         NULL, &ndr_table_spoolss,
   13634             :                         NDR_SPOOLSS_GETPRINTERDATAEX, mem_ctx, r);
   13635             : 
   13636        2700 :         return status;
   13637             : }
   13638             : 
   13639             : struct dcerpc_spoolss_GetPrinterDataEx_state {
   13640             :         struct spoolss_GetPrinterDataEx orig;
   13641             :         struct spoolss_GetPrinterDataEx tmp;
   13642             :         TALLOC_CTX *out_mem_ctx;
   13643             : };
   13644             : 
   13645             : static void dcerpc_spoolss_GetPrinterDataEx_done(struct tevent_req *subreq);
   13646             : 
   13647           0 : struct tevent_req *dcerpc_spoolss_GetPrinterDataEx_send(TALLOC_CTX *mem_ctx,
   13648             :                                                         struct tevent_context *ev,
   13649             :                                                         struct dcerpc_binding_handle *h,
   13650             :                                                         struct policy_handle *_handle /* [in] [ref] */,
   13651             :                                                         const char *_key_name /* [in] [charset(UTF16)] */,
   13652             :                                                         const char *_value_name /* [in] [charset(UTF16)] */,
   13653             :                                                         enum winreg_Type *_type /* [out] [ref] */,
   13654             :                                                         uint8_t *_data /* [out] [ref,size_is(offered)] */,
   13655             :                                                         uint32_t _offered /* [in]  */,
   13656             :                                                         uint32_t *_needed /* [out] [ref] */)
   13657             : {
   13658           0 :         struct tevent_req *req;
   13659           0 :         struct dcerpc_spoolss_GetPrinterDataEx_state *state;
   13660           0 :         struct tevent_req *subreq;
   13661             : 
   13662           0 :         req = tevent_req_create(mem_ctx, &state,
   13663             :                                 struct dcerpc_spoolss_GetPrinterDataEx_state);
   13664           0 :         if (req == NULL) {
   13665           0 :                 return NULL;
   13666             :         }
   13667           0 :         state->out_mem_ctx = NULL;
   13668             : 
   13669             :         /* In parameters */
   13670           0 :         state->orig.in.handle = _handle;
   13671           0 :         state->orig.in.key_name = _key_name;
   13672           0 :         state->orig.in.value_name = _value_name;
   13673           0 :         state->orig.in.offered = _offered;
   13674             : 
   13675             :         /* Out parameters */
   13676           0 :         state->orig.out.type = _type;
   13677           0 :         state->orig.out.data = _data;
   13678           0 :         state->orig.out.needed = _needed;
   13679             : 
   13680             :         /* Result */
   13681           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   13682             : 
   13683           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   13684             :                              "dcerpc_spoolss_GetPrinterDataEx_out_memory");
   13685           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   13686           0 :                 return tevent_req_post(req, ev);
   13687             :         }
   13688             : 
   13689             :         /* make a temporary copy, that we pass to the dispatch function */
   13690           0 :         state->tmp = state->orig;
   13691             : 
   13692           0 :         subreq = dcerpc_spoolss_GetPrinterDataEx_r_send(state, ev, h, &state->tmp);
   13693           0 :         if (tevent_req_nomem(subreq, req)) {
   13694           0 :                 return tevent_req_post(req, ev);
   13695             :         }
   13696           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDataEx_done, req);
   13697           0 :         return req;
   13698             : }
   13699             : 
   13700           0 : static void dcerpc_spoolss_GetPrinterDataEx_done(struct tevent_req *subreq)
   13701             : {
   13702           0 :         struct tevent_req *req = tevent_req_callback_data(
   13703             :                 subreq, struct tevent_req);
   13704           0 :         struct dcerpc_spoolss_GetPrinterDataEx_state *state = tevent_req_data(
   13705             :                 req, struct dcerpc_spoolss_GetPrinterDataEx_state);
   13706           0 :         NTSTATUS status;
   13707           0 :         TALLOC_CTX *mem_ctx;
   13708             : 
   13709           0 :         if (state->out_mem_ctx) {
   13710           0 :                 mem_ctx = state->out_mem_ctx;
   13711             :         } else {
   13712           0 :                 mem_ctx = state;
   13713             :         }
   13714             : 
   13715           0 :         status = dcerpc_spoolss_GetPrinterDataEx_r_recv(subreq, mem_ctx);
   13716           0 :         TALLOC_FREE(subreq);
   13717           0 :         if (tevent_req_nterror(req, status)) {
   13718           0 :                 return;
   13719             :         }
   13720             : 
   13721             :         /* Copy out parameters */
   13722           0 :         *state->orig.out.type = *state->tmp.out.type;
   13723             :         {
   13724           0 :                 size_t _copy_len_data;
   13725           0 :                 _copy_len_data = state->tmp.in.offered;
   13726           0 :                 if (state->orig.out.data != state->tmp.out.data) {
   13727           0 :                         memcpy(state->orig.out.data, state->tmp.out.data, _copy_len_data * sizeof(*state->orig.out.data));
   13728             :                 }
   13729             :         }
   13730           0 :         *state->orig.out.needed = *state->tmp.out.needed;
   13731             : 
   13732             :         /* Copy result */
   13733           0 :         state->orig.out.result = state->tmp.out.result;
   13734             : 
   13735             :         /* Reset temporary structure */
   13736           0 :         NDR_ZERO_STRUCT(state->tmp);
   13737             : 
   13738           0 :         tevent_req_done(req);
   13739             : }
   13740             : 
   13741           0 : NTSTATUS dcerpc_spoolss_GetPrinterDataEx_recv(struct tevent_req *req,
   13742             :                                               TALLOC_CTX *mem_ctx,
   13743             :                                               WERROR *result)
   13744             : {
   13745           0 :         struct dcerpc_spoolss_GetPrinterDataEx_state *state = tevent_req_data(
   13746             :                 req, struct dcerpc_spoolss_GetPrinterDataEx_state);
   13747           0 :         NTSTATUS status;
   13748             : 
   13749           0 :         if (tevent_req_is_nterror(req, &status)) {
   13750           0 :                 tevent_req_received(req);
   13751           0 :                 return status;
   13752             :         }
   13753             : 
   13754             :         /* Steal possible out parameters to the callers context */
   13755           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   13756             : 
   13757             :         /* Return result */
   13758           0 :         *result = state->orig.out.result;
   13759             : 
   13760           0 :         tevent_req_received(req);
   13761           0 :         return NT_STATUS_OK;
   13762             : }
   13763             : 
   13764           0 : NTSTATUS dcerpc_spoolss_GetPrinterDataEx(struct dcerpc_binding_handle *h,
   13765             :                                          TALLOC_CTX *mem_ctx,
   13766             :                                          struct policy_handle *_handle /* [in] [ref] */,
   13767             :                                          const char *_key_name /* [in] [charset(UTF16)] */,
   13768             :                                          const char *_value_name /* [in] [charset(UTF16)] */,
   13769             :                                          enum winreg_Type *_type /* [out] [ref] */,
   13770             :                                          uint8_t *_data /* [out] [ref,size_is(offered)] */,
   13771             :                                          uint32_t _offered /* [in]  */,
   13772             :                                          uint32_t *_needed /* [out] [ref] */,
   13773             :                                          WERROR *result)
   13774             : {
   13775           0 :         struct spoolss_GetPrinterDataEx r;
   13776           0 :         NTSTATUS status;
   13777             : 
   13778             :         /* In parameters */
   13779           0 :         r.in.handle = _handle;
   13780           0 :         r.in.key_name = _key_name;
   13781           0 :         r.in.value_name = _value_name;
   13782           0 :         r.in.offered = _offered;
   13783             : 
   13784             :         /* Out parameters */
   13785           0 :         r.out.type = _type;
   13786           0 :         r.out.data = _data;
   13787           0 :         r.out.needed = _needed;
   13788             : 
   13789             :         /* Result */
   13790           0 :         NDR_ZERO_STRUCT(r.out.result);
   13791             : 
   13792           0 :         status = dcerpc_spoolss_GetPrinterDataEx_r(h, mem_ctx, &r);
   13793           0 :         if (!NT_STATUS_IS_OK(status)) {
   13794           0 :                 return status;
   13795             :         }
   13796             : 
   13797             :         /* Return variables */
   13798           0 :         *_type = *r.out.type;
   13799             :         {
   13800           0 :                 size_t _copy_len_data;
   13801           0 :                 _copy_len_data = r.in.offered;
   13802           0 :                 if (_data != r.out.data) {
   13803           0 :                         memcpy(_data, r.out.data, _copy_len_data * sizeof(*_data));
   13804             :                 }
   13805             :         }
   13806           0 :         *_needed = *r.out.needed;
   13807             : 
   13808             :         /* Return result */
   13809           0 :         *result = r.out.result;
   13810             : 
   13811           0 :         return NT_STATUS_OK;
   13812             : }
   13813             : 
   13814             : struct dcerpc_spoolss_EnumPrinterDataEx_r_state {
   13815             :         TALLOC_CTX *out_mem_ctx;
   13816             : };
   13817             : 
   13818             : static void dcerpc_spoolss_EnumPrinterDataEx_r_done(struct tevent_req *subreq);
   13819             : 
   13820           0 : struct tevent_req *dcerpc_spoolss_EnumPrinterDataEx_r_send(TALLOC_CTX *mem_ctx,
   13821             :         struct tevent_context *ev,
   13822             :         struct dcerpc_binding_handle *h,
   13823             :         struct spoolss_EnumPrinterDataEx *r)
   13824             : {
   13825           0 :         struct tevent_req *req;
   13826           0 :         struct dcerpc_spoolss_EnumPrinterDataEx_r_state *state;
   13827           0 :         struct tevent_req *subreq;
   13828             : 
   13829           0 :         req = tevent_req_create(mem_ctx, &state,
   13830             :                                 struct dcerpc_spoolss_EnumPrinterDataEx_r_state);
   13831           0 :         if (req == NULL) {
   13832           0 :                 return NULL;
   13833             :         }
   13834             : 
   13835           0 :         state->out_mem_ctx = talloc_new(state);
   13836           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   13837           0 :                 return tevent_req_post(req, ev);
   13838             :         }
   13839             : 
   13840           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   13841             :                         NULL, &ndr_table_spoolss,
   13842           0 :                         NDR_SPOOLSS_ENUMPRINTERDATAEX, state->out_mem_ctx, r);
   13843           0 :         if (tevent_req_nomem(subreq, req)) {
   13844           0 :                 return tevent_req_post(req, ev);
   13845             :         }
   13846           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterDataEx_r_done, req);
   13847             : 
   13848           0 :         return req;
   13849             : }
   13850             : 
   13851           0 : static void dcerpc_spoolss_EnumPrinterDataEx_r_done(struct tevent_req *subreq)
   13852             : {
   13853           0 :         struct tevent_req *req =
   13854           0 :                 tevent_req_callback_data(subreq,
   13855             :                 struct tevent_req);
   13856           0 :         NTSTATUS status;
   13857             : 
   13858           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   13859           0 :         TALLOC_FREE(subreq);
   13860           0 :         if (tevent_req_nterror(req, status)) {
   13861           0 :                 return;
   13862             :         }
   13863             : 
   13864           0 :         tevent_req_done(req);
   13865             : }
   13866             : 
   13867           0 : NTSTATUS dcerpc_spoolss_EnumPrinterDataEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   13868             : {
   13869           0 :         struct dcerpc_spoolss_EnumPrinterDataEx_r_state *state =
   13870           0 :                 tevent_req_data(req,
   13871             :                 struct dcerpc_spoolss_EnumPrinterDataEx_r_state);
   13872           0 :         NTSTATUS status;
   13873             : 
   13874           0 :         if (tevent_req_is_nterror(req, &status)) {
   13875           0 :                 tevent_req_received(req);
   13876           0 :                 return status;
   13877             :         }
   13878             : 
   13879           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   13880             : 
   13881           0 :         tevent_req_received(req);
   13882           0 :         return NT_STATUS_OK;
   13883             : }
   13884             : 
   13885        2596 : NTSTATUS dcerpc_spoolss_EnumPrinterDataEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterDataEx *r)
   13886             : {
   13887           0 :         NTSTATUS status;
   13888             : 
   13889        2596 :         status = dcerpc_binding_handle_call(h,
   13890             :                         NULL, &ndr_table_spoolss,
   13891             :                         NDR_SPOOLSS_ENUMPRINTERDATAEX, mem_ctx, r);
   13892             : 
   13893        2596 :         return status;
   13894             : }
   13895             : 
   13896             : struct dcerpc_spoolss_EnumPrinterDataEx_state {
   13897             :         struct spoolss_EnumPrinterDataEx orig;
   13898             :         struct spoolss_EnumPrinterDataEx tmp;
   13899             :         TALLOC_CTX *out_mem_ctx;
   13900             : };
   13901             : 
   13902             : static void dcerpc_spoolss_EnumPrinterDataEx_done(struct tevent_req *subreq);
   13903             : 
   13904           0 : struct tevent_req *dcerpc_spoolss_EnumPrinterDataEx_send(TALLOC_CTX *mem_ctx,
   13905             :                                                          struct tevent_context *ev,
   13906             :                                                          struct dcerpc_binding_handle *h,
   13907             :                                                          struct policy_handle *_handle /* [in] [ref] */,
   13908             :                                                          const char *_key_name /* [in] [charset(UTF16)] */,
   13909             :                                                          uint32_t _offered /* [in]  */,
   13910             :                                                          uint32_t *_count /* [out] [ref] */,
   13911             :                                                          struct spoolss_PrinterEnumValues **_info /* [out] [ref,size_is(,*count)] */,
   13912             :                                                          uint32_t *_needed /* [out] [ref] */)
   13913             : {
   13914           0 :         struct tevent_req *req;
   13915           0 :         struct dcerpc_spoolss_EnumPrinterDataEx_state *state;
   13916           0 :         struct tevent_req *subreq;
   13917             : 
   13918           0 :         req = tevent_req_create(mem_ctx, &state,
   13919             :                                 struct dcerpc_spoolss_EnumPrinterDataEx_state);
   13920           0 :         if (req == NULL) {
   13921           0 :                 return NULL;
   13922             :         }
   13923           0 :         state->out_mem_ctx = NULL;
   13924             : 
   13925             :         /* In parameters */
   13926           0 :         state->orig.in.handle = _handle;
   13927           0 :         state->orig.in.key_name = _key_name;
   13928           0 :         state->orig.in.offered = _offered;
   13929             : 
   13930             :         /* Out parameters */
   13931           0 :         state->orig.out.count = _count;
   13932           0 :         state->orig.out.info = _info;
   13933           0 :         state->orig.out.needed = _needed;
   13934             : 
   13935             :         /* Result */
   13936           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   13937             : 
   13938           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   13939             :                              "dcerpc_spoolss_EnumPrinterDataEx_out_memory");
   13940           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   13941           0 :                 return tevent_req_post(req, ev);
   13942             :         }
   13943             : 
   13944             :         /* make a temporary copy, that we pass to the dispatch function */
   13945           0 :         state->tmp = state->orig;
   13946             : 
   13947           0 :         subreq = dcerpc_spoolss_EnumPrinterDataEx_r_send(state, ev, h, &state->tmp);
   13948           0 :         if (tevent_req_nomem(subreq, req)) {
   13949           0 :                 return tevent_req_post(req, ev);
   13950             :         }
   13951           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterDataEx_done, req);
   13952           0 :         return req;
   13953             : }
   13954             : 
   13955           0 : static void dcerpc_spoolss_EnumPrinterDataEx_done(struct tevent_req *subreq)
   13956             : {
   13957           0 :         struct tevent_req *req = tevent_req_callback_data(
   13958             :                 subreq, struct tevent_req);
   13959           0 :         struct dcerpc_spoolss_EnumPrinterDataEx_state *state = tevent_req_data(
   13960             :                 req, struct dcerpc_spoolss_EnumPrinterDataEx_state);
   13961           0 :         NTSTATUS status;
   13962           0 :         TALLOC_CTX *mem_ctx;
   13963             : 
   13964           0 :         if (state->out_mem_ctx) {
   13965           0 :                 mem_ctx = state->out_mem_ctx;
   13966             :         } else {
   13967           0 :                 mem_ctx = state;
   13968             :         }
   13969             : 
   13970           0 :         status = dcerpc_spoolss_EnumPrinterDataEx_r_recv(subreq, mem_ctx);
   13971           0 :         TALLOC_FREE(subreq);
   13972           0 :         if (tevent_req_nterror(req, status)) {
   13973           0 :                 return;
   13974             :         }
   13975             : 
   13976             :         /* Copy out parameters */
   13977           0 :         *state->orig.out.count = *state->tmp.out.count;
   13978           0 :         *state->orig.out.info = *state->tmp.out.info;
   13979           0 :         *state->orig.out.needed = *state->tmp.out.needed;
   13980             : 
   13981             :         /* Copy result */
   13982           0 :         state->orig.out.result = state->tmp.out.result;
   13983             : 
   13984             :         /* Reset temporary structure */
   13985           0 :         NDR_ZERO_STRUCT(state->tmp);
   13986             : 
   13987           0 :         tevent_req_done(req);
   13988             : }
   13989             : 
   13990           0 : NTSTATUS dcerpc_spoolss_EnumPrinterDataEx_recv(struct tevent_req *req,
   13991             :                                                TALLOC_CTX *mem_ctx,
   13992             :                                                WERROR *result)
   13993             : {
   13994           0 :         struct dcerpc_spoolss_EnumPrinterDataEx_state *state = tevent_req_data(
   13995             :                 req, struct dcerpc_spoolss_EnumPrinterDataEx_state);
   13996           0 :         NTSTATUS status;
   13997             : 
   13998           0 :         if (tevent_req_is_nterror(req, &status)) {
   13999           0 :                 tevent_req_received(req);
   14000           0 :                 return status;
   14001             :         }
   14002             : 
   14003             :         /* Steal possible out parameters to the callers context */
   14004           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   14005             : 
   14006             :         /* Return result */
   14007           0 :         *result = state->orig.out.result;
   14008             : 
   14009           0 :         tevent_req_received(req);
   14010           0 :         return NT_STATUS_OK;
   14011             : }
   14012             : 
   14013           0 : NTSTATUS dcerpc_spoolss_EnumPrinterDataEx(struct dcerpc_binding_handle *h,
   14014             :                                           TALLOC_CTX *mem_ctx,
   14015             :                                           struct policy_handle *_handle /* [in] [ref] */,
   14016             :                                           const char *_key_name /* [in] [charset(UTF16)] */,
   14017             :                                           uint32_t _offered /* [in]  */,
   14018             :                                           uint32_t *_count /* [out] [ref] */,
   14019             :                                           struct spoolss_PrinterEnumValues **_info /* [out] [ref,size_is(,*count)] */,
   14020             :                                           uint32_t *_needed /* [out] [ref] */,
   14021             :                                           WERROR *result)
   14022             : {
   14023           0 :         struct spoolss_EnumPrinterDataEx r;
   14024           0 :         NTSTATUS status;
   14025             : 
   14026             :         /* In parameters */
   14027           0 :         r.in.handle = _handle;
   14028           0 :         r.in.key_name = _key_name;
   14029           0 :         r.in.offered = _offered;
   14030             : 
   14031             :         /* Out parameters */
   14032           0 :         r.out.count = _count;
   14033           0 :         r.out.info = _info;
   14034           0 :         r.out.needed = _needed;
   14035             : 
   14036             :         /* Result */
   14037           0 :         NDR_ZERO_STRUCT(r.out.result);
   14038             : 
   14039           0 :         status = dcerpc_spoolss_EnumPrinterDataEx_r(h, mem_ctx, &r);
   14040           0 :         if (!NT_STATUS_IS_OK(status)) {
   14041           0 :                 return status;
   14042             :         }
   14043             : 
   14044             :         /* Return variables */
   14045           0 :         *_count = *r.out.count;
   14046           0 :         *_info = *r.out.info;
   14047           0 :         *_needed = *r.out.needed;
   14048             : 
   14049             :         /* Return result */
   14050           0 :         *result = r.out.result;
   14051             : 
   14052           0 :         return NT_STATUS_OK;
   14053             : }
   14054             : 
   14055             : struct dcerpc_spoolss_EnumPrinterKey_r_state {
   14056             :         TALLOC_CTX *out_mem_ctx;
   14057             : };
   14058             : 
   14059             : static void dcerpc_spoolss_EnumPrinterKey_r_done(struct tevent_req *subreq);
   14060             : 
   14061           0 : struct tevent_req *dcerpc_spoolss_EnumPrinterKey_r_send(TALLOC_CTX *mem_ctx,
   14062             :         struct tevent_context *ev,
   14063             :         struct dcerpc_binding_handle *h,
   14064             :         struct spoolss_EnumPrinterKey *r)
   14065             : {
   14066           0 :         struct tevent_req *req;
   14067           0 :         struct dcerpc_spoolss_EnumPrinterKey_r_state *state;
   14068           0 :         struct tevent_req *subreq;
   14069             : 
   14070           0 :         req = tevent_req_create(mem_ctx, &state,
   14071             :                                 struct dcerpc_spoolss_EnumPrinterKey_r_state);
   14072           0 :         if (req == NULL) {
   14073           0 :                 return NULL;
   14074             :         }
   14075             : 
   14076           0 :         state->out_mem_ctx = talloc_new(state);
   14077           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   14078           0 :                 return tevent_req_post(req, ev);
   14079             :         }
   14080             : 
   14081           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   14082             :                         NULL, &ndr_table_spoolss,
   14083           0 :                         NDR_SPOOLSS_ENUMPRINTERKEY, state->out_mem_ctx, r);
   14084           0 :         if (tevent_req_nomem(subreq, req)) {
   14085           0 :                 return tevent_req_post(req, ev);
   14086             :         }
   14087           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterKey_r_done, req);
   14088             : 
   14089           0 :         return req;
   14090             : }
   14091             : 
   14092           0 : static void dcerpc_spoolss_EnumPrinterKey_r_done(struct tevent_req *subreq)
   14093             : {
   14094           0 :         struct tevent_req *req =
   14095           0 :                 tevent_req_callback_data(subreq,
   14096             :                 struct tevent_req);
   14097           0 :         NTSTATUS status;
   14098             : 
   14099           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   14100           0 :         TALLOC_FREE(subreq);
   14101           0 :         if (tevent_req_nterror(req, status)) {
   14102           0 :                 return;
   14103             :         }
   14104             : 
   14105           0 :         tevent_req_done(req);
   14106             : }
   14107             : 
   14108           0 : NTSTATUS dcerpc_spoolss_EnumPrinterKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   14109             : {
   14110           0 :         struct dcerpc_spoolss_EnumPrinterKey_r_state *state =
   14111           0 :                 tevent_req_data(req,
   14112             :                 struct dcerpc_spoolss_EnumPrinterKey_r_state);
   14113           0 :         NTSTATUS status;
   14114             : 
   14115           0 :         if (tevent_req_is_nterror(req, &status)) {
   14116           0 :                 tevent_req_received(req);
   14117           0 :                 return status;
   14118             :         }
   14119             : 
   14120           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   14121             : 
   14122           0 :         tevent_req_received(req);
   14123           0 :         return NT_STATUS_OK;
   14124             : }
   14125             : 
   14126        3384 : NTSTATUS dcerpc_spoolss_EnumPrinterKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterKey *r)
   14127             : {
   14128           0 :         NTSTATUS status;
   14129             : 
   14130        3384 :         status = dcerpc_binding_handle_call(h,
   14131             :                         NULL, &ndr_table_spoolss,
   14132             :                         NDR_SPOOLSS_ENUMPRINTERKEY, mem_ctx, r);
   14133             : 
   14134        3384 :         return status;
   14135             : }
   14136             : 
   14137             : struct dcerpc_spoolss_EnumPrinterKey_state {
   14138             :         struct spoolss_EnumPrinterKey orig;
   14139             :         struct spoolss_EnumPrinterKey tmp;
   14140             :         TALLOC_CTX *out_mem_ctx;
   14141             : };
   14142             : 
   14143             : static void dcerpc_spoolss_EnumPrinterKey_done(struct tevent_req *subreq);
   14144             : 
   14145           0 : struct tevent_req *dcerpc_spoolss_EnumPrinterKey_send(TALLOC_CTX *mem_ctx,
   14146             :                                                       struct tevent_context *ev,
   14147             :                                                       struct dcerpc_binding_handle *h,
   14148             :                                                       struct policy_handle *_handle /* [in] [ref] */,
   14149             :                                                       const char *_key_name /* [in] [charset(UTF16)] */,
   14150             :                                                       uint32_t *__ndr_size /* [out] [ref] */,
   14151             :                                                       union spoolss_KeyNames *_key_buffer /* [out] [ref,subcontext(0),subcontext_size(*_ndr_size*2),switch_is(*_ndr_size)] */,
   14152             :                                                       uint32_t _offered /* [in]  */,
   14153             :                                                       uint32_t *_needed /* [out] [ref] */)
   14154             : {
   14155           0 :         struct tevent_req *req;
   14156           0 :         struct dcerpc_spoolss_EnumPrinterKey_state *state;
   14157           0 :         struct tevent_req *subreq;
   14158             : 
   14159           0 :         req = tevent_req_create(mem_ctx, &state,
   14160             :                                 struct dcerpc_spoolss_EnumPrinterKey_state);
   14161           0 :         if (req == NULL) {
   14162           0 :                 return NULL;
   14163             :         }
   14164           0 :         state->out_mem_ctx = NULL;
   14165             : 
   14166             :         /* In parameters */
   14167           0 :         state->orig.in.handle = _handle;
   14168           0 :         state->orig.in.key_name = _key_name;
   14169           0 :         state->orig.in.offered = _offered;
   14170             : 
   14171             :         /* Out parameters */
   14172           0 :         state->orig.out._ndr_size = __ndr_size;
   14173           0 :         state->orig.out.key_buffer = _key_buffer;
   14174           0 :         state->orig.out.needed = _needed;
   14175             : 
   14176             :         /* Result */
   14177           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   14178             : 
   14179           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   14180             :                              "dcerpc_spoolss_EnumPrinterKey_out_memory");
   14181           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   14182           0 :                 return tevent_req_post(req, ev);
   14183             :         }
   14184             : 
   14185             :         /* make a temporary copy, that we pass to the dispatch function */
   14186           0 :         state->tmp = state->orig;
   14187             : 
   14188           0 :         subreq = dcerpc_spoolss_EnumPrinterKey_r_send(state, ev, h, &state->tmp);
   14189           0 :         if (tevent_req_nomem(subreq, req)) {
   14190           0 :                 return tevent_req_post(req, ev);
   14191             :         }
   14192           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterKey_done, req);
   14193           0 :         return req;
   14194             : }
   14195             : 
   14196           0 : static void dcerpc_spoolss_EnumPrinterKey_done(struct tevent_req *subreq)
   14197             : {
   14198           0 :         struct tevent_req *req = tevent_req_callback_data(
   14199             :                 subreq, struct tevent_req);
   14200           0 :         struct dcerpc_spoolss_EnumPrinterKey_state *state = tevent_req_data(
   14201             :                 req, struct dcerpc_spoolss_EnumPrinterKey_state);
   14202           0 :         NTSTATUS status;
   14203           0 :         TALLOC_CTX *mem_ctx;
   14204             : 
   14205           0 :         if (state->out_mem_ctx) {
   14206           0 :                 mem_ctx = state->out_mem_ctx;
   14207             :         } else {
   14208           0 :                 mem_ctx = state;
   14209             :         }
   14210             : 
   14211           0 :         status = dcerpc_spoolss_EnumPrinterKey_r_recv(subreq, mem_ctx);
   14212           0 :         TALLOC_FREE(subreq);
   14213           0 :         if (tevent_req_nterror(req, status)) {
   14214           0 :                 return;
   14215             :         }
   14216             : 
   14217             :         /* Copy out parameters */
   14218           0 :         *state->orig.out._ndr_size = *state->tmp.out._ndr_size;
   14219           0 :         *state->orig.out.key_buffer = *state->tmp.out.key_buffer;
   14220           0 :         *state->orig.out.needed = *state->tmp.out.needed;
   14221             : 
   14222             :         /* Copy result */
   14223           0 :         state->orig.out.result = state->tmp.out.result;
   14224             : 
   14225             :         /* Reset temporary structure */
   14226           0 :         NDR_ZERO_STRUCT(state->tmp);
   14227             : 
   14228           0 :         tevent_req_done(req);
   14229             : }
   14230             : 
   14231           0 : NTSTATUS dcerpc_spoolss_EnumPrinterKey_recv(struct tevent_req *req,
   14232             :                                             TALLOC_CTX *mem_ctx,
   14233             :                                             WERROR *result)
   14234             : {
   14235           0 :         struct dcerpc_spoolss_EnumPrinterKey_state *state = tevent_req_data(
   14236             :                 req, struct dcerpc_spoolss_EnumPrinterKey_state);
   14237           0 :         NTSTATUS status;
   14238             : 
   14239           0 :         if (tevent_req_is_nterror(req, &status)) {
   14240           0 :                 tevent_req_received(req);
   14241           0 :                 return status;
   14242             :         }
   14243             : 
   14244             :         /* Steal possible out parameters to the callers context */
   14245           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   14246             : 
   14247             :         /* Return result */
   14248           0 :         *result = state->orig.out.result;
   14249             : 
   14250           0 :         tevent_req_received(req);
   14251           0 :         return NT_STATUS_OK;
   14252             : }
   14253             : 
   14254           0 : NTSTATUS dcerpc_spoolss_EnumPrinterKey(struct dcerpc_binding_handle *h,
   14255             :                                        TALLOC_CTX *mem_ctx,
   14256             :                                        struct policy_handle *_handle /* [in] [ref] */,
   14257             :                                        const char *_key_name /* [in] [charset(UTF16)] */,
   14258             :                                        uint32_t *__ndr_size /* [out] [ref] */,
   14259             :                                        union spoolss_KeyNames *_key_buffer /* [out] [ref,subcontext(0),subcontext_size(*_ndr_size*2),switch_is(*_ndr_size)] */,
   14260             :                                        uint32_t _offered /* [in]  */,
   14261             :                                        uint32_t *_needed /* [out] [ref] */,
   14262             :                                        WERROR *result)
   14263             : {
   14264           0 :         struct spoolss_EnumPrinterKey r;
   14265           0 :         NTSTATUS status;
   14266             : 
   14267             :         /* In parameters */
   14268           0 :         r.in.handle = _handle;
   14269           0 :         r.in.key_name = _key_name;
   14270           0 :         r.in.offered = _offered;
   14271             : 
   14272             :         /* Out parameters */
   14273           0 :         r.out._ndr_size = __ndr_size;
   14274           0 :         r.out.key_buffer = _key_buffer;
   14275           0 :         r.out.needed = _needed;
   14276             : 
   14277             :         /* Result */
   14278           0 :         NDR_ZERO_STRUCT(r.out.result);
   14279             : 
   14280           0 :         status = dcerpc_spoolss_EnumPrinterKey_r(h, mem_ctx, &r);
   14281           0 :         if (!NT_STATUS_IS_OK(status)) {
   14282           0 :                 return status;
   14283             :         }
   14284             : 
   14285             :         /* Return variables */
   14286           0 :         *__ndr_size = *r.out._ndr_size;
   14287           0 :         *_key_buffer = *r.out.key_buffer;
   14288           0 :         *_needed = *r.out.needed;
   14289             : 
   14290             :         /* Return result */
   14291           0 :         *result = r.out.result;
   14292             : 
   14293           0 :         return NT_STATUS_OK;
   14294             : }
   14295             : 
   14296             : struct dcerpc_spoolss_DeletePrinterDataEx_r_state {
   14297             :         TALLOC_CTX *out_mem_ctx;
   14298             : };
   14299             : 
   14300             : static void dcerpc_spoolss_DeletePrinterDataEx_r_done(struct tevent_req *subreq);
   14301             : 
   14302           0 : struct tevent_req *dcerpc_spoolss_DeletePrinterDataEx_r_send(TALLOC_CTX *mem_ctx,
   14303             :         struct tevent_context *ev,
   14304             :         struct dcerpc_binding_handle *h,
   14305             :         struct spoolss_DeletePrinterDataEx *r)
   14306             : {
   14307           0 :         struct tevent_req *req;
   14308           0 :         struct dcerpc_spoolss_DeletePrinterDataEx_r_state *state;
   14309           0 :         struct tevent_req *subreq;
   14310             : 
   14311           0 :         req = tevent_req_create(mem_ctx, &state,
   14312             :                                 struct dcerpc_spoolss_DeletePrinterDataEx_r_state);
   14313           0 :         if (req == NULL) {
   14314           0 :                 return NULL;
   14315             :         }
   14316             : 
   14317           0 :         state->out_mem_ctx = NULL;
   14318             : 
   14319           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   14320             :                         NULL, &ndr_table_spoolss,
   14321             :                         NDR_SPOOLSS_DELETEPRINTERDATAEX, state, r);
   14322           0 :         if (tevent_req_nomem(subreq, req)) {
   14323           0 :                 return tevent_req_post(req, ev);
   14324             :         }
   14325           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterDataEx_r_done, req);
   14326             : 
   14327           0 :         return req;
   14328             : }
   14329             : 
   14330           0 : static void dcerpc_spoolss_DeletePrinterDataEx_r_done(struct tevent_req *subreq)
   14331             : {
   14332           0 :         struct tevent_req *req =
   14333           0 :                 tevent_req_callback_data(subreq,
   14334             :                 struct tevent_req);
   14335           0 :         NTSTATUS status;
   14336             : 
   14337           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   14338           0 :         TALLOC_FREE(subreq);
   14339           0 :         if (tevent_req_nterror(req, status)) {
   14340           0 :                 return;
   14341             :         }
   14342             : 
   14343           0 :         tevent_req_done(req);
   14344             : }
   14345             : 
   14346           0 : NTSTATUS dcerpc_spoolss_DeletePrinterDataEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   14347             : {
   14348           0 :         struct dcerpc_spoolss_DeletePrinterDataEx_r_state *state =
   14349           0 :                 tevent_req_data(req,
   14350             :                 struct dcerpc_spoolss_DeletePrinterDataEx_r_state);
   14351           0 :         NTSTATUS status;
   14352             : 
   14353           0 :         if (tevent_req_is_nterror(req, &status)) {
   14354           0 :                 tevent_req_received(req);
   14355           0 :                 return status;
   14356             :         }
   14357             : 
   14358           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   14359             : 
   14360           0 :         tevent_req_received(req);
   14361           0 :         return NT_STATUS_OK;
   14362             : }
   14363             : 
   14364        1200 : NTSTATUS dcerpc_spoolss_DeletePrinterDataEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterDataEx *r)
   14365             : {
   14366           0 :         NTSTATUS status;
   14367             : 
   14368        1200 :         status = dcerpc_binding_handle_call(h,
   14369             :                         NULL, &ndr_table_spoolss,
   14370             :                         NDR_SPOOLSS_DELETEPRINTERDATAEX, mem_ctx, r);
   14371             : 
   14372        1200 :         return status;
   14373             : }
   14374             : 
   14375             : struct dcerpc_spoolss_DeletePrinterDataEx_state {
   14376             :         struct spoolss_DeletePrinterDataEx orig;
   14377             :         struct spoolss_DeletePrinterDataEx tmp;
   14378             :         TALLOC_CTX *out_mem_ctx;
   14379             : };
   14380             : 
   14381             : static void dcerpc_spoolss_DeletePrinterDataEx_done(struct tevent_req *subreq);
   14382             : 
   14383           0 : struct tevent_req *dcerpc_spoolss_DeletePrinterDataEx_send(TALLOC_CTX *mem_ctx,
   14384             :                                                            struct tevent_context *ev,
   14385             :                                                            struct dcerpc_binding_handle *h,
   14386             :                                                            struct policy_handle *_handle /* [in] [ref] */,
   14387             :                                                            const char *_key_name /* [in] [charset(UTF16)] */,
   14388             :                                                            const char *_value_name /* [in] [charset(UTF16)] */)
   14389             : {
   14390           0 :         struct tevent_req *req;
   14391           0 :         struct dcerpc_spoolss_DeletePrinterDataEx_state *state;
   14392           0 :         struct tevent_req *subreq;
   14393             : 
   14394           0 :         req = tevent_req_create(mem_ctx, &state,
   14395             :                                 struct dcerpc_spoolss_DeletePrinterDataEx_state);
   14396           0 :         if (req == NULL) {
   14397           0 :                 return NULL;
   14398             :         }
   14399           0 :         state->out_mem_ctx = NULL;
   14400             : 
   14401             :         /* In parameters */
   14402           0 :         state->orig.in.handle = _handle;
   14403           0 :         state->orig.in.key_name = _key_name;
   14404           0 :         state->orig.in.value_name = _value_name;
   14405             : 
   14406             :         /* Out parameters */
   14407             : 
   14408             :         /* Result */
   14409           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   14410             : 
   14411             :         /* make a temporary copy, that we pass to the dispatch function */
   14412           0 :         state->tmp = state->orig;
   14413             : 
   14414           0 :         subreq = dcerpc_spoolss_DeletePrinterDataEx_r_send(state, ev, h, &state->tmp);
   14415           0 :         if (tevent_req_nomem(subreq, req)) {
   14416           0 :                 return tevent_req_post(req, ev);
   14417             :         }
   14418           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterDataEx_done, req);
   14419           0 :         return req;
   14420             : }
   14421             : 
   14422           0 : static void dcerpc_spoolss_DeletePrinterDataEx_done(struct tevent_req *subreq)
   14423             : {
   14424           0 :         struct tevent_req *req = tevent_req_callback_data(
   14425             :                 subreq, struct tevent_req);
   14426           0 :         struct dcerpc_spoolss_DeletePrinterDataEx_state *state = tevent_req_data(
   14427             :                 req, struct dcerpc_spoolss_DeletePrinterDataEx_state);
   14428           0 :         NTSTATUS status;
   14429           0 :         TALLOC_CTX *mem_ctx;
   14430             : 
   14431           0 :         if (state->out_mem_ctx) {
   14432           0 :                 mem_ctx = state->out_mem_ctx;
   14433             :         } else {
   14434           0 :                 mem_ctx = state;
   14435             :         }
   14436             : 
   14437           0 :         status = dcerpc_spoolss_DeletePrinterDataEx_r_recv(subreq, mem_ctx);
   14438           0 :         TALLOC_FREE(subreq);
   14439           0 :         if (tevent_req_nterror(req, status)) {
   14440           0 :                 return;
   14441             :         }
   14442             : 
   14443             :         /* Copy out parameters */
   14444             : 
   14445             :         /* Copy result */
   14446           0 :         state->orig.out.result = state->tmp.out.result;
   14447             : 
   14448             :         /* Reset temporary structure */
   14449           0 :         NDR_ZERO_STRUCT(state->tmp);
   14450             : 
   14451           0 :         tevent_req_done(req);
   14452             : }
   14453             : 
   14454           0 : NTSTATUS dcerpc_spoolss_DeletePrinterDataEx_recv(struct tevent_req *req,
   14455             :                                                  TALLOC_CTX *mem_ctx,
   14456             :                                                  WERROR *result)
   14457             : {
   14458           0 :         struct dcerpc_spoolss_DeletePrinterDataEx_state *state = tevent_req_data(
   14459             :                 req, struct dcerpc_spoolss_DeletePrinterDataEx_state);
   14460           0 :         NTSTATUS status;
   14461             : 
   14462           0 :         if (tevent_req_is_nterror(req, &status)) {
   14463           0 :                 tevent_req_received(req);
   14464           0 :                 return status;
   14465             :         }
   14466             : 
   14467             :         /* Steal possible out parameters to the callers context */
   14468           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   14469             : 
   14470             :         /* Return result */
   14471           0 :         *result = state->orig.out.result;
   14472             : 
   14473           0 :         tevent_req_received(req);
   14474           0 :         return NT_STATUS_OK;
   14475             : }
   14476             : 
   14477           0 : NTSTATUS dcerpc_spoolss_DeletePrinterDataEx(struct dcerpc_binding_handle *h,
   14478             :                                             TALLOC_CTX *mem_ctx,
   14479             :                                             struct policy_handle *_handle /* [in] [ref] */,
   14480             :                                             const char *_key_name /* [in] [charset(UTF16)] */,
   14481             :                                             const char *_value_name /* [in] [charset(UTF16)] */,
   14482             :                                             WERROR *result)
   14483             : {
   14484           0 :         struct spoolss_DeletePrinterDataEx r;
   14485           0 :         NTSTATUS status;
   14486             : 
   14487             :         /* In parameters */
   14488           0 :         r.in.handle = _handle;
   14489           0 :         r.in.key_name = _key_name;
   14490           0 :         r.in.value_name = _value_name;
   14491             : 
   14492             :         /* Out parameters */
   14493             : 
   14494             :         /* Result */
   14495           0 :         NDR_ZERO_STRUCT(r.out.result);
   14496             : 
   14497           0 :         status = dcerpc_spoolss_DeletePrinterDataEx_r(h, mem_ctx, &r);
   14498           0 :         if (!NT_STATUS_IS_OK(status)) {
   14499           0 :                 return status;
   14500             :         }
   14501             : 
   14502             :         /* Return variables */
   14503             : 
   14504             :         /* Return result */
   14505           0 :         *result = r.out.result;
   14506             : 
   14507           0 :         return NT_STATUS_OK;
   14508             : }
   14509             : 
   14510             : struct dcerpc_spoolss_DeletePrinterKey_r_state {
   14511             :         TALLOC_CTX *out_mem_ctx;
   14512             : };
   14513             : 
   14514             : static void dcerpc_spoolss_DeletePrinterKey_r_done(struct tevent_req *subreq);
   14515             : 
   14516           0 : struct tevent_req *dcerpc_spoolss_DeletePrinterKey_r_send(TALLOC_CTX *mem_ctx,
   14517             :         struct tevent_context *ev,
   14518             :         struct dcerpc_binding_handle *h,
   14519             :         struct spoolss_DeletePrinterKey *r)
   14520             : {
   14521           0 :         struct tevent_req *req;
   14522           0 :         struct dcerpc_spoolss_DeletePrinterKey_r_state *state;
   14523           0 :         struct tevent_req *subreq;
   14524             : 
   14525           0 :         req = tevent_req_create(mem_ctx, &state,
   14526             :                                 struct dcerpc_spoolss_DeletePrinterKey_r_state);
   14527           0 :         if (req == NULL) {
   14528           0 :                 return NULL;
   14529             :         }
   14530             : 
   14531           0 :         state->out_mem_ctx = NULL;
   14532             : 
   14533           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   14534             :                         NULL, &ndr_table_spoolss,
   14535             :                         NDR_SPOOLSS_DELETEPRINTERKEY, state, r);
   14536           0 :         if (tevent_req_nomem(subreq, req)) {
   14537           0 :                 return tevent_req_post(req, ev);
   14538             :         }
   14539           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterKey_r_done, req);
   14540             : 
   14541           0 :         return req;
   14542             : }
   14543             : 
   14544           0 : static void dcerpc_spoolss_DeletePrinterKey_r_done(struct tevent_req *subreq)
   14545             : {
   14546           0 :         struct tevent_req *req =
   14547           0 :                 tevent_req_callback_data(subreq,
   14548             :                 struct tevent_req);
   14549           0 :         NTSTATUS status;
   14550             : 
   14551           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   14552           0 :         TALLOC_FREE(subreq);
   14553           0 :         if (tevent_req_nterror(req, status)) {
   14554           0 :                 return;
   14555             :         }
   14556             : 
   14557           0 :         tevent_req_done(req);
   14558             : }
   14559             : 
   14560           0 : NTSTATUS dcerpc_spoolss_DeletePrinterKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   14561             : {
   14562           0 :         struct dcerpc_spoolss_DeletePrinterKey_r_state *state =
   14563           0 :                 tevent_req_data(req,
   14564             :                 struct dcerpc_spoolss_DeletePrinterKey_r_state);
   14565           0 :         NTSTATUS status;
   14566             : 
   14567           0 :         if (tevent_req_is_nterror(req, &status)) {
   14568           0 :                 tevent_req_received(req);
   14569           0 :                 return status;
   14570             :         }
   14571             : 
   14572           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   14573             : 
   14574           0 :         tevent_req_received(req);
   14575           0 :         return NT_STATUS_OK;
   14576             : }
   14577             : 
   14578         216 : NTSTATUS dcerpc_spoolss_DeletePrinterKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterKey *r)
   14579             : {
   14580           0 :         NTSTATUS status;
   14581             : 
   14582         216 :         status = dcerpc_binding_handle_call(h,
   14583             :                         NULL, &ndr_table_spoolss,
   14584             :                         NDR_SPOOLSS_DELETEPRINTERKEY, mem_ctx, r);
   14585             : 
   14586         216 :         return status;
   14587             : }
   14588             : 
   14589             : struct dcerpc_spoolss_DeletePrinterKey_state {
   14590             :         struct spoolss_DeletePrinterKey orig;
   14591             :         struct spoolss_DeletePrinterKey tmp;
   14592             :         TALLOC_CTX *out_mem_ctx;
   14593             : };
   14594             : 
   14595             : static void dcerpc_spoolss_DeletePrinterKey_done(struct tevent_req *subreq);
   14596             : 
   14597           0 : struct tevent_req *dcerpc_spoolss_DeletePrinterKey_send(TALLOC_CTX *mem_ctx,
   14598             :                                                         struct tevent_context *ev,
   14599             :                                                         struct dcerpc_binding_handle *h,
   14600             :                                                         struct policy_handle *_handle /* [in] [ref] */,
   14601             :                                                         const char *_key_name /* [in] [charset(UTF16)] */)
   14602             : {
   14603           0 :         struct tevent_req *req;
   14604           0 :         struct dcerpc_spoolss_DeletePrinterKey_state *state;
   14605           0 :         struct tevent_req *subreq;
   14606             : 
   14607           0 :         req = tevent_req_create(mem_ctx, &state,
   14608             :                                 struct dcerpc_spoolss_DeletePrinterKey_state);
   14609           0 :         if (req == NULL) {
   14610           0 :                 return NULL;
   14611             :         }
   14612           0 :         state->out_mem_ctx = NULL;
   14613             : 
   14614             :         /* In parameters */
   14615           0 :         state->orig.in.handle = _handle;
   14616           0 :         state->orig.in.key_name = _key_name;
   14617             : 
   14618             :         /* Out parameters */
   14619             : 
   14620             :         /* Result */
   14621           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   14622             : 
   14623             :         /* make a temporary copy, that we pass to the dispatch function */
   14624           0 :         state->tmp = state->orig;
   14625             : 
   14626           0 :         subreq = dcerpc_spoolss_DeletePrinterKey_r_send(state, ev, h, &state->tmp);
   14627           0 :         if (tevent_req_nomem(subreq, req)) {
   14628           0 :                 return tevent_req_post(req, ev);
   14629             :         }
   14630           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterKey_done, req);
   14631           0 :         return req;
   14632             : }
   14633             : 
   14634           0 : static void dcerpc_spoolss_DeletePrinterKey_done(struct tevent_req *subreq)
   14635             : {
   14636           0 :         struct tevent_req *req = tevent_req_callback_data(
   14637             :                 subreq, struct tevent_req);
   14638           0 :         struct dcerpc_spoolss_DeletePrinterKey_state *state = tevent_req_data(
   14639             :                 req, struct dcerpc_spoolss_DeletePrinterKey_state);
   14640           0 :         NTSTATUS status;
   14641           0 :         TALLOC_CTX *mem_ctx;
   14642             : 
   14643           0 :         if (state->out_mem_ctx) {
   14644           0 :                 mem_ctx = state->out_mem_ctx;
   14645             :         } else {
   14646           0 :                 mem_ctx = state;
   14647             :         }
   14648             : 
   14649           0 :         status = dcerpc_spoolss_DeletePrinterKey_r_recv(subreq, mem_ctx);
   14650           0 :         TALLOC_FREE(subreq);
   14651           0 :         if (tevent_req_nterror(req, status)) {
   14652           0 :                 return;
   14653             :         }
   14654             : 
   14655             :         /* Copy out parameters */
   14656             : 
   14657             :         /* Copy result */
   14658           0 :         state->orig.out.result = state->tmp.out.result;
   14659             : 
   14660             :         /* Reset temporary structure */
   14661           0 :         NDR_ZERO_STRUCT(state->tmp);
   14662             : 
   14663           0 :         tevent_req_done(req);
   14664             : }
   14665             : 
   14666           0 : NTSTATUS dcerpc_spoolss_DeletePrinterKey_recv(struct tevent_req *req,
   14667             :                                               TALLOC_CTX *mem_ctx,
   14668             :                                               WERROR *result)
   14669             : {
   14670           0 :         struct dcerpc_spoolss_DeletePrinterKey_state *state = tevent_req_data(
   14671             :                 req, struct dcerpc_spoolss_DeletePrinterKey_state);
   14672           0 :         NTSTATUS status;
   14673             : 
   14674           0 :         if (tevent_req_is_nterror(req, &status)) {
   14675           0 :                 tevent_req_received(req);
   14676           0 :                 return status;
   14677             :         }
   14678             : 
   14679             :         /* Steal possible out parameters to the callers context */
   14680           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   14681             : 
   14682             :         /* Return result */
   14683           0 :         *result = state->orig.out.result;
   14684             : 
   14685           0 :         tevent_req_received(req);
   14686           0 :         return NT_STATUS_OK;
   14687             : }
   14688             : 
   14689           0 : NTSTATUS dcerpc_spoolss_DeletePrinterKey(struct dcerpc_binding_handle *h,
   14690             :                                          TALLOC_CTX *mem_ctx,
   14691             :                                          struct policy_handle *_handle /* [in] [ref] */,
   14692             :                                          const char *_key_name /* [in] [charset(UTF16)] */,
   14693             :                                          WERROR *result)
   14694             : {
   14695           0 :         struct spoolss_DeletePrinterKey r;
   14696           0 :         NTSTATUS status;
   14697             : 
   14698             :         /* In parameters */
   14699           0 :         r.in.handle = _handle;
   14700           0 :         r.in.key_name = _key_name;
   14701             : 
   14702             :         /* Out parameters */
   14703             : 
   14704             :         /* Result */
   14705           0 :         NDR_ZERO_STRUCT(r.out.result);
   14706             : 
   14707           0 :         status = dcerpc_spoolss_DeletePrinterKey_r(h, mem_ctx, &r);
   14708           0 :         if (!NT_STATUS_IS_OK(status)) {
   14709           0 :                 return status;
   14710             :         }
   14711             : 
   14712             :         /* Return variables */
   14713             : 
   14714             :         /* Return result */
   14715           0 :         *result = r.out.result;
   14716             : 
   14717           0 :         return NT_STATUS_OK;
   14718             : }
   14719             : 
   14720             : struct dcerpc_spoolss_DeletePrinterDriverEx_r_state {
   14721             :         TALLOC_CTX *out_mem_ctx;
   14722             : };
   14723             : 
   14724             : static void dcerpc_spoolss_DeletePrinterDriverEx_r_done(struct tevent_req *subreq);
   14725             : 
   14726           0 : struct tevent_req *dcerpc_spoolss_DeletePrinterDriverEx_r_send(TALLOC_CTX *mem_ctx,
   14727             :         struct tevent_context *ev,
   14728             :         struct dcerpc_binding_handle *h,
   14729             :         struct spoolss_DeletePrinterDriverEx *r)
   14730             : {
   14731           0 :         struct tevent_req *req;
   14732           0 :         struct dcerpc_spoolss_DeletePrinterDriverEx_r_state *state;
   14733           0 :         struct tevent_req *subreq;
   14734             : 
   14735           0 :         req = tevent_req_create(mem_ctx, &state,
   14736             :                                 struct dcerpc_spoolss_DeletePrinterDriverEx_r_state);
   14737           0 :         if (req == NULL) {
   14738           0 :                 return NULL;
   14739             :         }
   14740             : 
   14741           0 :         state->out_mem_ctx = NULL;
   14742             : 
   14743           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   14744             :                         NULL, &ndr_table_spoolss,
   14745             :                         NDR_SPOOLSS_DELETEPRINTERDRIVEREX, state, r);
   14746           0 :         if (tevent_req_nomem(subreq, req)) {
   14747           0 :                 return tevent_req_post(req, ev);
   14748             :         }
   14749           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterDriverEx_r_done, req);
   14750             : 
   14751           0 :         return req;
   14752             : }
   14753             : 
   14754           0 : static void dcerpc_spoolss_DeletePrinterDriverEx_r_done(struct tevent_req *subreq)
   14755             : {
   14756           0 :         struct tevent_req *req =
   14757           0 :                 tevent_req_callback_data(subreq,
   14758             :                 struct tevent_req);
   14759           0 :         NTSTATUS status;
   14760             : 
   14761           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   14762           0 :         TALLOC_FREE(subreq);
   14763           0 :         if (tevent_req_nterror(req, status)) {
   14764           0 :                 return;
   14765             :         }
   14766             : 
   14767           0 :         tevent_req_done(req);
   14768             : }
   14769             : 
   14770           0 : NTSTATUS dcerpc_spoolss_DeletePrinterDriverEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   14771             : {
   14772           0 :         struct dcerpc_spoolss_DeletePrinterDriverEx_r_state *state =
   14773           0 :                 tevent_req_data(req,
   14774             :                 struct dcerpc_spoolss_DeletePrinterDriverEx_r_state);
   14775           0 :         NTSTATUS status;
   14776             : 
   14777           0 :         if (tevent_req_is_nterror(req, &status)) {
   14778           0 :                 tevent_req_received(req);
   14779           0 :                 return status;
   14780             :         }
   14781             : 
   14782           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   14783             : 
   14784           0 :         tevent_req_received(req);
   14785           0 :         return NT_STATUS_OK;
   14786             : }
   14787             : 
   14788           0 : NTSTATUS dcerpc_spoolss_DeletePrinterDriverEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterDriverEx *r)
   14789             : {
   14790           0 :         NTSTATUS status;
   14791             : 
   14792           0 :         status = dcerpc_binding_handle_call(h,
   14793             :                         NULL, &ndr_table_spoolss,
   14794             :                         NDR_SPOOLSS_DELETEPRINTERDRIVEREX, mem_ctx, r);
   14795             : 
   14796           0 :         return status;
   14797             : }
   14798             : 
   14799             : struct dcerpc_spoolss_DeletePrinterDriverEx_state {
   14800             :         struct spoolss_DeletePrinterDriverEx orig;
   14801             :         struct spoolss_DeletePrinterDriverEx tmp;
   14802             :         TALLOC_CTX *out_mem_ctx;
   14803             : };
   14804             : 
   14805             : static void dcerpc_spoolss_DeletePrinterDriverEx_done(struct tevent_req *subreq);
   14806             : 
   14807           0 : struct tevent_req *dcerpc_spoolss_DeletePrinterDriverEx_send(TALLOC_CTX *mem_ctx,
   14808             :                                                              struct tevent_context *ev,
   14809             :                                                              struct dcerpc_binding_handle *h,
   14810             :                                                              const char *_server /* [in] [charset(UTF16),unique] */,
   14811             :                                                              const char *_architecture /* [in] [charset(UTF16)] */,
   14812             :                                                              const char *_driver /* [in] [charset(UTF16)] */,
   14813             :                                                              uint32_t _delete_flags /* [in]  */,
   14814             :                                                              uint32_t _version /* [in]  */)
   14815             : {
   14816           0 :         struct tevent_req *req;
   14817           0 :         struct dcerpc_spoolss_DeletePrinterDriverEx_state *state;
   14818           0 :         struct tevent_req *subreq;
   14819             : 
   14820           0 :         req = tevent_req_create(mem_ctx, &state,
   14821             :                                 struct dcerpc_spoolss_DeletePrinterDriverEx_state);
   14822           0 :         if (req == NULL) {
   14823           0 :                 return NULL;
   14824             :         }
   14825           0 :         state->out_mem_ctx = NULL;
   14826             : 
   14827             :         /* In parameters */
   14828           0 :         state->orig.in.server = _server;
   14829           0 :         state->orig.in.architecture = _architecture;
   14830           0 :         state->orig.in.driver = _driver;
   14831           0 :         state->orig.in.delete_flags = _delete_flags;
   14832           0 :         state->orig.in.version = _version;
   14833             : 
   14834             :         /* Out parameters */
   14835             : 
   14836             :         /* Result */
   14837           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   14838             : 
   14839             :         /* make a temporary copy, that we pass to the dispatch function */
   14840           0 :         state->tmp = state->orig;
   14841             : 
   14842           0 :         subreq = dcerpc_spoolss_DeletePrinterDriverEx_r_send(state, ev, h, &state->tmp);
   14843           0 :         if (tevent_req_nomem(subreq, req)) {
   14844           0 :                 return tevent_req_post(req, ev);
   14845             :         }
   14846           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterDriverEx_done, req);
   14847           0 :         return req;
   14848             : }
   14849             : 
   14850           0 : static void dcerpc_spoolss_DeletePrinterDriverEx_done(struct tevent_req *subreq)
   14851             : {
   14852           0 :         struct tevent_req *req = tevent_req_callback_data(
   14853             :                 subreq, struct tevent_req);
   14854           0 :         struct dcerpc_spoolss_DeletePrinterDriverEx_state *state = tevent_req_data(
   14855             :                 req, struct dcerpc_spoolss_DeletePrinterDriverEx_state);
   14856           0 :         NTSTATUS status;
   14857           0 :         TALLOC_CTX *mem_ctx;
   14858             : 
   14859           0 :         if (state->out_mem_ctx) {
   14860           0 :                 mem_ctx = state->out_mem_ctx;
   14861             :         } else {
   14862           0 :                 mem_ctx = state;
   14863             :         }
   14864             : 
   14865           0 :         status = dcerpc_spoolss_DeletePrinterDriverEx_r_recv(subreq, mem_ctx);
   14866           0 :         TALLOC_FREE(subreq);
   14867           0 :         if (tevent_req_nterror(req, status)) {
   14868           0 :                 return;
   14869             :         }
   14870             : 
   14871             :         /* Copy out parameters */
   14872             : 
   14873             :         /* Copy result */
   14874           0 :         state->orig.out.result = state->tmp.out.result;
   14875             : 
   14876             :         /* Reset temporary structure */
   14877           0 :         NDR_ZERO_STRUCT(state->tmp);
   14878             : 
   14879           0 :         tevent_req_done(req);
   14880             : }
   14881             : 
   14882           0 : NTSTATUS dcerpc_spoolss_DeletePrinterDriverEx_recv(struct tevent_req *req,
   14883             :                                                    TALLOC_CTX *mem_ctx,
   14884             :                                                    WERROR *result)
   14885             : {
   14886           0 :         struct dcerpc_spoolss_DeletePrinterDriverEx_state *state = tevent_req_data(
   14887             :                 req, struct dcerpc_spoolss_DeletePrinterDriverEx_state);
   14888           0 :         NTSTATUS status;
   14889             : 
   14890           0 :         if (tevent_req_is_nterror(req, &status)) {
   14891           0 :                 tevent_req_received(req);
   14892           0 :                 return status;
   14893             :         }
   14894             : 
   14895             :         /* Steal possible out parameters to the callers context */
   14896           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   14897             : 
   14898             :         /* Return result */
   14899           0 :         *result = state->orig.out.result;
   14900             : 
   14901           0 :         tevent_req_received(req);
   14902           0 :         return NT_STATUS_OK;
   14903             : }
   14904             : 
   14905           0 : NTSTATUS dcerpc_spoolss_DeletePrinterDriverEx(struct dcerpc_binding_handle *h,
   14906             :                                               TALLOC_CTX *mem_ctx,
   14907             :                                               const char *_server /* [in] [charset(UTF16),unique] */,
   14908             :                                               const char *_architecture /* [in] [charset(UTF16)] */,
   14909             :                                               const char *_driver /* [in] [charset(UTF16)] */,
   14910             :                                               uint32_t _delete_flags /* [in]  */,
   14911             :                                               uint32_t _version /* [in]  */,
   14912             :                                               WERROR *result)
   14913             : {
   14914           0 :         struct spoolss_DeletePrinterDriverEx r;
   14915           0 :         NTSTATUS status;
   14916             : 
   14917             :         /* In parameters */
   14918           0 :         r.in.server = _server;
   14919           0 :         r.in.architecture = _architecture;
   14920           0 :         r.in.driver = _driver;
   14921           0 :         r.in.delete_flags = _delete_flags;
   14922           0 :         r.in.version = _version;
   14923             : 
   14924             :         /* Out parameters */
   14925             : 
   14926             :         /* Result */
   14927           0 :         NDR_ZERO_STRUCT(r.out.result);
   14928             : 
   14929           0 :         status = dcerpc_spoolss_DeletePrinterDriverEx_r(h, mem_ctx, &r);
   14930           0 :         if (!NT_STATUS_IS_OK(status)) {
   14931           0 :                 return status;
   14932             :         }
   14933             : 
   14934             :         /* Return variables */
   14935             : 
   14936             :         /* Return result */
   14937           0 :         *result = r.out.result;
   14938             : 
   14939           0 :         return NT_STATUS_OK;
   14940             : }
   14941             : 
   14942             : struct dcerpc_spoolss_AddPerMachineConnection_r_state {
   14943             :         TALLOC_CTX *out_mem_ctx;
   14944             : };
   14945             : 
   14946             : static void dcerpc_spoolss_AddPerMachineConnection_r_done(struct tevent_req *subreq);
   14947             : 
   14948           0 : struct tevent_req *dcerpc_spoolss_AddPerMachineConnection_r_send(TALLOC_CTX *mem_ctx,
   14949             :         struct tevent_context *ev,
   14950             :         struct dcerpc_binding_handle *h,
   14951             :         struct spoolss_AddPerMachineConnection *r)
   14952             : {
   14953           0 :         struct tevent_req *req;
   14954           0 :         struct dcerpc_spoolss_AddPerMachineConnection_r_state *state;
   14955           0 :         struct tevent_req *subreq;
   14956             : 
   14957           0 :         req = tevent_req_create(mem_ctx, &state,
   14958             :                                 struct dcerpc_spoolss_AddPerMachineConnection_r_state);
   14959           0 :         if (req == NULL) {
   14960           0 :                 return NULL;
   14961             :         }
   14962             : 
   14963           0 :         state->out_mem_ctx = NULL;
   14964             : 
   14965           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   14966             :                         NULL, &ndr_table_spoolss,
   14967             :                         NDR_SPOOLSS_ADDPERMACHINECONNECTION, state, r);
   14968           0 :         if (tevent_req_nomem(subreq, req)) {
   14969           0 :                 return tevent_req_post(req, ev);
   14970             :         }
   14971           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddPerMachineConnection_r_done, req);
   14972             : 
   14973           0 :         return req;
   14974             : }
   14975             : 
   14976           0 : static void dcerpc_spoolss_AddPerMachineConnection_r_done(struct tevent_req *subreq)
   14977             : {
   14978           0 :         struct tevent_req *req =
   14979           0 :                 tevent_req_callback_data(subreq,
   14980             :                 struct tevent_req);
   14981           0 :         NTSTATUS status;
   14982             : 
   14983           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   14984           0 :         TALLOC_FREE(subreq);
   14985           0 :         if (tevent_req_nterror(req, status)) {
   14986           0 :                 return;
   14987             :         }
   14988             : 
   14989           0 :         tevent_req_done(req);
   14990             : }
   14991             : 
   14992           0 : NTSTATUS dcerpc_spoolss_AddPerMachineConnection_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   14993             : {
   14994           0 :         struct dcerpc_spoolss_AddPerMachineConnection_r_state *state =
   14995           0 :                 tevent_req_data(req,
   14996             :                 struct dcerpc_spoolss_AddPerMachineConnection_r_state);
   14997           0 :         NTSTATUS status;
   14998             : 
   14999           0 :         if (tevent_req_is_nterror(req, &status)) {
   15000           0 :                 tevent_req_received(req);
   15001           0 :                 return status;
   15002             :         }
   15003             : 
   15004           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   15005             : 
   15006           0 :         tevent_req_received(req);
   15007           0 :         return NT_STATUS_OK;
   15008             : }
   15009             : 
   15010           4 : NTSTATUS dcerpc_spoolss_AddPerMachineConnection_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPerMachineConnection *r)
   15011             : {
   15012           0 :         NTSTATUS status;
   15013             : 
   15014           4 :         status = dcerpc_binding_handle_call(h,
   15015             :                         NULL, &ndr_table_spoolss,
   15016             :                         NDR_SPOOLSS_ADDPERMACHINECONNECTION, mem_ctx, r);
   15017             : 
   15018           4 :         return status;
   15019             : }
   15020             : 
   15021             : struct dcerpc_spoolss_AddPerMachineConnection_state {
   15022             :         struct spoolss_AddPerMachineConnection orig;
   15023             :         struct spoolss_AddPerMachineConnection tmp;
   15024             :         TALLOC_CTX *out_mem_ctx;
   15025             : };
   15026             : 
   15027             : static void dcerpc_spoolss_AddPerMachineConnection_done(struct tevent_req *subreq);
   15028             : 
   15029           0 : struct tevent_req *dcerpc_spoolss_AddPerMachineConnection_send(TALLOC_CTX *mem_ctx,
   15030             :                                                                struct tevent_context *ev,
   15031             :                                                                struct dcerpc_binding_handle *h,
   15032             :                                                                const char *_server /* [in] [charset(UTF16),unique] */,
   15033             :                                                                const char *_printername /* [in] [charset(UTF16),ref] */,
   15034             :                                                                const char *_printserver /* [in] [charset(UTF16),ref] */,
   15035             :                                                                const char *_provider /* [in] [charset(UTF16),ref] */)
   15036             : {
   15037           0 :         struct tevent_req *req;
   15038           0 :         struct dcerpc_spoolss_AddPerMachineConnection_state *state;
   15039           0 :         struct tevent_req *subreq;
   15040             : 
   15041           0 :         req = tevent_req_create(mem_ctx, &state,
   15042             :                                 struct dcerpc_spoolss_AddPerMachineConnection_state);
   15043           0 :         if (req == NULL) {
   15044           0 :                 return NULL;
   15045             :         }
   15046           0 :         state->out_mem_ctx = NULL;
   15047             : 
   15048             :         /* In parameters */
   15049           0 :         state->orig.in.server = _server;
   15050           0 :         state->orig.in.printername = _printername;
   15051           0 :         state->orig.in.printserver = _printserver;
   15052           0 :         state->orig.in.provider = _provider;
   15053             : 
   15054             :         /* Out parameters */
   15055             : 
   15056             :         /* Result */
   15057           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   15058             : 
   15059             :         /* make a temporary copy, that we pass to the dispatch function */
   15060           0 :         state->tmp = state->orig;
   15061             : 
   15062           0 :         subreq = dcerpc_spoolss_AddPerMachineConnection_r_send(state, ev, h, &state->tmp);
   15063           0 :         if (tevent_req_nomem(subreq, req)) {
   15064           0 :                 return tevent_req_post(req, ev);
   15065             :         }
   15066           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddPerMachineConnection_done, req);
   15067           0 :         return req;
   15068             : }
   15069             : 
   15070           0 : static void dcerpc_spoolss_AddPerMachineConnection_done(struct tevent_req *subreq)
   15071             : {
   15072           0 :         struct tevent_req *req = tevent_req_callback_data(
   15073             :                 subreq, struct tevent_req);
   15074           0 :         struct dcerpc_spoolss_AddPerMachineConnection_state *state = tevent_req_data(
   15075             :                 req, struct dcerpc_spoolss_AddPerMachineConnection_state);
   15076           0 :         NTSTATUS status;
   15077           0 :         TALLOC_CTX *mem_ctx;
   15078             : 
   15079           0 :         if (state->out_mem_ctx) {
   15080           0 :                 mem_ctx = state->out_mem_ctx;
   15081             :         } else {
   15082           0 :                 mem_ctx = state;
   15083             :         }
   15084             : 
   15085           0 :         status = dcerpc_spoolss_AddPerMachineConnection_r_recv(subreq, mem_ctx);
   15086           0 :         TALLOC_FREE(subreq);
   15087           0 :         if (tevent_req_nterror(req, status)) {
   15088           0 :                 return;
   15089             :         }
   15090             : 
   15091             :         /* Copy out parameters */
   15092             : 
   15093             :         /* Copy result */
   15094           0 :         state->orig.out.result = state->tmp.out.result;
   15095             : 
   15096             :         /* Reset temporary structure */
   15097           0 :         NDR_ZERO_STRUCT(state->tmp);
   15098             : 
   15099           0 :         tevent_req_done(req);
   15100             : }
   15101             : 
   15102           0 : NTSTATUS dcerpc_spoolss_AddPerMachineConnection_recv(struct tevent_req *req,
   15103             :                                                      TALLOC_CTX *mem_ctx,
   15104             :                                                      WERROR *result)
   15105             : {
   15106           0 :         struct dcerpc_spoolss_AddPerMachineConnection_state *state = tevent_req_data(
   15107             :                 req, struct dcerpc_spoolss_AddPerMachineConnection_state);
   15108           0 :         NTSTATUS status;
   15109             : 
   15110           0 :         if (tevent_req_is_nterror(req, &status)) {
   15111           0 :                 tevent_req_received(req);
   15112           0 :                 return status;
   15113             :         }
   15114             : 
   15115             :         /* Steal possible out parameters to the callers context */
   15116           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   15117             : 
   15118             :         /* Return result */
   15119           0 :         *result = state->orig.out.result;
   15120             : 
   15121           0 :         tevent_req_received(req);
   15122           0 :         return NT_STATUS_OK;
   15123             : }
   15124             : 
   15125           0 : NTSTATUS dcerpc_spoolss_AddPerMachineConnection(struct dcerpc_binding_handle *h,
   15126             :                                                 TALLOC_CTX *mem_ctx,
   15127             :                                                 const char *_server /* [in] [charset(UTF16),unique] */,
   15128             :                                                 const char *_printername /* [in] [charset(UTF16),ref] */,
   15129             :                                                 const char *_printserver /* [in] [charset(UTF16),ref] */,
   15130             :                                                 const char *_provider /* [in] [charset(UTF16),ref] */,
   15131             :                                                 WERROR *result)
   15132             : {
   15133           0 :         struct spoolss_AddPerMachineConnection r;
   15134           0 :         NTSTATUS status;
   15135             : 
   15136             :         /* In parameters */
   15137           0 :         r.in.server = _server;
   15138           0 :         r.in.printername = _printername;
   15139           0 :         r.in.printserver = _printserver;
   15140           0 :         r.in.provider = _provider;
   15141             : 
   15142             :         /* Out parameters */
   15143             : 
   15144             :         /* Result */
   15145           0 :         NDR_ZERO_STRUCT(r.out.result);
   15146             : 
   15147           0 :         status = dcerpc_spoolss_AddPerMachineConnection_r(h, mem_ctx, &r);
   15148           0 :         if (!NT_STATUS_IS_OK(status)) {
   15149           0 :                 return status;
   15150             :         }
   15151             : 
   15152             :         /* Return variables */
   15153             : 
   15154             :         /* Return result */
   15155           0 :         *result = r.out.result;
   15156             : 
   15157           0 :         return NT_STATUS_OK;
   15158             : }
   15159             : 
   15160             : struct dcerpc_spoolss_DeletePerMachineConnection_r_state {
   15161             :         TALLOC_CTX *out_mem_ctx;
   15162             : };
   15163             : 
   15164             : static void dcerpc_spoolss_DeletePerMachineConnection_r_done(struct tevent_req *subreq);
   15165             : 
   15166           0 : struct tevent_req *dcerpc_spoolss_DeletePerMachineConnection_r_send(TALLOC_CTX *mem_ctx,
   15167             :         struct tevent_context *ev,
   15168             :         struct dcerpc_binding_handle *h,
   15169             :         struct spoolss_DeletePerMachineConnection *r)
   15170             : {
   15171           0 :         struct tevent_req *req;
   15172           0 :         struct dcerpc_spoolss_DeletePerMachineConnection_r_state *state;
   15173           0 :         struct tevent_req *subreq;
   15174             : 
   15175           0 :         req = tevent_req_create(mem_ctx, &state,
   15176             :                                 struct dcerpc_spoolss_DeletePerMachineConnection_r_state);
   15177           0 :         if (req == NULL) {
   15178           0 :                 return NULL;
   15179             :         }
   15180             : 
   15181           0 :         state->out_mem_ctx = NULL;
   15182             : 
   15183           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   15184             :                         NULL, &ndr_table_spoolss,
   15185             :                         NDR_SPOOLSS_DELETEPERMACHINECONNECTION, state, r);
   15186           0 :         if (tevent_req_nomem(subreq, req)) {
   15187           0 :                 return tevent_req_post(req, ev);
   15188             :         }
   15189           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePerMachineConnection_r_done, req);
   15190             : 
   15191           0 :         return req;
   15192             : }
   15193             : 
   15194           0 : static void dcerpc_spoolss_DeletePerMachineConnection_r_done(struct tevent_req *subreq)
   15195             : {
   15196           0 :         struct tevent_req *req =
   15197           0 :                 tevent_req_callback_data(subreq,
   15198             :                 struct tevent_req);
   15199           0 :         NTSTATUS status;
   15200             : 
   15201           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   15202           0 :         TALLOC_FREE(subreq);
   15203           0 :         if (tevent_req_nterror(req, status)) {
   15204           0 :                 return;
   15205             :         }
   15206             : 
   15207           0 :         tevent_req_done(req);
   15208             : }
   15209             : 
   15210           0 : NTSTATUS dcerpc_spoolss_DeletePerMachineConnection_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   15211             : {
   15212           0 :         struct dcerpc_spoolss_DeletePerMachineConnection_r_state *state =
   15213           0 :                 tevent_req_data(req,
   15214             :                 struct dcerpc_spoolss_DeletePerMachineConnection_r_state);
   15215           0 :         NTSTATUS status;
   15216             : 
   15217           0 :         if (tevent_req_is_nterror(req, &status)) {
   15218           0 :                 tevent_req_received(req);
   15219           0 :                 return status;
   15220             :         }
   15221             : 
   15222           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   15223             : 
   15224           0 :         tevent_req_received(req);
   15225           0 :         return NT_STATUS_OK;
   15226             : }
   15227             : 
   15228           0 : NTSTATUS dcerpc_spoolss_DeletePerMachineConnection_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePerMachineConnection *r)
   15229             : {
   15230           0 :         NTSTATUS status;
   15231             : 
   15232           0 :         status = dcerpc_binding_handle_call(h,
   15233             :                         NULL, &ndr_table_spoolss,
   15234             :                         NDR_SPOOLSS_DELETEPERMACHINECONNECTION, mem_ctx, r);
   15235             : 
   15236           0 :         return status;
   15237             : }
   15238             : 
   15239             : struct dcerpc_spoolss_DeletePerMachineConnection_state {
   15240             :         struct spoolss_DeletePerMachineConnection orig;
   15241             :         struct spoolss_DeletePerMachineConnection tmp;
   15242             :         TALLOC_CTX *out_mem_ctx;
   15243             : };
   15244             : 
   15245             : static void dcerpc_spoolss_DeletePerMachineConnection_done(struct tevent_req *subreq);
   15246             : 
   15247           0 : struct tevent_req *dcerpc_spoolss_DeletePerMachineConnection_send(TALLOC_CTX *mem_ctx,
   15248             :                                                                   struct tevent_context *ev,
   15249             :                                                                   struct dcerpc_binding_handle *h,
   15250             :                                                                   const char *_server /* [in] [charset(UTF16),unique] */,
   15251             :                                                                   const char *_printername /* [in] [charset(UTF16),ref] */)
   15252             : {
   15253           0 :         struct tevent_req *req;
   15254           0 :         struct dcerpc_spoolss_DeletePerMachineConnection_state *state;
   15255           0 :         struct tevent_req *subreq;
   15256             : 
   15257           0 :         req = tevent_req_create(mem_ctx, &state,
   15258             :                                 struct dcerpc_spoolss_DeletePerMachineConnection_state);
   15259           0 :         if (req == NULL) {
   15260           0 :                 return NULL;
   15261             :         }
   15262           0 :         state->out_mem_ctx = NULL;
   15263             : 
   15264             :         /* In parameters */
   15265           0 :         state->orig.in.server = _server;
   15266           0 :         state->orig.in.printername = _printername;
   15267             : 
   15268             :         /* Out parameters */
   15269             : 
   15270             :         /* Result */
   15271           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   15272             : 
   15273             :         /* make a temporary copy, that we pass to the dispatch function */
   15274           0 :         state->tmp = state->orig;
   15275             : 
   15276           0 :         subreq = dcerpc_spoolss_DeletePerMachineConnection_r_send(state, ev, h, &state->tmp);
   15277           0 :         if (tevent_req_nomem(subreq, req)) {
   15278           0 :                 return tevent_req_post(req, ev);
   15279             :         }
   15280           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePerMachineConnection_done, req);
   15281           0 :         return req;
   15282             : }
   15283             : 
   15284           0 : static void dcerpc_spoolss_DeletePerMachineConnection_done(struct tevent_req *subreq)
   15285             : {
   15286           0 :         struct tevent_req *req = tevent_req_callback_data(
   15287             :                 subreq, struct tevent_req);
   15288           0 :         struct dcerpc_spoolss_DeletePerMachineConnection_state *state = tevent_req_data(
   15289             :                 req, struct dcerpc_spoolss_DeletePerMachineConnection_state);
   15290           0 :         NTSTATUS status;
   15291           0 :         TALLOC_CTX *mem_ctx;
   15292             : 
   15293           0 :         if (state->out_mem_ctx) {
   15294           0 :                 mem_ctx = state->out_mem_ctx;
   15295             :         } else {
   15296           0 :                 mem_ctx = state;
   15297             :         }
   15298             : 
   15299           0 :         status = dcerpc_spoolss_DeletePerMachineConnection_r_recv(subreq, mem_ctx);
   15300           0 :         TALLOC_FREE(subreq);
   15301           0 :         if (tevent_req_nterror(req, status)) {
   15302           0 :                 return;
   15303             :         }
   15304             : 
   15305             :         /* Copy out parameters */
   15306             : 
   15307             :         /* Copy result */
   15308           0 :         state->orig.out.result = state->tmp.out.result;
   15309             : 
   15310             :         /* Reset temporary structure */
   15311           0 :         NDR_ZERO_STRUCT(state->tmp);
   15312             : 
   15313           0 :         tevent_req_done(req);
   15314             : }
   15315             : 
   15316           0 : NTSTATUS dcerpc_spoolss_DeletePerMachineConnection_recv(struct tevent_req *req,
   15317             :                                                         TALLOC_CTX *mem_ctx,
   15318             :                                                         WERROR *result)
   15319             : {
   15320           0 :         struct dcerpc_spoolss_DeletePerMachineConnection_state *state = tevent_req_data(
   15321             :                 req, struct dcerpc_spoolss_DeletePerMachineConnection_state);
   15322           0 :         NTSTATUS status;
   15323             : 
   15324           0 :         if (tevent_req_is_nterror(req, &status)) {
   15325           0 :                 tevent_req_received(req);
   15326           0 :                 return status;
   15327             :         }
   15328             : 
   15329             :         /* Steal possible out parameters to the callers context */
   15330           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   15331             : 
   15332             :         /* Return result */
   15333           0 :         *result = state->orig.out.result;
   15334             : 
   15335           0 :         tevent_req_received(req);
   15336           0 :         return NT_STATUS_OK;
   15337             : }
   15338             : 
   15339           0 : NTSTATUS dcerpc_spoolss_DeletePerMachineConnection(struct dcerpc_binding_handle *h,
   15340             :                                                    TALLOC_CTX *mem_ctx,
   15341             :                                                    const char *_server /* [in] [charset(UTF16),unique] */,
   15342             :                                                    const char *_printername /* [in] [charset(UTF16),ref] */,
   15343             :                                                    WERROR *result)
   15344             : {
   15345           0 :         struct spoolss_DeletePerMachineConnection r;
   15346           0 :         NTSTATUS status;
   15347             : 
   15348             :         /* In parameters */
   15349           0 :         r.in.server = _server;
   15350           0 :         r.in.printername = _printername;
   15351             : 
   15352             :         /* Out parameters */
   15353             : 
   15354             :         /* Result */
   15355           0 :         NDR_ZERO_STRUCT(r.out.result);
   15356             : 
   15357           0 :         status = dcerpc_spoolss_DeletePerMachineConnection_r(h, mem_ctx, &r);
   15358           0 :         if (!NT_STATUS_IS_OK(status)) {
   15359           0 :                 return status;
   15360             :         }
   15361             : 
   15362             :         /* Return variables */
   15363             : 
   15364             :         /* Return result */
   15365           0 :         *result = r.out.result;
   15366             : 
   15367           0 :         return NT_STATUS_OK;
   15368             : }
   15369             : 
   15370             : struct dcerpc_spoolss_EnumPerMachineConnections_r_state {
   15371             :         TALLOC_CTX *out_mem_ctx;
   15372             : };
   15373             : 
   15374             : static void dcerpc_spoolss_EnumPerMachineConnections_r_done(struct tevent_req *subreq);
   15375             : 
   15376           0 : struct tevent_req *dcerpc_spoolss_EnumPerMachineConnections_r_send(TALLOC_CTX *mem_ctx,
   15377             :         struct tevent_context *ev,
   15378             :         struct dcerpc_binding_handle *h,
   15379             :         struct spoolss_EnumPerMachineConnections *r)
   15380             : {
   15381           0 :         struct tevent_req *req;
   15382           0 :         struct dcerpc_spoolss_EnumPerMachineConnections_r_state *state;
   15383           0 :         struct tevent_req *subreq;
   15384             : 
   15385           0 :         req = tevent_req_create(mem_ctx, &state,
   15386             :                                 struct dcerpc_spoolss_EnumPerMachineConnections_r_state);
   15387           0 :         if (req == NULL) {
   15388           0 :                 return NULL;
   15389             :         }
   15390             : 
   15391           0 :         state->out_mem_ctx = talloc_new(state);
   15392           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   15393           0 :                 return tevent_req_post(req, ev);
   15394             :         }
   15395             : 
   15396           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   15397             :                         NULL, &ndr_table_spoolss,
   15398           0 :                         NDR_SPOOLSS_ENUMPERMACHINECONNECTIONS, state->out_mem_ctx, r);
   15399           0 :         if (tevent_req_nomem(subreq, req)) {
   15400           0 :                 return tevent_req_post(req, ev);
   15401             :         }
   15402           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPerMachineConnections_r_done, req);
   15403             : 
   15404           0 :         return req;
   15405             : }
   15406             : 
   15407           0 : static void dcerpc_spoolss_EnumPerMachineConnections_r_done(struct tevent_req *subreq)
   15408             : {
   15409           0 :         struct tevent_req *req =
   15410           0 :                 tevent_req_callback_data(subreq,
   15411             :                 struct tevent_req);
   15412           0 :         NTSTATUS status;
   15413             : 
   15414           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   15415           0 :         TALLOC_FREE(subreq);
   15416           0 :         if (tevent_req_nterror(req, status)) {
   15417           0 :                 return;
   15418             :         }
   15419             : 
   15420           0 :         tevent_req_done(req);
   15421             : }
   15422             : 
   15423           0 : NTSTATUS dcerpc_spoolss_EnumPerMachineConnections_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   15424             : {
   15425           0 :         struct dcerpc_spoolss_EnumPerMachineConnections_r_state *state =
   15426           0 :                 tevent_req_data(req,
   15427             :                 struct dcerpc_spoolss_EnumPerMachineConnections_r_state);
   15428           0 :         NTSTATUS status;
   15429             : 
   15430           0 :         if (tevent_req_is_nterror(req, &status)) {
   15431           0 :                 tevent_req_received(req);
   15432           0 :                 return status;
   15433             :         }
   15434             : 
   15435           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   15436             : 
   15437           0 :         tevent_req_received(req);
   15438           0 :         return NT_STATUS_OK;
   15439             : }
   15440             : 
   15441           0 : NTSTATUS dcerpc_spoolss_EnumPerMachineConnections_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPerMachineConnections *r)
   15442             : {
   15443           0 :         NTSTATUS status;
   15444             : 
   15445           0 :         status = dcerpc_binding_handle_call(h,
   15446             :                         NULL, &ndr_table_spoolss,
   15447             :                         NDR_SPOOLSS_ENUMPERMACHINECONNECTIONS, mem_ctx, r);
   15448             : 
   15449           0 :         return status;
   15450             : }
   15451             : 
   15452             : struct dcerpc_spoolss_EnumPerMachineConnections_state {
   15453             :         struct spoolss_EnumPerMachineConnections orig;
   15454             :         struct spoolss_EnumPerMachineConnections tmp;
   15455             :         TALLOC_CTX *out_mem_ctx;
   15456             : };
   15457             : 
   15458             : static void dcerpc_spoolss_EnumPerMachineConnections_done(struct tevent_req *subreq);
   15459             : 
   15460           0 : struct tevent_req *dcerpc_spoolss_EnumPerMachineConnections_send(TALLOC_CTX *mem_ctx,
   15461             :                                                                  struct tevent_context *ev,
   15462             :                                                                  struct dcerpc_binding_handle *h,
   15463             :                                                                  const char *_server /* [in] [charset(UTF16),unique] */,
   15464             :                                                                  DATA_BLOB *_buffer /* [in] [unique] */,
   15465             :                                                                  uint32_t _offered /* [in]  */,
   15466             :                                                                  uint32_t *_count /* [out] [ref] */,
   15467             :                                                                  struct spoolss_PrinterInfo4 **_info /* [out] [ref,size_is(,*count)] */,
   15468             :                                                                  uint32_t *_needed /* [out] [ref] */)
   15469             : {
   15470           0 :         struct tevent_req *req;
   15471           0 :         struct dcerpc_spoolss_EnumPerMachineConnections_state *state;
   15472           0 :         struct tevent_req *subreq;
   15473             : 
   15474           0 :         req = tevent_req_create(mem_ctx, &state,
   15475             :                                 struct dcerpc_spoolss_EnumPerMachineConnections_state);
   15476           0 :         if (req == NULL) {
   15477           0 :                 return NULL;
   15478             :         }
   15479           0 :         state->out_mem_ctx = NULL;
   15480             : 
   15481             :         /* In parameters */
   15482           0 :         state->orig.in.server = _server;
   15483           0 :         state->orig.in.buffer = _buffer;
   15484           0 :         state->orig.in.offered = _offered;
   15485             : 
   15486             :         /* Out parameters */
   15487           0 :         state->orig.out.count = _count;
   15488           0 :         state->orig.out.info = _info;
   15489           0 :         state->orig.out.needed = _needed;
   15490             : 
   15491             :         /* Result */
   15492           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   15493             : 
   15494           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   15495             :                              "dcerpc_spoolss_EnumPerMachineConnections_out_memory");
   15496           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   15497           0 :                 return tevent_req_post(req, ev);
   15498             :         }
   15499             : 
   15500             :         /* make a temporary copy, that we pass to the dispatch function */
   15501           0 :         state->tmp = state->orig;
   15502             : 
   15503           0 :         subreq = dcerpc_spoolss_EnumPerMachineConnections_r_send(state, ev, h, &state->tmp);
   15504           0 :         if (tevent_req_nomem(subreq, req)) {
   15505           0 :                 return tevent_req_post(req, ev);
   15506             :         }
   15507           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPerMachineConnections_done, req);
   15508           0 :         return req;
   15509             : }
   15510             : 
   15511           0 : static void dcerpc_spoolss_EnumPerMachineConnections_done(struct tevent_req *subreq)
   15512             : {
   15513           0 :         struct tevent_req *req = tevent_req_callback_data(
   15514             :                 subreq, struct tevent_req);
   15515           0 :         struct dcerpc_spoolss_EnumPerMachineConnections_state *state = tevent_req_data(
   15516             :                 req, struct dcerpc_spoolss_EnumPerMachineConnections_state);
   15517           0 :         NTSTATUS status;
   15518           0 :         TALLOC_CTX *mem_ctx;
   15519             : 
   15520           0 :         if (state->out_mem_ctx) {
   15521           0 :                 mem_ctx = state->out_mem_ctx;
   15522             :         } else {
   15523           0 :                 mem_ctx = state;
   15524             :         }
   15525             : 
   15526           0 :         status = dcerpc_spoolss_EnumPerMachineConnections_r_recv(subreq, mem_ctx);
   15527           0 :         TALLOC_FREE(subreq);
   15528           0 :         if (tevent_req_nterror(req, status)) {
   15529           0 :                 return;
   15530             :         }
   15531             : 
   15532             :         /* Copy out parameters */
   15533           0 :         *state->orig.out.count = *state->tmp.out.count;
   15534           0 :         *state->orig.out.info = *state->tmp.out.info;
   15535           0 :         *state->orig.out.needed = *state->tmp.out.needed;
   15536             : 
   15537             :         /* Copy result */
   15538           0 :         state->orig.out.result = state->tmp.out.result;
   15539             : 
   15540             :         /* Reset temporary structure */
   15541           0 :         NDR_ZERO_STRUCT(state->tmp);
   15542             : 
   15543           0 :         tevent_req_done(req);
   15544             : }
   15545             : 
   15546           0 : NTSTATUS dcerpc_spoolss_EnumPerMachineConnections_recv(struct tevent_req *req,
   15547             :                                                        TALLOC_CTX *mem_ctx,
   15548             :                                                        WERROR *result)
   15549             : {
   15550           0 :         struct dcerpc_spoolss_EnumPerMachineConnections_state *state = tevent_req_data(
   15551             :                 req, struct dcerpc_spoolss_EnumPerMachineConnections_state);
   15552           0 :         NTSTATUS status;
   15553             : 
   15554           0 :         if (tevent_req_is_nterror(req, &status)) {
   15555           0 :                 tevent_req_received(req);
   15556           0 :                 return status;
   15557             :         }
   15558             : 
   15559             :         /* Steal possible out parameters to the callers context */
   15560           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   15561             : 
   15562             :         /* Return result */
   15563           0 :         *result = state->orig.out.result;
   15564             : 
   15565           0 :         tevent_req_received(req);
   15566           0 :         return NT_STATUS_OK;
   15567             : }
   15568             : 
   15569           0 : NTSTATUS dcerpc_spoolss_EnumPerMachineConnections(struct dcerpc_binding_handle *h,
   15570             :                                                   TALLOC_CTX *mem_ctx,
   15571             :                                                   const char *_server /* [in] [charset(UTF16),unique] */,
   15572             :                                                   DATA_BLOB *_buffer /* [in] [unique] */,
   15573             :                                                   uint32_t _offered /* [in]  */,
   15574             :                                                   uint32_t *_count /* [out] [ref] */,
   15575             :                                                   struct spoolss_PrinterInfo4 **_info /* [out] [ref,size_is(,*count)] */,
   15576             :                                                   uint32_t *_needed /* [out] [ref] */,
   15577             :                                                   WERROR *result)
   15578             : {
   15579           0 :         struct spoolss_EnumPerMachineConnections r;
   15580           0 :         NTSTATUS status;
   15581             : 
   15582             :         /* In parameters */
   15583           0 :         r.in.server = _server;
   15584           0 :         r.in.buffer = _buffer;
   15585           0 :         r.in.offered = _offered;
   15586             : 
   15587             :         /* Out parameters */
   15588           0 :         r.out.count = _count;
   15589           0 :         r.out.info = _info;
   15590           0 :         r.out.needed = _needed;
   15591             : 
   15592             :         /* Result */
   15593           0 :         NDR_ZERO_STRUCT(r.out.result);
   15594             : 
   15595           0 :         status = dcerpc_spoolss_EnumPerMachineConnections_r(h, mem_ctx, &r);
   15596           0 :         if (!NT_STATUS_IS_OK(status)) {
   15597           0 :                 return status;
   15598             :         }
   15599             : 
   15600             :         /* Return variables */
   15601           0 :         *_count = *r.out.count;
   15602           0 :         *_info = *r.out.info;
   15603           0 :         *_needed = *r.out.needed;
   15604             : 
   15605             :         /* Return result */
   15606           0 :         *result = r.out.result;
   15607             : 
   15608           0 :         return NT_STATUS_OK;
   15609             : }
   15610             : 
   15611             : struct dcerpc_spoolss_XcvData_r_state {
   15612             :         TALLOC_CTX *out_mem_ctx;
   15613             : };
   15614             : 
   15615             : static void dcerpc_spoolss_XcvData_r_done(struct tevent_req *subreq);
   15616             : 
   15617           0 : struct tevent_req *dcerpc_spoolss_XcvData_r_send(TALLOC_CTX *mem_ctx,
   15618             :         struct tevent_context *ev,
   15619             :         struct dcerpc_binding_handle *h,
   15620             :         struct spoolss_XcvData *r)
   15621             : {
   15622           0 :         struct tevent_req *req;
   15623           0 :         struct dcerpc_spoolss_XcvData_r_state *state;
   15624           0 :         struct tevent_req *subreq;
   15625             : 
   15626           0 :         req = tevent_req_create(mem_ctx, &state,
   15627             :                                 struct dcerpc_spoolss_XcvData_r_state);
   15628           0 :         if (req == NULL) {
   15629           0 :                 return NULL;
   15630             :         }
   15631             : 
   15632           0 :         state->out_mem_ctx = talloc_new(state);
   15633           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   15634           0 :                 return tevent_req_post(req, ev);
   15635             :         }
   15636             : 
   15637           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   15638             :                         NULL, &ndr_table_spoolss,
   15639           0 :                         NDR_SPOOLSS_XCVDATA, state->out_mem_ctx, r);
   15640           0 :         if (tevent_req_nomem(subreq, req)) {
   15641           0 :                 return tevent_req_post(req, ev);
   15642             :         }
   15643           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_XcvData_r_done, req);
   15644             : 
   15645           0 :         return req;
   15646             : }
   15647             : 
   15648           0 : static void dcerpc_spoolss_XcvData_r_done(struct tevent_req *subreq)
   15649             : {
   15650           0 :         struct tevent_req *req =
   15651           0 :                 tevent_req_callback_data(subreq,
   15652             :                 struct tevent_req);
   15653           0 :         NTSTATUS status;
   15654             : 
   15655           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   15656           0 :         TALLOC_FREE(subreq);
   15657           0 :         if (tevent_req_nterror(req, status)) {
   15658           0 :                 return;
   15659             :         }
   15660             : 
   15661           0 :         tevent_req_done(req);
   15662             : }
   15663             : 
   15664           0 : NTSTATUS dcerpc_spoolss_XcvData_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   15665             : {
   15666           0 :         struct dcerpc_spoolss_XcvData_r_state *state =
   15667           0 :                 tevent_req_data(req,
   15668             :                 struct dcerpc_spoolss_XcvData_r_state);
   15669           0 :         NTSTATUS status;
   15670             : 
   15671           0 :         if (tevent_req_is_nterror(req, &status)) {
   15672           0 :                 tevent_req_received(req);
   15673           0 :                 return status;
   15674             :         }
   15675             : 
   15676           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   15677             : 
   15678           0 :         tevent_req_received(req);
   15679           0 :         return NT_STATUS_OK;
   15680             : }
   15681             : 
   15682           0 : NTSTATUS dcerpc_spoolss_XcvData_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_XcvData *r)
   15683             : {
   15684           0 :         NTSTATUS status;
   15685             : 
   15686           0 :         status = dcerpc_binding_handle_call(h,
   15687             :                         NULL, &ndr_table_spoolss,
   15688             :                         NDR_SPOOLSS_XCVDATA, mem_ctx, r);
   15689             : 
   15690           0 :         return status;
   15691             : }
   15692             : 
   15693             : struct dcerpc_spoolss_XcvData_state {
   15694             :         struct spoolss_XcvData orig;
   15695             :         struct spoolss_XcvData tmp;
   15696             :         TALLOC_CTX *out_mem_ctx;
   15697             : };
   15698             : 
   15699             : static void dcerpc_spoolss_XcvData_done(struct tevent_req *subreq);
   15700             : 
   15701           0 : struct tevent_req *dcerpc_spoolss_XcvData_send(TALLOC_CTX *mem_ctx,
   15702             :                                                struct tevent_context *ev,
   15703             :                                                struct dcerpc_binding_handle *h,
   15704             :                                                struct policy_handle *_handle /* [in] [ref] */,
   15705             :                                                const char *_function_name /* [in] [charset(UTF16)] */,
   15706             :                                                DATA_BLOB _in_data /* [in]  */,
   15707             :                                                uint32_t __in_data_length /* [in] [value(r->in.in_data.length)] */,
   15708             :                                                uint8_t *_out_data /* [out] [ref,size_is(out_data_size)] */,
   15709             :                                                uint32_t _out_data_size /* [in]  */,
   15710             :                                                uint32_t *_needed /* [out] [ref] */,
   15711             :                                                uint32_t *_status_code /* [in,out] [ref] */)
   15712             : {
   15713           0 :         struct tevent_req *req;
   15714           0 :         struct dcerpc_spoolss_XcvData_state *state;
   15715           0 :         struct tevent_req *subreq;
   15716             : 
   15717           0 :         req = tevent_req_create(mem_ctx, &state,
   15718             :                                 struct dcerpc_spoolss_XcvData_state);
   15719           0 :         if (req == NULL) {
   15720           0 :                 return NULL;
   15721             :         }
   15722           0 :         state->out_mem_ctx = NULL;
   15723             : 
   15724             :         /* In parameters */
   15725           0 :         state->orig.in.handle = _handle;
   15726           0 :         state->orig.in.function_name = _function_name;
   15727           0 :         state->orig.in.in_data = _in_data;
   15728           0 :         state->orig.in._in_data_length = __in_data_length;
   15729           0 :         state->orig.in.out_data_size = _out_data_size;
   15730           0 :         state->orig.in.status_code = _status_code;
   15731             : 
   15732             :         /* Out parameters */
   15733           0 :         state->orig.out.out_data = _out_data;
   15734           0 :         state->orig.out.needed = _needed;
   15735           0 :         state->orig.out.status_code = _status_code;
   15736             : 
   15737             :         /* Result */
   15738           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   15739             : 
   15740           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   15741             :                              "dcerpc_spoolss_XcvData_out_memory");
   15742           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   15743           0 :                 return tevent_req_post(req, ev);
   15744             :         }
   15745             : 
   15746             :         /* make a temporary copy, that we pass to the dispatch function */
   15747           0 :         state->tmp = state->orig;
   15748             : 
   15749           0 :         subreq = dcerpc_spoolss_XcvData_r_send(state, ev, h, &state->tmp);
   15750           0 :         if (tevent_req_nomem(subreq, req)) {
   15751           0 :                 return tevent_req_post(req, ev);
   15752             :         }
   15753           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_XcvData_done, req);
   15754           0 :         return req;
   15755             : }
   15756             : 
   15757           0 : static void dcerpc_spoolss_XcvData_done(struct tevent_req *subreq)
   15758             : {
   15759           0 :         struct tevent_req *req = tevent_req_callback_data(
   15760             :                 subreq, struct tevent_req);
   15761           0 :         struct dcerpc_spoolss_XcvData_state *state = tevent_req_data(
   15762             :                 req, struct dcerpc_spoolss_XcvData_state);
   15763           0 :         NTSTATUS status;
   15764           0 :         TALLOC_CTX *mem_ctx;
   15765             : 
   15766           0 :         if (state->out_mem_ctx) {
   15767           0 :                 mem_ctx = state->out_mem_ctx;
   15768             :         } else {
   15769           0 :                 mem_ctx = state;
   15770             :         }
   15771             : 
   15772           0 :         status = dcerpc_spoolss_XcvData_r_recv(subreq, mem_ctx);
   15773           0 :         TALLOC_FREE(subreq);
   15774           0 :         if (tevent_req_nterror(req, status)) {
   15775           0 :                 return;
   15776             :         }
   15777             : 
   15778             :         /* Copy out parameters */
   15779             :         {
   15780           0 :                 size_t _copy_len_out_data;
   15781           0 :                 _copy_len_out_data = state->tmp.in.out_data_size;
   15782           0 :                 if (state->orig.out.out_data != state->tmp.out.out_data) {
   15783           0 :                         memcpy(state->orig.out.out_data, state->tmp.out.out_data, _copy_len_out_data * sizeof(*state->orig.out.out_data));
   15784             :                 }
   15785             :         }
   15786           0 :         *state->orig.out.needed = *state->tmp.out.needed;
   15787           0 :         *state->orig.out.status_code = *state->tmp.out.status_code;
   15788             : 
   15789             :         /* Copy result */
   15790           0 :         state->orig.out.result = state->tmp.out.result;
   15791             : 
   15792             :         /* Reset temporary structure */
   15793           0 :         NDR_ZERO_STRUCT(state->tmp);
   15794             : 
   15795           0 :         tevent_req_done(req);
   15796             : }
   15797             : 
   15798           0 : NTSTATUS dcerpc_spoolss_XcvData_recv(struct tevent_req *req,
   15799             :                                      TALLOC_CTX *mem_ctx,
   15800             :                                      WERROR *result)
   15801             : {
   15802           0 :         struct dcerpc_spoolss_XcvData_state *state = tevent_req_data(
   15803             :                 req, struct dcerpc_spoolss_XcvData_state);
   15804           0 :         NTSTATUS status;
   15805             : 
   15806           0 :         if (tevent_req_is_nterror(req, &status)) {
   15807           0 :                 tevent_req_received(req);
   15808           0 :                 return status;
   15809             :         }
   15810             : 
   15811             :         /* Steal possible out parameters to the callers context */
   15812           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   15813             : 
   15814             :         /* Return result */
   15815           0 :         *result = state->orig.out.result;
   15816             : 
   15817           0 :         tevent_req_received(req);
   15818           0 :         return NT_STATUS_OK;
   15819             : }
   15820             : 
   15821           0 : NTSTATUS dcerpc_spoolss_XcvData(struct dcerpc_binding_handle *h,
   15822             :                                 TALLOC_CTX *mem_ctx,
   15823             :                                 struct policy_handle *_handle /* [in] [ref] */,
   15824             :                                 const char *_function_name /* [in] [charset(UTF16)] */,
   15825             :                                 DATA_BLOB _in_data /* [in]  */,
   15826             :                                 uint32_t __in_data_length /* [in] [value(r->in.in_data.length)] */,
   15827             :                                 uint8_t *_out_data /* [out] [ref,size_is(out_data_size)] */,
   15828             :                                 uint32_t _out_data_size /* [in]  */,
   15829             :                                 uint32_t *_needed /* [out] [ref] */,
   15830             :                                 uint32_t *_status_code /* [in,out] [ref] */,
   15831             :                                 WERROR *result)
   15832             : {
   15833           0 :         struct spoolss_XcvData r;
   15834           0 :         NTSTATUS status;
   15835             : 
   15836             :         /* In parameters */
   15837           0 :         r.in.handle = _handle;
   15838           0 :         r.in.function_name = _function_name;
   15839           0 :         r.in.in_data = _in_data;
   15840           0 :         r.in._in_data_length = __in_data_length;
   15841           0 :         r.in.out_data_size = _out_data_size;
   15842           0 :         r.in.status_code = _status_code;
   15843             : 
   15844             :         /* Out parameters */
   15845           0 :         r.out.out_data = _out_data;
   15846           0 :         r.out.needed = _needed;
   15847           0 :         r.out.status_code = _status_code;
   15848             : 
   15849             :         /* Result */
   15850           0 :         NDR_ZERO_STRUCT(r.out.result);
   15851             : 
   15852           0 :         status = dcerpc_spoolss_XcvData_r(h, mem_ctx, &r);
   15853           0 :         if (!NT_STATUS_IS_OK(status)) {
   15854           0 :                 return status;
   15855             :         }
   15856             : 
   15857             :         /* Return variables */
   15858             :         {
   15859           0 :                 size_t _copy_len_out_data;
   15860           0 :                 _copy_len_out_data = r.in.out_data_size;
   15861           0 :                 if (_out_data != r.out.out_data) {
   15862           0 :                         memcpy(_out_data, r.out.out_data, _copy_len_out_data * sizeof(*_out_data));
   15863             :                 }
   15864             :         }
   15865           0 :         *_needed = *r.out.needed;
   15866           0 :         *_status_code = *r.out.status_code;
   15867             : 
   15868             :         /* Return result */
   15869           0 :         *result = r.out.result;
   15870             : 
   15871           0 :         return NT_STATUS_OK;
   15872             : }
   15873             : 
   15874             : struct dcerpc_spoolss_AddPrinterDriverEx_r_state {
   15875             :         TALLOC_CTX *out_mem_ctx;
   15876             : };
   15877             : 
   15878             : static void dcerpc_spoolss_AddPrinterDriverEx_r_done(struct tevent_req *subreq);
   15879             : 
   15880           0 : struct tevent_req *dcerpc_spoolss_AddPrinterDriverEx_r_send(TALLOC_CTX *mem_ctx,
   15881             :         struct tevent_context *ev,
   15882             :         struct dcerpc_binding_handle *h,
   15883             :         struct spoolss_AddPrinterDriverEx *r)
   15884             : {
   15885           0 :         struct tevent_req *req;
   15886           0 :         struct dcerpc_spoolss_AddPrinterDriverEx_r_state *state;
   15887           0 :         struct tevent_req *subreq;
   15888             : 
   15889           0 :         req = tevent_req_create(mem_ctx, &state,
   15890             :                                 struct dcerpc_spoolss_AddPrinterDriverEx_r_state);
   15891           0 :         if (req == NULL) {
   15892           0 :                 return NULL;
   15893             :         }
   15894             : 
   15895           0 :         state->out_mem_ctx = NULL;
   15896             : 
   15897           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   15898             :                         NULL, &ndr_table_spoolss,
   15899             :                         NDR_SPOOLSS_ADDPRINTERDRIVEREX, state, r);
   15900           0 :         if (tevent_req_nomem(subreq, req)) {
   15901           0 :                 return tevent_req_post(req, ev);
   15902             :         }
   15903           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinterDriverEx_r_done, req);
   15904             : 
   15905           0 :         return req;
   15906             : }
   15907             : 
   15908           0 : static void dcerpc_spoolss_AddPrinterDriverEx_r_done(struct tevent_req *subreq)
   15909             : {
   15910           0 :         struct tevent_req *req =
   15911           0 :                 tevent_req_callback_data(subreq,
   15912             :                 struct tevent_req);
   15913           0 :         NTSTATUS status;
   15914             : 
   15915           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   15916           0 :         TALLOC_FREE(subreq);
   15917           0 :         if (tevent_req_nterror(req, status)) {
   15918           0 :                 return;
   15919             :         }
   15920             : 
   15921           0 :         tevent_req_done(req);
   15922             : }
   15923             : 
   15924           0 : NTSTATUS dcerpc_spoolss_AddPrinterDriverEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   15925             : {
   15926           0 :         struct dcerpc_spoolss_AddPrinterDriverEx_r_state *state =
   15927           0 :                 tevent_req_data(req,
   15928             :                 struct dcerpc_spoolss_AddPrinterDriverEx_r_state);
   15929           0 :         NTSTATUS status;
   15930             : 
   15931           0 :         if (tevent_req_is_nterror(req, &status)) {
   15932           0 :                 tevent_req_received(req);
   15933           0 :                 return status;
   15934             :         }
   15935             : 
   15936           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   15937             : 
   15938           0 :         tevent_req_received(req);
   15939           0 :         return NT_STATUS_OK;
   15940             : }
   15941             : 
   15942           0 : NTSTATUS dcerpc_spoolss_AddPrinterDriverEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPrinterDriverEx *r)
   15943             : {
   15944           0 :         NTSTATUS status;
   15945             : 
   15946           0 :         status = dcerpc_binding_handle_call(h,
   15947             :                         NULL, &ndr_table_spoolss,
   15948             :                         NDR_SPOOLSS_ADDPRINTERDRIVEREX, mem_ctx, r);
   15949             : 
   15950           0 :         return status;
   15951             : }
   15952             : 
   15953             : struct dcerpc_spoolss_AddPrinterDriverEx_state {
   15954             :         struct spoolss_AddPrinterDriverEx orig;
   15955             :         struct spoolss_AddPrinterDriverEx tmp;
   15956             :         TALLOC_CTX *out_mem_ctx;
   15957             : };
   15958             : 
   15959             : static void dcerpc_spoolss_AddPrinterDriverEx_done(struct tevent_req *subreq);
   15960             : 
   15961           0 : struct tevent_req *dcerpc_spoolss_AddPrinterDriverEx_send(TALLOC_CTX *mem_ctx,
   15962             :                                                           struct tevent_context *ev,
   15963             :                                                           struct dcerpc_binding_handle *h,
   15964             :                                                           const char *_servername /* [in] [charset(UTF16),unique] */,
   15965             :                                                           struct spoolss_AddDriverInfoCtr *_info_ctr /* [in] [ref] */,
   15966             :                                                           uint32_t _flags /* [in]  */)
   15967             : {
   15968           0 :         struct tevent_req *req;
   15969           0 :         struct dcerpc_spoolss_AddPrinterDriverEx_state *state;
   15970           0 :         struct tevent_req *subreq;
   15971             : 
   15972           0 :         req = tevent_req_create(mem_ctx, &state,
   15973             :                                 struct dcerpc_spoolss_AddPrinterDriverEx_state);
   15974           0 :         if (req == NULL) {
   15975           0 :                 return NULL;
   15976             :         }
   15977           0 :         state->out_mem_ctx = NULL;
   15978             : 
   15979             :         /* In parameters */
   15980           0 :         state->orig.in.servername = _servername;
   15981           0 :         state->orig.in.info_ctr = _info_ctr;
   15982           0 :         state->orig.in.flags = _flags;
   15983             : 
   15984             :         /* Out parameters */
   15985             : 
   15986             :         /* Result */
   15987           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   15988             : 
   15989             :         /* make a temporary copy, that we pass to the dispatch function */
   15990           0 :         state->tmp = state->orig;
   15991             : 
   15992           0 :         subreq = dcerpc_spoolss_AddPrinterDriverEx_r_send(state, ev, h, &state->tmp);
   15993           0 :         if (tevent_req_nomem(subreq, req)) {
   15994           0 :                 return tevent_req_post(req, ev);
   15995             :         }
   15996           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinterDriverEx_done, req);
   15997           0 :         return req;
   15998             : }
   15999             : 
   16000           0 : static void dcerpc_spoolss_AddPrinterDriverEx_done(struct tevent_req *subreq)
   16001             : {
   16002           0 :         struct tevent_req *req = tevent_req_callback_data(
   16003             :                 subreq, struct tevent_req);
   16004           0 :         struct dcerpc_spoolss_AddPrinterDriverEx_state *state = tevent_req_data(
   16005             :                 req, struct dcerpc_spoolss_AddPrinterDriverEx_state);
   16006           0 :         NTSTATUS status;
   16007           0 :         TALLOC_CTX *mem_ctx;
   16008             : 
   16009           0 :         if (state->out_mem_ctx) {
   16010           0 :                 mem_ctx = state->out_mem_ctx;
   16011             :         } else {
   16012           0 :                 mem_ctx = state;
   16013             :         }
   16014             : 
   16015           0 :         status = dcerpc_spoolss_AddPrinterDriverEx_r_recv(subreq, mem_ctx);
   16016           0 :         TALLOC_FREE(subreq);
   16017           0 :         if (tevent_req_nterror(req, status)) {
   16018           0 :                 return;
   16019             :         }
   16020             : 
   16021             :         /* Copy out parameters */
   16022             : 
   16023             :         /* Copy result */
   16024           0 :         state->orig.out.result = state->tmp.out.result;
   16025             : 
   16026             :         /* Reset temporary structure */
   16027           0 :         NDR_ZERO_STRUCT(state->tmp);
   16028             : 
   16029           0 :         tevent_req_done(req);
   16030             : }
   16031             : 
   16032           0 : NTSTATUS dcerpc_spoolss_AddPrinterDriverEx_recv(struct tevent_req *req,
   16033             :                                                 TALLOC_CTX *mem_ctx,
   16034             :                                                 WERROR *result)
   16035             : {
   16036           0 :         struct dcerpc_spoolss_AddPrinterDriverEx_state *state = tevent_req_data(
   16037             :                 req, struct dcerpc_spoolss_AddPrinterDriverEx_state);
   16038           0 :         NTSTATUS status;
   16039             : 
   16040           0 :         if (tevent_req_is_nterror(req, &status)) {
   16041           0 :                 tevent_req_received(req);
   16042           0 :                 return status;
   16043             :         }
   16044             : 
   16045             :         /* Steal possible out parameters to the callers context */
   16046           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   16047             : 
   16048             :         /* Return result */
   16049           0 :         *result = state->orig.out.result;
   16050             : 
   16051           0 :         tevent_req_received(req);
   16052           0 :         return NT_STATUS_OK;
   16053             : }
   16054             : 
   16055           0 : NTSTATUS dcerpc_spoolss_AddPrinterDriverEx(struct dcerpc_binding_handle *h,
   16056             :                                            TALLOC_CTX *mem_ctx,
   16057             :                                            const char *_servername /* [in] [charset(UTF16),unique] */,
   16058             :                                            struct spoolss_AddDriverInfoCtr *_info_ctr /* [in] [ref] */,
   16059             :                                            uint32_t _flags /* [in]  */,
   16060             :                                            WERROR *result)
   16061             : {
   16062           0 :         struct spoolss_AddPrinterDriverEx r;
   16063           0 :         NTSTATUS status;
   16064             : 
   16065             :         /* In parameters */
   16066           0 :         r.in.servername = _servername;
   16067           0 :         r.in.info_ctr = _info_ctr;
   16068           0 :         r.in.flags = _flags;
   16069             : 
   16070             :         /* Out parameters */
   16071             : 
   16072             :         /* Result */
   16073           0 :         NDR_ZERO_STRUCT(r.out.result);
   16074             : 
   16075           0 :         status = dcerpc_spoolss_AddPrinterDriverEx_r(h, mem_ctx, &r);
   16076           0 :         if (!NT_STATUS_IS_OK(status)) {
   16077           0 :                 return status;
   16078             :         }
   16079             : 
   16080             :         /* Return variables */
   16081             : 
   16082             :         /* Return result */
   16083           0 :         *result = r.out.result;
   16084             : 
   16085           0 :         return NT_STATUS_OK;
   16086             : }
   16087             : 
   16088             : struct dcerpc_spoolss_SendRecvBidiData_r_state {
   16089             :         TALLOC_CTX *out_mem_ctx;
   16090             : };
   16091             : 
   16092             : static void dcerpc_spoolss_SendRecvBidiData_r_done(struct tevent_req *subreq);
   16093             : 
   16094           0 : struct tevent_req *dcerpc_spoolss_SendRecvBidiData_r_send(TALLOC_CTX *mem_ctx,
   16095             :         struct tevent_context *ev,
   16096             :         struct dcerpc_binding_handle *h,
   16097             :         struct spoolss_SendRecvBidiData *r)
   16098             : {
   16099           0 :         struct tevent_req *req;
   16100           0 :         struct dcerpc_spoolss_SendRecvBidiData_r_state *state;
   16101           0 :         struct tevent_req *subreq;
   16102             : 
   16103           0 :         req = tevent_req_create(mem_ctx, &state,
   16104             :                                 struct dcerpc_spoolss_SendRecvBidiData_r_state);
   16105           0 :         if (req == NULL) {
   16106           0 :                 return NULL;
   16107             :         }
   16108             : 
   16109           0 :         state->out_mem_ctx = talloc_new(state);
   16110           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   16111           0 :                 return tevent_req_post(req, ev);
   16112             :         }
   16113             : 
   16114           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   16115             :                         NULL, &ndr_table_spoolss,
   16116           0 :                         NDR_SPOOLSS_SENDRECVBIDIDATA, state->out_mem_ctx, r);
   16117           0 :         if (tevent_req_nomem(subreq, req)) {
   16118           0 :                 return tevent_req_post(req, ev);
   16119             :         }
   16120           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_SendRecvBidiData_r_done, req);
   16121             : 
   16122           0 :         return req;
   16123             : }
   16124             : 
   16125           0 : static void dcerpc_spoolss_SendRecvBidiData_r_done(struct tevent_req *subreq)
   16126             : {
   16127           0 :         struct tevent_req *req =
   16128           0 :                 tevent_req_callback_data(subreq,
   16129             :                 struct tevent_req);
   16130           0 :         NTSTATUS status;
   16131             : 
   16132           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   16133           0 :         TALLOC_FREE(subreq);
   16134           0 :         if (tevent_req_nterror(req, status)) {
   16135           0 :                 return;
   16136             :         }
   16137             : 
   16138           0 :         tevent_req_done(req);
   16139             : }
   16140             : 
   16141           0 : NTSTATUS dcerpc_spoolss_SendRecvBidiData_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   16142             : {
   16143           0 :         struct dcerpc_spoolss_SendRecvBidiData_r_state *state =
   16144           0 :                 tevent_req_data(req,
   16145             :                 struct dcerpc_spoolss_SendRecvBidiData_r_state);
   16146           0 :         NTSTATUS status;
   16147             : 
   16148           0 :         if (tevent_req_is_nterror(req, &status)) {
   16149           0 :                 tevent_req_received(req);
   16150           0 :                 return status;
   16151             :         }
   16152             : 
   16153           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   16154             : 
   16155           0 :         tevent_req_received(req);
   16156           0 :         return NT_STATUS_OK;
   16157             : }
   16158             : 
   16159           0 : NTSTATUS dcerpc_spoolss_SendRecvBidiData_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_SendRecvBidiData *r)
   16160             : {
   16161           0 :         NTSTATUS status;
   16162             : 
   16163           0 :         status = dcerpc_binding_handle_call(h,
   16164             :                         NULL, &ndr_table_spoolss,
   16165             :                         NDR_SPOOLSS_SENDRECVBIDIDATA, mem_ctx, r);
   16166             : 
   16167           0 :         return status;
   16168             : }
   16169             : 
   16170             : struct dcerpc_spoolss_SendRecvBidiData_state {
   16171             :         struct spoolss_SendRecvBidiData orig;
   16172             :         struct spoolss_SendRecvBidiData tmp;
   16173             :         TALLOC_CTX *out_mem_ctx;
   16174             : };
   16175             : 
   16176             : static void dcerpc_spoolss_SendRecvBidiData_done(struct tevent_req *subreq);
   16177             : 
   16178           0 : struct tevent_req *dcerpc_spoolss_SendRecvBidiData_send(TALLOC_CTX *mem_ctx,
   16179             :                                                         struct tevent_context *ev,
   16180             :                                                         struct dcerpc_binding_handle *h,
   16181             :                                                         struct policy_handle _hPrinter /* [in]  */,
   16182             :                                                         const char *_pAction /* [in] [charset(UTF16),unique] */,
   16183             :                                                         struct RPC_BIDI_REQUEST_CONTAINER *_pReqData /* [in] [ref] */,
   16184             :                                                         struct RPC_BIDI_RESPONSE_CONTAINER **_ppRespData /* [out] [ref] */)
   16185             : {
   16186           0 :         struct tevent_req *req;
   16187           0 :         struct dcerpc_spoolss_SendRecvBidiData_state *state;
   16188           0 :         struct tevent_req *subreq;
   16189             : 
   16190           0 :         req = tevent_req_create(mem_ctx, &state,
   16191             :                                 struct dcerpc_spoolss_SendRecvBidiData_state);
   16192           0 :         if (req == NULL) {
   16193           0 :                 return NULL;
   16194             :         }
   16195           0 :         state->out_mem_ctx = NULL;
   16196             : 
   16197             :         /* In parameters */
   16198           0 :         state->orig.in.hPrinter = _hPrinter;
   16199           0 :         state->orig.in.pAction = _pAction;
   16200           0 :         state->orig.in.pReqData = _pReqData;
   16201             : 
   16202             :         /* Out parameters */
   16203           0 :         state->orig.out.ppRespData = _ppRespData;
   16204             : 
   16205             :         /* Result */
   16206           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   16207             : 
   16208           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   16209             :                              "dcerpc_spoolss_SendRecvBidiData_out_memory");
   16210           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   16211           0 :                 return tevent_req_post(req, ev);
   16212             :         }
   16213             : 
   16214             :         /* make a temporary copy, that we pass to the dispatch function */
   16215           0 :         state->tmp = state->orig;
   16216             : 
   16217           0 :         subreq = dcerpc_spoolss_SendRecvBidiData_r_send(state, ev, h, &state->tmp);
   16218           0 :         if (tevent_req_nomem(subreq, req)) {
   16219           0 :                 return tevent_req_post(req, ev);
   16220             :         }
   16221           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_SendRecvBidiData_done, req);
   16222           0 :         return req;
   16223             : }
   16224             : 
   16225           0 : static void dcerpc_spoolss_SendRecvBidiData_done(struct tevent_req *subreq)
   16226             : {
   16227           0 :         struct tevent_req *req = tevent_req_callback_data(
   16228             :                 subreq, struct tevent_req);
   16229           0 :         struct dcerpc_spoolss_SendRecvBidiData_state *state = tevent_req_data(
   16230             :                 req, struct dcerpc_spoolss_SendRecvBidiData_state);
   16231           0 :         NTSTATUS status;
   16232           0 :         TALLOC_CTX *mem_ctx;
   16233             : 
   16234           0 :         if (state->out_mem_ctx) {
   16235           0 :                 mem_ctx = state->out_mem_ctx;
   16236             :         } else {
   16237           0 :                 mem_ctx = state;
   16238             :         }
   16239             : 
   16240           0 :         status = dcerpc_spoolss_SendRecvBidiData_r_recv(subreq, mem_ctx);
   16241           0 :         TALLOC_FREE(subreq);
   16242           0 :         if (tevent_req_nterror(req, status)) {
   16243           0 :                 return;
   16244             :         }
   16245             : 
   16246             :         /* Copy out parameters */
   16247           0 :         *state->orig.out.ppRespData = *state->tmp.out.ppRespData;
   16248             : 
   16249             :         /* Copy result */
   16250           0 :         state->orig.out.result = state->tmp.out.result;
   16251             : 
   16252             :         /* Reset temporary structure */
   16253           0 :         NDR_ZERO_STRUCT(state->tmp);
   16254             : 
   16255           0 :         tevent_req_done(req);
   16256             : }
   16257             : 
   16258           0 : NTSTATUS dcerpc_spoolss_SendRecvBidiData_recv(struct tevent_req *req,
   16259             :                                               TALLOC_CTX *mem_ctx,
   16260             :                                               WERROR *result)
   16261             : {
   16262           0 :         struct dcerpc_spoolss_SendRecvBidiData_state *state = tevent_req_data(
   16263             :                 req, struct dcerpc_spoolss_SendRecvBidiData_state);
   16264           0 :         NTSTATUS status;
   16265             : 
   16266           0 :         if (tevent_req_is_nterror(req, &status)) {
   16267           0 :                 tevent_req_received(req);
   16268           0 :                 return status;
   16269             :         }
   16270             : 
   16271             :         /* Steal possible out parameters to the callers context */
   16272           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   16273             : 
   16274             :         /* Return result */
   16275           0 :         *result = state->orig.out.result;
   16276             : 
   16277           0 :         tevent_req_received(req);
   16278           0 :         return NT_STATUS_OK;
   16279             : }
   16280             : 
   16281           0 : NTSTATUS dcerpc_spoolss_SendRecvBidiData(struct dcerpc_binding_handle *h,
   16282             :                                          TALLOC_CTX *mem_ctx,
   16283             :                                          struct policy_handle _hPrinter /* [in]  */,
   16284             :                                          const char *_pAction /* [in] [charset(UTF16),unique] */,
   16285             :                                          struct RPC_BIDI_REQUEST_CONTAINER *_pReqData /* [in] [ref] */,
   16286             :                                          struct RPC_BIDI_RESPONSE_CONTAINER **_ppRespData /* [out] [ref] */,
   16287             :                                          WERROR *result)
   16288             : {
   16289           0 :         struct spoolss_SendRecvBidiData r;
   16290           0 :         NTSTATUS status;
   16291             : 
   16292             :         /* In parameters */
   16293           0 :         r.in.hPrinter = _hPrinter;
   16294           0 :         r.in.pAction = _pAction;
   16295           0 :         r.in.pReqData = _pReqData;
   16296             : 
   16297             :         /* Out parameters */
   16298           0 :         r.out.ppRespData = _ppRespData;
   16299             : 
   16300             :         /* Result */
   16301           0 :         NDR_ZERO_STRUCT(r.out.result);
   16302             : 
   16303           0 :         status = dcerpc_spoolss_SendRecvBidiData_r(h, mem_ctx, &r);
   16304           0 :         if (!NT_STATUS_IS_OK(status)) {
   16305           0 :                 return status;
   16306             :         }
   16307             : 
   16308             :         /* Return variables */
   16309           0 :         *_ppRespData = *r.out.ppRespData;
   16310             : 
   16311             :         /* Return result */
   16312           0 :         *result = r.out.result;
   16313             : 
   16314           0 :         return NT_STATUS_OK;
   16315             : }
   16316             : 
   16317             : struct dcerpc_spoolss_GetCorePrinterDrivers_r_state {
   16318             :         TALLOC_CTX *out_mem_ctx;
   16319             : };
   16320             : 
   16321             : static void dcerpc_spoolss_GetCorePrinterDrivers_r_done(struct tevent_req *subreq);
   16322             : 
   16323           0 : struct tevent_req *dcerpc_spoolss_GetCorePrinterDrivers_r_send(TALLOC_CTX *mem_ctx,
   16324             :         struct tevent_context *ev,
   16325             :         struct dcerpc_binding_handle *h,
   16326             :         struct spoolss_GetCorePrinterDrivers *r)
   16327             : {
   16328           0 :         struct tevent_req *req;
   16329           0 :         struct dcerpc_spoolss_GetCorePrinterDrivers_r_state *state;
   16330           0 :         struct tevent_req *subreq;
   16331             : 
   16332           0 :         req = tevent_req_create(mem_ctx, &state,
   16333             :                                 struct dcerpc_spoolss_GetCorePrinterDrivers_r_state);
   16334           0 :         if (req == NULL) {
   16335           0 :                 return NULL;
   16336             :         }
   16337             : 
   16338           0 :         state->out_mem_ctx = talloc_new(state);
   16339           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   16340           0 :                 return tevent_req_post(req, ev);
   16341             :         }
   16342             : 
   16343           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   16344             :                         NULL, &ndr_table_spoolss,
   16345           0 :                         NDR_SPOOLSS_GETCOREPRINTERDRIVERS, state->out_mem_ctx, r);
   16346           0 :         if (tevent_req_nomem(subreq, req)) {
   16347           0 :                 return tevent_req_post(req, ev);
   16348             :         }
   16349           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetCorePrinterDrivers_r_done, req);
   16350             : 
   16351           0 :         return req;
   16352             : }
   16353             : 
   16354           0 : static void dcerpc_spoolss_GetCorePrinterDrivers_r_done(struct tevent_req *subreq)
   16355             : {
   16356           0 :         struct tevent_req *req =
   16357           0 :                 tevent_req_callback_data(subreq,
   16358             :                 struct tevent_req);
   16359           0 :         NTSTATUS status;
   16360             : 
   16361           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   16362           0 :         TALLOC_FREE(subreq);
   16363           0 :         if (tevent_req_nterror(req, status)) {
   16364           0 :                 return;
   16365             :         }
   16366             : 
   16367           0 :         tevent_req_done(req);
   16368             : }
   16369             : 
   16370           0 : NTSTATUS dcerpc_spoolss_GetCorePrinterDrivers_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   16371             : {
   16372           0 :         struct dcerpc_spoolss_GetCorePrinterDrivers_r_state *state =
   16373           0 :                 tevent_req_data(req,
   16374             :                 struct dcerpc_spoolss_GetCorePrinterDrivers_r_state);
   16375           0 :         NTSTATUS status;
   16376             : 
   16377           0 :         if (tevent_req_is_nterror(req, &status)) {
   16378           0 :                 tevent_req_received(req);
   16379           0 :                 return status;
   16380             :         }
   16381             : 
   16382           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   16383             : 
   16384           0 :         tevent_req_received(req);
   16385           0 :         return NT_STATUS_OK;
   16386             : }
   16387             : 
   16388           8 : NTSTATUS dcerpc_spoolss_GetCorePrinterDrivers_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetCorePrinterDrivers *r)
   16389             : {
   16390           0 :         NTSTATUS status;
   16391             : 
   16392           8 :         status = dcerpc_binding_handle_call(h,
   16393             :                         NULL, &ndr_table_spoolss,
   16394             :                         NDR_SPOOLSS_GETCOREPRINTERDRIVERS, mem_ctx, r);
   16395             : 
   16396           8 :         return status;
   16397             : }
   16398             : 
   16399             : struct dcerpc_spoolss_GetCorePrinterDrivers_state {
   16400             :         struct spoolss_GetCorePrinterDrivers orig;
   16401             :         struct spoolss_GetCorePrinterDrivers tmp;
   16402             :         TALLOC_CTX *out_mem_ctx;
   16403             : };
   16404             : 
   16405             : static void dcerpc_spoolss_GetCorePrinterDrivers_done(struct tevent_req *subreq);
   16406             : 
   16407           0 : struct tevent_req *dcerpc_spoolss_GetCorePrinterDrivers_send(TALLOC_CTX *mem_ctx,
   16408             :                                                              struct tevent_context *ev,
   16409             :                                                              struct dcerpc_binding_handle *h,
   16410             :                                                              const char *_servername /* [in] [charset(UTF16),unique] */,
   16411             :                                                              const char *_architecture /* [in] [charset(UTF16),ref] */,
   16412             :                                                              uint32_t _core_driver_size /* [in]  */,
   16413             :                                                              uint16_t *_core_driver_dependencies /* [in] [ref,size_is(core_driver_size)] */,
   16414             :                                                              uint32_t _core_printer_driver_count /* [in]  */,
   16415             :                                                              struct spoolss_CorePrinterDriver *_core_printer_drivers /* [out] [ref,size_is(core_printer_driver_count)] */)
   16416             : {
   16417           0 :         struct tevent_req *req;
   16418           0 :         struct dcerpc_spoolss_GetCorePrinterDrivers_state *state;
   16419           0 :         struct tevent_req *subreq;
   16420             : 
   16421           0 :         req = tevent_req_create(mem_ctx, &state,
   16422             :                                 struct dcerpc_spoolss_GetCorePrinterDrivers_state);
   16423           0 :         if (req == NULL) {
   16424           0 :                 return NULL;
   16425             :         }
   16426           0 :         state->out_mem_ctx = NULL;
   16427             : 
   16428             :         /* In parameters */
   16429           0 :         state->orig.in.servername = _servername;
   16430           0 :         state->orig.in.architecture = _architecture;
   16431           0 :         state->orig.in.core_driver_size = _core_driver_size;
   16432           0 :         state->orig.in.core_driver_dependencies = _core_driver_dependencies;
   16433           0 :         state->orig.in.core_printer_driver_count = _core_printer_driver_count;
   16434             : 
   16435             :         /* Out parameters */
   16436           0 :         state->orig.out.core_printer_drivers = _core_printer_drivers;
   16437             : 
   16438             :         /* Result */
   16439           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   16440             : 
   16441           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   16442             :                              "dcerpc_spoolss_GetCorePrinterDrivers_out_memory");
   16443           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   16444           0 :                 return tevent_req_post(req, ev);
   16445             :         }
   16446             : 
   16447             :         /* make a temporary copy, that we pass to the dispatch function */
   16448           0 :         state->tmp = state->orig;
   16449             : 
   16450           0 :         subreq = dcerpc_spoolss_GetCorePrinterDrivers_r_send(state, ev, h, &state->tmp);
   16451           0 :         if (tevent_req_nomem(subreq, req)) {
   16452           0 :                 return tevent_req_post(req, ev);
   16453             :         }
   16454           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetCorePrinterDrivers_done, req);
   16455           0 :         return req;
   16456             : }
   16457             : 
   16458           0 : static void dcerpc_spoolss_GetCorePrinterDrivers_done(struct tevent_req *subreq)
   16459             : {
   16460           0 :         struct tevent_req *req = tevent_req_callback_data(
   16461             :                 subreq, struct tevent_req);
   16462           0 :         struct dcerpc_spoolss_GetCorePrinterDrivers_state *state = tevent_req_data(
   16463             :                 req, struct dcerpc_spoolss_GetCorePrinterDrivers_state);
   16464           0 :         NTSTATUS status;
   16465           0 :         TALLOC_CTX *mem_ctx;
   16466             : 
   16467           0 :         if (state->out_mem_ctx) {
   16468           0 :                 mem_ctx = state->out_mem_ctx;
   16469             :         } else {
   16470           0 :                 mem_ctx = state;
   16471             :         }
   16472             : 
   16473           0 :         status = dcerpc_spoolss_GetCorePrinterDrivers_r_recv(subreq, mem_ctx);
   16474           0 :         TALLOC_FREE(subreq);
   16475           0 :         if (tevent_req_nterror(req, status)) {
   16476           0 :                 return;
   16477             :         }
   16478             : 
   16479             :         /* Copy out parameters */
   16480             :         {
   16481           0 :                 size_t _copy_len_core_printer_drivers;
   16482           0 :                 _copy_len_core_printer_drivers = state->tmp.in.core_printer_driver_count;
   16483           0 :                 if (state->orig.out.core_printer_drivers != state->tmp.out.core_printer_drivers) {
   16484           0 :                         memcpy(state->orig.out.core_printer_drivers, state->tmp.out.core_printer_drivers, _copy_len_core_printer_drivers * sizeof(*state->orig.out.core_printer_drivers));
   16485             :                 }
   16486             :         }
   16487             : 
   16488             :         /* Copy result */
   16489           0 :         state->orig.out.result = state->tmp.out.result;
   16490             : 
   16491             :         /* Reset temporary structure */
   16492           0 :         NDR_ZERO_STRUCT(state->tmp);
   16493             : 
   16494           0 :         tevent_req_done(req);
   16495             : }
   16496             : 
   16497           0 : NTSTATUS dcerpc_spoolss_GetCorePrinterDrivers_recv(struct tevent_req *req,
   16498             :                                                    TALLOC_CTX *mem_ctx,
   16499             :                                                    HRESULT *result)
   16500             : {
   16501           0 :         struct dcerpc_spoolss_GetCorePrinterDrivers_state *state = tevent_req_data(
   16502             :                 req, struct dcerpc_spoolss_GetCorePrinterDrivers_state);
   16503           0 :         NTSTATUS status;
   16504             : 
   16505           0 :         if (tevent_req_is_nterror(req, &status)) {
   16506           0 :                 tevent_req_received(req);
   16507           0 :                 return status;
   16508             :         }
   16509             : 
   16510             :         /* Steal possible out parameters to the callers context */
   16511           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   16512             : 
   16513             :         /* Return result */
   16514           0 :         *result = state->orig.out.result;
   16515             : 
   16516           0 :         tevent_req_received(req);
   16517           0 :         return NT_STATUS_OK;
   16518             : }
   16519             : 
   16520           0 : NTSTATUS dcerpc_spoolss_GetCorePrinterDrivers(struct dcerpc_binding_handle *h,
   16521             :                                               TALLOC_CTX *mem_ctx,
   16522             :                                               const char *_servername /* [in] [charset(UTF16),unique] */,
   16523             :                                               const char *_architecture /* [in] [charset(UTF16),ref] */,
   16524             :                                               uint32_t _core_driver_size /* [in]  */,
   16525             :                                               uint16_t *_core_driver_dependencies /* [in] [ref,size_is(core_driver_size)] */,
   16526             :                                               uint32_t _core_printer_driver_count /* [in]  */,
   16527             :                                               struct spoolss_CorePrinterDriver *_core_printer_drivers /* [out] [ref,size_is(core_printer_driver_count)] */,
   16528             :                                               HRESULT *result)
   16529             : {
   16530           0 :         struct spoolss_GetCorePrinterDrivers r;
   16531           0 :         NTSTATUS status;
   16532             : 
   16533             :         /* In parameters */
   16534           0 :         r.in.servername = _servername;
   16535           0 :         r.in.architecture = _architecture;
   16536           0 :         r.in.core_driver_size = _core_driver_size;
   16537           0 :         r.in.core_driver_dependencies = _core_driver_dependencies;
   16538           0 :         r.in.core_printer_driver_count = _core_printer_driver_count;
   16539             : 
   16540             :         /* Out parameters */
   16541           0 :         r.out.core_printer_drivers = _core_printer_drivers;
   16542             : 
   16543             :         /* Result */
   16544           0 :         NDR_ZERO_STRUCT(r.out.result);
   16545             : 
   16546           0 :         status = dcerpc_spoolss_GetCorePrinterDrivers_r(h, mem_ctx, &r);
   16547           0 :         if (!NT_STATUS_IS_OK(status)) {
   16548           0 :                 return status;
   16549             :         }
   16550             : 
   16551             :         /* Return variables */
   16552             :         {
   16553           0 :                 size_t _copy_len_core_printer_drivers;
   16554           0 :                 _copy_len_core_printer_drivers = r.in.core_printer_driver_count;
   16555           0 :                 if (_core_printer_drivers != r.out.core_printer_drivers) {
   16556           0 :                         memcpy(_core_printer_drivers, r.out.core_printer_drivers, _copy_len_core_printer_drivers * sizeof(*_core_printer_drivers));
   16557             :                 }
   16558             :         }
   16559             : 
   16560             :         /* Return result */
   16561           0 :         *result = r.out.result;
   16562             : 
   16563           0 :         return NT_STATUS_OK;
   16564             : }
   16565             : 
   16566             : struct dcerpc_spoolss_GetPrinterDriverPackagePath_r_state {
   16567             :         TALLOC_CTX *out_mem_ctx;
   16568             : };
   16569             : 
   16570             : static void dcerpc_spoolss_GetPrinterDriverPackagePath_r_done(struct tevent_req *subreq);
   16571             : 
   16572           0 : struct tevent_req *dcerpc_spoolss_GetPrinterDriverPackagePath_r_send(TALLOC_CTX *mem_ctx,
   16573             :         struct tevent_context *ev,
   16574             :         struct dcerpc_binding_handle *h,
   16575             :         struct spoolss_GetPrinterDriverPackagePath *r)
   16576             : {
   16577           0 :         struct tevent_req *req;
   16578           0 :         struct dcerpc_spoolss_GetPrinterDriverPackagePath_r_state *state;
   16579           0 :         struct tevent_req *subreq;
   16580             : 
   16581           0 :         req = tevent_req_create(mem_ctx, &state,
   16582             :                                 struct dcerpc_spoolss_GetPrinterDriverPackagePath_r_state);
   16583           0 :         if (req == NULL) {
   16584           0 :                 return NULL;
   16585             :         }
   16586             : 
   16587           0 :         state->out_mem_ctx = talloc_new(state);
   16588           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   16589           0 :                 return tevent_req_post(req, ev);
   16590             :         }
   16591             : 
   16592           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   16593             :                         NULL, &ndr_table_spoolss,
   16594           0 :                         NDR_SPOOLSS_GETPRINTERDRIVERPACKAGEPATH, state->out_mem_ctx, r);
   16595           0 :         if (tevent_req_nomem(subreq, req)) {
   16596           0 :                 return tevent_req_post(req, ev);
   16597             :         }
   16598           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriverPackagePath_r_done, req);
   16599             : 
   16600           0 :         return req;
   16601             : }
   16602             : 
   16603           0 : static void dcerpc_spoolss_GetPrinterDriverPackagePath_r_done(struct tevent_req *subreq)
   16604             : {
   16605           0 :         struct tevent_req *req =
   16606           0 :                 tevent_req_callback_data(subreq,
   16607             :                 struct tevent_req);
   16608           0 :         NTSTATUS status;
   16609             : 
   16610           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   16611           0 :         TALLOC_FREE(subreq);
   16612           0 :         if (tevent_req_nterror(req, status)) {
   16613           0 :                 return;
   16614             :         }
   16615             : 
   16616           0 :         tevent_req_done(req);
   16617             : }
   16618             : 
   16619           0 : NTSTATUS dcerpc_spoolss_GetPrinterDriverPackagePath_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   16620             : {
   16621           0 :         struct dcerpc_spoolss_GetPrinterDriverPackagePath_r_state *state =
   16622           0 :                 tevent_req_data(req,
   16623             :                 struct dcerpc_spoolss_GetPrinterDriverPackagePath_r_state);
   16624           0 :         NTSTATUS status;
   16625             : 
   16626           0 :         if (tevent_req_is_nterror(req, &status)) {
   16627           0 :                 tevent_req_received(req);
   16628           0 :                 return status;
   16629             :         }
   16630             : 
   16631           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   16632             : 
   16633           0 :         tevent_req_received(req);
   16634           0 :         return NT_STATUS_OK;
   16635             : }
   16636             : 
   16637           4 : NTSTATUS dcerpc_spoolss_GetPrinterDriverPackagePath_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDriverPackagePath *r)
   16638             : {
   16639           0 :         NTSTATUS status;
   16640             : 
   16641           4 :         status = dcerpc_binding_handle_call(h,
   16642             :                         NULL, &ndr_table_spoolss,
   16643             :                         NDR_SPOOLSS_GETPRINTERDRIVERPACKAGEPATH, mem_ctx, r);
   16644             : 
   16645           4 :         return status;
   16646             : }
   16647             : 
   16648             : struct dcerpc_spoolss_GetPrinterDriverPackagePath_state {
   16649             :         struct spoolss_GetPrinterDriverPackagePath orig;
   16650             :         struct spoolss_GetPrinterDriverPackagePath tmp;
   16651             :         TALLOC_CTX *out_mem_ctx;
   16652             : };
   16653             : 
   16654             : static void dcerpc_spoolss_GetPrinterDriverPackagePath_done(struct tevent_req *subreq);
   16655             : 
   16656           0 : struct tevent_req *dcerpc_spoolss_GetPrinterDriverPackagePath_send(TALLOC_CTX *mem_ctx,
   16657             :                                                                    struct tevent_context *ev,
   16658             :                                                                    struct dcerpc_binding_handle *h,
   16659             :                                                                    const char *_servername /* [in] [charset(UTF16),unique] */,
   16660             :                                                                    const char *_architecture /* [in] [charset(UTF16),ref] */,
   16661             :                                                                    const char *_language /* [in] [charset(UTF16),unique] */,
   16662             :                                                                    const char *_package_id /* [in] [charset(UTF16),ref] */,
   16663             :                                                                    const char *_driver_package_cab /* [in,out] [charset(UTF16),size_is(driver_package_cab_size),unique] */,
   16664             :                                                                    uint32_t _driver_package_cab_size /* [in]  */,
   16665             :                                                                    uint32_t *_required /* [out] [ref] */)
   16666             : {
   16667           0 :         struct tevent_req *req;
   16668           0 :         struct dcerpc_spoolss_GetPrinterDriverPackagePath_state *state;
   16669           0 :         struct tevent_req *subreq;
   16670             : 
   16671           0 :         req = tevent_req_create(mem_ctx, &state,
   16672             :                                 struct dcerpc_spoolss_GetPrinterDriverPackagePath_state);
   16673           0 :         if (req == NULL) {
   16674           0 :                 return NULL;
   16675             :         }
   16676           0 :         state->out_mem_ctx = NULL;
   16677             : 
   16678             :         /* In parameters */
   16679           0 :         state->orig.in.servername = _servername;
   16680           0 :         state->orig.in.architecture = _architecture;
   16681           0 :         state->orig.in.language = _language;
   16682           0 :         state->orig.in.package_id = _package_id;
   16683           0 :         state->orig.in.driver_package_cab = _driver_package_cab;
   16684           0 :         state->orig.in.driver_package_cab_size = _driver_package_cab_size;
   16685             : 
   16686             :         /* Out parameters */
   16687           0 :         state->orig.out.driver_package_cab = _driver_package_cab;
   16688           0 :         state->orig.out.required = _required;
   16689             : 
   16690             :         /* Result */
   16691           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   16692             : 
   16693           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   16694             :                              "dcerpc_spoolss_GetPrinterDriverPackagePath_out_memory");
   16695           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   16696           0 :                 return tevent_req_post(req, ev);
   16697             :         }
   16698             : 
   16699             :         /* make a temporary copy, that we pass to the dispatch function */
   16700           0 :         state->tmp = state->orig;
   16701             : 
   16702           0 :         subreq = dcerpc_spoolss_GetPrinterDriverPackagePath_r_send(state, ev, h, &state->tmp);
   16703           0 :         if (tevent_req_nomem(subreq, req)) {
   16704           0 :                 return tevent_req_post(req, ev);
   16705             :         }
   16706           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriverPackagePath_done, req);
   16707           0 :         return req;
   16708             : }
   16709             : 
   16710           0 : static void dcerpc_spoolss_GetPrinterDriverPackagePath_done(struct tevent_req *subreq)
   16711             : {
   16712           0 :         struct tevent_req *req = tevent_req_callback_data(
   16713             :                 subreq, struct tevent_req);
   16714           0 :         struct dcerpc_spoolss_GetPrinterDriverPackagePath_state *state = tevent_req_data(
   16715             :                 req, struct dcerpc_spoolss_GetPrinterDriverPackagePath_state);
   16716           0 :         NTSTATUS status;
   16717           0 :         TALLOC_CTX *mem_ctx;
   16718             : 
   16719           0 :         if (state->out_mem_ctx) {
   16720           0 :                 mem_ctx = state->out_mem_ctx;
   16721             :         } else {
   16722           0 :                 mem_ctx = state;
   16723             :         }
   16724             : 
   16725           0 :         status = dcerpc_spoolss_GetPrinterDriverPackagePath_r_recv(subreq, mem_ctx);
   16726           0 :         TALLOC_FREE(subreq);
   16727           0 :         if (tevent_req_nterror(req, status)) {
   16728           0 :                 return;
   16729             :         }
   16730             : 
   16731             :         /* Copy out parameters */
   16732           0 :         if (state->orig.out.driver_package_cab && state->tmp.out.driver_package_cab) {
   16733             :                 {
   16734           0 :                         size_t _copy_len_driver_package_cab;
   16735           0 :                         _copy_len_driver_package_cab = ndr_charset_length(state->tmp.out.driver_package_cab, CH_UNIX);
   16736           0 :                         if (_copy_len_driver_package_cab > ndr_charset_length(state->tmp.in.driver_package_cab, CH_UNIX)) {
   16737           0 :                                 tevent_req_nterror(req, NT_STATUS_INVALID_NETWORK_RESPONSE);
   16738           0 :                                 return;
   16739             :                         }
   16740           0 :                         if (state->orig.out.driver_package_cab != state->tmp.out.driver_package_cab) {
   16741           0 :                                 memcpy(discard_const_p(uint8_t *, state->orig.out.driver_package_cab), state->tmp.out.driver_package_cab, _copy_len_driver_package_cab * sizeof(*state->orig.out.driver_package_cab));
   16742             :                         }
   16743             :                 }
   16744             :         }
   16745           0 :         *state->orig.out.required = *state->tmp.out.required;
   16746             : 
   16747             :         /* Copy result */
   16748           0 :         state->orig.out.result = state->tmp.out.result;
   16749             : 
   16750             :         /* Reset temporary structure */
   16751           0 :         NDR_ZERO_STRUCT(state->tmp);
   16752             : 
   16753           0 :         tevent_req_done(req);
   16754             : }
   16755             : 
   16756           0 : NTSTATUS dcerpc_spoolss_GetPrinterDriverPackagePath_recv(struct tevent_req *req,
   16757             :                                                          TALLOC_CTX *mem_ctx,
   16758             :                                                          HRESULT *result)
   16759             : {
   16760           0 :         struct dcerpc_spoolss_GetPrinterDriverPackagePath_state *state = tevent_req_data(
   16761             :                 req, struct dcerpc_spoolss_GetPrinterDriverPackagePath_state);
   16762           0 :         NTSTATUS status;
   16763             : 
   16764           0 :         if (tevent_req_is_nterror(req, &status)) {
   16765           0 :                 tevent_req_received(req);
   16766           0 :                 return status;
   16767             :         }
   16768             : 
   16769             :         /* Steal possible out parameters to the callers context */
   16770           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   16771             : 
   16772             :         /* Return result */
   16773           0 :         *result = state->orig.out.result;
   16774             : 
   16775           0 :         tevent_req_received(req);
   16776           0 :         return NT_STATUS_OK;
   16777             : }
   16778             : 
   16779           0 : NTSTATUS dcerpc_spoolss_GetPrinterDriverPackagePath(struct dcerpc_binding_handle *h,
   16780             :                                                     TALLOC_CTX *mem_ctx,
   16781             :                                                     const char *_servername /* [in] [charset(UTF16),unique] */,
   16782             :                                                     const char *_architecture /* [in] [charset(UTF16),ref] */,
   16783             :                                                     const char *_language /* [in] [charset(UTF16),unique] */,
   16784             :                                                     const char *_package_id /* [in] [charset(UTF16),ref] */,
   16785             :                                                     const char *_driver_package_cab /* [in,out] [charset(UTF16),size_is(driver_package_cab_size),unique] */,
   16786             :                                                     uint32_t _driver_package_cab_size /* [in]  */,
   16787             :                                                     uint32_t *_required /* [out] [ref] */,
   16788             :                                                     HRESULT *result)
   16789             : {
   16790           0 :         struct spoolss_GetPrinterDriverPackagePath r;
   16791           0 :         NTSTATUS status;
   16792             : 
   16793             :         /* In parameters */
   16794           0 :         r.in.servername = _servername;
   16795           0 :         r.in.architecture = _architecture;
   16796           0 :         r.in.language = _language;
   16797           0 :         r.in.package_id = _package_id;
   16798           0 :         r.in.driver_package_cab = _driver_package_cab;
   16799           0 :         r.in.driver_package_cab_size = _driver_package_cab_size;
   16800             : 
   16801             :         /* Out parameters */
   16802           0 :         r.out.driver_package_cab = _driver_package_cab;
   16803           0 :         r.out.required = _required;
   16804             : 
   16805             :         /* Result */
   16806           0 :         NDR_ZERO_STRUCT(r.out.result);
   16807             : 
   16808           0 :         status = dcerpc_spoolss_GetPrinterDriverPackagePath_r(h, mem_ctx, &r);
   16809           0 :         if (!NT_STATUS_IS_OK(status)) {
   16810           0 :                 return status;
   16811             :         }
   16812             : 
   16813             :         /* Return variables */
   16814           0 :         if (_driver_package_cab && r.out.driver_package_cab) {
   16815             :                 {
   16816           0 :                         size_t _copy_len_driver_package_cab;
   16817           0 :                         _copy_len_driver_package_cab = ndr_charset_length(r.out.driver_package_cab, CH_UNIX);
   16818           0 :                         if (_copy_len_driver_package_cab > ndr_charset_length(r.in.driver_package_cab, CH_UNIX)) {
   16819           0 :                                 return NT_STATUS_INVALID_NETWORK_RESPONSE;
   16820             :                         }
   16821           0 :                         if (_driver_package_cab != r.out.driver_package_cab) {
   16822           0 :                                 memcpy(discard_const_p(uint8_t *, _driver_package_cab), r.out.driver_package_cab, _copy_len_driver_package_cab * sizeof(*_driver_package_cab));
   16823             :                         }
   16824             :                 }
   16825             :         }
   16826           0 :         *_required = *r.out.required;
   16827             : 
   16828             :         /* Return result */
   16829           0 :         *result = r.out.result;
   16830             : 
   16831           0 :         return NT_STATUS_OK;
   16832             : }
   16833             : 
   16834             : struct dcerpc_spoolss_GetJobNamedPropertyValue_r_state {
   16835             :         TALLOC_CTX *out_mem_ctx;
   16836             : };
   16837             : 
   16838             : static void dcerpc_spoolss_GetJobNamedPropertyValue_r_done(struct tevent_req *subreq);
   16839             : 
   16840           0 : struct tevent_req *dcerpc_spoolss_GetJobNamedPropertyValue_r_send(TALLOC_CTX *mem_ctx,
   16841             :         struct tevent_context *ev,
   16842             :         struct dcerpc_binding_handle *h,
   16843             :         struct spoolss_GetJobNamedPropertyValue *r)
   16844             : {
   16845           0 :         struct tevent_req *req;
   16846           0 :         struct dcerpc_spoolss_GetJobNamedPropertyValue_r_state *state;
   16847           0 :         struct tevent_req *subreq;
   16848             : 
   16849           0 :         req = tevent_req_create(mem_ctx, &state,
   16850             :                                 struct dcerpc_spoolss_GetJobNamedPropertyValue_r_state);
   16851           0 :         if (req == NULL) {
   16852           0 :                 return NULL;
   16853             :         }
   16854             : 
   16855           0 :         state->out_mem_ctx = talloc_new(state);
   16856           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   16857           0 :                 return tevent_req_post(req, ev);
   16858             :         }
   16859             : 
   16860           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   16861             :                         NULL, &ndr_table_spoolss,
   16862           0 :                         NDR_SPOOLSS_GETJOBNAMEDPROPERTYVALUE, state->out_mem_ctx, r);
   16863           0 :         if (tevent_req_nomem(subreq, req)) {
   16864           0 :                 return tevent_req_post(req, ev);
   16865             :         }
   16866           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetJobNamedPropertyValue_r_done, req);
   16867             : 
   16868           0 :         return req;
   16869             : }
   16870             : 
   16871           0 : static void dcerpc_spoolss_GetJobNamedPropertyValue_r_done(struct tevent_req *subreq)
   16872             : {
   16873           0 :         struct tevent_req *req =
   16874           0 :                 tevent_req_callback_data(subreq,
   16875             :                 struct tevent_req);
   16876           0 :         NTSTATUS status;
   16877             : 
   16878           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   16879           0 :         TALLOC_FREE(subreq);
   16880           0 :         if (tevent_req_nterror(req, status)) {
   16881           0 :                 return;
   16882             :         }
   16883             : 
   16884           0 :         tevent_req_done(req);
   16885             : }
   16886             : 
   16887           0 : NTSTATUS dcerpc_spoolss_GetJobNamedPropertyValue_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   16888             : {
   16889           0 :         struct dcerpc_spoolss_GetJobNamedPropertyValue_r_state *state =
   16890           0 :                 tevent_req_data(req,
   16891             :                 struct dcerpc_spoolss_GetJobNamedPropertyValue_r_state);
   16892           0 :         NTSTATUS status;
   16893             : 
   16894           0 :         if (tevent_req_is_nterror(req, &status)) {
   16895           0 :                 tevent_req_received(req);
   16896           0 :                 return status;
   16897             :         }
   16898             : 
   16899           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   16900             : 
   16901           0 :         tevent_req_received(req);
   16902           0 :         return NT_STATUS_OK;
   16903             : }
   16904             : 
   16905           0 : NTSTATUS dcerpc_spoolss_GetJobNamedPropertyValue_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetJobNamedPropertyValue *r)
   16906             : {
   16907           0 :         NTSTATUS status;
   16908             : 
   16909           0 :         status = dcerpc_binding_handle_call(h,
   16910             :                         NULL, &ndr_table_spoolss,
   16911             :                         NDR_SPOOLSS_GETJOBNAMEDPROPERTYVALUE, mem_ctx, r);
   16912             : 
   16913           0 :         return status;
   16914             : }
   16915             : 
   16916             : struct dcerpc_spoolss_GetJobNamedPropertyValue_state {
   16917             :         struct spoolss_GetJobNamedPropertyValue orig;
   16918             :         struct spoolss_GetJobNamedPropertyValue tmp;
   16919             :         TALLOC_CTX *out_mem_ctx;
   16920             : };
   16921             : 
   16922             : static void dcerpc_spoolss_GetJobNamedPropertyValue_done(struct tevent_req *subreq);
   16923             : 
   16924           0 : struct tevent_req *dcerpc_spoolss_GetJobNamedPropertyValue_send(TALLOC_CTX *mem_ctx,
   16925             :                                                                 struct tevent_context *ev,
   16926             :                                                                 struct dcerpc_binding_handle *h,
   16927             :                                                                 struct policy_handle *_hPrinter /* [in] [ref] */,
   16928             :                                                                 uint32_t _JobId /* [in]  */,
   16929             :                                                                 const char *_pszName /* [in] [charset(UTF16),ref] */,
   16930             :                                                                 struct spoolss_PrintPropertyValue *_pValue /* [out] [ref] */)
   16931             : {
   16932           0 :         struct tevent_req *req;
   16933           0 :         struct dcerpc_spoolss_GetJobNamedPropertyValue_state *state;
   16934           0 :         struct tevent_req *subreq;
   16935             : 
   16936           0 :         req = tevent_req_create(mem_ctx, &state,
   16937             :                                 struct dcerpc_spoolss_GetJobNamedPropertyValue_state);
   16938           0 :         if (req == NULL) {
   16939           0 :                 return NULL;
   16940             :         }
   16941           0 :         state->out_mem_ctx = NULL;
   16942             : 
   16943             :         /* In parameters */
   16944           0 :         state->orig.in.hPrinter = _hPrinter;
   16945           0 :         state->orig.in.JobId = _JobId;
   16946           0 :         state->orig.in.pszName = _pszName;
   16947             : 
   16948             :         /* Out parameters */
   16949           0 :         state->orig.out.pValue = _pValue;
   16950             : 
   16951             :         /* Result */
   16952           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   16953             : 
   16954           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   16955             :                              "dcerpc_spoolss_GetJobNamedPropertyValue_out_memory");
   16956           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   16957           0 :                 return tevent_req_post(req, ev);
   16958             :         }
   16959             : 
   16960             :         /* make a temporary copy, that we pass to the dispatch function */
   16961           0 :         state->tmp = state->orig;
   16962             : 
   16963           0 :         subreq = dcerpc_spoolss_GetJobNamedPropertyValue_r_send(state, ev, h, &state->tmp);
   16964           0 :         if (tevent_req_nomem(subreq, req)) {
   16965           0 :                 return tevent_req_post(req, ev);
   16966             :         }
   16967           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_GetJobNamedPropertyValue_done, req);
   16968           0 :         return req;
   16969             : }
   16970             : 
   16971           0 : static void dcerpc_spoolss_GetJobNamedPropertyValue_done(struct tevent_req *subreq)
   16972             : {
   16973           0 :         struct tevent_req *req = tevent_req_callback_data(
   16974             :                 subreq, struct tevent_req);
   16975           0 :         struct dcerpc_spoolss_GetJobNamedPropertyValue_state *state = tevent_req_data(
   16976             :                 req, struct dcerpc_spoolss_GetJobNamedPropertyValue_state);
   16977           0 :         NTSTATUS status;
   16978           0 :         TALLOC_CTX *mem_ctx;
   16979             : 
   16980           0 :         if (state->out_mem_ctx) {
   16981           0 :                 mem_ctx = state->out_mem_ctx;
   16982             :         } else {
   16983           0 :                 mem_ctx = state;
   16984             :         }
   16985             : 
   16986           0 :         status = dcerpc_spoolss_GetJobNamedPropertyValue_r_recv(subreq, mem_ctx);
   16987           0 :         TALLOC_FREE(subreq);
   16988           0 :         if (tevent_req_nterror(req, status)) {
   16989           0 :                 return;
   16990             :         }
   16991             : 
   16992             :         /* Copy out parameters */
   16993           0 :         *state->orig.out.pValue = *state->tmp.out.pValue;
   16994             : 
   16995             :         /* Copy result */
   16996           0 :         state->orig.out.result = state->tmp.out.result;
   16997             : 
   16998             :         /* Reset temporary structure */
   16999           0 :         NDR_ZERO_STRUCT(state->tmp);
   17000             : 
   17001           0 :         tevent_req_done(req);
   17002             : }
   17003             : 
   17004           0 : NTSTATUS dcerpc_spoolss_GetJobNamedPropertyValue_recv(struct tevent_req *req,
   17005             :                                                       TALLOC_CTX *mem_ctx,
   17006             :                                                       WERROR *result)
   17007             : {
   17008           0 :         struct dcerpc_spoolss_GetJobNamedPropertyValue_state *state = tevent_req_data(
   17009             :                 req, struct dcerpc_spoolss_GetJobNamedPropertyValue_state);
   17010           0 :         NTSTATUS status;
   17011             : 
   17012           0 :         if (tevent_req_is_nterror(req, &status)) {
   17013           0 :                 tevent_req_received(req);
   17014           0 :                 return status;
   17015             :         }
   17016             : 
   17017             :         /* Steal possible out parameters to the callers context */
   17018           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   17019             : 
   17020             :         /* Return result */
   17021           0 :         *result = state->orig.out.result;
   17022             : 
   17023           0 :         tevent_req_received(req);
   17024           0 :         return NT_STATUS_OK;
   17025             : }
   17026             : 
   17027           0 : NTSTATUS dcerpc_spoolss_GetJobNamedPropertyValue(struct dcerpc_binding_handle *h,
   17028             :                                                  TALLOC_CTX *mem_ctx,
   17029             :                                                  struct policy_handle *_hPrinter /* [in] [ref] */,
   17030             :                                                  uint32_t _JobId /* [in]  */,
   17031             :                                                  const char *_pszName /* [in] [charset(UTF16),ref] */,
   17032             :                                                  struct spoolss_PrintPropertyValue *_pValue /* [out] [ref] */,
   17033             :                                                  WERROR *result)
   17034             : {
   17035           0 :         struct spoolss_GetJobNamedPropertyValue r;
   17036           0 :         NTSTATUS status;
   17037             : 
   17038             :         /* In parameters */
   17039           0 :         r.in.hPrinter = _hPrinter;
   17040           0 :         r.in.JobId = _JobId;
   17041           0 :         r.in.pszName = _pszName;
   17042             : 
   17043             :         /* Out parameters */
   17044           0 :         r.out.pValue = _pValue;
   17045             : 
   17046             :         /* Result */
   17047           0 :         NDR_ZERO_STRUCT(r.out.result);
   17048             : 
   17049           0 :         status = dcerpc_spoolss_GetJobNamedPropertyValue_r(h, mem_ctx, &r);
   17050           0 :         if (!NT_STATUS_IS_OK(status)) {
   17051           0 :                 return status;
   17052             :         }
   17053             : 
   17054             :         /* Return variables */
   17055           0 :         *_pValue = *r.out.pValue;
   17056             : 
   17057             :         /* Return result */
   17058           0 :         *result = r.out.result;
   17059             : 
   17060           0 :         return NT_STATUS_OK;
   17061             : }
   17062             : 
   17063             : struct dcerpc_spoolss_SetJobNamedProperty_r_state {
   17064             :         TALLOC_CTX *out_mem_ctx;
   17065             : };
   17066             : 
   17067             : static void dcerpc_spoolss_SetJobNamedProperty_r_done(struct tevent_req *subreq);
   17068             : 
   17069           0 : struct tevent_req *dcerpc_spoolss_SetJobNamedProperty_r_send(TALLOC_CTX *mem_ctx,
   17070             :         struct tevent_context *ev,
   17071             :         struct dcerpc_binding_handle *h,
   17072             :         struct spoolss_SetJobNamedProperty *r)
   17073             : {
   17074           0 :         struct tevent_req *req;
   17075           0 :         struct dcerpc_spoolss_SetJobNamedProperty_r_state *state;
   17076           0 :         struct tevent_req *subreq;
   17077             : 
   17078           0 :         req = tevent_req_create(mem_ctx, &state,
   17079             :                                 struct dcerpc_spoolss_SetJobNamedProperty_r_state);
   17080           0 :         if (req == NULL) {
   17081           0 :                 return NULL;
   17082             :         }
   17083             : 
   17084           0 :         state->out_mem_ctx = NULL;
   17085             : 
   17086           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   17087             :                         NULL, &ndr_table_spoolss,
   17088             :                         NDR_SPOOLSS_SETJOBNAMEDPROPERTY, state, r);
   17089           0 :         if (tevent_req_nomem(subreq, req)) {
   17090           0 :                 return tevent_req_post(req, ev);
   17091             :         }
   17092           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_SetJobNamedProperty_r_done, req);
   17093             : 
   17094           0 :         return req;
   17095             : }
   17096             : 
   17097           0 : static void dcerpc_spoolss_SetJobNamedProperty_r_done(struct tevent_req *subreq)
   17098             : {
   17099           0 :         struct tevent_req *req =
   17100           0 :                 tevent_req_callback_data(subreq,
   17101             :                 struct tevent_req);
   17102           0 :         NTSTATUS status;
   17103             : 
   17104           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   17105           0 :         TALLOC_FREE(subreq);
   17106           0 :         if (tevent_req_nterror(req, status)) {
   17107           0 :                 return;
   17108             :         }
   17109             : 
   17110           0 :         tevent_req_done(req);
   17111             : }
   17112             : 
   17113           0 : NTSTATUS dcerpc_spoolss_SetJobNamedProperty_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   17114             : {
   17115           0 :         struct dcerpc_spoolss_SetJobNamedProperty_r_state *state =
   17116           0 :                 tevent_req_data(req,
   17117             :                 struct dcerpc_spoolss_SetJobNamedProperty_r_state);
   17118           0 :         NTSTATUS status;
   17119             : 
   17120           0 :         if (tevent_req_is_nterror(req, &status)) {
   17121           0 :                 tevent_req_received(req);
   17122           0 :                 return status;
   17123             :         }
   17124             : 
   17125           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   17126             : 
   17127           0 :         tevent_req_received(req);
   17128           0 :         return NT_STATUS_OK;
   17129             : }
   17130             : 
   17131           0 : NTSTATUS dcerpc_spoolss_SetJobNamedProperty_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_SetJobNamedProperty *r)
   17132             : {
   17133           0 :         NTSTATUS status;
   17134             : 
   17135           0 :         status = dcerpc_binding_handle_call(h,
   17136             :                         NULL, &ndr_table_spoolss,
   17137             :                         NDR_SPOOLSS_SETJOBNAMEDPROPERTY, mem_ctx, r);
   17138             : 
   17139           0 :         return status;
   17140             : }
   17141             : 
   17142             : struct dcerpc_spoolss_SetJobNamedProperty_state {
   17143             :         struct spoolss_SetJobNamedProperty orig;
   17144             :         struct spoolss_SetJobNamedProperty tmp;
   17145             :         TALLOC_CTX *out_mem_ctx;
   17146             : };
   17147             : 
   17148             : static void dcerpc_spoolss_SetJobNamedProperty_done(struct tevent_req *subreq);
   17149             : 
   17150           0 : struct tevent_req *dcerpc_spoolss_SetJobNamedProperty_send(TALLOC_CTX *mem_ctx,
   17151             :                                                            struct tevent_context *ev,
   17152             :                                                            struct dcerpc_binding_handle *h,
   17153             :                                                            struct policy_handle *_hPrinter /* [in] [ref] */,
   17154             :                                                            uint32_t _JobId /* [in]  */,
   17155             :                                                            struct spoolss_PrintNamedProperty *_pProperty /* [in] [ref] */)
   17156             : {
   17157           0 :         struct tevent_req *req;
   17158           0 :         struct dcerpc_spoolss_SetJobNamedProperty_state *state;
   17159           0 :         struct tevent_req *subreq;
   17160             : 
   17161           0 :         req = tevent_req_create(mem_ctx, &state,
   17162             :                                 struct dcerpc_spoolss_SetJobNamedProperty_state);
   17163           0 :         if (req == NULL) {
   17164           0 :                 return NULL;
   17165             :         }
   17166           0 :         state->out_mem_ctx = NULL;
   17167             : 
   17168             :         /* In parameters */
   17169           0 :         state->orig.in.hPrinter = _hPrinter;
   17170           0 :         state->orig.in.JobId = _JobId;
   17171           0 :         state->orig.in.pProperty = _pProperty;
   17172             : 
   17173             :         /* Out parameters */
   17174             : 
   17175             :         /* Result */
   17176           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   17177             : 
   17178             :         /* make a temporary copy, that we pass to the dispatch function */
   17179           0 :         state->tmp = state->orig;
   17180             : 
   17181           0 :         subreq = dcerpc_spoolss_SetJobNamedProperty_r_send(state, ev, h, &state->tmp);
   17182           0 :         if (tevent_req_nomem(subreq, req)) {
   17183           0 :                 return tevent_req_post(req, ev);
   17184             :         }
   17185           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_SetJobNamedProperty_done, req);
   17186           0 :         return req;
   17187             : }
   17188             : 
   17189           0 : static void dcerpc_spoolss_SetJobNamedProperty_done(struct tevent_req *subreq)
   17190             : {
   17191           0 :         struct tevent_req *req = tevent_req_callback_data(
   17192             :                 subreq, struct tevent_req);
   17193           0 :         struct dcerpc_spoolss_SetJobNamedProperty_state *state = tevent_req_data(
   17194             :                 req, struct dcerpc_spoolss_SetJobNamedProperty_state);
   17195           0 :         NTSTATUS status;
   17196           0 :         TALLOC_CTX *mem_ctx;
   17197             : 
   17198           0 :         if (state->out_mem_ctx) {
   17199           0 :                 mem_ctx = state->out_mem_ctx;
   17200             :         } else {
   17201           0 :                 mem_ctx = state;
   17202             :         }
   17203             : 
   17204           0 :         status = dcerpc_spoolss_SetJobNamedProperty_r_recv(subreq, mem_ctx);
   17205           0 :         TALLOC_FREE(subreq);
   17206           0 :         if (tevent_req_nterror(req, status)) {
   17207           0 :                 return;
   17208             :         }
   17209             : 
   17210             :         /* Copy out parameters */
   17211             : 
   17212             :         /* Copy result */
   17213           0 :         state->orig.out.result = state->tmp.out.result;
   17214             : 
   17215             :         /* Reset temporary structure */
   17216           0 :         NDR_ZERO_STRUCT(state->tmp);
   17217             : 
   17218           0 :         tevent_req_done(req);
   17219             : }
   17220             : 
   17221           0 : NTSTATUS dcerpc_spoolss_SetJobNamedProperty_recv(struct tevent_req *req,
   17222             :                                                  TALLOC_CTX *mem_ctx,
   17223             :                                                  WERROR *result)
   17224             : {
   17225           0 :         struct dcerpc_spoolss_SetJobNamedProperty_state *state = tevent_req_data(
   17226             :                 req, struct dcerpc_spoolss_SetJobNamedProperty_state);
   17227           0 :         NTSTATUS status;
   17228             : 
   17229           0 :         if (tevent_req_is_nterror(req, &status)) {
   17230           0 :                 tevent_req_received(req);
   17231           0 :                 return status;
   17232             :         }
   17233             : 
   17234             :         /* Steal possible out parameters to the callers context */
   17235           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   17236             : 
   17237             :         /* Return result */
   17238           0 :         *result = state->orig.out.result;
   17239             : 
   17240           0 :         tevent_req_received(req);
   17241           0 :         return NT_STATUS_OK;
   17242             : }
   17243             : 
   17244           0 : NTSTATUS dcerpc_spoolss_SetJobNamedProperty(struct dcerpc_binding_handle *h,
   17245             :                                             TALLOC_CTX *mem_ctx,
   17246             :                                             struct policy_handle *_hPrinter /* [in] [ref] */,
   17247             :                                             uint32_t _JobId /* [in]  */,
   17248             :                                             struct spoolss_PrintNamedProperty *_pProperty /* [in] [ref] */,
   17249             :                                             WERROR *result)
   17250             : {
   17251           0 :         struct spoolss_SetJobNamedProperty r;
   17252           0 :         NTSTATUS status;
   17253             : 
   17254             :         /* In parameters */
   17255           0 :         r.in.hPrinter = _hPrinter;
   17256           0 :         r.in.JobId = _JobId;
   17257           0 :         r.in.pProperty = _pProperty;
   17258             : 
   17259             :         /* Out parameters */
   17260             : 
   17261             :         /* Result */
   17262           0 :         NDR_ZERO_STRUCT(r.out.result);
   17263             : 
   17264           0 :         status = dcerpc_spoolss_SetJobNamedProperty_r(h, mem_ctx, &r);
   17265           0 :         if (!NT_STATUS_IS_OK(status)) {
   17266           0 :                 return status;
   17267             :         }
   17268             : 
   17269             :         /* Return variables */
   17270             : 
   17271             :         /* Return result */
   17272           0 :         *result = r.out.result;
   17273             : 
   17274           0 :         return NT_STATUS_OK;
   17275             : }
   17276             : 
   17277             : struct dcerpc_spoolss_DeleteJobNamedProperty_r_state {
   17278             :         TALLOC_CTX *out_mem_ctx;
   17279             : };
   17280             : 
   17281             : static void dcerpc_spoolss_DeleteJobNamedProperty_r_done(struct tevent_req *subreq);
   17282             : 
   17283           0 : struct tevent_req *dcerpc_spoolss_DeleteJobNamedProperty_r_send(TALLOC_CTX *mem_ctx,
   17284             :         struct tevent_context *ev,
   17285             :         struct dcerpc_binding_handle *h,
   17286             :         struct spoolss_DeleteJobNamedProperty *r)
   17287             : {
   17288           0 :         struct tevent_req *req;
   17289           0 :         struct dcerpc_spoolss_DeleteJobNamedProperty_r_state *state;
   17290           0 :         struct tevent_req *subreq;
   17291             : 
   17292           0 :         req = tevent_req_create(mem_ctx, &state,
   17293             :                                 struct dcerpc_spoolss_DeleteJobNamedProperty_r_state);
   17294           0 :         if (req == NULL) {
   17295           0 :                 return NULL;
   17296             :         }
   17297             : 
   17298           0 :         state->out_mem_ctx = NULL;
   17299             : 
   17300           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   17301             :                         NULL, &ndr_table_spoolss,
   17302             :                         NDR_SPOOLSS_DELETEJOBNAMEDPROPERTY, state, r);
   17303           0 :         if (tevent_req_nomem(subreq, req)) {
   17304           0 :                 return tevent_req_post(req, ev);
   17305             :         }
   17306           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeleteJobNamedProperty_r_done, req);
   17307             : 
   17308           0 :         return req;
   17309             : }
   17310             : 
   17311           0 : static void dcerpc_spoolss_DeleteJobNamedProperty_r_done(struct tevent_req *subreq)
   17312             : {
   17313           0 :         struct tevent_req *req =
   17314           0 :                 tevent_req_callback_data(subreq,
   17315             :                 struct tevent_req);
   17316           0 :         NTSTATUS status;
   17317             : 
   17318           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   17319           0 :         TALLOC_FREE(subreq);
   17320           0 :         if (tevent_req_nterror(req, status)) {
   17321           0 :                 return;
   17322             :         }
   17323             : 
   17324           0 :         tevent_req_done(req);
   17325             : }
   17326             : 
   17327           0 : NTSTATUS dcerpc_spoolss_DeleteJobNamedProperty_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   17328             : {
   17329           0 :         struct dcerpc_spoolss_DeleteJobNamedProperty_r_state *state =
   17330           0 :                 tevent_req_data(req,
   17331             :                 struct dcerpc_spoolss_DeleteJobNamedProperty_r_state);
   17332           0 :         NTSTATUS status;
   17333             : 
   17334           0 :         if (tevent_req_is_nterror(req, &status)) {
   17335           0 :                 tevent_req_received(req);
   17336           0 :                 return status;
   17337             :         }
   17338             : 
   17339           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   17340             : 
   17341           0 :         tevent_req_received(req);
   17342           0 :         return NT_STATUS_OK;
   17343             : }
   17344             : 
   17345           0 : NTSTATUS dcerpc_spoolss_DeleteJobNamedProperty_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeleteJobNamedProperty *r)
   17346             : {
   17347           0 :         NTSTATUS status;
   17348             : 
   17349           0 :         status = dcerpc_binding_handle_call(h,
   17350             :                         NULL, &ndr_table_spoolss,
   17351             :                         NDR_SPOOLSS_DELETEJOBNAMEDPROPERTY, mem_ctx, r);
   17352             : 
   17353           0 :         return status;
   17354             : }
   17355             : 
   17356             : struct dcerpc_spoolss_DeleteJobNamedProperty_state {
   17357             :         struct spoolss_DeleteJobNamedProperty orig;
   17358             :         struct spoolss_DeleteJobNamedProperty tmp;
   17359             :         TALLOC_CTX *out_mem_ctx;
   17360             : };
   17361             : 
   17362             : static void dcerpc_spoolss_DeleteJobNamedProperty_done(struct tevent_req *subreq);
   17363             : 
   17364           0 : struct tevent_req *dcerpc_spoolss_DeleteJobNamedProperty_send(TALLOC_CTX *mem_ctx,
   17365             :                                                               struct tevent_context *ev,
   17366             :                                                               struct dcerpc_binding_handle *h,
   17367             :                                                               struct policy_handle *_hPrinter /* [in] [ref] */,
   17368             :                                                               uint32_t _JobId /* [in]  */,
   17369             :                                                               const char *_pszName /* [in] [charset(UTF16),ref] */)
   17370             : {
   17371           0 :         struct tevent_req *req;
   17372           0 :         struct dcerpc_spoolss_DeleteJobNamedProperty_state *state;
   17373           0 :         struct tevent_req *subreq;
   17374             : 
   17375           0 :         req = tevent_req_create(mem_ctx, &state,
   17376             :                                 struct dcerpc_spoolss_DeleteJobNamedProperty_state);
   17377           0 :         if (req == NULL) {
   17378           0 :                 return NULL;
   17379             :         }
   17380           0 :         state->out_mem_ctx = NULL;
   17381             : 
   17382             :         /* In parameters */
   17383           0 :         state->orig.in.hPrinter = _hPrinter;
   17384           0 :         state->orig.in.JobId = _JobId;
   17385           0 :         state->orig.in.pszName = _pszName;
   17386             : 
   17387             :         /* Out parameters */
   17388             : 
   17389             :         /* Result */
   17390           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   17391             : 
   17392             :         /* make a temporary copy, that we pass to the dispatch function */
   17393           0 :         state->tmp = state->orig;
   17394             : 
   17395           0 :         subreq = dcerpc_spoolss_DeleteJobNamedProperty_r_send(state, ev, h, &state->tmp);
   17396           0 :         if (tevent_req_nomem(subreq, req)) {
   17397           0 :                 return tevent_req_post(req, ev);
   17398             :         }
   17399           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_DeleteJobNamedProperty_done, req);
   17400           0 :         return req;
   17401             : }
   17402             : 
   17403           0 : static void dcerpc_spoolss_DeleteJobNamedProperty_done(struct tevent_req *subreq)
   17404             : {
   17405           0 :         struct tevent_req *req = tevent_req_callback_data(
   17406             :                 subreq, struct tevent_req);
   17407           0 :         struct dcerpc_spoolss_DeleteJobNamedProperty_state *state = tevent_req_data(
   17408             :                 req, struct dcerpc_spoolss_DeleteJobNamedProperty_state);
   17409           0 :         NTSTATUS status;
   17410           0 :         TALLOC_CTX *mem_ctx;
   17411             : 
   17412           0 :         if (state->out_mem_ctx) {
   17413           0 :                 mem_ctx = state->out_mem_ctx;
   17414             :         } else {
   17415           0 :                 mem_ctx = state;
   17416             :         }
   17417             : 
   17418           0 :         status = dcerpc_spoolss_DeleteJobNamedProperty_r_recv(subreq, mem_ctx);
   17419           0 :         TALLOC_FREE(subreq);
   17420           0 :         if (tevent_req_nterror(req, status)) {
   17421           0 :                 return;
   17422             :         }
   17423             : 
   17424             :         /* Copy out parameters */
   17425             : 
   17426             :         /* Copy result */
   17427           0 :         state->orig.out.result = state->tmp.out.result;
   17428             : 
   17429             :         /* Reset temporary structure */
   17430           0 :         NDR_ZERO_STRUCT(state->tmp);
   17431             : 
   17432           0 :         tevent_req_done(req);
   17433             : }
   17434             : 
   17435           0 : NTSTATUS dcerpc_spoolss_DeleteJobNamedProperty_recv(struct tevent_req *req,
   17436             :                                                     TALLOC_CTX *mem_ctx,
   17437             :                                                     WERROR *result)
   17438             : {
   17439           0 :         struct dcerpc_spoolss_DeleteJobNamedProperty_state *state = tevent_req_data(
   17440             :                 req, struct dcerpc_spoolss_DeleteJobNamedProperty_state);
   17441           0 :         NTSTATUS status;
   17442             : 
   17443           0 :         if (tevent_req_is_nterror(req, &status)) {
   17444           0 :                 tevent_req_received(req);
   17445           0 :                 return status;
   17446             :         }
   17447             : 
   17448             :         /* Steal possible out parameters to the callers context */
   17449           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   17450             : 
   17451             :         /* Return result */
   17452           0 :         *result = state->orig.out.result;
   17453             : 
   17454           0 :         tevent_req_received(req);
   17455           0 :         return NT_STATUS_OK;
   17456             : }
   17457             : 
   17458           0 : NTSTATUS dcerpc_spoolss_DeleteJobNamedProperty(struct dcerpc_binding_handle *h,
   17459             :                                                TALLOC_CTX *mem_ctx,
   17460             :                                                struct policy_handle *_hPrinter /* [in] [ref] */,
   17461             :                                                uint32_t _JobId /* [in]  */,
   17462             :                                                const char *_pszName /* [in] [charset(UTF16),ref] */,
   17463             :                                                WERROR *result)
   17464             : {
   17465           0 :         struct spoolss_DeleteJobNamedProperty r;
   17466           0 :         NTSTATUS status;
   17467             : 
   17468             :         /* In parameters */
   17469           0 :         r.in.hPrinter = _hPrinter;
   17470           0 :         r.in.JobId = _JobId;
   17471           0 :         r.in.pszName = _pszName;
   17472             : 
   17473             :         /* Out parameters */
   17474             : 
   17475             :         /* Result */
   17476           0 :         NDR_ZERO_STRUCT(r.out.result);
   17477             : 
   17478           0 :         status = dcerpc_spoolss_DeleteJobNamedProperty_r(h, mem_ctx, &r);
   17479           0 :         if (!NT_STATUS_IS_OK(status)) {
   17480           0 :                 return status;
   17481             :         }
   17482             : 
   17483             :         /* Return variables */
   17484             : 
   17485             :         /* Return result */
   17486           0 :         *result = r.out.result;
   17487             : 
   17488           0 :         return NT_STATUS_OK;
   17489             : }
   17490             : 
   17491             : struct dcerpc_spoolss_EnumJobNamedProperties_r_state {
   17492             :         TALLOC_CTX *out_mem_ctx;
   17493             : };
   17494             : 
   17495             : static void dcerpc_spoolss_EnumJobNamedProperties_r_done(struct tevent_req *subreq);
   17496             : 
   17497           0 : struct tevent_req *dcerpc_spoolss_EnumJobNamedProperties_r_send(TALLOC_CTX *mem_ctx,
   17498             :         struct tevent_context *ev,
   17499             :         struct dcerpc_binding_handle *h,
   17500             :         struct spoolss_EnumJobNamedProperties *r)
   17501             : {
   17502           0 :         struct tevent_req *req;
   17503           0 :         struct dcerpc_spoolss_EnumJobNamedProperties_r_state *state;
   17504           0 :         struct tevent_req *subreq;
   17505             : 
   17506           0 :         req = tevent_req_create(mem_ctx, &state,
   17507             :                                 struct dcerpc_spoolss_EnumJobNamedProperties_r_state);
   17508           0 :         if (req == NULL) {
   17509           0 :                 return NULL;
   17510             :         }
   17511             : 
   17512           0 :         state->out_mem_ctx = talloc_new(state);
   17513           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   17514           0 :                 return tevent_req_post(req, ev);
   17515             :         }
   17516             : 
   17517           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   17518             :                         NULL, &ndr_table_spoolss,
   17519           0 :                         NDR_SPOOLSS_ENUMJOBNAMEDPROPERTIES, state->out_mem_ctx, r);
   17520           0 :         if (tevent_req_nomem(subreq, req)) {
   17521           0 :                 return tevent_req_post(req, ev);
   17522             :         }
   17523           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumJobNamedProperties_r_done, req);
   17524             : 
   17525           0 :         return req;
   17526             : }
   17527             : 
   17528           0 : static void dcerpc_spoolss_EnumJobNamedProperties_r_done(struct tevent_req *subreq)
   17529             : {
   17530           0 :         struct tevent_req *req =
   17531           0 :                 tevent_req_callback_data(subreq,
   17532             :                 struct tevent_req);
   17533           0 :         NTSTATUS status;
   17534             : 
   17535           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   17536           0 :         TALLOC_FREE(subreq);
   17537           0 :         if (tevent_req_nterror(req, status)) {
   17538           0 :                 return;
   17539             :         }
   17540             : 
   17541           0 :         tevent_req_done(req);
   17542             : }
   17543             : 
   17544           0 : NTSTATUS dcerpc_spoolss_EnumJobNamedProperties_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   17545             : {
   17546           0 :         struct dcerpc_spoolss_EnumJobNamedProperties_r_state *state =
   17547           0 :                 tevent_req_data(req,
   17548             :                 struct dcerpc_spoolss_EnumJobNamedProperties_r_state);
   17549           0 :         NTSTATUS status;
   17550             : 
   17551           0 :         if (tevent_req_is_nterror(req, &status)) {
   17552           0 :                 tevent_req_received(req);
   17553           0 :                 return status;
   17554             :         }
   17555             : 
   17556           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   17557             : 
   17558           0 :         tevent_req_received(req);
   17559           0 :         return NT_STATUS_OK;
   17560             : }
   17561             : 
   17562           0 : NTSTATUS dcerpc_spoolss_EnumJobNamedProperties_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumJobNamedProperties *r)
   17563             : {
   17564           0 :         NTSTATUS status;
   17565             : 
   17566           0 :         status = dcerpc_binding_handle_call(h,
   17567             :                         NULL, &ndr_table_spoolss,
   17568             :                         NDR_SPOOLSS_ENUMJOBNAMEDPROPERTIES, mem_ctx, r);
   17569             : 
   17570           0 :         return status;
   17571             : }
   17572             : 
   17573             : struct dcerpc_spoolss_EnumJobNamedProperties_state {
   17574             :         struct spoolss_EnumJobNamedProperties orig;
   17575             :         struct spoolss_EnumJobNamedProperties tmp;
   17576             :         TALLOC_CTX *out_mem_ctx;
   17577             : };
   17578             : 
   17579             : static void dcerpc_spoolss_EnumJobNamedProperties_done(struct tevent_req *subreq);
   17580             : 
   17581           0 : struct tevent_req *dcerpc_spoolss_EnumJobNamedProperties_send(TALLOC_CTX *mem_ctx,
   17582             :                                                               struct tevent_context *ev,
   17583             :                                                               struct dcerpc_binding_handle *h,
   17584             :                                                               struct policy_handle *_hPrinter /* [in] [ref] */,
   17585             :                                                               uint32_t _JobId /* [in]  */,
   17586             :                                                               uint32_t *_pcProperties /* [out] [ref] */,
   17587             :                                                               struct spoolss_PrintNamedProperty **_ppProperties /* [out] [ref,size_is(,*pcProperties)] */)
   17588             : {
   17589           0 :         struct tevent_req *req;
   17590           0 :         struct dcerpc_spoolss_EnumJobNamedProperties_state *state;
   17591           0 :         struct tevent_req *subreq;
   17592             : 
   17593           0 :         req = tevent_req_create(mem_ctx, &state,
   17594             :                                 struct dcerpc_spoolss_EnumJobNamedProperties_state);
   17595           0 :         if (req == NULL) {
   17596           0 :                 return NULL;
   17597             :         }
   17598           0 :         state->out_mem_ctx = NULL;
   17599             : 
   17600             :         /* In parameters */
   17601           0 :         state->orig.in.hPrinter = _hPrinter;
   17602           0 :         state->orig.in.JobId = _JobId;
   17603             : 
   17604             :         /* Out parameters */
   17605           0 :         state->orig.out.pcProperties = _pcProperties;
   17606           0 :         state->orig.out.ppProperties = _ppProperties;
   17607             : 
   17608             :         /* Result */
   17609           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   17610             : 
   17611           0 :         state->out_mem_ctx = talloc_named_const(state, 0,
   17612             :                              "dcerpc_spoolss_EnumJobNamedProperties_out_memory");
   17613           0 :         if (tevent_req_nomem(state->out_mem_ctx, req)) {
   17614           0 :                 return tevent_req_post(req, ev);
   17615             :         }
   17616             : 
   17617             :         /* make a temporary copy, that we pass to the dispatch function */
   17618           0 :         state->tmp = state->orig;
   17619             : 
   17620           0 :         subreq = dcerpc_spoolss_EnumJobNamedProperties_r_send(state, ev, h, &state->tmp);
   17621           0 :         if (tevent_req_nomem(subreq, req)) {
   17622           0 :                 return tevent_req_post(req, ev);
   17623             :         }
   17624           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_EnumJobNamedProperties_done, req);
   17625           0 :         return req;
   17626             : }
   17627             : 
   17628           0 : static void dcerpc_spoolss_EnumJobNamedProperties_done(struct tevent_req *subreq)
   17629             : {
   17630           0 :         struct tevent_req *req = tevent_req_callback_data(
   17631             :                 subreq, struct tevent_req);
   17632           0 :         struct dcerpc_spoolss_EnumJobNamedProperties_state *state = tevent_req_data(
   17633             :                 req, struct dcerpc_spoolss_EnumJobNamedProperties_state);
   17634           0 :         NTSTATUS status;
   17635           0 :         TALLOC_CTX *mem_ctx;
   17636             : 
   17637           0 :         if (state->out_mem_ctx) {
   17638           0 :                 mem_ctx = state->out_mem_ctx;
   17639             :         } else {
   17640           0 :                 mem_ctx = state;
   17641             :         }
   17642             : 
   17643           0 :         status = dcerpc_spoolss_EnumJobNamedProperties_r_recv(subreq, mem_ctx);
   17644           0 :         TALLOC_FREE(subreq);
   17645           0 :         if (tevent_req_nterror(req, status)) {
   17646           0 :                 return;
   17647             :         }
   17648             : 
   17649             :         /* Copy out parameters */
   17650           0 :         *state->orig.out.pcProperties = *state->tmp.out.pcProperties;
   17651           0 :         *state->orig.out.ppProperties = *state->tmp.out.ppProperties;
   17652             : 
   17653             :         /* Copy result */
   17654           0 :         state->orig.out.result = state->tmp.out.result;
   17655             : 
   17656             :         /* Reset temporary structure */
   17657           0 :         NDR_ZERO_STRUCT(state->tmp);
   17658             : 
   17659           0 :         tevent_req_done(req);
   17660             : }
   17661             : 
   17662           0 : NTSTATUS dcerpc_spoolss_EnumJobNamedProperties_recv(struct tevent_req *req,
   17663             :                                                     TALLOC_CTX *mem_ctx,
   17664             :                                                     WERROR *result)
   17665             : {
   17666           0 :         struct dcerpc_spoolss_EnumJobNamedProperties_state *state = tevent_req_data(
   17667             :                 req, struct dcerpc_spoolss_EnumJobNamedProperties_state);
   17668           0 :         NTSTATUS status;
   17669             : 
   17670           0 :         if (tevent_req_is_nterror(req, &status)) {
   17671           0 :                 tevent_req_received(req);
   17672           0 :                 return status;
   17673             :         }
   17674             : 
   17675             :         /* Steal possible out parameters to the callers context */
   17676           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   17677             : 
   17678             :         /* Return result */
   17679           0 :         *result = state->orig.out.result;
   17680             : 
   17681           0 :         tevent_req_received(req);
   17682           0 :         return NT_STATUS_OK;
   17683             : }
   17684             : 
   17685           0 : NTSTATUS dcerpc_spoolss_EnumJobNamedProperties(struct dcerpc_binding_handle *h,
   17686             :                                                TALLOC_CTX *mem_ctx,
   17687             :                                                struct policy_handle *_hPrinter /* [in] [ref] */,
   17688             :                                                uint32_t _JobId /* [in]  */,
   17689             :                                                uint32_t *_pcProperties /* [out] [ref] */,
   17690             :                                                struct spoolss_PrintNamedProperty **_ppProperties /* [out] [ref,size_is(,*pcProperties)] */,
   17691             :                                                WERROR *result)
   17692             : {
   17693           0 :         struct spoolss_EnumJobNamedProperties r;
   17694           0 :         NTSTATUS status;
   17695             : 
   17696             :         /* In parameters */
   17697           0 :         r.in.hPrinter = _hPrinter;
   17698           0 :         r.in.JobId = _JobId;
   17699             : 
   17700             :         /* Out parameters */
   17701           0 :         r.out.pcProperties = _pcProperties;
   17702           0 :         r.out.ppProperties = _ppProperties;
   17703             : 
   17704             :         /* Result */
   17705           0 :         NDR_ZERO_STRUCT(r.out.result);
   17706             : 
   17707           0 :         status = dcerpc_spoolss_EnumJobNamedProperties_r(h, mem_ctx, &r);
   17708           0 :         if (!NT_STATUS_IS_OK(status)) {
   17709           0 :                 return status;
   17710             :         }
   17711             : 
   17712             :         /* Return variables */
   17713           0 :         *_pcProperties = *r.out.pcProperties;
   17714           0 :         *_ppProperties = *r.out.ppProperties;
   17715             : 
   17716             :         /* Return result */
   17717           0 :         *result = r.out.result;
   17718             : 
   17719           0 :         return NT_STATUS_OK;
   17720             : }
   17721             : 
   17722             : struct dcerpc_spoolss_LogJobInfoForBranchOffice_r_state {
   17723             :         TALLOC_CTX *out_mem_ctx;
   17724             : };
   17725             : 
   17726             : static void dcerpc_spoolss_LogJobInfoForBranchOffice_r_done(struct tevent_req *subreq);
   17727             : 
   17728           0 : struct tevent_req *dcerpc_spoolss_LogJobInfoForBranchOffice_r_send(TALLOC_CTX *mem_ctx,
   17729             :         struct tevent_context *ev,
   17730             :         struct dcerpc_binding_handle *h,
   17731             :         struct spoolss_LogJobInfoForBranchOffice *r)
   17732             : {
   17733           0 :         struct tevent_req *req;
   17734           0 :         struct dcerpc_spoolss_LogJobInfoForBranchOffice_r_state *state;
   17735           0 :         struct tevent_req *subreq;
   17736             : 
   17737           0 :         req = tevent_req_create(mem_ctx, &state,
   17738             :                                 struct dcerpc_spoolss_LogJobInfoForBranchOffice_r_state);
   17739           0 :         if (req == NULL) {
   17740           0 :                 return NULL;
   17741             :         }
   17742             : 
   17743           0 :         state->out_mem_ctx = NULL;
   17744             : 
   17745           0 :         subreq = dcerpc_binding_handle_call_send(state, ev, h,
   17746             :                         NULL, &ndr_table_spoolss,
   17747             :                         NDR_SPOOLSS_LOGJOBINFOFORBRANCHOFFICE, state, r);
   17748           0 :         if (tevent_req_nomem(subreq, req)) {
   17749           0 :                 return tevent_req_post(req, ev);
   17750             :         }
   17751           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_LogJobInfoForBranchOffice_r_done, req);
   17752             : 
   17753           0 :         return req;
   17754             : }
   17755             : 
   17756           0 : static void dcerpc_spoolss_LogJobInfoForBranchOffice_r_done(struct tevent_req *subreq)
   17757             : {
   17758           0 :         struct tevent_req *req =
   17759           0 :                 tevent_req_callback_data(subreq,
   17760             :                 struct tevent_req);
   17761           0 :         NTSTATUS status;
   17762             : 
   17763           0 :         status = dcerpc_binding_handle_call_recv(subreq);
   17764           0 :         TALLOC_FREE(subreq);
   17765           0 :         if (tevent_req_nterror(req, status)) {
   17766           0 :                 return;
   17767             :         }
   17768             : 
   17769           0 :         tevent_req_done(req);
   17770             : }
   17771             : 
   17772           0 : NTSTATUS dcerpc_spoolss_LogJobInfoForBranchOffice_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
   17773             : {
   17774           0 :         struct dcerpc_spoolss_LogJobInfoForBranchOffice_r_state *state =
   17775           0 :                 tevent_req_data(req,
   17776             :                 struct dcerpc_spoolss_LogJobInfoForBranchOffice_r_state);
   17777           0 :         NTSTATUS status;
   17778             : 
   17779           0 :         if (tevent_req_is_nterror(req, &status)) {
   17780           0 :                 tevent_req_received(req);
   17781           0 :                 return status;
   17782             :         }
   17783             : 
   17784           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   17785             : 
   17786           0 :         tevent_req_received(req);
   17787           0 :         return NT_STATUS_OK;
   17788             : }
   17789             : 
   17790           8 : NTSTATUS dcerpc_spoolss_LogJobInfoForBranchOffice_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_LogJobInfoForBranchOffice *r)
   17791             : {
   17792           0 :         NTSTATUS status;
   17793             : 
   17794           8 :         status = dcerpc_binding_handle_call(h,
   17795             :                         NULL, &ndr_table_spoolss,
   17796             :                         NDR_SPOOLSS_LOGJOBINFOFORBRANCHOFFICE, mem_ctx, r);
   17797             : 
   17798           8 :         return status;
   17799             : }
   17800             : 
   17801             : struct dcerpc_spoolss_LogJobInfoForBranchOffice_state {
   17802             :         struct spoolss_LogJobInfoForBranchOffice orig;
   17803             :         struct spoolss_LogJobInfoForBranchOffice tmp;
   17804             :         TALLOC_CTX *out_mem_ctx;
   17805             : };
   17806             : 
   17807             : static void dcerpc_spoolss_LogJobInfoForBranchOffice_done(struct tevent_req *subreq);
   17808             : 
   17809           0 : struct tevent_req *dcerpc_spoolss_LogJobInfoForBranchOffice_send(TALLOC_CTX *mem_ctx,
   17810             :                                                                  struct tevent_context *ev,
   17811             :                                                                  struct dcerpc_binding_handle *h,
   17812             :                                                                  struct policy_handle *_hPrinter /* [in] [ref] */,
   17813             :                                                                  struct spoolss_BranchOfficeJobDataContainer *_pBranchOfficeJobDataContainer /* [in] [ref] */)
   17814             : {
   17815           0 :         struct tevent_req *req;
   17816           0 :         struct dcerpc_spoolss_LogJobInfoForBranchOffice_state *state;
   17817           0 :         struct tevent_req *subreq;
   17818             : 
   17819           0 :         req = tevent_req_create(mem_ctx, &state,
   17820             :                                 struct dcerpc_spoolss_LogJobInfoForBranchOffice_state);
   17821           0 :         if (req == NULL) {
   17822           0 :                 return NULL;
   17823             :         }
   17824           0 :         state->out_mem_ctx = NULL;
   17825             : 
   17826             :         /* In parameters */
   17827           0 :         state->orig.in.hPrinter = _hPrinter;
   17828           0 :         state->orig.in.pBranchOfficeJobDataContainer = _pBranchOfficeJobDataContainer;
   17829             : 
   17830             :         /* Out parameters */
   17831             : 
   17832             :         /* Result */
   17833           0 :         NDR_ZERO_STRUCT(state->orig.out.result);
   17834             : 
   17835             :         /* make a temporary copy, that we pass to the dispatch function */
   17836           0 :         state->tmp = state->orig;
   17837             : 
   17838           0 :         subreq = dcerpc_spoolss_LogJobInfoForBranchOffice_r_send(state, ev, h, &state->tmp);
   17839           0 :         if (tevent_req_nomem(subreq, req)) {
   17840           0 :                 return tevent_req_post(req, ev);
   17841             :         }
   17842           0 :         tevent_req_set_callback(subreq, dcerpc_spoolss_LogJobInfoForBranchOffice_done, req);
   17843           0 :         return req;
   17844             : }
   17845             : 
   17846           0 : static void dcerpc_spoolss_LogJobInfoForBranchOffice_done(struct tevent_req *subreq)
   17847             : {
   17848           0 :         struct tevent_req *req = tevent_req_callback_data(
   17849             :                 subreq, struct tevent_req);
   17850           0 :         struct dcerpc_spoolss_LogJobInfoForBranchOffice_state *state = tevent_req_data(
   17851             :                 req, struct dcerpc_spoolss_LogJobInfoForBranchOffice_state);
   17852           0 :         NTSTATUS status;
   17853           0 :         TALLOC_CTX *mem_ctx;
   17854             : 
   17855           0 :         if (state->out_mem_ctx) {
   17856           0 :                 mem_ctx = state->out_mem_ctx;
   17857             :         } else {
   17858           0 :                 mem_ctx = state;
   17859             :         }
   17860             : 
   17861           0 :         status = dcerpc_spoolss_LogJobInfoForBranchOffice_r_recv(subreq, mem_ctx);
   17862           0 :         TALLOC_FREE(subreq);
   17863           0 :         if (tevent_req_nterror(req, status)) {
   17864           0 :                 return;
   17865             :         }
   17866             : 
   17867             :         /* Copy out parameters */
   17868             : 
   17869             :         /* Copy result */
   17870           0 :         state->orig.out.result = state->tmp.out.result;
   17871             : 
   17872             :         /* Reset temporary structure */
   17873           0 :         NDR_ZERO_STRUCT(state->tmp);
   17874             : 
   17875           0 :         tevent_req_done(req);
   17876             : }
   17877             : 
   17878           0 : NTSTATUS dcerpc_spoolss_LogJobInfoForBranchOffice_recv(struct tevent_req *req,
   17879             :                                                        TALLOC_CTX *mem_ctx,
   17880             :                                                        WERROR *result)
   17881             : {
   17882           0 :         struct dcerpc_spoolss_LogJobInfoForBranchOffice_state *state = tevent_req_data(
   17883             :                 req, struct dcerpc_spoolss_LogJobInfoForBranchOffice_state);
   17884           0 :         NTSTATUS status;
   17885             : 
   17886           0 :         if (tevent_req_is_nterror(req, &status)) {
   17887           0 :                 tevent_req_received(req);
   17888           0 :                 return status;
   17889             :         }
   17890             : 
   17891             :         /* Steal possible out parameters to the callers context */
   17892           0 :         talloc_steal(mem_ctx, state->out_mem_ctx);
   17893             : 
   17894             :         /* Return result */
   17895           0 :         *result = state->orig.out.result;
   17896             : 
   17897           0 :         tevent_req_received(req);
   17898           0 :         return NT_STATUS_OK;
   17899             : }
   17900             : 
   17901           0 : NTSTATUS dcerpc_spoolss_LogJobInfoForBranchOffice(struct dcerpc_binding_handle *h,
   17902             :                                                   TALLOC_CTX *mem_ctx,
   17903             :                                                   struct policy_handle *_hPrinter /* [in] [ref] */,
   17904             :                                                   struct spoolss_BranchOfficeJobDataContainer *_pBranchOfficeJobDataContainer /* [in] [ref] */,
   17905             :                                                   WERROR *result)
   17906             : {
   17907           0 :         struct spoolss_LogJobInfoForBranchOffice r;
   17908           0 :         NTSTATUS status;
   17909             : 
   17910             :         /* In parameters */
   17911           0 :         r.in.hPrinter = _hPrinter;
   17912           0 :         r.in.pBranchOfficeJobDataContainer = _pBranchOfficeJobDataContainer;
   17913             : 
   17914             :         /* Out parameters */
   17915             : 
   17916             :         /* Result */
   17917           0 :         NDR_ZERO_STRUCT(r.out.result);
   17918             : 
   17919           0 :         status = dcerpc_spoolss_LogJobInfoForBranchOffice_r(h, mem_ctx, &r);
   17920           0 :         if (!NT_STATUS_IS_OK(status)) {
   17921           0 :                 return status;
   17922             :         }
   17923             : 
   17924             :         /* Return variables */
   17925             : 
   17926             :         /* Return result */
   17927           0 :         *result = r.out.result;
   17928             : 
   17929           0 :         return NT_STATUS_OK;
   17930             : }
   17931             : 

Generated by: LCOV version 1.14