1 /* client functions auto-generated by pidl */
5 #include "lib/util/tevent_ntstatus.h"
6 #include "librpc/gen_ndr/ndr_spoolss.h"
7 #include "librpc/gen_ndr/ndr_spoolss_c.h"
9 /* spoolss - client functions generated by pidl */
11 struct dcerpc_spoolss_EnumPrinters_r_state {
12 TALLOC_CTX *out_mem_ctx;
15 static void dcerpc_spoolss_EnumPrinters_r_done(struct tevent_req *subreq);
17 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)
22 struct tevent_req *req;
23 struct dcerpc_spoolss_EnumPrinters_r_state *state;
24 struct tevent_req *subreq;
26 req = tevent_req_create(mem_ctx, &state,
27 struct dcerpc_spoolss_EnumPrinters_r_state);
32 state->out_mem_ctx = talloc_new(state);
33 if (tevent_req_nomem(state->out_mem_ctx, req)) {
34 return tevent_req_post(req, ev);
37 subreq = dcerpc_binding_handle_call_send(state, ev, h,
38 NULL, &ndr_table_spoolss,
39 NDR_SPOOLSS_ENUMPRINTERS, state->out_mem_ctx, r);
40 if (tevent_req_nomem(subreq, req)) {
41 return tevent_req_post(req, ev);
43 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinters_r_done, req);
48 static void dcerpc_spoolss_EnumPrinters_r_done(struct tevent_req *subreq)
50 struct tevent_req *req =
51 tevent_req_callback_data(subreq,
55 status = dcerpc_binding_handle_call_recv(subreq);
56 if (!NT_STATUS_IS_OK(status)) {
57 tevent_req_nterror(req, status);
64 NTSTATUS dcerpc_spoolss_EnumPrinters_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
66 struct dcerpc_spoolss_EnumPrinters_r_state *state =
68 struct dcerpc_spoolss_EnumPrinters_r_state);
71 if (tevent_req_is_nterror(req, &status)) {
72 tevent_req_received(req);
76 talloc_steal(mem_ctx, state->out_mem_ctx);
78 tevent_req_received(req);
82 NTSTATUS dcerpc_spoolss_EnumPrinters_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinters *r)
86 status = dcerpc_binding_handle_call(h,
87 NULL, &ndr_table_spoolss,
88 NDR_SPOOLSS_ENUMPRINTERS, mem_ctx, r);
93 NTSTATUS dcerpc_spoolss_EnumPrinters_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinters *r)
97 status = dcerpc_spoolss_EnumPrinters_r(p->binding_handle, mem_ctx, r);
99 if (NT_STATUS_IS_RPC(status)) {
100 status = NT_STATUS_NET_WRITE_FAULT;
106 struct dcerpc_spoolss_EnumPrinters_state {
107 struct spoolss_EnumPrinters orig;
108 struct spoolss_EnumPrinters tmp;
109 TALLOC_CTX *out_mem_ctx;
112 static void dcerpc_spoolss_EnumPrinters_done(struct tevent_req *subreq);
114 struct tevent_req *dcerpc_spoolss_EnumPrinters_send(TALLOC_CTX *mem_ctx,
115 struct tevent_context *ev,
116 struct dcerpc_binding_handle *h,
117 uint32_t _flags /* [in] */,
118 const char *_server /* [in] [unique,charset(UTF16)] */,
119 uint32_t _level /* [in] */,
120 DATA_BLOB *_buffer /* [in] [unique] */,
121 uint32_t _offered /* [in] */,
122 uint32_t *_count /* [out] [ref] */,
123 union spoolss_PrinterInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
124 uint32_t *_needed /* [out] [ref] */)
126 struct tevent_req *req;
127 struct dcerpc_spoolss_EnumPrinters_state *state;
128 struct tevent_req *subreq;
130 req = tevent_req_create(mem_ctx, &state,
131 struct dcerpc_spoolss_EnumPrinters_state);
135 state->out_mem_ctx = NULL;
138 state->orig.in.flags = _flags;
139 state->orig.in.server = _server;
140 state->orig.in.level = _level;
141 state->orig.in.buffer = _buffer;
142 state->orig.in.offered = _offered;
145 state->orig.out.count = _count;
146 state->orig.out.info = _info;
147 state->orig.out.needed = _needed;
150 ZERO_STRUCT(state->orig.out.result);
152 state->out_mem_ctx = talloc_named_const(state, 0,
153 "dcerpc_spoolss_EnumPrinters_out_memory");
154 if (tevent_req_nomem(state->out_mem_ctx, req)) {
155 return tevent_req_post(req, ev);
158 /* make a temporary copy, that we pass to the dispatch function */
159 state->tmp = state->orig;
161 subreq = dcerpc_spoolss_EnumPrinters_r_send(state, ev, h, &state->tmp);
162 if (tevent_req_nomem(subreq, req)) {
163 return tevent_req_post(req, ev);
165 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinters_done, req);
169 static void dcerpc_spoolss_EnumPrinters_done(struct tevent_req *subreq)
171 struct tevent_req *req = tevent_req_callback_data(
172 subreq, struct tevent_req);
173 struct dcerpc_spoolss_EnumPrinters_state *state = tevent_req_data(
174 req, struct dcerpc_spoolss_EnumPrinters_state);
178 if (state->out_mem_ctx) {
179 mem_ctx = state->out_mem_ctx;
184 status = dcerpc_spoolss_EnumPrinters_r_recv(subreq, mem_ctx);
186 if (!NT_STATUS_IS_OK(status)) {
187 tevent_req_nterror(req, status);
191 /* Copy out parameters */
192 *state->orig.out.count = *state->tmp.out.count;
193 *state->orig.out.info = *state->tmp.out.info;
194 *state->orig.out.needed = *state->tmp.out.needed;
197 state->orig.out.result = state->tmp.out.result;
199 /* Reset temporary structure */
200 ZERO_STRUCT(state->tmp);
202 tevent_req_done(req);
205 NTSTATUS dcerpc_spoolss_EnumPrinters_recv(struct tevent_req *req,
209 struct dcerpc_spoolss_EnumPrinters_state *state = tevent_req_data(
210 req, struct dcerpc_spoolss_EnumPrinters_state);
213 if (tevent_req_is_nterror(req, &status)) {
214 tevent_req_received(req);
218 /* Steal possible out parameters to the callers context */
219 talloc_steal(mem_ctx, state->out_mem_ctx);
222 *result = state->orig.out.result;
224 tevent_req_received(req);
228 NTSTATUS dcerpc_spoolss_EnumPrinters(struct dcerpc_binding_handle *h,
230 uint32_t _flags /* [in] */,
231 const char *_server /* [in] [unique,charset(UTF16)] */,
232 uint32_t _level /* [in] */,
233 DATA_BLOB *_buffer /* [in] [unique] */,
234 uint32_t _offered /* [in] */,
235 uint32_t *_count /* [out] [ref] */,
236 union spoolss_PrinterInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
237 uint32_t *_needed /* [out] [ref] */,
240 struct spoolss_EnumPrinters r;
245 r.in.server = _server;
247 r.in.buffer = _buffer;
248 r.in.offered = _offered;
250 status = dcerpc_spoolss_EnumPrinters_r(h, mem_ctx, &r);
251 if (!NT_STATUS_IS_OK(status)) {
255 /* Return variables */
256 *_count = *r.out.count;
257 *_info = *r.out.info;
258 *_needed = *r.out.needed;
261 *result = r.out.result;
266 struct dcerpc_spoolss_OpenPrinter_r_state {
267 TALLOC_CTX *out_mem_ctx;
270 static void dcerpc_spoolss_OpenPrinter_r_done(struct tevent_req *subreq);
272 struct tevent_req *dcerpc_spoolss_OpenPrinter_r_send(TALLOC_CTX *mem_ctx,
273 struct tevent_context *ev,
274 struct dcerpc_binding_handle *h,
275 struct spoolss_OpenPrinter *r)
277 struct tevent_req *req;
278 struct dcerpc_spoolss_OpenPrinter_r_state *state;
279 struct tevent_req *subreq;
281 req = tevent_req_create(mem_ctx, &state,
282 struct dcerpc_spoolss_OpenPrinter_r_state);
287 state->out_mem_ctx = talloc_new(state);
288 if (tevent_req_nomem(state->out_mem_ctx, req)) {
289 return tevent_req_post(req, ev);
292 subreq = dcerpc_binding_handle_call_send(state, ev, h,
293 NULL, &ndr_table_spoolss,
294 NDR_SPOOLSS_OPENPRINTER, state->out_mem_ctx, r);
295 if (tevent_req_nomem(subreq, req)) {
296 return tevent_req_post(req, ev);
298 tevent_req_set_callback(subreq, dcerpc_spoolss_OpenPrinter_r_done, req);
303 static void dcerpc_spoolss_OpenPrinter_r_done(struct tevent_req *subreq)
305 struct tevent_req *req =
306 tevent_req_callback_data(subreq,
310 status = dcerpc_binding_handle_call_recv(subreq);
311 if (!NT_STATUS_IS_OK(status)) {
312 tevent_req_nterror(req, status);
316 tevent_req_done(req);
319 NTSTATUS dcerpc_spoolss_OpenPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
321 struct dcerpc_spoolss_OpenPrinter_r_state *state =
323 struct dcerpc_spoolss_OpenPrinter_r_state);
326 if (tevent_req_is_nterror(req, &status)) {
327 tevent_req_received(req);
331 talloc_steal(mem_ctx, state->out_mem_ctx);
333 tevent_req_received(req);
337 NTSTATUS dcerpc_spoolss_OpenPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_OpenPrinter *r)
341 status = dcerpc_binding_handle_call(h,
342 NULL, &ndr_table_spoolss,
343 NDR_SPOOLSS_OPENPRINTER, mem_ctx, r);
348 NTSTATUS dcerpc_spoolss_OpenPrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_OpenPrinter *r)
352 status = dcerpc_spoolss_OpenPrinter_r(p->binding_handle, mem_ctx, r);
354 if (NT_STATUS_IS_RPC(status)) {
355 status = NT_STATUS_NET_WRITE_FAULT;
361 struct dcerpc_spoolss_OpenPrinter_state {
362 struct spoolss_OpenPrinter orig;
363 struct spoolss_OpenPrinter tmp;
364 TALLOC_CTX *out_mem_ctx;
367 static void dcerpc_spoolss_OpenPrinter_done(struct tevent_req *subreq);
369 struct tevent_req *dcerpc_spoolss_OpenPrinter_send(TALLOC_CTX *mem_ctx,
370 struct tevent_context *ev,
371 struct dcerpc_binding_handle *h,
372 const char *_printername /* [in] [unique,charset(UTF16)] */,
373 const char *_datatype /* [in] [unique,charset(UTF16)] */,
374 struct spoolss_DevmodeContainer _devmode_ctr /* [in] */,
375 uint32_t _access_mask /* [in] */,
376 struct policy_handle *_handle /* [out] [ref] */)
378 struct tevent_req *req;
379 struct dcerpc_spoolss_OpenPrinter_state *state;
380 struct tevent_req *subreq;
382 req = tevent_req_create(mem_ctx, &state,
383 struct dcerpc_spoolss_OpenPrinter_state);
387 state->out_mem_ctx = NULL;
390 state->orig.in.printername = _printername;
391 state->orig.in.datatype = _datatype;
392 state->orig.in.devmode_ctr = _devmode_ctr;
393 state->orig.in.access_mask = _access_mask;
396 state->orig.out.handle = _handle;
399 ZERO_STRUCT(state->orig.out.result);
401 state->out_mem_ctx = talloc_named_const(state, 0,
402 "dcerpc_spoolss_OpenPrinter_out_memory");
403 if (tevent_req_nomem(state->out_mem_ctx, req)) {
404 return tevent_req_post(req, ev);
407 /* make a temporary copy, that we pass to the dispatch function */
408 state->tmp = state->orig;
410 subreq = dcerpc_spoolss_OpenPrinter_r_send(state, ev, h, &state->tmp);
411 if (tevent_req_nomem(subreq, req)) {
412 return tevent_req_post(req, ev);
414 tevent_req_set_callback(subreq, dcerpc_spoolss_OpenPrinter_done, req);
418 static void dcerpc_spoolss_OpenPrinter_done(struct tevent_req *subreq)
420 struct tevent_req *req = tevent_req_callback_data(
421 subreq, struct tevent_req);
422 struct dcerpc_spoolss_OpenPrinter_state *state = tevent_req_data(
423 req, struct dcerpc_spoolss_OpenPrinter_state);
427 if (state->out_mem_ctx) {
428 mem_ctx = state->out_mem_ctx;
433 status = dcerpc_spoolss_OpenPrinter_r_recv(subreq, mem_ctx);
435 if (!NT_STATUS_IS_OK(status)) {
436 tevent_req_nterror(req, status);
440 /* Copy out parameters */
441 *state->orig.out.handle = *state->tmp.out.handle;
444 state->orig.out.result = state->tmp.out.result;
446 /* Reset temporary structure */
447 ZERO_STRUCT(state->tmp);
449 tevent_req_done(req);
452 NTSTATUS dcerpc_spoolss_OpenPrinter_recv(struct tevent_req *req,
456 struct dcerpc_spoolss_OpenPrinter_state *state = tevent_req_data(
457 req, struct dcerpc_spoolss_OpenPrinter_state);
460 if (tevent_req_is_nterror(req, &status)) {
461 tevent_req_received(req);
465 /* Steal possible out parameters to the callers context */
466 talloc_steal(mem_ctx, state->out_mem_ctx);
469 *result = state->orig.out.result;
471 tevent_req_received(req);
475 NTSTATUS dcerpc_spoolss_OpenPrinter(struct dcerpc_binding_handle *h,
477 const char *_printername /* [in] [unique,charset(UTF16)] */,
478 const char *_datatype /* [in] [unique,charset(UTF16)] */,
479 struct spoolss_DevmodeContainer _devmode_ctr /* [in] */,
480 uint32_t _access_mask /* [in] */,
481 struct policy_handle *_handle /* [out] [ref] */,
484 struct spoolss_OpenPrinter r;
488 r.in.printername = _printername;
489 r.in.datatype = _datatype;
490 r.in.devmode_ctr = _devmode_ctr;
491 r.in.access_mask = _access_mask;
493 status = dcerpc_spoolss_OpenPrinter_r(h, mem_ctx, &r);
494 if (!NT_STATUS_IS_OK(status)) {
498 /* Return variables */
499 *_handle = *r.out.handle;
502 *result = r.out.result;
507 struct dcerpc_spoolss_SetJob_r_state {
508 TALLOC_CTX *out_mem_ctx;
511 static void dcerpc_spoolss_SetJob_r_done(struct tevent_req *subreq);
513 struct tevent_req *dcerpc_spoolss_SetJob_r_send(TALLOC_CTX *mem_ctx,
514 struct tevent_context *ev,
515 struct dcerpc_binding_handle *h,
516 struct spoolss_SetJob *r)
518 struct tevent_req *req;
519 struct dcerpc_spoolss_SetJob_r_state *state;
520 struct tevent_req *subreq;
522 req = tevent_req_create(mem_ctx, &state,
523 struct dcerpc_spoolss_SetJob_r_state);
528 state->out_mem_ctx = NULL;
529 subreq = dcerpc_binding_handle_call_send(state, ev, h,
530 NULL, &ndr_table_spoolss,
531 NDR_SPOOLSS_SETJOB, state, r);
532 if (tevent_req_nomem(subreq, req)) {
533 return tevent_req_post(req, ev);
535 tevent_req_set_callback(subreq, dcerpc_spoolss_SetJob_r_done, req);
540 static void dcerpc_spoolss_SetJob_r_done(struct tevent_req *subreq)
542 struct tevent_req *req =
543 tevent_req_callback_data(subreq,
547 status = dcerpc_binding_handle_call_recv(subreq);
548 if (!NT_STATUS_IS_OK(status)) {
549 tevent_req_nterror(req, status);
553 tevent_req_done(req);
556 NTSTATUS dcerpc_spoolss_SetJob_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
558 struct dcerpc_spoolss_SetJob_r_state *state =
560 struct dcerpc_spoolss_SetJob_r_state);
563 if (tevent_req_is_nterror(req, &status)) {
564 tevent_req_received(req);
568 talloc_steal(mem_ctx, state->out_mem_ctx);
570 tevent_req_received(req);
574 NTSTATUS dcerpc_spoolss_SetJob_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_SetJob *r)
578 status = dcerpc_binding_handle_call(h,
579 NULL, &ndr_table_spoolss,
580 NDR_SPOOLSS_SETJOB, mem_ctx, r);
585 NTSTATUS dcerpc_spoolss_SetJob_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_SetJob *r)
589 status = dcerpc_spoolss_SetJob_r(p->binding_handle, mem_ctx, r);
591 if (NT_STATUS_IS_RPC(status)) {
592 status = NT_STATUS_NET_WRITE_FAULT;
598 struct dcerpc_spoolss_SetJob_state {
599 struct spoolss_SetJob orig;
600 struct spoolss_SetJob tmp;
601 TALLOC_CTX *out_mem_ctx;
604 static void dcerpc_spoolss_SetJob_done(struct tevent_req *subreq);
606 struct tevent_req *dcerpc_spoolss_SetJob_send(TALLOC_CTX *mem_ctx,
607 struct tevent_context *ev,
608 struct dcerpc_binding_handle *h,
609 struct policy_handle *_handle /* [in] [ref] */,
610 uint32_t _job_id /* [in] */,
611 struct spoolss_JobInfoContainer *_ctr /* [in] [unique] */,
612 enum spoolss_JobControl _command /* [in] */)
614 struct tevent_req *req;
615 struct dcerpc_spoolss_SetJob_state *state;
616 struct tevent_req *subreq;
618 req = tevent_req_create(mem_ctx, &state,
619 struct dcerpc_spoolss_SetJob_state);
623 state->out_mem_ctx = NULL;
626 state->orig.in.handle = _handle;
627 state->orig.in.job_id = _job_id;
628 state->orig.in.ctr = _ctr;
629 state->orig.in.command = _command;
634 ZERO_STRUCT(state->orig.out.result);
636 /* make a temporary copy, that we pass to the dispatch function */
637 state->tmp = state->orig;
639 subreq = dcerpc_spoolss_SetJob_r_send(state, ev, h, &state->tmp);
640 if (tevent_req_nomem(subreq, req)) {
641 return tevent_req_post(req, ev);
643 tevent_req_set_callback(subreq, dcerpc_spoolss_SetJob_done, req);
647 static void dcerpc_spoolss_SetJob_done(struct tevent_req *subreq)
649 struct tevent_req *req = tevent_req_callback_data(
650 subreq, struct tevent_req);
651 struct dcerpc_spoolss_SetJob_state *state = tevent_req_data(
652 req, struct dcerpc_spoolss_SetJob_state);
656 if (state->out_mem_ctx) {
657 mem_ctx = state->out_mem_ctx;
662 status = dcerpc_spoolss_SetJob_r_recv(subreq, mem_ctx);
664 if (!NT_STATUS_IS_OK(status)) {
665 tevent_req_nterror(req, status);
669 /* Copy out parameters */
672 state->orig.out.result = state->tmp.out.result;
674 /* Reset temporary structure */
675 ZERO_STRUCT(state->tmp);
677 tevent_req_done(req);
680 NTSTATUS dcerpc_spoolss_SetJob_recv(struct tevent_req *req,
684 struct dcerpc_spoolss_SetJob_state *state = tevent_req_data(
685 req, struct dcerpc_spoolss_SetJob_state);
688 if (tevent_req_is_nterror(req, &status)) {
689 tevent_req_received(req);
693 /* Steal possible out parameters to the callers context */
694 talloc_steal(mem_ctx, state->out_mem_ctx);
697 *result = state->orig.out.result;
699 tevent_req_received(req);
703 NTSTATUS dcerpc_spoolss_SetJob(struct dcerpc_binding_handle *h,
705 struct policy_handle *_handle /* [in] [ref] */,
706 uint32_t _job_id /* [in] */,
707 struct spoolss_JobInfoContainer *_ctr /* [in] [unique] */,
708 enum spoolss_JobControl _command /* [in] */,
711 struct spoolss_SetJob r;
715 r.in.handle = _handle;
716 r.in.job_id = _job_id;
718 r.in.command = _command;
720 status = dcerpc_spoolss_SetJob_r(h, mem_ctx, &r);
721 if (!NT_STATUS_IS_OK(status)) {
725 /* Return variables */
728 *result = r.out.result;
733 struct dcerpc_spoolss_GetJob_r_state {
734 TALLOC_CTX *out_mem_ctx;
737 static void dcerpc_spoolss_GetJob_r_done(struct tevent_req *subreq);
739 struct tevent_req *dcerpc_spoolss_GetJob_r_send(TALLOC_CTX *mem_ctx,
740 struct tevent_context *ev,
741 struct dcerpc_binding_handle *h,
742 struct spoolss_GetJob *r)
744 struct tevent_req *req;
745 struct dcerpc_spoolss_GetJob_r_state *state;
746 struct tevent_req *subreq;
748 req = tevent_req_create(mem_ctx, &state,
749 struct dcerpc_spoolss_GetJob_r_state);
754 state->out_mem_ctx = talloc_new(state);
755 if (tevent_req_nomem(state->out_mem_ctx, req)) {
756 return tevent_req_post(req, ev);
759 subreq = dcerpc_binding_handle_call_send(state, ev, h,
760 NULL, &ndr_table_spoolss,
761 NDR_SPOOLSS_GETJOB, state->out_mem_ctx, r);
762 if (tevent_req_nomem(subreq, req)) {
763 return tevent_req_post(req, ev);
765 tevent_req_set_callback(subreq, dcerpc_spoolss_GetJob_r_done, req);
770 static void dcerpc_spoolss_GetJob_r_done(struct tevent_req *subreq)
772 struct tevent_req *req =
773 tevent_req_callback_data(subreq,
777 status = dcerpc_binding_handle_call_recv(subreq);
778 if (!NT_STATUS_IS_OK(status)) {
779 tevent_req_nterror(req, status);
783 tevent_req_done(req);
786 NTSTATUS dcerpc_spoolss_GetJob_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
788 struct dcerpc_spoolss_GetJob_r_state *state =
790 struct dcerpc_spoolss_GetJob_r_state);
793 if (tevent_req_is_nterror(req, &status)) {
794 tevent_req_received(req);
798 talloc_steal(mem_ctx, state->out_mem_ctx);
800 tevent_req_received(req);
804 NTSTATUS dcerpc_spoolss_GetJob_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetJob *r)
808 status = dcerpc_binding_handle_call(h,
809 NULL, &ndr_table_spoolss,
810 NDR_SPOOLSS_GETJOB, mem_ctx, r);
815 NTSTATUS dcerpc_spoolss_GetJob_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetJob *r)
819 status = dcerpc_spoolss_GetJob_r(p->binding_handle, mem_ctx, r);
821 if (NT_STATUS_IS_RPC(status)) {
822 status = NT_STATUS_NET_WRITE_FAULT;
828 struct dcerpc_spoolss_GetJob_state {
829 struct spoolss_GetJob orig;
830 struct spoolss_GetJob tmp;
831 TALLOC_CTX *out_mem_ctx;
834 static void dcerpc_spoolss_GetJob_done(struct tevent_req *subreq);
836 struct tevent_req *dcerpc_spoolss_GetJob_send(TALLOC_CTX *mem_ctx,
837 struct tevent_context *ev,
838 struct dcerpc_binding_handle *h,
839 struct policy_handle *_handle /* [in] [ref] */,
840 uint32_t _job_id /* [in] */,
841 uint32_t _level /* [in] */,
842 DATA_BLOB *_buffer /* [in] [unique] */,
843 uint32_t _offered /* [in] */,
844 union spoolss_JobInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
845 uint32_t *_needed /* [out] [ref] */)
847 struct tevent_req *req;
848 struct dcerpc_spoolss_GetJob_state *state;
849 struct tevent_req *subreq;
851 req = tevent_req_create(mem_ctx, &state,
852 struct dcerpc_spoolss_GetJob_state);
856 state->out_mem_ctx = NULL;
859 state->orig.in.handle = _handle;
860 state->orig.in.job_id = _job_id;
861 state->orig.in.level = _level;
862 state->orig.in.buffer = _buffer;
863 state->orig.in.offered = _offered;
866 state->orig.out.info = _info;
867 state->orig.out.needed = _needed;
870 ZERO_STRUCT(state->orig.out.result);
872 state->out_mem_ctx = talloc_named_const(state, 0,
873 "dcerpc_spoolss_GetJob_out_memory");
874 if (tevent_req_nomem(state->out_mem_ctx, req)) {
875 return tevent_req_post(req, ev);
878 /* make a temporary copy, that we pass to the dispatch function */
879 state->tmp = state->orig;
881 subreq = dcerpc_spoolss_GetJob_r_send(state, ev, h, &state->tmp);
882 if (tevent_req_nomem(subreq, req)) {
883 return tevent_req_post(req, ev);
885 tevent_req_set_callback(subreq, dcerpc_spoolss_GetJob_done, req);
889 static void dcerpc_spoolss_GetJob_done(struct tevent_req *subreq)
891 struct tevent_req *req = tevent_req_callback_data(
892 subreq, struct tevent_req);
893 struct dcerpc_spoolss_GetJob_state *state = tevent_req_data(
894 req, struct dcerpc_spoolss_GetJob_state);
898 if (state->out_mem_ctx) {
899 mem_ctx = state->out_mem_ctx;
904 status = dcerpc_spoolss_GetJob_r_recv(subreq, mem_ctx);
906 if (!NT_STATUS_IS_OK(status)) {
907 tevent_req_nterror(req, status);
911 /* Copy out parameters */
912 if (state->orig.out.info && state->tmp.out.info) {
913 *state->orig.out.info = *state->tmp.out.info;
915 *state->orig.out.needed = *state->tmp.out.needed;
918 state->orig.out.result = state->tmp.out.result;
920 /* Reset temporary structure */
921 ZERO_STRUCT(state->tmp);
923 tevent_req_done(req);
926 NTSTATUS dcerpc_spoolss_GetJob_recv(struct tevent_req *req,
930 struct dcerpc_spoolss_GetJob_state *state = tevent_req_data(
931 req, struct dcerpc_spoolss_GetJob_state);
934 if (tevent_req_is_nterror(req, &status)) {
935 tevent_req_received(req);
939 /* Steal possible out parameters to the callers context */
940 talloc_steal(mem_ctx, state->out_mem_ctx);
943 *result = state->orig.out.result;
945 tevent_req_received(req);
949 NTSTATUS dcerpc_spoolss_GetJob(struct dcerpc_binding_handle *h,
951 struct policy_handle *_handle /* [in] [ref] */,
952 uint32_t _job_id /* [in] */,
953 uint32_t _level /* [in] */,
954 DATA_BLOB *_buffer /* [in] [unique] */,
955 uint32_t _offered /* [in] */,
956 union spoolss_JobInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
957 uint32_t *_needed /* [out] [ref] */,
960 struct spoolss_GetJob r;
964 r.in.handle = _handle;
965 r.in.job_id = _job_id;
967 r.in.buffer = _buffer;
968 r.in.offered = _offered;
970 status = dcerpc_spoolss_GetJob_r(h, mem_ctx, &r);
971 if (!NT_STATUS_IS_OK(status)) {
975 /* Return variables */
976 if (_info && r.out.info) {
977 *_info = *r.out.info;
979 *_needed = *r.out.needed;
982 *result = r.out.result;
987 struct dcerpc_spoolss_EnumJobs_r_state {
988 TALLOC_CTX *out_mem_ctx;
991 static void dcerpc_spoolss_EnumJobs_r_done(struct tevent_req *subreq);
993 struct tevent_req *dcerpc_spoolss_EnumJobs_r_send(TALLOC_CTX *mem_ctx,
994 struct tevent_context *ev,
995 struct dcerpc_binding_handle *h,
996 struct spoolss_EnumJobs *r)
998 struct tevent_req *req;
999 struct dcerpc_spoolss_EnumJobs_r_state *state;
1000 struct tevent_req *subreq;
1002 req = tevent_req_create(mem_ctx, &state,
1003 struct dcerpc_spoolss_EnumJobs_r_state);
1008 state->out_mem_ctx = talloc_new(state);
1009 if (tevent_req_nomem(state->out_mem_ctx, req)) {
1010 return tevent_req_post(req, ev);
1013 subreq = dcerpc_binding_handle_call_send(state, ev, h,
1014 NULL, &ndr_table_spoolss,
1015 NDR_SPOOLSS_ENUMJOBS, state->out_mem_ctx, r);
1016 if (tevent_req_nomem(subreq, req)) {
1017 return tevent_req_post(req, ev);
1019 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumJobs_r_done, req);
1024 static void dcerpc_spoolss_EnumJobs_r_done(struct tevent_req *subreq)
1026 struct tevent_req *req =
1027 tevent_req_callback_data(subreq,
1031 status = dcerpc_binding_handle_call_recv(subreq);
1032 if (!NT_STATUS_IS_OK(status)) {
1033 tevent_req_nterror(req, status);
1037 tevent_req_done(req);
1040 NTSTATUS dcerpc_spoolss_EnumJobs_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
1042 struct dcerpc_spoolss_EnumJobs_r_state *state =
1043 tevent_req_data(req,
1044 struct dcerpc_spoolss_EnumJobs_r_state);
1047 if (tevent_req_is_nterror(req, &status)) {
1048 tevent_req_received(req);
1052 talloc_steal(mem_ctx, state->out_mem_ctx);
1054 tevent_req_received(req);
1055 return NT_STATUS_OK;
1058 NTSTATUS dcerpc_spoolss_EnumJobs_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumJobs *r)
1062 status = dcerpc_binding_handle_call(h,
1063 NULL, &ndr_table_spoolss,
1064 NDR_SPOOLSS_ENUMJOBS, mem_ctx, r);
1069 NTSTATUS dcerpc_spoolss_EnumJobs_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumJobs *r)
1073 status = dcerpc_spoolss_EnumJobs_r(p->binding_handle, mem_ctx, r);
1075 if (NT_STATUS_IS_RPC(status)) {
1076 status = NT_STATUS_NET_WRITE_FAULT;
1082 struct dcerpc_spoolss_EnumJobs_state {
1083 struct spoolss_EnumJobs orig;
1084 struct spoolss_EnumJobs tmp;
1085 TALLOC_CTX *out_mem_ctx;
1088 static void dcerpc_spoolss_EnumJobs_done(struct tevent_req *subreq);
1090 struct tevent_req *dcerpc_spoolss_EnumJobs_send(TALLOC_CTX *mem_ctx,
1091 struct tevent_context *ev,
1092 struct dcerpc_binding_handle *h,
1093 struct policy_handle *_handle /* [in] [ref] */,
1094 uint32_t _firstjob /* [in] */,
1095 uint32_t _numjobs /* [in] */,
1096 uint32_t _level /* [in] */,
1097 DATA_BLOB *_buffer /* [in] [unique] */,
1098 uint32_t _offered /* [in] */,
1099 uint32_t *_count /* [out] [ref] */,
1100 union spoolss_JobInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
1101 uint32_t *_needed /* [out] [ref] */)
1103 struct tevent_req *req;
1104 struct dcerpc_spoolss_EnumJobs_state *state;
1105 struct tevent_req *subreq;
1107 req = tevent_req_create(mem_ctx, &state,
1108 struct dcerpc_spoolss_EnumJobs_state);
1112 state->out_mem_ctx = NULL;
1115 state->orig.in.handle = _handle;
1116 state->orig.in.firstjob = _firstjob;
1117 state->orig.in.numjobs = _numjobs;
1118 state->orig.in.level = _level;
1119 state->orig.in.buffer = _buffer;
1120 state->orig.in.offered = _offered;
1122 /* Out parameters */
1123 state->orig.out.count = _count;
1124 state->orig.out.info = _info;
1125 state->orig.out.needed = _needed;
1128 ZERO_STRUCT(state->orig.out.result);
1130 state->out_mem_ctx = talloc_named_const(state, 0,
1131 "dcerpc_spoolss_EnumJobs_out_memory");
1132 if (tevent_req_nomem(state->out_mem_ctx, req)) {
1133 return tevent_req_post(req, ev);
1136 /* make a temporary copy, that we pass to the dispatch function */
1137 state->tmp = state->orig;
1139 subreq = dcerpc_spoolss_EnumJobs_r_send(state, ev, h, &state->tmp);
1140 if (tevent_req_nomem(subreq, req)) {
1141 return tevent_req_post(req, ev);
1143 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumJobs_done, req);
1147 static void dcerpc_spoolss_EnumJobs_done(struct tevent_req *subreq)
1149 struct tevent_req *req = tevent_req_callback_data(
1150 subreq, struct tevent_req);
1151 struct dcerpc_spoolss_EnumJobs_state *state = tevent_req_data(
1152 req, struct dcerpc_spoolss_EnumJobs_state);
1154 TALLOC_CTX *mem_ctx;
1156 if (state->out_mem_ctx) {
1157 mem_ctx = state->out_mem_ctx;
1162 status = dcerpc_spoolss_EnumJobs_r_recv(subreq, mem_ctx);
1163 TALLOC_FREE(subreq);
1164 if (!NT_STATUS_IS_OK(status)) {
1165 tevent_req_nterror(req, status);
1169 /* Copy out parameters */
1170 *state->orig.out.count = *state->tmp.out.count;
1171 *state->orig.out.info = *state->tmp.out.info;
1172 *state->orig.out.needed = *state->tmp.out.needed;
1175 state->orig.out.result = state->tmp.out.result;
1177 /* Reset temporary structure */
1178 ZERO_STRUCT(state->tmp);
1180 tevent_req_done(req);
1183 NTSTATUS dcerpc_spoolss_EnumJobs_recv(struct tevent_req *req,
1184 TALLOC_CTX *mem_ctx,
1187 struct dcerpc_spoolss_EnumJobs_state *state = tevent_req_data(
1188 req, struct dcerpc_spoolss_EnumJobs_state);
1191 if (tevent_req_is_nterror(req, &status)) {
1192 tevent_req_received(req);
1196 /* Steal possible out parameters to the callers context */
1197 talloc_steal(mem_ctx, state->out_mem_ctx);
1200 *result = state->orig.out.result;
1202 tevent_req_received(req);
1203 return NT_STATUS_OK;
1206 NTSTATUS dcerpc_spoolss_EnumJobs(struct dcerpc_binding_handle *h,
1207 TALLOC_CTX *mem_ctx,
1208 struct policy_handle *_handle /* [in] [ref] */,
1209 uint32_t _firstjob /* [in] */,
1210 uint32_t _numjobs /* [in] */,
1211 uint32_t _level /* [in] */,
1212 DATA_BLOB *_buffer /* [in] [unique] */,
1213 uint32_t _offered /* [in] */,
1214 uint32_t *_count /* [out] [ref] */,
1215 union spoolss_JobInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
1216 uint32_t *_needed /* [out] [ref] */,
1219 struct spoolss_EnumJobs r;
1223 r.in.handle = _handle;
1224 r.in.firstjob = _firstjob;
1225 r.in.numjobs = _numjobs;
1226 r.in.level = _level;
1227 r.in.buffer = _buffer;
1228 r.in.offered = _offered;
1230 status = dcerpc_spoolss_EnumJobs_r(h, mem_ctx, &r);
1231 if (!NT_STATUS_IS_OK(status)) {
1235 /* Return variables */
1236 *_count = *r.out.count;
1237 *_info = *r.out.info;
1238 *_needed = *r.out.needed;
1241 *result = r.out.result;
1243 return NT_STATUS_OK;
1246 struct dcerpc_spoolss_AddPrinter_r_state {
1247 TALLOC_CTX *out_mem_ctx;
1250 static void dcerpc_spoolss_AddPrinter_r_done(struct tevent_req *subreq);
1252 struct tevent_req *dcerpc_spoolss_AddPrinter_r_send(TALLOC_CTX *mem_ctx,
1253 struct tevent_context *ev,
1254 struct dcerpc_binding_handle *h,
1255 struct spoolss_AddPrinter *r)
1257 struct tevent_req *req;
1258 struct dcerpc_spoolss_AddPrinter_r_state *state;
1259 struct tevent_req *subreq;
1261 req = tevent_req_create(mem_ctx, &state,
1262 struct dcerpc_spoolss_AddPrinter_r_state);
1267 state->out_mem_ctx = talloc_new(state);
1268 if (tevent_req_nomem(state->out_mem_ctx, req)) {
1269 return tevent_req_post(req, ev);
1272 subreq = dcerpc_binding_handle_call_send(state, ev, h,
1273 NULL, &ndr_table_spoolss,
1274 NDR_SPOOLSS_ADDPRINTER, state->out_mem_ctx, r);
1275 if (tevent_req_nomem(subreq, req)) {
1276 return tevent_req_post(req, ev);
1278 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinter_r_done, req);
1283 static void dcerpc_spoolss_AddPrinter_r_done(struct tevent_req *subreq)
1285 struct tevent_req *req =
1286 tevent_req_callback_data(subreq,
1290 status = dcerpc_binding_handle_call_recv(subreq);
1291 if (!NT_STATUS_IS_OK(status)) {
1292 tevent_req_nterror(req, status);
1296 tevent_req_done(req);
1299 NTSTATUS dcerpc_spoolss_AddPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
1301 struct dcerpc_spoolss_AddPrinter_r_state *state =
1302 tevent_req_data(req,
1303 struct dcerpc_spoolss_AddPrinter_r_state);
1306 if (tevent_req_is_nterror(req, &status)) {
1307 tevent_req_received(req);
1311 talloc_steal(mem_ctx, state->out_mem_ctx);
1313 tevent_req_received(req);
1314 return NT_STATUS_OK;
1317 NTSTATUS dcerpc_spoolss_AddPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPrinter *r)
1321 status = dcerpc_binding_handle_call(h,
1322 NULL, &ndr_table_spoolss,
1323 NDR_SPOOLSS_ADDPRINTER, mem_ctx, r);
1328 NTSTATUS dcerpc_spoolss_AddPrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_AddPrinter *r)
1332 status = dcerpc_spoolss_AddPrinter_r(p->binding_handle, mem_ctx, r);
1334 if (NT_STATUS_IS_RPC(status)) {
1335 status = NT_STATUS_NET_WRITE_FAULT;
1341 struct dcerpc_spoolss_AddPrinter_state {
1342 struct spoolss_AddPrinter orig;
1343 struct spoolss_AddPrinter tmp;
1344 TALLOC_CTX *out_mem_ctx;
1347 static void dcerpc_spoolss_AddPrinter_done(struct tevent_req *subreq);
1349 struct tevent_req *dcerpc_spoolss_AddPrinter_send(TALLOC_CTX *mem_ctx,
1350 struct tevent_context *ev,
1351 struct dcerpc_binding_handle *h,
1352 const char *_server /* [in] [unique,charset(UTF16)] */,
1353 struct spoolss_SetPrinterInfoCtr *_info_ctr /* [in] [ref] */,
1354 struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
1355 struct sec_desc_buf *_secdesc_ctr /* [in] [ref] */,
1356 struct policy_handle *_handle /* [out] [ref] */)
1358 struct tevent_req *req;
1359 struct dcerpc_spoolss_AddPrinter_state *state;
1360 struct tevent_req *subreq;
1362 req = tevent_req_create(mem_ctx, &state,
1363 struct dcerpc_spoolss_AddPrinter_state);
1367 state->out_mem_ctx = NULL;
1370 state->orig.in.server = _server;
1371 state->orig.in.info_ctr = _info_ctr;
1372 state->orig.in.devmode_ctr = _devmode_ctr;
1373 state->orig.in.secdesc_ctr = _secdesc_ctr;
1375 /* Out parameters */
1376 state->orig.out.handle = _handle;
1379 ZERO_STRUCT(state->orig.out.result);
1381 state->out_mem_ctx = talloc_named_const(state, 0,
1382 "dcerpc_spoolss_AddPrinter_out_memory");
1383 if (tevent_req_nomem(state->out_mem_ctx, req)) {
1384 return tevent_req_post(req, ev);
1387 /* make a temporary copy, that we pass to the dispatch function */
1388 state->tmp = state->orig;
1390 subreq = dcerpc_spoolss_AddPrinter_r_send(state, ev, h, &state->tmp);
1391 if (tevent_req_nomem(subreq, req)) {
1392 return tevent_req_post(req, ev);
1394 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinter_done, req);
1398 static void dcerpc_spoolss_AddPrinter_done(struct tevent_req *subreq)
1400 struct tevent_req *req = tevent_req_callback_data(
1401 subreq, struct tevent_req);
1402 struct dcerpc_spoolss_AddPrinter_state *state = tevent_req_data(
1403 req, struct dcerpc_spoolss_AddPrinter_state);
1405 TALLOC_CTX *mem_ctx;
1407 if (state->out_mem_ctx) {
1408 mem_ctx = state->out_mem_ctx;
1413 status = dcerpc_spoolss_AddPrinter_r_recv(subreq, mem_ctx);
1414 TALLOC_FREE(subreq);
1415 if (!NT_STATUS_IS_OK(status)) {
1416 tevent_req_nterror(req, status);
1420 /* Copy out parameters */
1421 *state->orig.out.handle = *state->tmp.out.handle;
1424 state->orig.out.result = state->tmp.out.result;
1426 /* Reset temporary structure */
1427 ZERO_STRUCT(state->tmp);
1429 tevent_req_done(req);
1432 NTSTATUS dcerpc_spoolss_AddPrinter_recv(struct tevent_req *req,
1433 TALLOC_CTX *mem_ctx,
1436 struct dcerpc_spoolss_AddPrinter_state *state = tevent_req_data(
1437 req, struct dcerpc_spoolss_AddPrinter_state);
1440 if (tevent_req_is_nterror(req, &status)) {
1441 tevent_req_received(req);
1445 /* Steal possible out parameters to the callers context */
1446 talloc_steal(mem_ctx, state->out_mem_ctx);
1449 *result = state->orig.out.result;
1451 tevent_req_received(req);
1452 return NT_STATUS_OK;
1455 NTSTATUS dcerpc_spoolss_AddPrinter(struct dcerpc_binding_handle *h,
1456 TALLOC_CTX *mem_ctx,
1457 const char *_server /* [in] [unique,charset(UTF16)] */,
1458 struct spoolss_SetPrinterInfoCtr *_info_ctr /* [in] [ref] */,
1459 struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
1460 struct sec_desc_buf *_secdesc_ctr /* [in] [ref] */,
1461 struct policy_handle *_handle /* [out] [ref] */,
1464 struct spoolss_AddPrinter r;
1468 r.in.server = _server;
1469 r.in.info_ctr = _info_ctr;
1470 r.in.devmode_ctr = _devmode_ctr;
1471 r.in.secdesc_ctr = _secdesc_ctr;
1473 status = dcerpc_spoolss_AddPrinter_r(h, mem_ctx, &r);
1474 if (!NT_STATUS_IS_OK(status)) {
1478 /* Return variables */
1479 *_handle = *r.out.handle;
1482 *result = r.out.result;
1484 return NT_STATUS_OK;
1487 struct dcerpc_spoolss_DeletePrinter_r_state {
1488 TALLOC_CTX *out_mem_ctx;
1491 static void dcerpc_spoolss_DeletePrinter_r_done(struct tevent_req *subreq);
1493 struct tevent_req *dcerpc_spoolss_DeletePrinter_r_send(TALLOC_CTX *mem_ctx,
1494 struct tevent_context *ev,
1495 struct dcerpc_binding_handle *h,
1496 struct spoolss_DeletePrinter *r)
1498 struct tevent_req *req;
1499 struct dcerpc_spoolss_DeletePrinter_r_state *state;
1500 struct tevent_req *subreq;
1502 req = tevent_req_create(mem_ctx, &state,
1503 struct dcerpc_spoolss_DeletePrinter_r_state);
1508 state->out_mem_ctx = NULL;
1509 subreq = dcerpc_binding_handle_call_send(state, ev, h,
1510 NULL, &ndr_table_spoolss,
1511 NDR_SPOOLSS_DELETEPRINTER, state, r);
1512 if (tevent_req_nomem(subreq, req)) {
1513 return tevent_req_post(req, ev);
1515 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinter_r_done, req);
1520 static void dcerpc_spoolss_DeletePrinter_r_done(struct tevent_req *subreq)
1522 struct tevent_req *req =
1523 tevent_req_callback_data(subreq,
1527 status = dcerpc_binding_handle_call_recv(subreq);
1528 if (!NT_STATUS_IS_OK(status)) {
1529 tevent_req_nterror(req, status);
1533 tevent_req_done(req);
1536 NTSTATUS dcerpc_spoolss_DeletePrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
1538 struct dcerpc_spoolss_DeletePrinter_r_state *state =
1539 tevent_req_data(req,
1540 struct dcerpc_spoolss_DeletePrinter_r_state);
1543 if (tevent_req_is_nterror(req, &status)) {
1544 tevent_req_received(req);
1548 talloc_steal(mem_ctx, state->out_mem_ctx);
1550 tevent_req_received(req);
1551 return NT_STATUS_OK;
1554 NTSTATUS dcerpc_spoolss_DeletePrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinter *r)
1558 status = dcerpc_binding_handle_call(h,
1559 NULL, &ndr_table_spoolss,
1560 NDR_SPOOLSS_DELETEPRINTER, mem_ctx, r);
1565 NTSTATUS dcerpc_spoolss_DeletePrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinter *r)
1569 status = dcerpc_spoolss_DeletePrinter_r(p->binding_handle, mem_ctx, r);
1571 if (NT_STATUS_IS_RPC(status)) {
1572 status = NT_STATUS_NET_WRITE_FAULT;
1578 struct dcerpc_spoolss_DeletePrinter_state {
1579 struct spoolss_DeletePrinter orig;
1580 struct spoolss_DeletePrinter tmp;
1581 TALLOC_CTX *out_mem_ctx;
1584 static void dcerpc_spoolss_DeletePrinter_done(struct tevent_req *subreq);
1586 struct tevent_req *dcerpc_spoolss_DeletePrinter_send(TALLOC_CTX *mem_ctx,
1587 struct tevent_context *ev,
1588 struct dcerpc_binding_handle *h,
1589 struct policy_handle *_handle /* [in] [ref] */)
1591 struct tevent_req *req;
1592 struct dcerpc_spoolss_DeletePrinter_state *state;
1593 struct tevent_req *subreq;
1595 req = tevent_req_create(mem_ctx, &state,
1596 struct dcerpc_spoolss_DeletePrinter_state);
1600 state->out_mem_ctx = NULL;
1603 state->orig.in.handle = _handle;
1605 /* Out parameters */
1608 ZERO_STRUCT(state->orig.out.result);
1610 /* make a temporary copy, that we pass to the dispatch function */
1611 state->tmp = state->orig;
1613 subreq = dcerpc_spoolss_DeletePrinter_r_send(state, ev, h, &state->tmp);
1614 if (tevent_req_nomem(subreq, req)) {
1615 return tevent_req_post(req, ev);
1617 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinter_done, req);
1621 static void dcerpc_spoolss_DeletePrinter_done(struct tevent_req *subreq)
1623 struct tevent_req *req = tevent_req_callback_data(
1624 subreq, struct tevent_req);
1625 struct dcerpc_spoolss_DeletePrinter_state *state = tevent_req_data(
1626 req, struct dcerpc_spoolss_DeletePrinter_state);
1628 TALLOC_CTX *mem_ctx;
1630 if (state->out_mem_ctx) {
1631 mem_ctx = state->out_mem_ctx;
1636 status = dcerpc_spoolss_DeletePrinter_r_recv(subreq, mem_ctx);
1637 TALLOC_FREE(subreq);
1638 if (!NT_STATUS_IS_OK(status)) {
1639 tevent_req_nterror(req, status);
1643 /* Copy out parameters */
1646 state->orig.out.result = state->tmp.out.result;
1648 /* Reset temporary structure */
1649 ZERO_STRUCT(state->tmp);
1651 tevent_req_done(req);
1654 NTSTATUS dcerpc_spoolss_DeletePrinter_recv(struct tevent_req *req,
1655 TALLOC_CTX *mem_ctx,
1658 struct dcerpc_spoolss_DeletePrinter_state *state = tevent_req_data(
1659 req, struct dcerpc_spoolss_DeletePrinter_state);
1662 if (tevent_req_is_nterror(req, &status)) {
1663 tevent_req_received(req);
1667 /* Steal possible out parameters to the callers context */
1668 talloc_steal(mem_ctx, state->out_mem_ctx);
1671 *result = state->orig.out.result;
1673 tevent_req_received(req);
1674 return NT_STATUS_OK;
1677 NTSTATUS dcerpc_spoolss_DeletePrinter(struct dcerpc_binding_handle *h,
1678 TALLOC_CTX *mem_ctx,
1679 struct policy_handle *_handle /* [in] [ref] */,
1682 struct spoolss_DeletePrinter r;
1686 r.in.handle = _handle;
1688 status = dcerpc_spoolss_DeletePrinter_r(h, mem_ctx, &r);
1689 if (!NT_STATUS_IS_OK(status)) {
1693 /* Return variables */
1696 *result = r.out.result;
1698 return NT_STATUS_OK;
1701 struct dcerpc_spoolss_SetPrinter_r_state {
1702 TALLOC_CTX *out_mem_ctx;
1705 static void dcerpc_spoolss_SetPrinter_r_done(struct tevent_req *subreq);
1707 struct tevent_req *dcerpc_spoolss_SetPrinter_r_send(TALLOC_CTX *mem_ctx,
1708 struct tevent_context *ev,
1709 struct dcerpc_binding_handle *h,
1710 struct spoolss_SetPrinter *r)
1712 struct tevent_req *req;
1713 struct dcerpc_spoolss_SetPrinter_r_state *state;
1714 struct tevent_req *subreq;
1716 req = tevent_req_create(mem_ctx, &state,
1717 struct dcerpc_spoolss_SetPrinter_r_state);
1722 state->out_mem_ctx = NULL;
1723 subreq = dcerpc_binding_handle_call_send(state, ev, h,
1724 NULL, &ndr_table_spoolss,
1725 NDR_SPOOLSS_SETPRINTER, state, r);
1726 if (tevent_req_nomem(subreq, req)) {
1727 return tevent_req_post(req, ev);
1729 tevent_req_set_callback(subreq, dcerpc_spoolss_SetPrinter_r_done, req);
1734 static void dcerpc_spoolss_SetPrinter_r_done(struct tevent_req *subreq)
1736 struct tevent_req *req =
1737 tevent_req_callback_data(subreq,
1741 status = dcerpc_binding_handle_call_recv(subreq);
1742 if (!NT_STATUS_IS_OK(status)) {
1743 tevent_req_nterror(req, status);
1747 tevent_req_done(req);
1750 NTSTATUS dcerpc_spoolss_SetPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
1752 struct dcerpc_spoolss_SetPrinter_r_state *state =
1753 tevent_req_data(req,
1754 struct dcerpc_spoolss_SetPrinter_r_state);
1757 if (tevent_req_is_nterror(req, &status)) {
1758 tevent_req_received(req);
1762 talloc_steal(mem_ctx, state->out_mem_ctx);
1764 tevent_req_received(req);
1765 return NT_STATUS_OK;
1768 NTSTATUS dcerpc_spoolss_SetPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_SetPrinter *r)
1772 status = dcerpc_binding_handle_call(h,
1773 NULL, &ndr_table_spoolss,
1774 NDR_SPOOLSS_SETPRINTER, mem_ctx, r);
1779 NTSTATUS dcerpc_spoolss_SetPrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_SetPrinter *r)
1783 status = dcerpc_spoolss_SetPrinter_r(p->binding_handle, mem_ctx, r);
1785 if (NT_STATUS_IS_RPC(status)) {
1786 status = NT_STATUS_NET_WRITE_FAULT;
1792 struct dcerpc_spoolss_SetPrinter_state {
1793 struct spoolss_SetPrinter orig;
1794 struct spoolss_SetPrinter tmp;
1795 TALLOC_CTX *out_mem_ctx;
1798 static void dcerpc_spoolss_SetPrinter_done(struct tevent_req *subreq);
1800 struct tevent_req *dcerpc_spoolss_SetPrinter_send(TALLOC_CTX *mem_ctx,
1801 struct tevent_context *ev,
1802 struct dcerpc_binding_handle *h,
1803 struct policy_handle *_handle /* [in] [ref] */,
1804 struct spoolss_SetPrinterInfoCtr *_info_ctr /* [in] [ref] */,
1805 struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
1806 struct sec_desc_buf *_secdesc_ctr /* [in] [ref] */,
1807 enum spoolss_PrinterControl _command /* [in] */)
1809 struct tevent_req *req;
1810 struct dcerpc_spoolss_SetPrinter_state *state;
1811 struct tevent_req *subreq;
1813 req = tevent_req_create(mem_ctx, &state,
1814 struct dcerpc_spoolss_SetPrinter_state);
1818 state->out_mem_ctx = NULL;
1821 state->orig.in.handle = _handle;
1822 state->orig.in.info_ctr = _info_ctr;
1823 state->orig.in.devmode_ctr = _devmode_ctr;
1824 state->orig.in.secdesc_ctr = _secdesc_ctr;
1825 state->orig.in.command = _command;
1827 /* Out parameters */
1830 ZERO_STRUCT(state->orig.out.result);
1832 /* make a temporary copy, that we pass to the dispatch function */
1833 state->tmp = state->orig;
1835 subreq = dcerpc_spoolss_SetPrinter_r_send(state, ev, h, &state->tmp);
1836 if (tevent_req_nomem(subreq, req)) {
1837 return tevent_req_post(req, ev);
1839 tevent_req_set_callback(subreq, dcerpc_spoolss_SetPrinter_done, req);
1843 static void dcerpc_spoolss_SetPrinter_done(struct tevent_req *subreq)
1845 struct tevent_req *req = tevent_req_callback_data(
1846 subreq, struct tevent_req);
1847 struct dcerpc_spoolss_SetPrinter_state *state = tevent_req_data(
1848 req, struct dcerpc_spoolss_SetPrinter_state);
1850 TALLOC_CTX *mem_ctx;
1852 if (state->out_mem_ctx) {
1853 mem_ctx = state->out_mem_ctx;
1858 status = dcerpc_spoolss_SetPrinter_r_recv(subreq, mem_ctx);
1859 TALLOC_FREE(subreq);
1860 if (!NT_STATUS_IS_OK(status)) {
1861 tevent_req_nterror(req, status);
1865 /* Copy out parameters */
1868 state->orig.out.result = state->tmp.out.result;
1870 /* Reset temporary structure */
1871 ZERO_STRUCT(state->tmp);
1873 tevent_req_done(req);
1876 NTSTATUS dcerpc_spoolss_SetPrinter_recv(struct tevent_req *req,
1877 TALLOC_CTX *mem_ctx,
1880 struct dcerpc_spoolss_SetPrinter_state *state = tevent_req_data(
1881 req, struct dcerpc_spoolss_SetPrinter_state);
1884 if (tevent_req_is_nterror(req, &status)) {
1885 tevent_req_received(req);
1889 /* Steal possible out parameters to the callers context */
1890 talloc_steal(mem_ctx, state->out_mem_ctx);
1893 *result = state->orig.out.result;
1895 tevent_req_received(req);
1896 return NT_STATUS_OK;
1899 NTSTATUS dcerpc_spoolss_SetPrinter(struct dcerpc_binding_handle *h,
1900 TALLOC_CTX *mem_ctx,
1901 struct policy_handle *_handle /* [in] [ref] */,
1902 struct spoolss_SetPrinterInfoCtr *_info_ctr /* [in] [ref] */,
1903 struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
1904 struct sec_desc_buf *_secdesc_ctr /* [in] [ref] */,
1905 enum spoolss_PrinterControl _command /* [in] */,
1908 struct spoolss_SetPrinter r;
1912 r.in.handle = _handle;
1913 r.in.info_ctr = _info_ctr;
1914 r.in.devmode_ctr = _devmode_ctr;
1915 r.in.secdesc_ctr = _secdesc_ctr;
1916 r.in.command = _command;
1918 status = dcerpc_spoolss_SetPrinter_r(h, mem_ctx, &r);
1919 if (!NT_STATUS_IS_OK(status)) {
1923 /* Return variables */
1926 *result = r.out.result;
1928 return NT_STATUS_OK;
1931 struct dcerpc_spoolss_GetPrinter_r_state {
1932 TALLOC_CTX *out_mem_ctx;
1935 static void dcerpc_spoolss_GetPrinter_r_done(struct tevent_req *subreq);
1937 struct tevent_req *dcerpc_spoolss_GetPrinter_r_send(TALLOC_CTX *mem_ctx,
1938 struct tevent_context *ev,
1939 struct dcerpc_binding_handle *h,
1940 struct spoolss_GetPrinter *r)
1942 struct tevent_req *req;
1943 struct dcerpc_spoolss_GetPrinter_r_state *state;
1944 struct tevent_req *subreq;
1946 req = tevent_req_create(mem_ctx, &state,
1947 struct dcerpc_spoolss_GetPrinter_r_state);
1952 state->out_mem_ctx = talloc_new(state);
1953 if (tevent_req_nomem(state->out_mem_ctx, req)) {
1954 return tevent_req_post(req, ev);
1957 subreq = dcerpc_binding_handle_call_send(state, ev, h,
1958 NULL, &ndr_table_spoolss,
1959 NDR_SPOOLSS_GETPRINTER, state->out_mem_ctx, r);
1960 if (tevent_req_nomem(subreq, req)) {
1961 return tevent_req_post(req, ev);
1963 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinter_r_done, req);
1968 static void dcerpc_spoolss_GetPrinter_r_done(struct tevent_req *subreq)
1970 struct tevent_req *req =
1971 tevent_req_callback_data(subreq,
1975 status = dcerpc_binding_handle_call_recv(subreq);
1976 if (!NT_STATUS_IS_OK(status)) {
1977 tevent_req_nterror(req, status);
1981 tevent_req_done(req);
1984 NTSTATUS dcerpc_spoolss_GetPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
1986 struct dcerpc_spoolss_GetPrinter_r_state *state =
1987 tevent_req_data(req,
1988 struct dcerpc_spoolss_GetPrinter_r_state);
1991 if (tevent_req_is_nterror(req, &status)) {
1992 tevent_req_received(req);
1996 talloc_steal(mem_ctx, state->out_mem_ctx);
1998 tevent_req_received(req);
1999 return NT_STATUS_OK;
2002 NTSTATUS dcerpc_spoolss_GetPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinter *r)
2006 status = dcerpc_binding_handle_call(h,
2007 NULL, &ndr_table_spoolss,
2008 NDR_SPOOLSS_GETPRINTER, mem_ctx, r);
2013 NTSTATUS dcerpc_spoolss_GetPrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinter *r)
2017 status = dcerpc_spoolss_GetPrinter_r(p->binding_handle, mem_ctx, r);
2019 if (NT_STATUS_IS_RPC(status)) {
2020 status = NT_STATUS_NET_WRITE_FAULT;
2026 struct dcerpc_spoolss_GetPrinter_state {
2027 struct spoolss_GetPrinter orig;
2028 struct spoolss_GetPrinter tmp;
2029 TALLOC_CTX *out_mem_ctx;
2032 static void dcerpc_spoolss_GetPrinter_done(struct tevent_req *subreq);
2034 struct tevent_req *dcerpc_spoolss_GetPrinter_send(TALLOC_CTX *mem_ctx,
2035 struct tevent_context *ev,
2036 struct dcerpc_binding_handle *h,
2037 struct policy_handle *_handle /* [in] [ref] */,
2038 uint32_t _level /* [in] */,
2039 DATA_BLOB *_buffer /* [in] [unique] */,
2040 uint32_t _offered /* [in] */,
2041 union spoolss_PrinterInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
2042 uint32_t *_needed /* [out] [ref] */)
2044 struct tevent_req *req;
2045 struct dcerpc_spoolss_GetPrinter_state *state;
2046 struct tevent_req *subreq;
2048 req = tevent_req_create(mem_ctx, &state,
2049 struct dcerpc_spoolss_GetPrinter_state);
2053 state->out_mem_ctx = NULL;
2056 state->orig.in.handle = _handle;
2057 state->orig.in.level = _level;
2058 state->orig.in.buffer = _buffer;
2059 state->orig.in.offered = _offered;
2061 /* Out parameters */
2062 state->orig.out.info = _info;
2063 state->orig.out.needed = _needed;
2066 ZERO_STRUCT(state->orig.out.result);
2068 state->out_mem_ctx = talloc_named_const(state, 0,
2069 "dcerpc_spoolss_GetPrinter_out_memory");
2070 if (tevent_req_nomem(state->out_mem_ctx, req)) {
2071 return tevent_req_post(req, ev);
2074 /* make a temporary copy, that we pass to the dispatch function */
2075 state->tmp = state->orig;
2077 subreq = dcerpc_spoolss_GetPrinter_r_send(state, ev, h, &state->tmp);
2078 if (tevent_req_nomem(subreq, req)) {
2079 return tevent_req_post(req, ev);
2081 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinter_done, req);
2085 static void dcerpc_spoolss_GetPrinter_done(struct tevent_req *subreq)
2087 struct tevent_req *req = tevent_req_callback_data(
2088 subreq, struct tevent_req);
2089 struct dcerpc_spoolss_GetPrinter_state *state = tevent_req_data(
2090 req, struct dcerpc_spoolss_GetPrinter_state);
2092 TALLOC_CTX *mem_ctx;
2094 if (state->out_mem_ctx) {
2095 mem_ctx = state->out_mem_ctx;
2100 status = dcerpc_spoolss_GetPrinter_r_recv(subreq, mem_ctx);
2101 TALLOC_FREE(subreq);
2102 if (!NT_STATUS_IS_OK(status)) {
2103 tevent_req_nterror(req, status);
2107 /* Copy out parameters */
2108 if (state->orig.out.info && state->tmp.out.info) {
2109 *state->orig.out.info = *state->tmp.out.info;
2111 *state->orig.out.needed = *state->tmp.out.needed;
2114 state->orig.out.result = state->tmp.out.result;
2116 /* Reset temporary structure */
2117 ZERO_STRUCT(state->tmp);
2119 tevent_req_done(req);
2122 NTSTATUS dcerpc_spoolss_GetPrinter_recv(struct tevent_req *req,
2123 TALLOC_CTX *mem_ctx,
2126 struct dcerpc_spoolss_GetPrinter_state *state = tevent_req_data(
2127 req, struct dcerpc_spoolss_GetPrinter_state);
2130 if (tevent_req_is_nterror(req, &status)) {
2131 tevent_req_received(req);
2135 /* Steal possible out parameters to the callers context */
2136 talloc_steal(mem_ctx, state->out_mem_ctx);
2139 *result = state->orig.out.result;
2141 tevent_req_received(req);
2142 return NT_STATUS_OK;
2145 NTSTATUS dcerpc_spoolss_GetPrinter(struct dcerpc_binding_handle *h,
2146 TALLOC_CTX *mem_ctx,
2147 struct policy_handle *_handle /* [in] [ref] */,
2148 uint32_t _level /* [in] */,
2149 DATA_BLOB *_buffer /* [in] [unique] */,
2150 uint32_t _offered /* [in] */,
2151 union spoolss_PrinterInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
2152 uint32_t *_needed /* [out] [ref] */,
2155 struct spoolss_GetPrinter r;
2159 r.in.handle = _handle;
2160 r.in.level = _level;
2161 r.in.buffer = _buffer;
2162 r.in.offered = _offered;
2164 status = dcerpc_spoolss_GetPrinter_r(h, mem_ctx, &r);
2165 if (!NT_STATUS_IS_OK(status)) {
2169 /* Return variables */
2170 if (_info && r.out.info) {
2171 *_info = *r.out.info;
2173 *_needed = *r.out.needed;
2176 *result = r.out.result;
2178 return NT_STATUS_OK;
2181 struct dcerpc_spoolss_AddPrinterDriver_r_state {
2182 TALLOC_CTX *out_mem_ctx;
2185 static void dcerpc_spoolss_AddPrinterDriver_r_done(struct tevent_req *subreq);
2187 struct tevent_req *dcerpc_spoolss_AddPrinterDriver_r_send(TALLOC_CTX *mem_ctx,
2188 struct tevent_context *ev,
2189 struct dcerpc_binding_handle *h,
2190 struct spoolss_AddPrinterDriver *r)
2192 struct tevent_req *req;
2193 struct dcerpc_spoolss_AddPrinterDriver_r_state *state;
2194 struct tevent_req *subreq;
2196 req = tevent_req_create(mem_ctx, &state,
2197 struct dcerpc_spoolss_AddPrinterDriver_r_state);
2202 state->out_mem_ctx = NULL;
2203 subreq = dcerpc_binding_handle_call_send(state, ev, h,
2204 NULL, &ndr_table_spoolss,
2205 NDR_SPOOLSS_ADDPRINTERDRIVER, state, r);
2206 if (tevent_req_nomem(subreq, req)) {
2207 return tevent_req_post(req, ev);
2209 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinterDriver_r_done, req);
2214 static void dcerpc_spoolss_AddPrinterDriver_r_done(struct tevent_req *subreq)
2216 struct tevent_req *req =
2217 tevent_req_callback_data(subreq,
2221 status = dcerpc_binding_handle_call_recv(subreq);
2222 if (!NT_STATUS_IS_OK(status)) {
2223 tevent_req_nterror(req, status);
2227 tevent_req_done(req);
2230 NTSTATUS dcerpc_spoolss_AddPrinterDriver_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
2232 struct dcerpc_spoolss_AddPrinterDriver_r_state *state =
2233 tevent_req_data(req,
2234 struct dcerpc_spoolss_AddPrinterDriver_r_state);
2237 if (tevent_req_is_nterror(req, &status)) {
2238 tevent_req_received(req);
2242 talloc_steal(mem_ctx, state->out_mem_ctx);
2244 tevent_req_received(req);
2245 return NT_STATUS_OK;
2248 NTSTATUS dcerpc_spoolss_AddPrinterDriver_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPrinterDriver *r)
2252 status = dcerpc_binding_handle_call(h,
2253 NULL, &ndr_table_spoolss,
2254 NDR_SPOOLSS_ADDPRINTERDRIVER, mem_ctx, r);
2259 NTSTATUS dcerpc_spoolss_AddPrinterDriver_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_AddPrinterDriver *r)
2263 status = dcerpc_spoolss_AddPrinterDriver_r(p->binding_handle, mem_ctx, r);
2265 if (NT_STATUS_IS_RPC(status)) {
2266 status = NT_STATUS_NET_WRITE_FAULT;
2272 struct dcerpc_spoolss_AddPrinterDriver_state {
2273 struct spoolss_AddPrinterDriver orig;
2274 struct spoolss_AddPrinterDriver tmp;
2275 TALLOC_CTX *out_mem_ctx;
2278 static void dcerpc_spoolss_AddPrinterDriver_done(struct tevent_req *subreq);
2280 struct tevent_req *dcerpc_spoolss_AddPrinterDriver_send(TALLOC_CTX *mem_ctx,
2281 struct tevent_context *ev,
2282 struct dcerpc_binding_handle *h,
2283 const char *_servername /* [in] [unique,charset(UTF16)] */,
2284 struct spoolss_AddDriverInfoCtr *_info_ctr /* [in] [ref] */)
2286 struct tevent_req *req;
2287 struct dcerpc_spoolss_AddPrinterDriver_state *state;
2288 struct tevent_req *subreq;
2290 req = tevent_req_create(mem_ctx, &state,
2291 struct dcerpc_spoolss_AddPrinterDriver_state);
2295 state->out_mem_ctx = NULL;
2298 state->orig.in.servername = _servername;
2299 state->orig.in.info_ctr = _info_ctr;
2301 /* Out parameters */
2304 ZERO_STRUCT(state->orig.out.result);
2306 /* make a temporary copy, that we pass to the dispatch function */
2307 state->tmp = state->orig;
2309 subreq = dcerpc_spoolss_AddPrinterDriver_r_send(state, ev, h, &state->tmp);
2310 if (tevent_req_nomem(subreq, req)) {
2311 return tevent_req_post(req, ev);
2313 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinterDriver_done, req);
2317 static void dcerpc_spoolss_AddPrinterDriver_done(struct tevent_req *subreq)
2319 struct tevent_req *req = tevent_req_callback_data(
2320 subreq, struct tevent_req);
2321 struct dcerpc_spoolss_AddPrinterDriver_state *state = tevent_req_data(
2322 req, struct dcerpc_spoolss_AddPrinterDriver_state);
2324 TALLOC_CTX *mem_ctx;
2326 if (state->out_mem_ctx) {
2327 mem_ctx = state->out_mem_ctx;
2332 status = dcerpc_spoolss_AddPrinterDriver_r_recv(subreq, mem_ctx);
2333 TALLOC_FREE(subreq);
2334 if (!NT_STATUS_IS_OK(status)) {
2335 tevent_req_nterror(req, status);
2339 /* Copy out parameters */
2342 state->orig.out.result = state->tmp.out.result;
2344 /* Reset temporary structure */
2345 ZERO_STRUCT(state->tmp);
2347 tevent_req_done(req);
2350 NTSTATUS dcerpc_spoolss_AddPrinterDriver_recv(struct tevent_req *req,
2351 TALLOC_CTX *mem_ctx,
2354 struct dcerpc_spoolss_AddPrinterDriver_state *state = tevent_req_data(
2355 req, struct dcerpc_spoolss_AddPrinterDriver_state);
2358 if (tevent_req_is_nterror(req, &status)) {
2359 tevent_req_received(req);
2363 /* Steal possible out parameters to the callers context */
2364 talloc_steal(mem_ctx, state->out_mem_ctx);
2367 *result = state->orig.out.result;
2369 tevent_req_received(req);
2370 return NT_STATUS_OK;
2373 NTSTATUS dcerpc_spoolss_AddPrinterDriver(struct dcerpc_binding_handle *h,
2374 TALLOC_CTX *mem_ctx,
2375 const char *_servername /* [in] [unique,charset(UTF16)] */,
2376 struct spoolss_AddDriverInfoCtr *_info_ctr /* [in] [ref] */,
2379 struct spoolss_AddPrinterDriver r;
2383 r.in.servername = _servername;
2384 r.in.info_ctr = _info_ctr;
2386 status = dcerpc_spoolss_AddPrinterDriver_r(h, mem_ctx, &r);
2387 if (!NT_STATUS_IS_OK(status)) {
2391 /* Return variables */
2394 *result = r.out.result;
2396 return NT_STATUS_OK;
2399 struct dcerpc_spoolss_EnumPrinterDrivers_r_state {
2400 TALLOC_CTX *out_mem_ctx;
2403 static void dcerpc_spoolss_EnumPrinterDrivers_r_done(struct tevent_req *subreq);
2405 struct tevent_req *dcerpc_spoolss_EnumPrinterDrivers_r_send(TALLOC_CTX *mem_ctx,
2406 struct tevent_context *ev,
2407 struct dcerpc_binding_handle *h,
2408 struct spoolss_EnumPrinterDrivers *r)
2410 struct tevent_req *req;
2411 struct dcerpc_spoolss_EnumPrinterDrivers_r_state *state;
2412 struct tevent_req *subreq;
2414 req = tevent_req_create(mem_ctx, &state,
2415 struct dcerpc_spoolss_EnumPrinterDrivers_r_state);
2420 state->out_mem_ctx = talloc_new(state);
2421 if (tevent_req_nomem(state->out_mem_ctx, req)) {
2422 return tevent_req_post(req, ev);
2425 subreq = dcerpc_binding_handle_call_send(state, ev, h,
2426 NULL, &ndr_table_spoolss,
2427 NDR_SPOOLSS_ENUMPRINTERDRIVERS, state->out_mem_ctx, r);
2428 if (tevent_req_nomem(subreq, req)) {
2429 return tevent_req_post(req, ev);
2431 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterDrivers_r_done, req);
2436 static void dcerpc_spoolss_EnumPrinterDrivers_r_done(struct tevent_req *subreq)
2438 struct tevent_req *req =
2439 tevent_req_callback_data(subreq,
2443 status = dcerpc_binding_handle_call_recv(subreq);
2444 if (!NT_STATUS_IS_OK(status)) {
2445 tevent_req_nterror(req, status);
2449 tevent_req_done(req);
2452 NTSTATUS dcerpc_spoolss_EnumPrinterDrivers_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
2454 struct dcerpc_spoolss_EnumPrinterDrivers_r_state *state =
2455 tevent_req_data(req,
2456 struct dcerpc_spoolss_EnumPrinterDrivers_r_state);
2459 if (tevent_req_is_nterror(req, &status)) {
2460 tevent_req_received(req);
2464 talloc_steal(mem_ctx, state->out_mem_ctx);
2466 tevent_req_received(req);
2467 return NT_STATUS_OK;
2470 NTSTATUS dcerpc_spoolss_EnumPrinterDrivers_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterDrivers *r)
2474 status = dcerpc_binding_handle_call(h,
2475 NULL, &ndr_table_spoolss,
2476 NDR_SPOOLSS_ENUMPRINTERDRIVERS, mem_ctx, r);
2481 NTSTATUS dcerpc_spoolss_EnumPrinterDrivers_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterDrivers *r)
2485 status = dcerpc_spoolss_EnumPrinterDrivers_r(p->binding_handle, mem_ctx, r);
2487 if (NT_STATUS_IS_RPC(status)) {
2488 status = NT_STATUS_NET_WRITE_FAULT;
2494 struct dcerpc_spoolss_EnumPrinterDrivers_state {
2495 struct spoolss_EnumPrinterDrivers orig;
2496 struct spoolss_EnumPrinterDrivers tmp;
2497 TALLOC_CTX *out_mem_ctx;
2500 static void dcerpc_spoolss_EnumPrinterDrivers_done(struct tevent_req *subreq);
2502 struct tevent_req *dcerpc_spoolss_EnumPrinterDrivers_send(TALLOC_CTX *mem_ctx,
2503 struct tevent_context *ev,
2504 struct dcerpc_binding_handle *h,
2505 const char *_server /* [in] [unique,charset(UTF16)] */,
2506 const char *_environment /* [in] [unique,charset(UTF16)] */,
2507 uint32_t _level /* [in] */,
2508 DATA_BLOB *_buffer /* [in] [unique] */,
2509 uint32_t _offered /* [in] */,
2510 uint32_t *_count /* [out] [ref] */,
2511 union spoolss_DriverInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
2512 uint32_t *_needed /* [out] [ref] */)
2514 struct tevent_req *req;
2515 struct dcerpc_spoolss_EnumPrinterDrivers_state *state;
2516 struct tevent_req *subreq;
2518 req = tevent_req_create(mem_ctx, &state,
2519 struct dcerpc_spoolss_EnumPrinterDrivers_state);
2523 state->out_mem_ctx = NULL;
2526 state->orig.in.server = _server;
2527 state->orig.in.environment = _environment;
2528 state->orig.in.level = _level;
2529 state->orig.in.buffer = _buffer;
2530 state->orig.in.offered = _offered;
2532 /* Out parameters */
2533 state->orig.out.count = _count;
2534 state->orig.out.info = _info;
2535 state->orig.out.needed = _needed;
2538 ZERO_STRUCT(state->orig.out.result);
2540 state->out_mem_ctx = talloc_named_const(state, 0,
2541 "dcerpc_spoolss_EnumPrinterDrivers_out_memory");
2542 if (tevent_req_nomem(state->out_mem_ctx, req)) {
2543 return tevent_req_post(req, ev);
2546 /* make a temporary copy, that we pass to the dispatch function */
2547 state->tmp = state->orig;
2549 subreq = dcerpc_spoolss_EnumPrinterDrivers_r_send(state, ev, h, &state->tmp);
2550 if (tevent_req_nomem(subreq, req)) {
2551 return tevent_req_post(req, ev);
2553 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterDrivers_done, req);
2557 static void dcerpc_spoolss_EnumPrinterDrivers_done(struct tevent_req *subreq)
2559 struct tevent_req *req = tevent_req_callback_data(
2560 subreq, struct tevent_req);
2561 struct dcerpc_spoolss_EnumPrinterDrivers_state *state = tevent_req_data(
2562 req, struct dcerpc_spoolss_EnumPrinterDrivers_state);
2564 TALLOC_CTX *mem_ctx;
2566 if (state->out_mem_ctx) {
2567 mem_ctx = state->out_mem_ctx;
2572 status = dcerpc_spoolss_EnumPrinterDrivers_r_recv(subreq, mem_ctx);
2573 TALLOC_FREE(subreq);
2574 if (!NT_STATUS_IS_OK(status)) {
2575 tevent_req_nterror(req, status);
2579 /* Copy out parameters */
2580 *state->orig.out.count = *state->tmp.out.count;
2581 *state->orig.out.info = *state->tmp.out.info;
2582 *state->orig.out.needed = *state->tmp.out.needed;
2585 state->orig.out.result = state->tmp.out.result;
2587 /* Reset temporary structure */
2588 ZERO_STRUCT(state->tmp);
2590 tevent_req_done(req);
2593 NTSTATUS dcerpc_spoolss_EnumPrinterDrivers_recv(struct tevent_req *req,
2594 TALLOC_CTX *mem_ctx,
2597 struct dcerpc_spoolss_EnumPrinterDrivers_state *state = tevent_req_data(
2598 req, struct dcerpc_spoolss_EnumPrinterDrivers_state);
2601 if (tevent_req_is_nterror(req, &status)) {
2602 tevent_req_received(req);
2606 /* Steal possible out parameters to the callers context */
2607 talloc_steal(mem_ctx, state->out_mem_ctx);
2610 *result = state->orig.out.result;
2612 tevent_req_received(req);
2613 return NT_STATUS_OK;
2616 NTSTATUS dcerpc_spoolss_EnumPrinterDrivers(struct dcerpc_binding_handle *h,
2617 TALLOC_CTX *mem_ctx,
2618 const char *_server /* [in] [unique,charset(UTF16)] */,
2619 const char *_environment /* [in] [unique,charset(UTF16)] */,
2620 uint32_t _level /* [in] */,
2621 DATA_BLOB *_buffer /* [in] [unique] */,
2622 uint32_t _offered /* [in] */,
2623 uint32_t *_count /* [out] [ref] */,
2624 union spoolss_DriverInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
2625 uint32_t *_needed /* [out] [ref] */,
2628 struct spoolss_EnumPrinterDrivers r;
2632 r.in.server = _server;
2633 r.in.environment = _environment;
2634 r.in.level = _level;
2635 r.in.buffer = _buffer;
2636 r.in.offered = _offered;
2638 status = dcerpc_spoolss_EnumPrinterDrivers_r(h, mem_ctx, &r);
2639 if (!NT_STATUS_IS_OK(status)) {
2643 /* Return variables */
2644 *_count = *r.out.count;
2645 *_info = *r.out.info;
2646 *_needed = *r.out.needed;
2649 *result = r.out.result;
2651 return NT_STATUS_OK;
2654 struct dcerpc_spoolss_GetPrinterDriver_r_state {
2655 TALLOC_CTX *out_mem_ctx;
2658 static void dcerpc_spoolss_GetPrinterDriver_r_done(struct tevent_req *subreq);
2660 struct tevent_req *dcerpc_spoolss_GetPrinterDriver_r_send(TALLOC_CTX *mem_ctx,
2661 struct tevent_context *ev,
2662 struct dcerpc_binding_handle *h,
2663 struct spoolss_GetPrinterDriver *r)
2665 struct tevent_req *req;
2666 struct dcerpc_spoolss_GetPrinterDriver_r_state *state;
2667 struct tevent_req *subreq;
2669 req = tevent_req_create(mem_ctx, &state,
2670 struct dcerpc_spoolss_GetPrinterDriver_r_state);
2675 state->out_mem_ctx = talloc_new(state);
2676 if (tevent_req_nomem(state->out_mem_ctx, req)) {
2677 return tevent_req_post(req, ev);
2680 subreq = dcerpc_binding_handle_call_send(state, ev, h,
2681 NULL, &ndr_table_spoolss,
2682 NDR_SPOOLSS_GETPRINTERDRIVER, state->out_mem_ctx, r);
2683 if (tevent_req_nomem(subreq, req)) {
2684 return tevent_req_post(req, ev);
2686 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriver_r_done, req);
2691 static void dcerpc_spoolss_GetPrinterDriver_r_done(struct tevent_req *subreq)
2693 struct tevent_req *req =
2694 tevent_req_callback_data(subreq,
2698 status = dcerpc_binding_handle_call_recv(subreq);
2699 if (!NT_STATUS_IS_OK(status)) {
2700 tevent_req_nterror(req, status);
2704 tevent_req_done(req);
2707 NTSTATUS dcerpc_spoolss_GetPrinterDriver_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
2709 struct dcerpc_spoolss_GetPrinterDriver_r_state *state =
2710 tevent_req_data(req,
2711 struct dcerpc_spoolss_GetPrinterDriver_r_state);
2714 if (tevent_req_is_nterror(req, &status)) {
2715 tevent_req_received(req);
2719 talloc_steal(mem_ctx, state->out_mem_ctx);
2721 tevent_req_received(req);
2722 return NT_STATUS_OK;
2725 NTSTATUS dcerpc_spoolss_GetPrinterDriver_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDriver *r)
2729 status = dcerpc_binding_handle_call(h,
2730 NULL, &ndr_table_spoolss,
2731 NDR_SPOOLSS_GETPRINTERDRIVER, mem_ctx, r);
2736 NTSTATUS dcerpc_spoolss_GetPrinterDriver_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDriver *r)
2740 status = dcerpc_spoolss_GetPrinterDriver_r(p->binding_handle, mem_ctx, r);
2742 if (NT_STATUS_IS_RPC(status)) {
2743 status = NT_STATUS_NET_WRITE_FAULT;
2749 struct dcerpc_spoolss_GetPrinterDriver_state {
2750 struct spoolss_GetPrinterDriver orig;
2751 struct spoolss_GetPrinterDriver tmp;
2752 TALLOC_CTX *out_mem_ctx;
2755 static void dcerpc_spoolss_GetPrinterDriver_done(struct tevent_req *subreq);
2757 struct tevent_req *dcerpc_spoolss_GetPrinterDriver_send(TALLOC_CTX *mem_ctx,
2758 struct tevent_context *ev,
2759 struct dcerpc_binding_handle *h,
2760 struct policy_handle *_handle /* [in] [ref] */,
2761 const char *_architecture /* [in] [unique,charset(UTF16)] */,
2762 uint32_t _level /* [in] */,
2763 DATA_BLOB *_buffer /* [in] [unique] */,
2764 uint32_t _offered /* [in] */,
2765 union spoolss_DriverInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
2766 uint32_t *_needed /* [out] [ref] */)
2768 struct tevent_req *req;
2769 struct dcerpc_spoolss_GetPrinterDriver_state *state;
2770 struct tevent_req *subreq;
2772 req = tevent_req_create(mem_ctx, &state,
2773 struct dcerpc_spoolss_GetPrinterDriver_state);
2777 state->out_mem_ctx = NULL;
2780 state->orig.in.handle = _handle;
2781 state->orig.in.architecture = _architecture;
2782 state->orig.in.level = _level;
2783 state->orig.in.buffer = _buffer;
2784 state->orig.in.offered = _offered;
2786 /* Out parameters */
2787 state->orig.out.info = _info;
2788 state->orig.out.needed = _needed;
2791 ZERO_STRUCT(state->orig.out.result);
2793 state->out_mem_ctx = talloc_named_const(state, 0,
2794 "dcerpc_spoolss_GetPrinterDriver_out_memory");
2795 if (tevent_req_nomem(state->out_mem_ctx, req)) {
2796 return tevent_req_post(req, ev);
2799 /* make a temporary copy, that we pass to the dispatch function */
2800 state->tmp = state->orig;
2802 subreq = dcerpc_spoolss_GetPrinterDriver_r_send(state, ev, h, &state->tmp);
2803 if (tevent_req_nomem(subreq, req)) {
2804 return tevent_req_post(req, ev);
2806 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriver_done, req);
2810 static void dcerpc_spoolss_GetPrinterDriver_done(struct tevent_req *subreq)
2812 struct tevent_req *req = tevent_req_callback_data(
2813 subreq, struct tevent_req);
2814 struct dcerpc_spoolss_GetPrinterDriver_state *state = tevent_req_data(
2815 req, struct dcerpc_spoolss_GetPrinterDriver_state);
2817 TALLOC_CTX *mem_ctx;
2819 if (state->out_mem_ctx) {
2820 mem_ctx = state->out_mem_ctx;
2825 status = dcerpc_spoolss_GetPrinterDriver_r_recv(subreq, mem_ctx);
2826 TALLOC_FREE(subreq);
2827 if (!NT_STATUS_IS_OK(status)) {
2828 tevent_req_nterror(req, status);
2832 /* Copy out parameters */
2833 if (state->orig.out.info && state->tmp.out.info) {
2834 *state->orig.out.info = *state->tmp.out.info;
2836 *state->orig.out.needed = *state->tmp.out.needed;
2839 state->orig.out.result = state->tmp.out.result;
2841 /* Reset temporary structure */
2842 ZERO_STRUCT(state->tmp);
2844 tevent_req_done(req);
2847 NTSTATUS dcerpc_spoolss_GetPrinterDriver_recv(struct tevent_req *req,
2848 TALLOC_CTX *mem_ctx,
2851 struct dcerpc_spoolss_GetPrinterDriver_state *state = tevent_req_data(
2852 req, struct dcerpc_spoolss_GetPrinterDriver_state);
2855 if (tevent_req_is_nterror(req, &status)) {
2856 tevent_req_received(req);
2860 /* Steal possible out parameters to the callers context */
2861 talloc_steal(mem_ctx, state->out_mem_ctx);
2864 *result = state->orig.out.result;
2866 tevent_req_received(req);
2867 return NT_STATUS_OK;
2870 NTSTATUS dcerpc_spoolss_GetPrinterDriver(struct dcerpc_binding_handle *h,
2871 TALLOC_CTX *mem_ctx,
2872 struct policy_handle *_handle /* [in] [ref] */,
2873 const char *_architecture /* [in] [unique,charset(UTF16)] */,
2874 uint32_t _level /* [in] */,
2875 DATA_BLOB *_buffer /* [in] [unique] */,
2876 uint32_t _offered /* [in] */,
2877 union spoolss_DriverInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
2878 uint32_t *_needed /* [out] [ref] */,
2881 struct spoolss_GetPrinterDriver r;
2885 r.in.handle = _handle;
2886 r.in.architecture = _architecture;
2887 r.in.level = _level;
2888 r.in.buffer = _buffer;
2889 r.in.offered = _offered;
2891 status = dcerpc_spoolss_GetPrinterDriver_r(h, mem_ctx, &r);
2892 if (!NT_STATUS_IS_OK(status)) {
2896 /* Return variables */
2897 if (_info && r.out.info) {
2898 *_info = *r.out.info;
2900 *_needed = *r.out.needed;
2903 *result = r.out.result;
2905 return NT_STATUS_OK;
2908 struct dcerpc_spoolss_GetPrinterDriverDirectory_r_state {
2909 TALLOC_CTX *out_mem_ctx;
2912 static void dcerpc_spoolss_GetPrinterDriverDirectory_r_done(struct tevent_req *subreq);
2914 struct tevent_req *dcerpc_spoolss_GetPrinterDriverDirectory_r_send(TALLOC_CTX *mem_ctx,
2915 struct tevent_context *ev,
2916 struct dcerpc_binding_handle *h,
2917 struct spoolss_GetPrinterDriverDirectory *r)
2919 struct tevent_req *req;
2920 struct dcerpc_spoolss_GetPrinterDriverDirectory_r_state *state;
2921 struct tevent_req *subreq;
2923 req = tevent_req_create(mem_ctx, &state,
2924 struct dcerpc_spoolss_GetPrinterDriverDirectory_r_state);
2929 state->out_mem_ctx = talloc_new(state);
2930 if (tevent_req_nomem(state->out_mem_ctx, req)) {
2931 return tevent_req_post(req, ev);
2934 subreq = dcerpc_binding_handle_call_send(state, ev, h,
2935 NULL, &ndr_table_spoolss,
2936 NDR_SPOOLSS_GETPRINTERDRIVERDIRECTORY, state->out_mem_ctx, r);
2937 if (tevent_req_nomem(subreq, req)) {
2938 return tevent_req_post(req, ev);
2940 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriverDirectory_r_done, req);
2945 static void dcerpc_spoolss_GetPrinterDriverDirectory_r_done(struct tevent_req *subreq)
2947 struct tevent_req *req =
2948 tevent_req_callback_data(subreq,
2952 status = dcerpc_binding_handle_call_recv(subreq);
2953 if (!NT_STATUS_IS_OK(status)) {
2954 tevent_req_nterror(req, status);
2958 tevent_req_done(req);
2961 NTSTATUS dcerpc_spoolss_GetPrinterDriverDirectory_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
2963 struct dcerpc_spoolss_GetPrinterDriverDirectory_r_state *state =
2964 tevent_req_data(req,
2965 struct dcerpc_spoolss_GetPrinterDriverDirectory_r_state);
2968 if (tevent_req_is_nterror(req, &status)) {
2969 tevent_req_received(req);
2973 talloc_steal(mem_ctx, state->out_mem_ctx);
2975 tevent_req_received(req);
2976 return NT_STATUS_OK;
2979 NTSTATUS dcerpc_spoolss_GetPrinterDriverDirectory_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDriverDirectory *r)
2983 status = dcerpc_binding_handle_call(h,
2984 NULL, &ndr_table_spoolss,
2985 NDR_SPOOLSS_GETPRINTERDRIVERDIRECTORY, mem_ctx, r);
2990 NTSTATUS dcerpc_spoolss_GetPrinterDriverDirectory_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDriverDirectory *r)
2994 status = dcerpc_spoolss_GetPrinterDriverDirectory_r(p->binding_handle, mem_ctx, r);
2996 if (NT_STATUS_IS_RPC(status)) {
2997 status = NT_STATUS_NET_WRITE_FAULT;
3003 struct dcerpc_spoolss_GetPrinterDriverDirectory_state {
3004 struct spoolss_GetPrinterDriverDirectory orig;
3005 struct spoolss_GetPrinterDriverDirectory tmp;
3006 TALLOC_CTX *out_mem_ctx;
3009 static void dcerpc_spoolss_GetPrinterDriverDirectory_done(struct tevent_req *subreq);
3011 struct tevent_req *dcerpc_spoolss_GetPrinterDriverDirectory_send(TALLOC_CTX *mem_ctx,
3012 struct tevent_context *ev,
3013 struct dcerpc_binding_handle *h,
3014 const char *_server /* [in] [unique,charset(UTF16)] */,
3015 const char *_environment /* [in] [unique,charset(UTF16)] */,
3016 uint32_t _level /* [in] */,
3017 DATA_BLOB *_buffer /* [in] [unique] */,
3018 uint32_t _offered /* [in] */,
3019 union spoolss_DriverDirectoryInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
3020 uint32_t *_needed /* [out] [ref] */)
3022 struct tevent_req *req;
3023 struct dcerpc_spoolss_GetPrinterDriverDirectory_state *state;
3024 struct tevent_req *subreq;
3026 req = tevent_req_create(mem_ctx, &state,
3027 struct dcerpc_spoolss_GetPrinterDriverDirectory_state);
3031 state->out_mem_ctx = NULL;
3034 state->orig.in.server = _server;
3035 state->orig.in.environment = _environment;
3036 state->orig.in.level = _level;
3037 state->orig.in.buffer = _buffer;
3038 state->orig.in.offered = _offered;
3040 /* Out parameters */
3041 state->orig.out.info = _info;
3042 state->orig.out.needed = _needed;
3045 ZERO_STRUCT(state->orig.out.result);
3047 state->out_mem_ctx = talloc_named_const(state, 0,
3048 "dcerpc_spoolss_GetPrinterDriverDirectory_out_memory");
3049 if (tevent_req_nomem(state->out_mem_ctx, req)) {
3050 return tevent_req_post(req, ev);
3053 /* make a temporary copy, that we pass to the dispatch function */
3054 state->tmp = state->orig;
3056 subreq = dcerpc_spoolss_GetPrinterDriverDirectory_r_send(state, ev, h, &state->tmp);
3057 if (tevent_req_nomem(subreq, req)) {
3058 return tevent_req_post(req, ev);
3060 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriverDirectory_done, req);
3064 static void dcerpc_spoolss_GetPrinterDriverDirectory_done(struct tevent_req *subreq)
3066 struct tevent_req *req = tevent_req_callback_data(
3067 subreq, struct tevent_req);
3068 struct dcerpc_spoolss_GetPrinterDriverDirectory_state *state = tevent_req_data(
3069 req, struct dcerpc_spoolss_GetPrinterDriverDirectory_state);
3071 TALLOC_CTX *mem_ctx;
3073 if (state->out_mem_ctx) {
3074 mem_ctx = state->out_mem_ctx;
3079 status = dcerpc_spoolss_GetPrinterDriverDirectory_r_recv(subreq, mem_ctx);
3080 TALLOC_FREE(subreq);
3081 if (!NT_STATUS_IS_OK(status)) {
3082 tevent_req_nterror(req, status);
3086 /* Copy out parameters */
3087 if (state->orig.out.info && state->tmp.out.info) {
3088 *state->orig.out.info = *state->tmp.out.info;
3090 *state->orig.out.needed = *state->tmp.out.needed;
3093 state->orig.out.result = state->tmp.out.result;
3095 /* Reset temporary structure */
3096 ZERO_STRUCT(state->tmp);
3098 tevent_req_done(req);
3101 NTSTATUS dcerpc_spoolss_GetPrinterDriverDirectory_recv(struct tevent_req *req,
3102 TALLOC_CTX *mem_ctx,
3105 struct dcerpc_spoolss_GetPrinterDriverDirectory_state *state = tevent_req_data(
3106 req, struct dcerpc_spoolss_GetPrinterDriverDirectory_state);
3109 if (tevent_req_is_nterror(req, &status)) {
3110 tevent_req_received(req);
3114 /* Steal possible out parameters to the callers context */
3115 talloc_steal(mem_ctx, state->out_mem_ctx);
3118 *result = state->orig.out.result;
3120 tevent_req_received(req);
3121 return NT_STATUS_OK;
3124 NTSTATUS dcerpc_spoolss_GetPrinterDriverDirectory(struct dcerpc_binding_handle *h,
3125 TALLOC_CTX *mem_ctx,
3126 const char *_server /* [in] [unique,charset(UTF16)] */,
3127 const char *_environment /* [in] [unique,charset(UTF16)] */,
3128 uint32_t _level /* [in] */,
3129 DATA_BLOB *_buffer /* [in] [unique] */,
3130 uint32_t _offered /* [in] */,
3131 union spoolss_DriverDirectoryInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
3132 uint32_t *_needed /* [out] [ref] */,
3135 struct spoolss_GetPrinterDriverDirectory r;
3139 r.in.server = _server;
3140 r.in.environment = _environment;
3141 r.in.level = _level;
3142 r.in.buffer = _buffer;
3143 r.in.offered = _offered;
3145 status = dcerpc_spoolss_GetPrinterDriverDirectory_r(h, mem_ctx, &r);
3146 if (!NT_STATUS_IS_OK(status)) {
3150 /* Return variables */
3151 if (_info && r.out.info) {
3152 *_info = *r.out.info;
3154 *_needed = *r.out.needed;
3157 *result = r.out.result;
3159 return NT_STATUS_OK;
3162 struct dcerpc_spoolss_DeletePrinterDriver_r_state {
3163 TALLOC_CTX *out_mem_ctx;
3166 static void dcerpc_spoolss_DeletePrinterDriver_r_done(struct tevent_req *subreq);
3168 struct tevent_req *dcerpc_spoolss_DeletePrinterDriver_r_send(TALLOC_CTX *mem_ctx,
3169 struct tevent_context *ev,
3170 struct dcerpc_binding_handle *h,
3171 struct spoolss_DeletePrinterDriver *r)
3173 struct tevent_req *req;
3174 struct dcerpc_spoolss_DeletePrinterDriver_r_state *state;
3175 struct tevent_req *subreq;
3177 req = tevent_req_create(mem_ctx, &state,
3178 struct dcerpc_spoolss_DeletePrinterDriver_r_state);
3183 state->out_mem_ctx = NULL;
3184 subreq = dcerpc_binding_handle_call_send(state, ev, h,
3185 NULL, &ndr_table_spoolss,
3186 NDR_SPOOLSS_DELETEPRINTERDRIVER, state, r);
3187 if (tevent_req_nomem(subreq, req)) {
3188 return tevent_req_post(req, ev);
3190 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterDriver_r_done, req);
3195 static void dcerpc_spoolss_DeletePrinterDriver_r_done(struct tevent_req *subreq)
3197 struct tevent_req *req =
3198 tevent_req_callback_data(subreq,
3202 status = dcerpc_binding_handle_call_recv(subreq);
3203 if (!NT_STATUS_IS_OK(status)) {
3204 tevent_req_nterror(req, status);
3208 tevent_req_done(req);
3211 NTSTATUS dcerpc_spoolss_DeletePrinterDriver_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
3213 struct dcerpc_spoolss_DeletePrinterDriver_r_state *state =
3214 tevent_req_data(req,
3215 struct dcerpc_spoolss_DeletePrinterDriver_r_state);
3218 if (tevent_req_is_nterror(req, &status)) {
3219 tevent_req_received(req);
3223 talloc_steal(mem_ctx, state->out_mem_ctx);
3225 tevent_req_received(req);
3226 return NT_STATUS_OK;
3229 NTSTATUS dcerpc_spoolss_DeletePrinterDriver_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterDriver *r)
3233 status = dcerpc_binding_handle_call(h,
3234 NULL, &ndr_table_spoolss,
3235 NDR_SPOOLSS_DELETEPRINTERDRIVER, mem_ctx, r);
3240 NTSTATUS dcerpc_spoolss_DeletePrinterDriver_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterDriver *r)
3244 status = dcerpc_spoolss_DeletePrinterDriver_r(p->binding_handle, mem_ctx, r);
3246 if (NT_STATUS_IS_RPC(status)) {
3247 status = NT_STATUS_NET_WRITE_FAULT;
3253 struct dcerpc_spoolss_DeletePrinterDriver_state {
3254 struct spoolss_DeletePrinterDriver orig;
3255 struct spoolss_DeletePrinterDriver tmp;
3256 TALLOC_CTX *out_mem_ctx;
3259 static void dcerpc_spoolss_DeletePrinterDriver_done(struct tevent_req *subreq);
3261 struct tevent_req *dcerpc_spoolss_DeletePrinterDriver_send(TALLOC_CTX *mem_ctx,
3262 struct tevent_context *ev,
3263 struct dcerpc_binding_handle *h,
3264 const char *_server /* [in] [unique,charset(UTF16)] */,
3265 const char *_architecture /* [in] [charset(UTF16)] */,
3266 const char *_driver /* [in] [charset(UTF16)] */)
3268 struct tevent_req *req;
3269 struct dcerpc_spoolss_DeletePrinterDriver_state *state;
3270 struct tevent_req *subreq;
3272 req = tevent_req_create(mem_ctx, &state,
3273 struct dcerpc_spoolss_DeletePrinterDriver_state);
3277 state->out_mem_ctx = NULL;
3280 state->orig.in.server = _server;
3281 state->orig.in.architecture = _architecture;
3282 state->orig.in.driver = _driver;
3284 /* Out parameters */
3287 ZERO_STRUCT(state->orig.out.result);
3289 /* make a temporary copy, that we pass to the dispatch function */
3290 state->tmp = state->orig;
3292 subreq = dcerpc_spoolss_DeletePrinterDriver_r_send(state, ev, h, &state->tmp);
3293 if (tevent_req_nomem(subreq, req)) {
3294 return tevent_req_post(req, ev);
3296 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterDriver_done, req);
3300 static void dcerpc_spoolss_DeletePrinterDriver_done(struct tevent_req *subreq)
3302 struct tevent_req *req = tevent_req_callback_data(
3303 subreq, struct tevent_req);
3304 struct dcerpc_spoolss_DeletePrinterDriver_state *state = tevent_req_data(
3305 req, struct dcerpc_spoolss_DeletePrinterDriver_state);
3307 TALLOC_CTX *mem_ctx;
3309 if (state->out_mem_ctx) {
3310 mem_ctx = state->out_mem_ctx;
3315 status = dcerpc_spoolss_DeletePrinterDriver_r_recv(subreq, mem_ctx);
3316 TALLOC_FREE(subreq);
3317 if (!NT_STATUS_IS_OK(status)) {
3318 tevent_req_nterror(req, status);
3322 /* Copy out parameters */
3325 state->orig.out.result = state->tmp.out.result;
3327 /* Reset temporary structure */
3328 ZERO_STRUCT(state->tmp);
3330 tevent_req_done(req);
3333 NTSTATUS dcerpc_spoolss_DeletePrinterDriver_recv(struct tevent_req *req,
3334 TALLOC_CTX *mem_ctx,
3337 struct dcerpc_spoolss_DeletePrinterDriver_state *state = tevent_req_data(
3338 req, struct dcerpc_spoolss_DeletePrinterDriver_state);
3341 if (tevent_req_is_nterror(req, &status)) {
3342 tevent_req_received(req);
3346 /* Steal possible out parameters to the callers context */
3347 talloc_steal(mem_ctx, state->out_mem_ctx);
3350 *result = state->orig.out.result;
3352 tevent_req_received(req);
3353 return NT_STATUS_OK;
3356 NTSTATUS dcerpc_spoolss_DeletePrinterDriver(struct dcerpc_binding_handle *h,
3357 TALLOC_CTX *mem_ctx,
3358 const char *_server /* [in] [unique,charset(UTF16)] */,
3359 const char *_architecture /* [in] [charset(UTF16)] */,
3360 const char *_driver /* [in] [charset(UTF16)] */,
3363 struct spoolss_DeletePrinterDriver r;
3367 r.in.server = _server;
3368 r.in.architecture = _architecture;
3369 r.in.driver = _driver;
3371 status = dcerpc_spoolss_DeletePrinterDriver_r(h, mem_ctx, &r);
3372 if (!NT_STATUS_IS_OK(status)) {
3376 /* Return variables */
3379 *result = r.out.result;
3381 return NT_STATUS_OK;
3384 struct dcerpc_spoolss_AddPrintProcessor_r_state {
3385 TALLOC_CTX *out_mem_ctx;
3388 static void dcerpc_spoolss_AddPrintProcessor_r_done(struct tevent_req *subreq);
3390 struct tevent_req *dcerpc_spoolss_AddPrintProcessor_r_send(TALLOC_CTX *mem_ctx,
3391 struct tevent_context *ev,
3392 struct dcerpc_binding_handle *h,
3393 struct spoolss_AddPrintProcessor *r)
3395 struct tevent_req *req;
3396 struct dcerpc_spoolss_AddPrintProcessor_r_state *state;
3397 struct tevent_req *subreq;
3399 req = tevent_req_create(mem_ctx, &state,
3400 struct dcerpc_spoolss_AddPrintProcessor_r_state);
3405 state->out_mem_ctx = NULL;
3406 subreq = dcerpc_binding_handle_call_send(state, ev, h,
3407 NULL, &ndr_table_spoolss,
3408 NDR_SPOOLSS_ADDPRINTPROCESSOR, state, r);
3409 if (tevent_req_nomem(subreq, req)) {
3410 return tevent_req_post(req, ev);
3412 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrintProcessor_r_done, req);
3417 static void dcerpc_spoolss_AddPrintProcessor_r_done(struct tevent_req *subreq)
3419 struct tevent_req *req =
3420 tevent_req_callback_data(subreq,
3424 status = dcerpc_binding_handle_call_recv(subreq);
3425 if (!NT_STATUS_IS_OK(status)) {
3426 tevent_req_nterror(req, status);
3430 tevent_req_done(req);
3433 NTSTATUS dcerpc_spoolss_AddPrintProcessor_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
3435 struct dcerpc_spoolss_AddPrintProcessor_r_state *state =
3436 tevent_req_data(req,
3437 struct dcerpc_spoolss_AddPrintProcessor_r_state);
3440 if (tevent_req_is_nterror(req, &status)) {
3441 tevent_req_received(req);
3445 talloc_steal(mem_ctx, state->out_mem_ctx);
3447 tevent_req_received(req);
3448 return NT_STATUS_OK;
3451 NTSTATUS dcerpc_spoolss_AddPrintProcessor_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPrintProcessor *r)
3455 status = dcerpc_binding_handle_call(h,
3456 NULL, &ndr_table_spoolss,
3457 NDR_SPOOLSS_ADDPRINTPROCESSOR, mem_ctx, r);
3462 NTSTATUS dcerpc_spoolss_AddPrintProcessor_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_AddPrintProcessor *r)
3466 status = dcerpc_spoolss_AddPrintProcessor_r(p->binding_handle, mem_ctx, r);
3468 if (NT_STATUS_IS_RPC(status)) {
3469 status = NT_STATUS_NET_WRITE_FAULT;
3475 struct dcerpc_spoolss_AddPrintProcessor_state {
3476 struct spoolss_AddPrintProcessor orig;
3477 struct spoolss_AddPrintProcessor tmp;
3478 TALLOC_CTX *out_mem_ctx;
3481 static void dcerpc_spoolss_AddPrintProcessor_done(struct tevent_req *subreq);
3483 struct tevent_req *dcerpc_spoolss_AddPrintProcessor_send(TALLOC_CTX *mem_ctx,
3484 struct tevent_context *ev,
3485 struct dcerpc_binding_handle *h,
3486 const char *_server /* [in] [unique,charset(UTF16)] */,
3487 const char *_architecture /* [in] [charset(UTF16)] */,
3488 const char *_path_name /* [in] [charset(UTF16)] */,
3489 const char *_print_processor_name /* [in] [charset(UTF16)] */)
3491 struct tevent_req *req;
3492 struct dcerpc_spoolss_AddPrintProcessor_state *state;
3493 struct tevent_req *subreq;
3495 req = tevent_req_create(mem_ctx, &state,
3496 struct dcerpc_spoolss_AddPrintProcessor_state);
3500 state->out_mem_ctx = NULL;
3503 state->orig.in.server = _server;
3504 state->orig.in.architecture = _architecture;
3505 state->orig.in.path_name = _path_name;
3506 state->orig.in.print_processor_name = _print_processor_name;
3508 /* Out parameters */
3511 ZERO_STRUCT(state->orig.out.result);
3513 /* make a temporary copy, that we pass to the dispatch function */
3514 state->tmp = state->orig;
3516 subreq = dcerpc_spoolss_AddPrintProcessor_r_send(state, ev, h, &state->tmp);
3517 if (tevent_req_nomem(subreq, req)) {
3518 return tevent_req_post(req, ev);
3520 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrintProcessor_done, req);
3524 static void dcerpc_spoolss_AddPrintProcessor_done(struct tevent_req *subreq)
3526 struct tevent_req *req = tevent_req_callback_data(
3527 subreq, struct tevent_req);
3528 struct dcerpc_spoolss_AddPrintProcessor_state *state = tevent_req_data(
3529 req, struct dcerpc_spoolss_AddPrintProcessor_state);
3531 TALLOC_CTX *mem_ctx;
3533 if (state->out_mem_ctx) {
3534 mem_ctx = state->out_mem_ctx;
3539 status = dcerpc_spoolss_AddPrintProcessor_r_recv(subreq, mem_ctx);
3540 TALLOC_FREE(subreq);
3541 if (!NT_STATUS_IS_OK(status)) {
3542 tevent_req_nterror(req, status);
3546 /* Copy out parameters */
3549 state->orig.out.result = state->tmp.out.result;
3551 /* Reset temporary structure */
3552 ZERO_STRUCT(state->tmp);
3554 tevent_req_done(req);
3557 NTSTATUS dcerpc_spoolss_AddPrintProcessor_recv(struct tevent_req *req,
3558 TALLOC_CTX *mem_ctx,
3561 struct dcerpc_spoolss_AddPrintProcessor_state *state = tevent_req_data(
3562 req, struct dcerpc_spoolss_AddPrintProcessor_state);
3565 if (tevent_req_is_nterror(req, &status)) {
3566 tevent_req_received(req);
3570 /* Steal possible out parameters to the callers context */
3571 talloc_steal(mem_ctx, state->out_mem_ctx);
3574 *result = state->orig.out.result;
3576 tevent_req_received(req);
3577 return NT_STATUS_OK;
3580 NTSTATUS dcerpc_spoolss_AddPrintProcessor(struct dcerpc_binding_handle *h,
3581 TALLOC_CTX *mem_ctx,
3582 const char *_server /* [in] [unique,charset(UTF16)] */,
3583 const char *_architecture /* [in] [charset(UTF16)] */,
3584 const char *_path_name /* [in] [charset(UTF16)] */,
3585 const char *_print_processor_name /* [in] [charset(UTF16)] */,
3588 struct spoolss_AddPrintProcessor r;
3592 r.in.server = _server;
3593 r.in.architecture = _architecture;
3594 r.in.path_name = _path_name;
3595 r.in.print_processor_name = _print_processor_name;
3597 status = dcerpc_spoolss_AddPrintProcessor_r(h, mem_ctx, &r);
3598 if (!NT_STATUS_IS_OK(status)) {
3602 /* Return variables */
3605 *result = r.out.result;
3607 return NT_STATUS_OK;
3610 struct dcerpc_spoolss_EnumPrintProcessors_r_state {
3611 TALLOC_CTX *out_mem_ctx;
3614 static void dcerpc_spoolss_EnumPrintProcessors_r_done(struct tevent_req *subreq);
3616 struct tevent_req *dcerpc_spoolss_EnumPrintProcessors_r_send(TALLOC_CTX *mem_ctx,
3617 struct tevent_context *ev,
3618 struct dcerpc_binding_handle *h,
3619 struct spoolss_EnumPrintProcessors *r)
3621 struct tevent_req *req;
3622 struct dcerpc_spoolss_EnumPrintProcessors_r_state *state;
3623 struct tevent_req *subreq;
3625 req = tevent_req_create(mem_ctx, &state,
3626 struct dcerpc_spoolss_EnumPrintProcessors_r_state);
3631 state->out_mem_ctx = talloc_new(state);
3632 if (tevent_req_nomem(state->out_mem_ctx, req)) {
3633 return tevent_req_post(req, ev);
3636 subreq = dcerpc_binding_handle_call_send(state, ev, h,
3637 NULL, &ndr_table_spoolss,
3638 NDR_SPOOLSS_ENUMPRINTPROCESSORS, state->out_mem_ctx, r);
3639 if (tevent_req_nomem(subreq, req)) {
3640 return tevent_req_post(req, ev);
3642 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrintProcessors_r_done, req);
3647 static void dcerpc_spoolss_EnumPrintProcessors_r_done(struct tevent_req *subreq)
3649 struct tevent_req *req =
3650 tevent_req_callback_data(subreq,
3654 status = dcerpc_binding_handle_call_recv(subreq);
3655 if (!NT_STATUS_IS_OK(status)) {
3656 tevent_req_nterror(req, status);
3660 tevent_req_done(req);
3663 NTSTATUS dcerpc_spoolss_EnumPrintProcessors_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
3665 struct dcerpc_spoolss_EnumPrintProcessors_r_state *state =
3666 tevent_req_data(req,
3667 struct dcerpc_spoolss_EnumPrintProcessors_r_state);
3670 if (tevent_req_is_nterror(req, &status)) {
3671 tevent_req_received(req);
3675 talloc_steal(mem_ctx, state->out_mem_ctx);
3677 tevent_req_received(req);
3678 return NT_STATUS_OK;
3681 NTSTATUS dcerpc_spoolss_EnumPrintProcessors_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrintProcessors *r)
3685 status = dcerpc_binding_handle_call(h,
3686 NULL, &ndr_table_spoolss,
3687 NDR_SPOOLSS_ENUMPRINTPROCESSORS, mem_ctx, r);
3692 NTSTATUS dcerpc_spoolss_EnumPrintProcessors_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrintProcessors *r)
3696 status = dcerpc_spoolss_EnumPrintProcessors_r(p->binding_handle, mem_ctx, r);
3698 if (NT_STATUS_IS_RPC(status)) {
3699 status = NT_STATUS_NET_WRITE_FAULT;
3705 struct dcerpc_spoolss_EnumPrintProcessors_state {
3706 struct spoolss_EnumPrintProcessors orig;
3707 struct spoolss_EnumPrintProcessors tmp;
3708 TALLOC_CTX *out_mem_ctx;
3711 static void dcerpc_spoolss_EnumPrintProcessors_done(struct tevent_req *subreq);
3713 struct tevent_req *dcerpc_spoolss_EnumPrintProcessors_send(TALLOC_CTX *mem_ctx,
3714 struct tevent_context *ev,
3715 struct dcerpc_binding_handle *h,
3716 const char *_servername /* [in] [unique,charset(UTF16)] */,
3717 const char *_environment /* [in] [unique,charset(UTF16)] */,
3718 uint32_t _level /* [in] */,
3719 DATA_BLOB *_buffer /* [in] [unique] */,
3720 uint32_t _offered /* [in] */,
3721 uint32_t *_count /* [out] [ref] */,
3722 union spoolss_PrintProcessorInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
3723 uint32_t *_needed /* [out] [ref] */)
3725 struct tevent_req *req;
3726 struct dcerpc_spoolss_EnumPrintProcessors_state *state;
3727 struct tevent_req *subreq;
3729 req = tevent_req_create(mem_ctx, &state,
3730 struct dcerpc_spoolss_EnumPrintProcessors_state);
3734 state->out_mem_ctx = NULL;
3737 state->orig.in.servername = _servername;
3738 state->orig.in.environment = _environment;
3739 state->orig.in.level = _level;
3740 state->orig.in.buffer = _buffer;
3741 state->orig.in.offered = _offered;
3743 /* Out parameters */
3744 state->orig.out.count = _count;
3745 state->orig.out.info = _info;
3746 state->orig.out.needed = _needed;
3749 ZERO_STRUCT(state->orig.out.result);
3751 state->out_mem_ctx = talloc_named_const(state, 0,
3752 "dcerpc_spoolss_EnumPrintProcessors_out_memory");
3753 if (tevent_req_nomem(state->out_mem_ctx, req)) {
3754 return tevent_req_post(req, ev);
3757 /* make a temporary copy, that we pass to the dispatch function */
3758 state->tmp = state->orig;
3760 subreq = dcerpc_spoolss_EnumPrintProcessors_r_send(state, ev, h, &state->tmp);
3761 if (tevent_req_nomem(subreq, req)) {
3762 return tevent_req_post(req, ev);
3764 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrintProcessors_done, req);
3768 static void dcerpc_spoolss_EnumPrintProcessors_done(struct tevent_req *subreq)
3770 struct tevent_req *req = tevent_req_callback_data(
3771 subreq, struct tevent_req);
3772 struct dcerpc_spoolss_EnumPrintProcessors_state *state = tevent_req_data(
3773 req, struct dcerpc_spoolss_EnumPrintProcessors_state);
3775 TALLOC_CTX *mem_ctx;
3777 if (state->out_mem_ctx) {
3778 mem_ctx = state->out_mem_ctx;
3783 status = dcerpc_spoolss_EnumPrintProcessors_r_recv(subreq, mem_ctx);
3784 TALLOC_FREE(subreq);
3785 if (!NT_STATUS_IS_OK(status)) {
3786 tevent_req_nterror(req, status);
3790 /* Copy out parameters */
3791 *state->orig.out.count = *state->tmp.out.count;
3792 *state->orig.out.info = *state->tmp.out.info;
3793 *state->orig.out.needed = *state->tmp.out.needed;
3796 state->orig.out.result = state->tmp.out.result;
3798 /* Reset temporary structure */
3799 ZERO_STRUCT(state->tmp);
3801 tevent_req_done(req);
3804 NTSTATUS dcerpc_spoolss_EnumPrintProcessors_recv(struct tevent_req *req,
3805 TALLOC_CTX *mem_ctx,
3808 struct dcerpc_spoolss_EnumPrintProcessors_state *state = tevent_req_data(
3809 req, struct dcerpc_spoolss_EnumPrintProcessors_state);
3812 if (tevent_req_is_nterror(req, &status)) {
3813 tevent_req_received(req);
3817 /* Steal possible out parameters to the callers context */
3818 talloc_steal(mem_ctx, state->out_mem_ctx);
3821 *result = state->orig.out.result;
3823 tevent_req_received(req);
3824 return NT_STATUS_OK;
3827 NTSTATUS dcerpc_spoolss_EnumPrintProcessors(struct dcerpc_binding_handle *h,
3828 TALLOC_CTX *mem_ctx,
3829 const char *_servername /* [in] [unique,charset(UTF16)] */,
3830 const char *_environment /* [in] [unique,charset(UTF16)] */,
3831 uint32_t _level /* [in] */,
3832 DATA_BLOB *_buffer /* [in] [unique] */,
3833 uint32_t _offered /* [in] */,
3834 uint32_t *_count /* [out] [ref] */,
3835 union spoolss_PrintProcessorInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
3836 uint32_t *_needed /* [out] [ref] */,
3839 struct spoolss_EnumPrintProcessors r;
3843 r.in.servername = _servername;
3844 r.in.environment = _environment;
3845 r.in.level = _level;
3846 r.in.buffer = _buffer;
3847 r.in.offered = _offered;
3849 status = dcerpc_spoolss_EnumPrintProcessors_r(h, mem_ctx, &r);
3850 if (!NT_STATUS_IS_OK(status)) {
3854 /* Return variables */
3855 *_count = *r.out.count;
3856 *_info = *r.out.info;
3857 *_needed = *r.out.needed;
3860 *result = r.out.result;
3862 return NT_STATUS_OK;
3865 struct dcerpc_spoolss_GetPrintProcessorDirectory_r_state {
3866 TALLOC_CTX *out_mem_ctx;
3869 static void dcerpc_spoolss_GetPrintProcessorDirectory_r_done(struct tevent_req *subreq);
3871 struct tevent_req *dcerpc_spoolss_GetPrintProcessorDirectory_r_send(TALLOC_CTX *mem_ctx,
3872 struct tevent_context *ev,
3873 struct dcerpc_binding_handle *h,
3874 struct spoolss_GetPrintProcessorDirectory *r)
3876 struct tevent_req *req;
3877 struct dcerpc_spoolss_GetPrintProcessorDirectory_r_state *state;
3878 struct tevent_req *subreq;
3880 req = tevent_req_create(mem_ctx, &state,
3881 struct dcerpc_spoolss_GetPrintProcessorDirectory_r_state);
3886 state->out_mem_ctx = talloc_new(state);
3887 if (tevent_req_nomem(state->out_mem_ctx, req)) {
3888 return tevent_req_post(req, ev);
3891 subreq = dcerpc_binding_handle_call_send(state, ev, h,
3892 NULL, &ndr_table_spoolss,
3893 NDR_SPOOLSS_GETPRINTPROCESSORDIRECTORY, state->out_mem_ctx, r);
3894 if (tevent_req_nomem(subreq, req)) {
3895 return tevent_req_post(req, ev);
3897 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrintProcessorDirectory_r_done, req);
3902 static void dcerpc_spoolss_GetPrintProcessorDirectory_r_done(struct tevent_req *subreq)
3904 struct tevent_req *req =
3905 tevent_req_callback_data(subreq,
3909 status = dcerpc_binding_handle_call_recv(subreq);
3910 if (!NT_STATUS_IS_OK(status)) {
3911 tevent_req_nterror(req, status);
3915 tevent_req_done(req);
3918 NTSTATUS dcerpc_spoolss_GetPrintProcessorDirectory_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
3920 struct dcerpc_spoolss_GetPrintProcessorDirectory_r_state *state =
3921 tevent_req_data(req,
3922 struct dcerpc_spoolss_GetPrintProcessorDirectory_r_state);
3925 if (tevent_req_is_nterror(req, &status)) {
3926 tevent_req_received(req);
3930 talloc_steal(mem_ctx, state->out_mem_ctx);
3932 tevent_req_received(req);
3933 return NT_STATUS_OK;
3936 NTSTATUS dcerpc_spoolss_GetPrintProcessorDirectory_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrintProcessorDirectory *r)
3940 status = dcerpc_binding_handle_call(h,
3941 NULL, &ndr_table_spoolss,
3942 NDR_SPOOLSS_GETPRINTPROCESSORDIRECTORY, mem_ctx, r);
3947 NTSTATUS dcerpc_spoolss_GetPrintProcessorDirectory_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetPrintProcessorDirectory *r)
3951 status = dcerpc_spoolss_GetPrintProcessorDirectory_r(p->binding_handle, mem_ctx, r);
3953 if (NT_STATUS_IS_RPC(status)) {
3954 status = NT_STATUS_NET_WRITE_FAULT;
3960 struct dcerpc_spoolss_GetPrintProcessorDirectory_state {
3961 struct spoolss_GetPrintProcessorDirectory orig;
3962 struct spoolss_GetPrintProcessorDirectory tmp;
3963 TALLOC_CTX *out_mem_ctx;
3966 static void dcerpc_spoolss_GetPrintProcessorDirectory_done(struct tevent_req *subreq);
3968 struct tevent_req *dcerpc_spoolss_GetPrintProcessorDirectory_send(TALLOC_CTX *mem_ctx,
3969 struct tevent_context *ev,
3970 struct dcerpc_binding_handle *h,
3971 const char *_server /* [in] [unique,charset(UTF16)] */,
3972 const char *_environment /* [in] [unique,charset(UTF16)] */,
3973 uint32_t _level /* [in] */,
3974 DATA_BLOB *_buffer /* [in] [unique] */,
3975 uint32_t _offered /* [in] */,
3976 union spoolss_PrintProcessorDirectoryInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
3977 uint32_t *_needed /* [out] [ref] */)
3979 struct tevent_req *req;
3980 struct dcerpc_spoolss_GetPrintProcessorDirectory_state *state;
3981 struct tevent_req *subreq;
3983 req = tevent_req_create(mem_ctx, &state,
3984 struct dcerpc_spoolss_GetPrintProcessorDirectory_state);
3988 state->out_mem_ctx = NULL;
3991 state->orig.in.server = _server;
3992 state->orig.in.environment = _environment;
3993 state->orig.in.level = _level;
3994 state->orig.in.buffer = _buffer;
3995 state->orig.in.offered = _offered;
3997 /* Out parameters */
3998 state->orig.out.info = _info;
3999 state->orig.out.needed = _needed;
4002 ZERO_STRUCT(state->orig.out.result);
4004 state->out_mem_ctx = talloc_named_const(state, 0,
4005 "dcerpc_spoolss_GetPrintProcessorDirectory_out_memory");
4006 if (tevent_req_nomem(state->out_mem_ctx, req)) {
4007 return tevent_req_post(req, ev);
4010 /* make a temporary copy, that we pass to the dispatch function */
4011 state->tmp = state->orig;
4013 subreq = dcerpc_spoolss_GetPrintProcessorDirectory_r_send(state, ev, h, &state->tmp);
4014 if (tevent_req_nomem(subreq, req)) {
4015 return tevent_req_post(req, ev);
4017 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrintProcessorDirectory_done, req);
4021 static void dcerpc_spoolss_GetPrintProcessorDirectory_done(struct tevent_req *subreq)
4023 struct tevent_req *req = tevent_req_callback_data(
4024 subreq, struct tevent_req);
4025 struct dcerpc_spoolss_GetPrintProcessorDirectory_state *state = tevent_req_data(
4026 req, struct dcerpc_spoolss_GetPrintProcessorDirectory_state);
4028 TALLOC_CTX *mem_ctx;
4030 if (state->out_mem_ctx) {
4031 mem_ctx = state->out_mem_ctx;
4036 status = dcerpc_spoolss_GetPrintProcessorDirectory_r_recv(subreq, mem_ctx);
4037 TALLOC_FREE(subreq);
4038 if (!NT_STATUS_IS_OK(status)) {
4039 tevent_req_nterror(req, status);
4043 /* Copy out parameters */
4044 if (state->orig.out.info && state->tmp.out.info) {
4045 *state->orig.out.info = *state->tmp.out.info;
4047 *state->orig.out.needed = *state->tmp.out.needed;
4050 state->orig.out.result = state->tmp.out.result;
4052 /* Reset temporary structure */
4053 ZERO_STRUCT(state->tmp);
4055 tevent_req_done(req);
4058 NTSTATUS dcerpc_spoolss_GetPrintProcessorDirectory_recv(struct tevent_req *req,
4059 TALLOC_CTX *mem_ctx,
4062 struct dcerpc_spoolss_GetPrintProcessorDirectory_state *state = tevent_req_data(
4063 req, struct dcerpc_spoolss_GetPrintProcessorDirectory_state);
4066 if (tevent_req_is_nterror(req, &status)) {
4067 tevent_req_received(req);
4071 /* Steal possible out parameters to the callers context */
4072 talloc_steal(mem_ctx, state->out_mem_ctx);
4075 *result = state->orig.out.result;
4077 tevent_req_received(req);
4078 return NT_STATUS_OK;
4081 NTSTATUS dcerpc_spoolss_GetPrintProcessorDirectory(struct dcerpc_binding_handle *h,
4082 TALLOC_CTX *mem_ctx,
4083 const char *_server /* [in] [unique,charset(UTF16)] */,
4084 const char *_environment /* [in] [unique,charset(UTF16)] */,
4085 uint32_t _level /* [in] */,
4086 DATA_BLOB *_buffer /* [in] [unique] */,
4087 uint32_t _offered /* [in] */,
4088 union spoolss_PrintProcessorDirectoryInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
4089 uint32_t *_needed /* [out] [ref] */,
4092 struct spoolss_GetPrintProcessorDirectory r;
4096 r.in.server = _server;
4097 r.in.environment = _environment;
4098 r.in.level = _level;
4099 r.in.buffer = _buffer;
4100 r.in.offered = _offered;
4102 status = dcerpc_spoolss_GetPrintProcessorDirectory_r(h, mem_ctx, &r);
4103 if (!NT_STATUS_IS_OK(status)) {
4107 /* Return variables */
4108 if (_info && r.out.info) {
4109 *_info = *r.out.info;
4111 *_needed = *r.out.needed;
4114 *result = r.out.result;
4116 return NT_STATUS_OK;
4119 struct dcerpc_spoolss_StartDocPrinter_r_state {
4120 TALLOC_CTX *out_mem_ctx;
4123 static void dcerpc_spoolss_StartDocPrinter_r_done(struct tevent_req *subreq);
4125 struct tevent_req *dcerpc_spoolss_StartDocPrinter_r_send(TALLOC_CTX *mem_ctx,
4126 struct tevent_context *ev,
4127 struct dcerpc_binding_handle *h,
4128 struct spoolss_StartDocPrinter *r)
4130 struct tevent_req *req;
4131 struct dcerpc_spoolss_StartDocPrinter_r_state *state;
4132 struct tevent_req *subreq;
4134 req = tevent_req_create(mem_ctx, &state,
4135 struct dcerpc_spoolss_StartDocPrinter_r_state);
4140 state->out_mem_ctx = talloc_new(state);
4141 if (tevent_req_nomem(state->out_mem_ctx, req)) {
4142 return tevent_req_post(req, ev);
4145 subreq = dcerpc_binding_handle_call_send(state, ev, h,
4146 NULL, &ndr_table_spoolss,
4147 NDR_SPOOLSS_STARTDOCPRINTER, state->out_mem_ctx, r);
4148 if (tevent_req_nomem(subreq, req)) {
4149 return tevent_req_post(req, ev);
4151 tevent_req_set_callback(subreq, dcerpc_spoolss_StartDocPrinter_r_done, req);
4156 static void dcerpc_spoolss_StartDocPrinter_r_done(struct tevent_req *subreq)
4158 struct tevent_req *req =
4159 tevent_req_callback_data(subreq,
4163 status = dcerpc_binding_handle_call_recv(subreq);
4164 if (!NT_STATUS_IS_OK(status)) {
4165 tevent_req_nterror(req, status);
4169 tevent_req_done(req);
4172 NTSTATUS dcerpc_spoolss_StartDocPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
4174 struct dcerpc_spoolss_StartDocPrinter_r_state *state =
4175 tevent_req_data(req,
4176 struct dcerpc_spoolss_StartDocPrinter_r_state);
4179 if (tevent_req_is_nterror(req, &status)) {
4180 tevent_req_received(req);
4184 talloc_steal(mem_ctx, state->out_mem_ctx);
4186 tevent_req_received(req);
4187 return NT_STATUS_OK;
4190 NTSTATUS dcerpc_spoolss_StartDocPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_StartDocPrinter *r)
4194 status = dcerpc_binding_handle_call(h,
4195 NULL, &ndr_table_spoolss,
4196 NDR_SPOOLSS_STARTDOCPRINTER, mem_ctx, r);
4201 NTSTATUS dcerpc_spoolss_StartDocPrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_StartDocPrinter *r)
4205 status = dcerpc_spoolss_StartDocPrinter_r(p->binding_handle, mem_ctx, r);
4207 if (NT_STATUS_IS_RPC(status)) {
4208 status = NT_STATUS_NET_WRITE_FAULT;
4214 struct dcerpc_spoolss_StartDocPrinter_state {
4215 struct spoolss_StartDocPrinter orig;
4216 struct spoolss_StartDocPrinter tmp;
4217 TALLOC_CTX *out_mem_ctx;
4220 static void dcerpc_spoolss_StartDocPrinter_done(struct tevent_req *subreq);
4222 struct tevent_req *dcerpc_spoolss_StartDocPrinter_send(TALLOC_CTX *mem_ctx,
4223 struct tevent_context *ev,
4224 struct dcerpc_binding_handle *h,
4225 struct policy_handle *_handle /* [in] [ref] */,
4226 uint32_t _level /* [in] */,
4227 union spoolss_DocumentInfo _info /* [in] [switch_is(level)] */,
4228 uint32_t *_job_id /* [out] [ref] */)
4230 struct tevent_req *req;
4231 struct dcerpc_spoolss_StartDocPrinter_state *state;
4232 struct tevent_req *subreq;
4234 req = tevent_req_create(mem_ctx, &state,
4235 struct dcerpc_spoolss_StartDocPrinter_state);
4239 state->out_mem_ctx = NULL;
4242 state->orig.in.handle = _handle;
4243 state->orig.in.level = _level;
4244 state->orig.in.info = _info;
4246 /* Out parameters */
4247 state->orig.out.job_id = _job_id;
4250 ZERO_STRUCT(state->orig.out.result);
4252 state->out_mem_ctx = talloc_named_const(state, 0,
4253 "dcerpc_spoolss_StartDocPrinter_out_memory");
4254 if (tevent_req_nomem(state->out_mem_ctx, req)) {
4255 return tevent_req_post(req, ev);
4258 /* make a temporary copy, that we pass to the dispatch function */
4259 state->tmp = state->orig;
4261 subreq = dcerpc_spoolss_StartDocPrinter_r_send(state, ev, h, &state->tmp);
4262 if (tevent_req_nomem(subreq, req)) {
4263 return tevent_req_post(req, ev);
4265 tevent_req_set_callback(subreq, dcerpc_spoolss_StartDocPrinter_done, req);
4269 static void dcerpc_spoolss_StartDocPrinter_done(struct tevent_req *subreq)
4271 struct tevent_req *req = tevent_req_callback_data(
4272 subreq, struct tevent_req);
4273 struct dcerpc_spoolss_StartDocPrinter_state *state = tevent_req_data(
4274 req, struct dcerpc_spoolss_StartDocPrinter_state);
4276 TALLOC_CTX *mem_ctx;
4278 if (state->out_mem_ctx) {
4279 mem_ctx = state->out_mem_ctx;
4284 status = dcerpc_spoolss_StartDocPrinter_r_recv(subreq, mem_ctx);
4285 TALLOC_FREE(subreq);
4286 if (!NT_STATUS_IS_OK(status)) {
4287 tevent_req_nterror(req, status);
4291 /* Copy out parameters */
4292 *state->orig.out.job_id = *state->tmp.out.job_id;
4295 state->orig.out.result = state->tmp.out.result;
4297 /* Reset temporary structure */
4298 ZERO_STRUCT(state->tmp);
4300 tevent_req_done(req);
4303 NTSTATUS dcerpc_spoolss_StartDocPrinter_recv(struct tevent_req *req,
4304 TALLOC_CTX *mem_ctx,
4307 struct dcerpc_spoolss_StartDocPrinter_state *state = tevent_req_data(
4308 req, struct dcerpc_spoolss_StartDocPrinter_state);
4311 if (tevent_req_is_nterror(req, &status)) {
4312 tevent_req_received(req);
4316 /* Steal possible out parameters to the callers context */
4317 talloc_steal(mem_ctx, state->out_mem_ctx);
4320 *result = state->orig.out.result;
4322 tevent_req_received(req);
4323 return NT_STATUS_OK;
4326 NTSTATUS dcerpc_spoolss_StartDocPrinter(struct dcerpc_binding_handle *h,
4327 TALLOC_CTX *mem_ctx,
4328 struct policy_handle *_handle /* [in] [ref] */,
4329 uint32_t _level /* [in] */,
4330 union spoolss_DocumentInfo _info /* [in] [switch_is(level)] */,
4331 uint32_t *_job_id /* [out] [ref] */,
4334 struct spoolss_StartDocPrinter r;
4338 r.in.handle = _handle;
4339 r.in.level = _level;
4342 status = dcerpc_spoolss_StartDocPrinter_r(h, mem_ctx, &r);
4343 if (!NT_STATUS_IS_OK(status)) {
4347 /* Return variables */
4348 *_job_id = *r.out.job_id;
4351 *result = r.out.result;
4353 return NT_STATUS_OK;
4356 struct dcerpc_spoolss_StartPagePrinter_r_state {
4357 TALLOC_CTX *out_mem_ctx;
4360 static void dcerpc_spoolss_StartPagePrinter_r_done(struct tevent_req *subreq);
4362 struct tevent_req *dcerpc_spoolss_StartPagePrinter_r_send(TALLOC_CTX *mem_ctx,
4363 struct tevent_context *ev,
4364 struct dcerpc_binding_handle *h,
4365 struct spoolss_StartPagePrinter *r)
4367 struct tevent_req *req;
4368 struct dcerpc_spoolss_StartPagePrinter_r_state *state;
4369 struct tevent_req *subreq;
4371 req = tevent_req_create(mem_ctx, &state,
4372 struct dcerpc_spoolss_StartPagePrinter_r_state);
4377 state->out_mem_ctx = NULL;
4378 subreq = dcerpc_binding_handle_call_send(state, ev, h,
4379 NULL, &ndr_table_spoolss,
4380 NDR_SPOOLSS_STARTPAGEPRINTER, state, r);
4381 if (tevent_req_nomem(subreq, req)) {
4382 return tevent_req_post(req, ev);
4384 tevent_req_set_callback(subreq, dcerpc_spoolss_StartPagePrinter_r_done, req);
4389 static void dcerpc_spoolss_StartPagePrinter_r_done(struct tevent_req *subreq)
4391 struct tevent_req *req =
4392 tevent_req_callback_data(subreq,
4396 status = dcerpc_binding_handle_call_recv(subreq);
4397 if (!NT_STATUS_IS_OK(status)) {
4398 tevent_req_nterror(req, status);
4402 tevent_req_done(req);
4405 NTSTATUS dcerpc_spoolss_StartPagePrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
4407 struct dcerpc_spoolss_StartPagePrinter_r_state *state =
4408 tevent_req_data(req,
4409 struct dcerpc_spoolss_StartPagePrinter_r_state);
4412 if (tevent_req_is_nterror(req, &status)) {
4413 tevent_req_received(req);
4417 talloc_steal(mem_ctx, state->out_mem_ctx);
4419 tevent_req_received(req);
4420 return NT_STATUS_OK;
4423 NTSTATUS dcerpc_spoolss_StartPagePrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_StartPagePrinter *r)
4427 status = dcerpc_binding_handle_call(h,
4428 NULL, &ndr_table_spoolss,
4429 NDR_SPOOLSS_STARTPAGEPRINTER, mem_ctx, r);
4434 NTSTATUS dcerpc_spoolss_StartPagePrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_StartPagePrinter *r)
4438 status = dcerpc_spoolss_StartPagePrinter_r(p->binding_handle, mem_ctx, r);
4440 if (NT_STATUS_IS_RPC(status)) {
4441 status = NT_STATUS_NET_WRITE_FAULT;
4447 struct dcerpc_spoolss_StartPagePrinter_state {
4448 struct spoolss_StartPagePrinter orig;
4449 struct spoolss_StartPagePrinter tmp;
4450 TALLOC_CTX *out_mem_ctx;
4453 static void dcerpc_spoolss_StartPagePrinter_done(struct tevent_req *subreq);
4455 struct tevent_req *dcerpc_spoolss_StartPagePrinter_send(TALLOC_CTX *mem_ctx,
4456 struct tevent_context *ev,
4457 struct dcerpc_binding_handle *h,
4458 struct policy_handle *_handle /* [in] [ref] */)
4460 struct tevent_req *req;
4461 struct dcerpc_spoolss_StartPagePrinter_state *state;
4462 struct tevent_req *subreq;
4464 req = tevent_req_create(mem_ctx, &state,
4465 struct dcerpc_spoolss_StartPagePrinter_state);
4469 state->out_mem_ctx = NULL;
4472 state->orig.in.handle = _handle;
4474 /* Out parameters */
4477 ZERO_STRUCT(state->orig.out.result);
4479 /* make a temporary copy, that we pass to the dispatch function */
4480 state->tmp = state->orig;
4482 subreq = dcerpc_spoolss_StartPagePrinter_r_send(state, ev, h, &state->tmp);
4483 if (tevent_req_nomem(subreq, req)) {
4484 return tevent_req_post(req, ev);
4486 tevent_req_set_callback(subreq, dcerpc_spoolss_StartPagePrinter_done, req);
4490 static void dcerpc_spoolss_StartPagePrinter_done(struct tevent_req *subreq)
4492 struct tevent_req *req = tevent_req_callback_data(
4493 subreq, struct tevent_req);
4494 struct dcerpc_spoolss_StartPagePrinter_state *state = tevent_req_data(
4495 req, struct dcerpc_spoolss_StartPagePrinter_state);
4497 TALLOC_CTX *mem_ctx;
4499 if (state->out_mem_ctx) {
4500 mem_ctx = state->out_mem_ctx;
4505 status = dcerpc_spoolss_StartPagePrinter_r_recv(subreq, mem_ctx);
4506 TALLOC_FREE(subreq);
4507 if (!NT_STATUS_IS_OK(status)) {
4508 tevent_req_nterror(req, status);
4512 /* Copy out parameters */
4515 state->orig.out.result = state->tmp.out.result;
4517 /* Reset temporary structure */
4518 ZERO_STRUCT(state->tmp);
4520 tevent_req_done(req);
4523 NTSTATUS dcerpc_spoolss_StartPagePrinter_recv(struct tevent_req *req,
4524 TALLOC_CTX *mem_ctx,
4527 struct dcerpc_spoolss_StartPagePrinter_state *state = tevent_req_data(
4528 req, struct dcerpc_spoolss_StartPagePrinter_state);
4531 if (tevent_req_is_nterror(req, &status)) {
4532 tevent_req_received(req);
4536 /* Steal possible out parameters to the callers context */
4537 talloc_steal(mem_ctx, state->out_mem_ctx);
4540 *result = state->orig.out.result;
4542 tevent_req_received(req);
4543 return NT_STATUS_OK;
4546 NTSTATUS dcerpc_spoolss_StartPagePrinter(struct dcerpc_binding_handle *h,
4547 TALLOC_CTX *mem_ctx,
4548 struct policy_handle *_handle /* [in] [ref] */,
4551 struct spoolss_StartPagePrinter r;
4555 r.in.handle = _handle;
4557 status = dcerpc_spoolss_StartPagePrinter_r(h, mem_ctx, &r);
4558 if (!NT_STATUS_IS_OK(status)) {
4562 /* Return variables */
4565 *result = r.out.result;
4567 return NT_STATUS_OK;
4570 struct dcerpc_spoolss_WritePrinter_r_state {
4571 TALLOC_CTX *out_mem_ctx;
4574 static void dcerpc_spoolss_WritePrinter_r_done(struct tevent_req *subreq);
4576 struct tevent_req *dcerpc_spoolss_WritePrinter_r_send(TALLOC_CTX *mem_ctx,
4577 struct tevent_context *ev,
4578 struct dcerpc_binding_handle *h,
4579 struct spoolss_WritePrinter *r)
4581 struct tevent_req *req;
4582 struct dcerpc_spoolss_WritePrinter_r_state *state;
4583 struct tevent_req *subreq;
4585 req = tevent_req_create(mem_ctx, &state,
4586 struct dcerpc_spoolss_WritePrinter_r_state);
4591 state->out_mem_ctx = talloc_new(state);
4592 if (tevent_req_nomem(state->out_mem_ctx, req)) {
4593 return tevent_req_post(req, ev);
4596 subreq = dcerpc_binding_handle_call_send(state, ev, h,
4597 NULL, &ndr_table_spoolss,
4598 NDR_SPOOLSS_WRITEPRINTER, state->out_mem_ctx, r);
4599 if (tevent_req_nomem(subreq, req)) {
4600 return tevent_req_post(req, ev);
4602 tevent_req_set_callback(subreq, dcerpc_spoolss_WritePrinter_r_done, req);
4607 static void dcerpc_spoolss_WritePrinter_r_done(struct tevent_req *subreq)
4609 struct tevent_req *req =
4610 tevent_req_callback_data(subreq,
4614 status = dcerpc_binding_handle_call_recv(subreq);
4615 if (!NT_STATUS_IS_OK(status)) {
4616 tevent_req_nterror(req, status);
4620 tevent_req_done(req);
4623 NTSTATUS dcerpc_spoolss_WritePrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
4625 struct dcerpc_spoolss_WritePrinter_r_state *state =
4626 tevent_req_data(req,
4627 struct dcerpc_spoolss_WritePrinter_r_state);
4630 if (tevent_req_is_nterror(req, &status)) {
4631 tevent_req_received(req);
4635 talloc_steal(mem_ctx, state->out_mem_ctx);
4637 tevent_req_received(req);
4638 return NT_STATUS_OK;
4641 NTSTATUS dcerpc_spoolss_WritePrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_WritePrinter *r)
4645 status = dcerpc_binding_handle_call(h,
4646 NULL, &ndr_table_spoolss,
4647 NDR_SPOOLSS_WRITEPRINTER, mem_ctx, r);
4652 NTSTATUS dcerpc_spoolss_WritePrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_WritePrinter *r)
4656 status = dcerpc_spoolss_WritePrinter_r(p->binding_handle, mem_ctx, r);
4658 if (NT_STATUS_IS_RPC(status)) {
4659 status = NT_STATUS_NET_WRITE_FAULT;
4665 struct dcerpc_spoolss_WritePrinter_state {
4666 struct spoolss_WritePrinter orig;
4667 struct spoolss_WritePrinter tmp;
4668 TALLOC_CTX *out_mem_ctx;
4671 static void dcerpc_spoolss_WritePrinter_done(struct tevent_req *subreq);
4673 struct tevent_req *dcerpc_spoolss_WritePrinter_send(TALLOC_CTX *mem_ctx,
4674 struct tevent_context *ev,
4675 struct dcerpc_binding_handle *h,
4676 struct policy_handle *_handle /* [in] [ref] */,
4677 DATA_BLOB _data /* [in] */,
4678 uint32_t __data_size /* [in] [value(r->in.data.length)] */,
4679 uint32_t *_num_written /* [out] [ref] */)
4681 struct tevent_req *req;
4682 struct dcerpc_spoolss_WritePrinter_state *state;
4683 struct tevent_req *subreq;
4685 req = tevent_req_create(mem_ctx, &state,
4686 struct dcerpc_spoolss_WritePrinter_state);
4690 state->out_mem_ctx = NULL;
4693 state->orig.in.handle = _handle;
4694 state->orig.in.data = _data;
4695 state->orig.in._data_size = __data_size;
4697 /* Out parameters */
4698 state->orig.out.num_written = _num_written;
4701 ZERO_STRUCT(state->orig.out.result);
4703 state->out_mem_ctx = talloc_named_const(state, 0,
4704 "dcerpc_spoolss_WritePrinter_out_memory");
4705 if (tevent_req_nomem(state->out_mem_ctx, req)) {
4706 return tevent_req_post(req, ev);
4709 /* make a temporary copy, that we pass to the dispatch function */
4710 state->tmp = state->orig;
4712 subreq = dcerpc_spoolss_WritePrinter_r_send(state, ev, h, &state->tmp);
4713 if (tevent_req_nomem(subreq, req)) {
4714 return tevent_req_post(req, ev);
4716 tevent_req_set_callback(subreq, dcerpc_spoolss_WritePrinter_done, req);
4720 static void dcerpc_spoolss_WritePrinter_done(struct tevent_req *subreq)
4722 struct tevent_req *req = tevent_req_callback_data(
4723 subreq, struct tevent_req);
4724 struct dcerpc_spoolss_WritePrinter_state *state = tevent_req_data(
4725 req, struct dcerpc_spoolss_WritePrinter_state);
4727 TALLOC_CTX *mem_ctx;
4729 if (state->out_mem_ctx) {
4730 mem_ctx = state->out_mem_ctx;
4735 status = dcerpc_spoolss_WritePrinter_r_recv(subreq, mem_ctx);
4736 TALLOC_FREE(subreq);
4737 if (!NT_STATUS_IS_OK(status)) {
4738 tevent_req_nterror(req, status);
4742 /* Copy out parameters */
4743 *state->orig.out.num_written = *state->tmp.out.num_written;
4746 state->orig.out.result = state->tmp.out.result;
4748 /* Reset temporary structure */
4749 ZERO_STRUCT(state->tmp);
4751 tevent_req_done(req);
4754 NTSTATUS dcerpc_spoolss_WritePrinter_recv(struct tevent_req *req,
4755 TALLOC_CTX *mem_ctx,
4758 struct dcerpc_spoolss_WritePrinter_state *state = tevent_req_data(
4759 req, struct dcerpc_spoolss_WritePrinter_state);
4762 if (tevent_req_is_nterror(req, &status)) {
4763 tevent_req_received(req);
4767 /* Steal possible out parameters to the callers context */
4768 talloc_steal(mem_ctx, state->out_mem_ctx);
4771 *result = state->orig.out.result;
4773 tevent_req_received(req);
4774 return NT_STATUS_OK;
4777 NTSTATUS dcerpc_spoolss_WritePrinter(struct dcerpc_binding_handle *h,
4778 TALLOC_CTX *mem_ctx,
4779 struct policy_handle *_handle /* [in] [ref] */,
4780 DATA_BLOB _data /* [in] */,
4781 uint32_t __data_size /* [in] [value(r->in.data.length)] */,
4782 uint32_t *_num_written /* [out] [ref] */,
4785 struct spoolss_WritePrinter r;
4789 r.in.handle = _handle;
4791 r.in._data_size = __data_size;
4793 status = dcerpc_spoolss_WritePrinter_r(h, mem_ctx, &r);
4794 if (!NT_STATUS_IS_OK(status)) {
4798 /* Return variables */
4799 *_num_written = *r.out.num_written;
4802 *result = r.out.result;
4804 return NT_STATUS_OK;
4807 struct dcerpc_spoolss_EndPagePrinter_r_state {
4808 TALLOC_CTX *out_mem_ctx;
4811 static void dcerpc_spoolss_EndPagePrinter_r_done(struct tevent_req *subreq);
4813 struct tevent_req *dcerpc_spoolss_EndPagePrinter_r_send(TALLOC_CTX *mem_ctx,
4814 struct tevent_context *ev,
4815 struct dcerpc_binding_handle *h,
4816 struct spoolss_EndPagePrinter *r)
4818 struct tevent_req *req;
4819 struct dcerpc_spoolss_EndPagePrinter_r_state *state;
4820 struct tevent_req *subreq;
4822 req = tevent_req_create(mem_ctx, &state,
4823 struct dcerpc_spoolss_EndPagePrinter_r_state);
4828 state->out_mem_ctx = NULL;
4829 subreq = dcerpc_binding_handle_call_send(state, ev, h,
4830 NULL, &ndr_table_spoolss,
4831 NDR_SPOOLSS_ENDPAGEPRINTER, state, r);
4832 if (tevent_req_nomem(subreq, req)) {
4833 return tevent_req_post(req, ev);
4835 tevent_req_set_callback(subreq, dcerpc_spoolss_EndPagePrinter_r_done, req);
4840 static void dcerpc_spoolss_EndPagePrinter_r_done(struct tevent_req *subreq)
4842 struct tevent_req *req =
4843 tevent_req_callback_data(subreq,
4847 status = dcerpc_binding_handle_call_recv(subreq);
4848 if (!NT_STATUS_IS_OK(status)) {
4849 tevent_req_nterror(req, status);
4853 tevent_req_done(req);
4856 NTSTATUS dcerpc_spoolss_EndPagePrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
4858 struct dcerpc_spoolss_EndPagePrinter_r_state *state =
4859 tevent_req_data(req,
4860 struct dcerpc_spoolss_EndPagePrinter_r_state);
4863 if (tevent_req_is_nterror(req, &status)) {
4864 tevent_req_received(req);
4868 talloc_steal(mem_ctx, state->out_mem_ctx);
4870 tevent_req_received(req);
4871 return NT_STATUS_OK;
4874 NTSTATUS dcerpc_spoolss_EndPagePrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EndPagePrinter *r)
4878 status = dcerpc_binding_handle_call(h,
4879 NULL, &ndr_table_spoolss,
4880 NDR_SPOOLSS_ENDPAGEPRINTER, mem_ctx, r);
4885 NTSTATUS dcerpc_spoolss_EndPagePrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EndPagePrinter *r)
4889 status = dcerpc_spoolss_EndPagePrinter_r(p->binding_handle, mem_ctx, r);
4891 if (NT_STATUS_IS_RPC(status)) {
4892 status = NT_STATUS_NET_WRITE_FAULT;
4898 struct dcerpc_spoolss_EndPagePrinter_state {
4899 struct spoolss_EndPagePrinter orig;
4900 struct spoolss_EndPagePrinter tmp;
4901 TALLOC_CTX *out_mem_ctx;
4904 static void dcerpc_spoolss_EndPagePrinter_done(struct tevent_req *subreq);
4906 struct tevent_req *dcerpc_spoolss_EndPagePrinter_send(TALLOC_CTX *mem_ctx,
4907 struct tevent_context *ev,
4908 struct dcerpc_binding_handle *h,
4909 struct policy_handle *_handle /* [in] [ref] */)
4911 struct tevent_req *req;
4912 struct dcerpc_spoolss_EndPagePrinter_state *state;
4913 struct tevent_req *subreq;
4915 req = tevent_req_create(mem_ctx, &state,
4916 struct dcerpc_spoolss_EndPagePrinter_state);
4920 state->out_mem_ctx = NULL;
4923 state->orig.in.handle = _handle;
4925 /* Out parameters */
4928 ZERO_STRUCT(state->orig.out.result);
4930 /* make a temporary copy, that we pass to the dispatch function */
4931 state->tmp = state->orig;
4933 subreq = dcerpc_spoolss_EndPagePrinter_r_send(state, ev, h, &state->tmp);
4934 if (tevent_req_nomem(subreq, req)) {
4935 return tevent_req_post(req, ev);
4937 tevent_req_set_callback(subreq, dcerpc_spoolss_EndPagePrinter_done, req);
4941 static void dcerpc_spoolss_EndPagePrinter_done(struct tevent_req *subreq)
4943 struct tevent_req *req = tevent_req_callback_data(
4944 subreq, struct tevent_req);
4945 struct dcerpc_spoolss_EndPagePrinter_state *state = tevent_req_data(
4946 req, struct dcerpc_spoolss_EndPagePrinter_state);
4948 TALLOC_CTX *mem_ctx;
4950 if (state->out_mem_ctx) {
4951 mem_ctx = state->out_mem_ctx;
4956 status = dcerpc_spoolss_EndPagePrinter_r_recv(subreq, mem_ctx);
4957 TALLOC_FREE(subreq);
4958 if (!NT_STATUS_IS_OK(status)) {
4959 tevent_req_nterror(req, status);
4963 /* Copy out parameters */
4966 state->orig.out.result = state->tmp.out.result;
4968 /* Reset temporary structure */
4969 ZERO_STRUCT(state->tmp);
4971 tevent_req_done(req);
4974 NTSTATUS dcerpc_spoolss_EndPagePrinter_recv(struct tevent_req *req,
4975 TALLOC_CTX *mem_ctx,
4978 struct dcerpc_spoolss_EndPagePrinter_state *state = tevent_req_data(
4979 req, struct dcerpc_spoolss_EndPagePrinter_state);
4982 if (tevent_req_is_nterror(req, &status)) {
4983 tevent_req_received(req);
4987 /* Steal possible out parameters to the callers context */
4988 talloc_steal(mem_ctx, state->out_mem_ctx);
4991 *result = state->orig.out.result;
4993 tevent_req_received(req);
4994 return NT_STATUS_OK;
4997 NTSTATUS dcerpc_spoolss_EndPagePrinter(struct dcerpc_binding_handle *h,
4998 TALLOC_CTX *mem_ctx,
4999 struct policy_handle *_handle /* [in] [ref] */,
5002 struct spoolss_EndPagePrinter r;
5006 r.in.handle = _handle;
5008 status = dcerpc_spoolss_EndPagePrinter_r(h, mem_ctx, &r);
5009 if (!NT_STATUS_IS_OK(status)) {
5013 /* Return variables */
5016 *result = r.out.result;
5018 return NT_STATUS_OK;
5021 struct dcerpc_spoolss_AbortPrinter_r_state {
5022 TALLOC_CTX *out_mem_ctx;
5025 static void dcerpc_spoolss_AbortPrinter_r_done(struct tevent_req *subreq);
5027 struct tevent_req *dcerpc_spoolss_AbortPrinter_r_send(TALLOC_CTX *mem_ctx,
5028 struct tevent_context *ev,
5029 struct dcerpc_binding_handle *h,
5030 struct spoolss_AbortPrinter *r)
5032 struct tevent_req *req;
5033 struct dcerpc_spoolss_AbortPrinter_r_state *state;
5034 struct tevent_req *subreq;
5036 req = tevent_req_create(mem_ctx, &state,
5037 struct dcerpc_spoolss_AbortPrinter_r_state);
5042 state->out_mem_ctx = NULL;
5043 subreq = dcerpc_binding_handle_call_send(state, ev, h,
5044 NULL, &ndr_table_spoolss,
5045 NDR_SPOOLSS_ABORTPRINTER, state, r);
5046 if (tevent_req_nomem(subreq, req)) {
5047 return tevent_req_post(req, ev);
5049 tevent_req_set_callback(subreq, dcerpc_spoolss_AbortPrinter_r_done, req);
5054 static void dcerpc_spoolss_AbortPrinter_r_done(struct tevent_req *subreq)
5056 struct tevent_req *req =
5057 tevent_req_callback_data(subreq,
5061 status = dcerpc_binding_handle_call_recv(subreq);
5062 if (!NT_STATUS_IS_OK(status)) {
5063 tevent_req_nterror(req, status);
5067 tevent_req_done(req);
5070 NTSTATUS dcerpc_spoolss_AbortPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
5072 struct dcerpc_spoolss_AbortPrinter_r_state *state =
5073 tevent_req_data(req,
5074 struct dcerpc_spoolss_AbortPrinter_r_state);
5077 if (tevent_req_is_nterror(req, &status)) {
5078 tevent_req_received(req);
5082 talloc_steal(mem_ctx, state->out_mem_ctx);
5084 tevent_req_received(req);
5085 return NT_STATUS_OK;
5088 NTSTATUS dcerpc_spoolss_AbortPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AbortPrinter *r)
5092 status = dcerpc_binding_handle_call(h,
5093 NULL, &ndr_table_spoolss,
5094 NDR_SPOOLSS_ABORTPRINTER, mem_ctx, r);
5099 NTSTATUS dcerpc_spoolss_AbortPrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_AbortPrinter *r)
5103 status = dcerpc_spoolss_AbortPrinter_r(p->binding_handle, mem_ctx, r);
5105 if (NT_STATUS_IS_RPC(status)) {
5106 status = NT_STATUS_NET_WRITE_FAULT;
5112 struct dcerpc_spoolss_AbortPrinter_state {
5113 struct spoolss_AbortPrinter orig;
5114 struct spoolss_AbortPrinter tmp;
5115 TALLOC_CTX *out_mem_ctx;
5118 static void dcerpc_spoolss_AbortPrinter_done(struct tevent_req *subreq);
5120 struct tevent_req *dcerpc_spoolss_AbortPrinter_send(TALLOC_CTX *mem_ctx,
5121 struct tevent_context *ev,
5122 struct dcerpc_binding_handle *h,
5123 struct policy_handle *_handle /* [in] [ref] */)
5125 struct tevent_req *req;
5126 struct dcerpc_spoolss_AbortPrinter_state *state;
5127 struct tevent_req *subreq;
5129 req = tevent_req_create(mem_ctx, &state,
5130 struct dcerpc_spoolss_AbortPrinter_state);
5134 state->out_mem_ctx = NULL;
5137 state->orig.in.handle = _handle;
5139 /* Out parameters */
5142 ZERO_STRUCT(state->orig.out.result);
5144 /* make a temporary copy, that we pass to the dispatch function */
5145 state->tmp = state->orig;
5147 subreq = dcerpc_spoolss_AbortPrinter_r_send(state, ev, h, &state->tmp);
5148 if (tevent_req_nomem(subreq, req)) {
5149 return tevent_req_post(req, ev);
5151 tevent_req_set_callback(subreq, dcerpc_spoolss_AbortPrinter_done, req);
5155 static void dcerpc_spoolss_AbortPrinter_done(struct tevent_req *subreq)
5157 struct tevent_req *req = tevent_req_callback_data(
5158 subreq, struct tevent_req);
5159 struct dcerpc_spoolss_AbortPrinter_state *state = tevent_req_data(
5160 req, struct dcerpc_spoolss_AbortPrinter_state);
5162 TALLOC_CTX *mem_ctx;
5164 if (state->out_mem_ctx) {
5165 mem_ctx = state->out_mem_ctx;
5170 status = dcerpc_spoolss_AbortPrinter_r_recv(subreq, mem_ctx);
5171 TALLOC_FREE(subreq);
5172 if (!NT_STATUS_IS_OK(status)) {
5173 tevent_req_nterror(req, status);
5177 /* Copy out parameters */
5180 state->orig.out.result = state->tmp.out.result;
5182 /* Reset temporary structure */
5183 ZERO_STRUCT(state->tmp);
5185 tevent_req_done(req);
5188 NTSTATUS dcerpc_spoolss_AbortPrinter_recv(struct tevent_req *req,
5189 TALLOC_CTX *mem_ctx,
5192 struct dcerpc_spoolss_AbortPrinter_state *state = tevent_req_data(
5193 req, struct dcerpc_spoolss_AbortPrinter_state);
5196 if (tevent_req_is_nterror(req, &status)) {
5197 tevent_req_received(req);
5201 /* Steal possible out parameters to the callers context */
5202 talloc_steal(mem_ctx, state->out_mem_ctx);
5205 *result = state->orig.out.result;
5207 tevent_req_received(req);
5208 return NT_STATUS_OK;
5211 NTSTATUS dcerpc_spoolss_AbortPrinter(struct dcerpc_binding_handle *h,
5212 TALLOC_CTX *mem_ctx,
5213 struct policy_handle *_handle /* [in] [ref] */,
5216 struct spoolss_AbortPrinter r;
5220 r.in.handle = _handle;
5222 status = dcerpc_spoolss_AbortPrinter_r(h, mem_ctx, &r);
5223 if (!NT_STATUS_IS_OK(status)) {
5227 /* Return variables */
5230 *result = r.out.result;
5232 return NT_STATUS_OK;
5235 struct dcerpc_spoolss_ReadPrinter_r_state {
5236 TALLOC_CTX *out_mem_ctx;
5239 static void dcerpc_spoolss_ReadPrinter_r_done(struct tevent_req *subreq);
5241 struct tevent_req *dcerpc_spoolss_ReadPrinter_r_send(TALLOC_CTX *mem_ctx,
5242 struct tevent_context *ev,
5243 struct dcerpc_binding_handle *h,
5244 struct spoolss_ReadPrinter *r)
5246 struct tevent_req *req;
5247 struct dcerpc_spoolss_ReadPrinter_r_state *state;
5248 struct tevent_req *subreq;
5250 req = tevent_req_create(mem_ctx, &state,
5251 struct dcerpc_spoolss_ReadPrinter_r_state);
5256 state->out_mem_ctx = talloc_new(state);
5257 if (tevent_req_nomem(state->out_mem_ctx, req)) {
5258 return tevent_req_post(req, ev);
5261 subreq = dcerpc_binding_handle_call_send(state, ev, h,
5262 NULL, &ndr_table_spoolss,
5263 NDR_SPOOLSS_READPRINTER, state->out_mem_ctx, r);
5264 if (tevent_req_nomem(subreq, req)) {
5265 return tevent_req_post(req, ev);
5267 tevent_req_set_callback(subreq, dcerpc_spoolss_ReadPrinter_r_done, req);
5272 static void dcerpc_spoolss_ReadPrinter_r_done(struct tevent_req *subreq)
5274 struct tevent_req *req =
5275 tevent_req_callback_data(subreq,
5279 status = dcerpc_binding_handle_call_recv(subreq);
5280 if (!NT_STATUS_IS_OK(status)) {
5281 tevent_req_nterror(req, status);
5285 tevent_req_done(req);
5288 NTSTATUS dcerpc_spoolss_ReadPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
5290 struct dcerpc_spoolss_ReadPrinter_r_state *state =
5291 tevent_req_data(req,
5292 struct dcerpc_spoolss_ReadPrinter_r_state);
5295 if (tevent_req_is_nterror(req, &status)) {
5296 tevent_req_received(req);
5300 talloc_steal(mem_ctx, state->out_mem_ctx);
5302 tevent_req_received(req);
5303 return NT_STATUS_OK;
5306 NTSTATUS dcerpc_spoolss_ReadPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ReadPrinter *r)
5310 status = dcerpc_binding_handle_call(h,
5311 NULL, &ndr_table_spoolss,
5312 NDR_SPOOLSS_READPRINTER, mem_ctx, r);
5317 NTSTATUS dcerpc_spoolss_ReadPrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_ReadPrinter *r)
5321 status = dcerpc_spoolss_ReadPrinter_r(p->binding_handle, mem_ctx, r);
5323 if (NT_STATUS_IS_RPC(status)) {
5324 status = NT_STATUS_NET_WRITE_FAULT;
5330 struct dcerpc_spoolss_ReadPrinter_state {
5331 struct spoolss_ReadPrinter orig;
5332 struct spoolss_ReadPrinter tmp;
5333 TALLOC_CTX *out_mem_ctx;
5336 static void dcerpc_spoolss_ReadPrinter_done(struct tevent_req *subreq);
5338 struct tevent_req *dcerpc_spoolss_ReadPrinter_send(TALLOC_CTX *mem_ctx,
5339 struct tevent_context *ev,
5340 struct dcerpc_binding_handle *h,
5341 struct policy_handle *_handle /* [in] [ref] */,
5342 uint8_t *_data /* [out] [ref,size_is(data_size)] */,
5343 uint32_t _data_size /* [in] */,
5344 uint32_t *__data_size /* [out] [ref] */)
5346 struct tevent_req *req;
5347 struct dcerpc_spoolss_ReadPrinter_state *state;
5348 struct tevent_req *subreq;
5350 req = tevent_req_create(mem_ctx, &state,
5351 struct dcerpc_spoolss_ReadPrinter_state);
5355 state->out_mem_ctx = NULL;
5358 state->orig.in.handle = _handle;
5359 state->orig.in.data_size = _data_size;
5361 /* Out parameters */
5362 state->orig.out.data = _data;
5363 state->orig.out._data_size = __data_size;
5366 ZERO_STRUCT(state->orig.out.result);
5368 state->out_mem_ctx = talloc_named_const(state, 0,
5369 "dcerpc_spoolss_ReadPrinter_out_memory");
5370 if (tevent_req_nomem(state->out_mem_ctx, req)) {
5371 return tevent_req_post(req, ev);
5374 /* make a temporary copy, that we pass to the dispatch function */
5375 state->tmp = state->orig;
5377 subreq = dcerpc_spoolss_ReadPrinter_r_send(state, ev, h, &state->tmp);
5378 if (tevent_req_nomem(subreq, req)) {
5379 return tevent_req_post(req, ev);
5381 tevent_req_set_callback(subreq, dcerpc_spoolss_ReadPrinter_done, req);
5385 static void dcerpc_spoolss_ReadPrinter_done(struct tevent_req *subreq)
5387 struct tevent_req *req = tevent_req_callback_data(
5388 subreq, struct tevent_req);
5389 struct dcerpc_spoolss_ReadPrinter_state *state = tevent_req_data(
5390 req, struct dcerpc_spoolss_ReadPrinter_state);
5392 TALLOC_CTX *mem_ctx;
5394 if (state->out_mem_ctx) {
5395 mem_ctx = state->out_mem_ctx;
5400 status = dcerpc_spoolss_ReadPrinter_r_recv(subreq, mem_ctx);
5401 TALLOC_FREE(subreq);
5402 if (!NT_STATUS_IS_OK(status)) {
5403 tevent_req_nterror(req, status);
5407 /* Copy out parameters */
5409 size_t _copy_len_data;
5410 _copy_len_data = state->tmp.in.data_size;
5411 memcpy(state->orig.out.data, state->tmp.out.data, _copy_len_data * sizeof(*state->orig.out.data));
5413 *state->orig.out._data_size = *state->tmp.out._data_size;
5416 state->orig.out.result = state->tmp.out.result;
5418 /* Reset temporary structure */
5419 ZERO_STRUCT(state->tmp);
5421 tevent_req_done(req);
5424 NTSTATUS dcerpc_spoolss_ReadPrinter_recv(struct tevent_req *req,
5425 TALLOC_CTX *mem_ctx,
5428 struct dcerpc_spoolss_ReadPrinter_state *state = tevent_req_data(
5429 req, struct dcerpc_spoolss_ReadPrinter_state);
5432 if (tevent_req_is_nterror(req, &status)) {
5433 tevent_req_received(req);
5437 /* Steal possible out parameters to the callers context */
5438 talloc_steal(mem_ctx, state->out_mem_ctx);
5441 *result = state->orig.out.result;
5443 tevent_req_received(req);
5444 return NT_STATUS_OK;
5447 NTSTATUS dcerpc_spoolss_ReadPrinter(struct dcerpc_binding_handle *h,
5448 TALLOC_CTX *mem_ctx,
5449 struct policy_handle *_handle /* [in] [ref] */,
5450 uint8_t *_data /* [out] [ref,size_is(data_size)] */,
5451 uint32_t _data_size /* [in] */,
5452 uint32_t *__data_size /* [out] [ref] */,
5455 struct spoolss_ReadPrinter r;
5459 r.in.handle = _handle;
5460 r.in.data_size = _data_size;
5462 status = dcerpc_spoolss_ReadPrinter_r(h, mem_ctx, &r);
5463 if (!NT_STATUS_IS_OK(status)) {
5467 /* Return variables */
5469 size_t _copy_len_data;
5470 _copy_len_data = r.in.data_size;
5471 memcpy(_data, r.out.data, _copy_len_data * sizeof(*_data));
5473 *__data_size = *r.out._data_size;
5476 *result = r.out.result;
5478 return NT_STATUS_OK;
5481 struct dcerpc_spoolss_EndDocPrinter_r_state {
5482 TALLOC_CTX *out_mem_ctx;
5485 static void dcerpc_spoolss_EndDocPrinter_r_done(struct tevent_req *subreq);
5487 struct tevent_req *dcerpc_spoolss_EndDocPrinter_r_send(TALLOC_CTX *mem_ctx,
5488 struct tevent_context *ev,
5489 struct dcerpc_binding_handle *h,
5490 struct spoolss_EndDocPrinter *r)
5492 struct tevent_req *req;
5493 struct dcerpc_spoolss_EndDocPrinter_r_state *state;
5494 struct tevent_req *subreq;
5496 req = tevent_req_create(mem_ctx, &state,
5497 struct dcerpc_spoolss_EndDocPrinter_r_state);
5502 state->out_mem_ctx = NULL;
5503 subreq = dcerpc_binding_handle_call_send(state, ev, h,
5504 NULL, &ndr_table_spoolss,
5505 NDR_SPOOLSS_ENDDOCPRINTER, state, r);
5506 if (tevent_req_nomem(subreq, req)) {
5507 return tevent_req_post(req, ev);
5509 tevent_req_set_callback(subreq, dcerpc_spoolss_EndDocPrinter_r_done, req);
5514 static void dcerpc_spoolss_EndDocPrinter_r_done(struct tevent_req *subreq)
5516 struct tevent_req *req =
5517 tevent_req_callback_data(subreq,
5521 status = dcerpc_binding_handle_call_recv(subreq);
5522 if (!NT_STATUS_IS_OK(status)) {
5523 tevent_req_nterror(req, status);
5527 tevent_req_done(req);
5530 NTSTATUS dcerpc_spoolss_EndDocPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
5532 struct dcerpc_spoolss_EndDocPrinter_r_state *state =
5533 tevent_req_data(req,
5534 struct dcerpc_spoolss_EndDocPrinter_r_state);
5537 if (tevent_req_is_nterror(req, &status)) {
5538 tevent_req_received(req);
5542 talloc_steal(mem_ctx, state->out_mem_ctx);
5544 tevent_req_received(req);
5545 return NT_STATUS_OK;
5548 NTSTATUS dcerpc_spoolss_EndDocPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EndDocPrinter *r)
5552 status = dcerpc_binding_handle_call(h,
5553 NULL, &ndr_table_spoolss,
5554 NDR_SPOOLSS_ENDDOCPRINTER, mem_ctx, r);
5559 NTSTATUS dcerpc_spoolss_EndDocPrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EndDocPrinter *r)
5563 status = dcerpc_spoolss_EndDocPrinter_r(p->binding_handle, mem_ctx, r);
5565 if (NT_STATUS_IS_RPC(status)) {
5566 status = NT_STATUS_NET_WRITE_FAULT;
5572 struct dcerpc_spoolss_EndDocPrinter_state {
5573 struct spoolss_EndDocPrinter orig;
5574 struct spoolss_EndDocPrinter tmp;
5575 TALLOC_CTX *out_mem_ctx;
5578 static void dcerpc_spoolss_EndDocPrinter_done(struct tevent_req *subreq);
5580 struct tevent_req *dcerpc_spoolss_EndDocPrinter_send(TALLOC_CTX *mem_ctx,
5581 struct tevent_context *ev,
5582 struct dcerpc_binding_handle *h,
5583 struct policy_handle *_handle /* [in] [ref] */)
5585 struct tevent_req *req;
5586 struct dcerpc_spoolss_EndDocPrinter_state *state;
5587 struct tevent_req *subreq;
5589 req = tevent_req_create(mem_ctx, &state,
5590 struct dcerpc_spoolss_EndDocPrinter_state);
5594 state->out_mem_ctx = NULL;
5597 state->orig.in.handle = _handle;
5599 /* Out parameters */
5602 ZERO_STRUCT(state->orig.out.result);
5604 /* make a temporary copy, that we pass to the dispatch function */
5605 state->tmp = state->orig;
5607 subreq = dcerpc_spoolss_EndDocPrinter_r_send(state, ev, h, &state->tmp);
5608 if (tevent_req_nomem(subreq, req)) {
5609 return tevent_req_post(req, ev);
5611 tevent_req_set_callback(subreq, dcerpc_spoolss_EndDocPrinter_done, req);
5615 static void dcerpc_spoolss_EndDocPrinter_done(struct tevent_req *subreq)
5617 struct tevent_req *req = tevent_req_callback_data(
5618 subreq, struct tevent_req);
5619 struct dcerpc_spoolss_EndDocPrinter_state *state = tevent_req_data(
5620 req, struct dcerpc_spoolss_EndDocPrinter_state);
5622 TALLOC_CTX *mem_ctx;
5624 if (state->out_mem_ctx) {
5625 mem_ctx = state->out_mem_ctx;
5630 status = dcerpc_spoolss_EndDocPrinter_r_recv(subreq, mem_ctx);
5631 TALLOC_FREE(subreq);
5632 if (!NT_STATUS_IS_OK(status)) {
5633 tevent_req_nterror(req, status);
5637 /* Copy out parameters */
5640 state->orig.out.result = state->tmp.out.result;
5642 /* Reset temporary structure */
5643 ZERO_STRUCT(state->tmp);
5645 tevent_req_done(req);
5648 NTSTATUS dcerpc_spoolss_EndDocPrinter_recv(struct tevent_req *req,
5649 TALLOC_CTX *mem_ctx,
5652 struct dcerpc_spoolss_EndDocPrinter_state *state = tevent_req_data(
5653 req, struct dcerpc_spoolss_EndDocPrinter_state);
5656 if (tevent_req_is_nterror(req, &status)) {
5657 tevent_req_received(req);
5661 /* Steal possible out parameters to the callers context */
5662 talloc_steal(mem_ctx, state->out_mem_ctx);
5665 *result = state->orig.out.result;
5667 tevent_req_received(req);
5668 return NT_STATUS_OK;
5671 NTSTATUS dcerpc_spoolss_EndDocPrinter(struct dcerpc_binding_handle *h,
5672 TALLOC_CTX *mem_ctx,
5673 struct policy_handle *_handle /* [in] [ref] */,
5676 struct spoolss_EndDocPrinter r;
5680 r.in.handle = _handle;
5682 status = dcerpc_spoolss_EndDocPrinter_r(h, mem_ctx, &r);
5683 if (!NT_STATUS_IS_OK(status)) {
5687 /* Return variables */
5690 *result = r.out.result;
5692 return NT_STATUS_OK;
5695 struct dcerpc_spoolss_AddJob_r_state {
5696 TALLOC_CTX *out_mem_ctx;
5699 static void dcerpc_spoolss_AddJob_r_done(struct tevent_req *subreq);
5701 struct tevent_req *dcerpc_spoolss_AddJob_r_send(TALLOC_CTX *mem_ctx,
5702 struct tevent_context *ev,
5703 struct dcerpc_binding_handle *h,
5704 struct spoolss_AddJob *r)
5706 struct tevent_req *req;
5707 struct dcerpc_spoolss_AddJob_r_state *state;
5708 struct tevent_req *subreq;
5710 req = tevent_req_create(mem_ctx, &state,
5711 struct dcerpc_spoolss_AddJob_r_state);
5716 state->out_mem_ctx = talloc_new(state);
5717 if (tevent_req_nomem(state->out_mem_ctx, req)) {
5718 return tevent_req_post(req, ev);
5721 subreq = dcerpc_binding_handle_call_send(state, ev, h,
5722 NULL, &ndr_table_spoolss,
5723 NDR_SPOOLSS_ADDJOB, state->out_mem_ctx, r);
5724 if (tevent_req_nomem(subreq, req)) {
5725 return tevent_req_post(req, ev);
5727 tevent_req_set_callback(subreq, dcerpc_spoolss_AddJob_r_done, req);
5732 static void dcerpc_spoolss_AddJob_r_done(struct tevent_req *subreq)
5734 struct tevent_req *req =
5735 tevent_req_callback_data(subreq,
5739 status = dcerpc_binding_handle_call_recv(subreq);
5740 if (!NT_STATUS_IS_OK(status)) {
5741 tevent_req_nterror(req, status);
5745 tevent_req_done(req);
5748 NTSTATUS dcerpc_spoolss_AddJob_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
5750 struct dcerpc_spoolss_AddJob_r_state *state =
5751 tevent_req_data(req,
5752 struct dcerpc_spoolss_AddJob_r_state);
5755 if (tevent_req_is_nterror(req, &status)) {
5756 tevent_req_received(req);
5760 talloc_steal(mem_ctx, state->out_mem_ctx);
5762 tevent_req_received(req);
5763 return NT_STATUS_OK;
5766 NTSTATUS dcerpc_spoolss_AddJob_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddJob *r)
5770 status = dcerpc_binding_handle_call(h,
5771 NULL, &ndr_table_spoolss,
5772 NDR_SPOOLSS_ADDJOB, mem_ctx, r);
5777 NTSTATUS dcerpc_spoolss_AddJob_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_AddJob *r)
5781 status = dcerpc_spoolss_AddJob_r(p->binding_handle, mem_ctx, r);
5783 if (NT_STATUS_IS_RPC(status)) {
5784 status = NT_STATUS_NET_WRITE_FAULT;
5790 struct dcerpc_spoolss_AddJob_state {
5791 struct spoolss_AddJob orig;
5792 struct spoolss_AddJob tmp;
5793 TALLOC_CTX *out_mem_ctx;
5796 static void dcerpc_spoolss_AddJob_done(struct tevent_req *subreq);
5798 struct tevent_req *dcerpc_spoolss_AddJob_send(TALLOC_CTX *mem_ctx,
5799 struct tevent_context *ev,
5800 struct dcerpc_binding_handle *h,
5801 struct policy_handle *_handle /* [in] [ref] */,
5802 uint32_t _level /* [in] */,
5803 uint8_t *_buffer /* [in,out] [unique,size_is(offered)] */,
5804 uint32_t _offered /* [in] */,
5805 uint32_t *_needed /* [out] [ref] */)
5807 struct tevent_req *req;
5808 struct dcerpc_spoolss_AddJob_state *state;
5809 struct tevent_req *subreq;
5811 req = tevent_req_create(mem_ctx, &state,
5812 struct dcerpc_spoolss_AddJob_state);
5816 state->out_mem_ctx = NULL;
5819 state->orig.in.handle = _handle;
5820 state->orig.in.level = _level;
5821 state->orig.in.buffer = _buffer;
5822 state->orig.in.offered = _offered;
5824 /* Out parameters */
5825 state->orig.out.buffer = _buffer;
5826 state->orig.out.needed = _needed;
5829 ZERO_STRUCT(state->orig.out.result);
5831 state->out_mem_ctx = talloc_named_const(state, 0,
5832 "dcerpc_spoolss_AddJob_out_memory");
5833 if (tevent_req_nomem(state->out_mem_ctx, req)) {
5834 return tevent_req_post(req, ev);
5837 /* make a temporary copy, that we pass to the dispatch function */
5838 state->tmp = state->orig;
5840 subreq = dcerpc_spoolss_AddJob_r_send(state, ev, h, &state->tmp);
5841 if (tevent_req_nomem(subreq, req)) {
5842 return tevent_req_post(req, ev);
5844 tevent_req_set_callback(subreq, dcerpc_spoolss_AddJob_done, req);
5848 static void dcerpc_spoolss_AddJob_done(struct tevent_req *subreq)
5850 struct tevent_req *req = tevent_req_callback_data(
5851 subreq, struct tevent_req);
5852 struct dcerpc_spoolss_AddJob_state *state = tevent_req_data(
5853 req, struct dcerpc_spoolss_AddJob_state);
5855 TALLOC_CTX *mem_ctx;
5857 if (state->out_mem_ctx) {
5858 mem_ctx = state->out_mem_ctx;
5863 status = dcerpc_spoolss_AddJob_r_recv(subreq, mem_ctx);
5864 TALLOC_FREE(subreq);
5865 if (!NT_STATUS_IS_OK(status)) {
5866 tevent_req_nterror(req, status);
5870 /* Copy out parameters */
5871 if (state->orig.out.buffer && state->tmp.out.buffer) {
5873 size_t _copy_len_buffer;
5874 _copy_len_buffer = state->tmp.in.offered;
5875 memcpy(state->orig.out.buffer, state->tmp.out.buffer, _copy_len_buffer * sizeof(*state->orig.out.buffer));
5878 *state->orig.out.needed = *state->tmp.out.needed;
5881 state->orig.out.result = state->tmp.out.result;
5883 /* Reset temporary structure */
5884 ZERO_STRUCT(state->tmp);
5886 tevent_req_done(req);
5889 NTSTATUS dcerpc_spoolss_AddJob_recv(struct tevent_req *req,
5890 TALLOC_CTX *mem_ctx,
5893 struct dcerpc_spoolss_AddJob_state *state = tevent_req_data(
5894 req, struct dcerpc_spoolss_AddJob_state);
5897 if (tevent_req_is_nterror(req, &status)) {
5898 tevent_req_received(req);
5902 /* Steal possible out parameters to the callers context */
5903 talloc_steal(mem_ctx, state->out_mem_ctx);
5906 *result = state->orig.out.result;
5908 tevent_req_received(req);
5909 return NT_STATUS_OK;
5912 NTSTATUS dcerpc_spoolss_AddJob(struct dcerpc_binding_handle *h,
5913 TALLOC_CTX *mem_ctx,
5914 struct policy_handle *_handle /* [in] [ref] */,
5915 uint32_t _level /* [in] */,
5916 uint8_t *_buffer /* [in,out] [unique,size_is(offered)] */,
5917 uint32_t _offered /* [in] */,
5918 uint32_t *_needed /* [out] [ref] */,
5921 struct spoolss_AddJob r;
5925 r.in.handle = _handle;
5926 r.in.level = _level;
5927 r.in.buffer = _buffer;
5928 r.in.offered = _offered;
5930 status = dcerpc_spoolss_AddJob_r(h, mem_ctx, &r);
5931 if (!NT_STATUS_IS_OK(status)) {
5935 /* Return variables */
5936 if (_buffer && r.out.buffer) {
5938 size_t _copy_len_buffer;
5939 _copy_len_buffer = r.in.offered;
5940 memcpy(_buffer, r.out.buffer, _copy_len_buffer * sizeof(*_buffer));
5943 *_needed = *r.out.needed;
5946 *result = r.out.result;
5948 return NT_STATUS_OK;
5951 struct dcerpc_spoolss_ScheduleJob_r_state {
5952 TALLOC_CTX *out_mem_ctx;
5955 static void dcerpc_spoolss_ScheduleJob_r_done(struct tevent_req *subreq);
5957 struct tevent_req *dcerpc_spoolss_ScheduleJob_r_send(TALLOC_CTX *mem_ctx,
5958 struct tevent_context *ev,
5959 struct dcerpc_binding_handle *h,
5960 struct spoolss_ScheduleJob *r)
5962 struct tevent_req *req;
5963 struct dcerpc_spoolss_ScheduleJob_r_state *state;
5964 struct tevent_req *subreq;
5966 req = tevent_req_create(mem_ctx, &state,
5967 struct dcerpc_spoolss_ScheduleJob_r_state);
5972 state->out_mem_ctx = NULL;
5973 subreq = dcerpc_binding_handle_call_send(state, ev, h,
5974 NULL, &ndr_table_spoolss,
5975 NDR_SPOOLSS_SCHEDULEJOB, state, r);
5976 if (tevent_req_nomem(subreq, req)) {
5977 return tevent_req_post(req, ev);
5979 tevent_req_set_callback(subreq, dcerpc_spoolss_ScheduleJob_r_done, req);
5984 static void dcerpc_spoolss_ScheduleJob_r_done(struct tevent_req *subreq)
5986 struct tevent_req *req =
5987 tevent_req_callback_data(subreq,
5991 status = dcerpc_binding_handle_call_recv(subreq);
5992 if (!NT_STATUS_IS_OK(status)) {
5993 tevent_req_nterror(req, status);
5997 tevent_req_done(req);
6000 NTSTATUS dcerpc_spoolss_ScheduleJob_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
6002 struct dcerpc_spoolss_ScheduleJob_r_state *state =
6003 tevent_req_data(req,
6004 struct dcerpc_spoolss_ScheduleJob_r_state);
6007 if (tevent_req_is_nterror(req, &status)) {
6008 tevent_req_received(req);
6012 talloc_steal(mem_ctx, state->out_mem_ctx);
6014 tevent_req_received(req);
6015 return NT_STATUS_OK;
6018 NTSTATUS dcerpc_spoolss_ScheduleJob_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ScheduleJob *r)
6022 status = dcerpc_binding_handle_call(h,
6023 NULL, &ndr_table_spoolss,
6024 NDR_SPOOLSS_SCHEDULEJOB, mem_ctx, r);
6029 NTSTATUS dcerpc_spoolss_ScheduleJob_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_ScheduleJob *r)
6033 status = dcerpc_spoolss_ScheduleJob_r(p->binding_handle, mem_ctx, r);
6035 if (NT_STATUS_IS_RPC(status)) {
6036 status = NT_STATUS_NET_WRITE_FAULT;
6042 struct dcerpc_spoolss_ScheduleJob_state {
6043 struct spoolss_ScheduleJob orig;
6044 struct spoolss_ScheduleJob tmp;
6045 TALLOC_CTX *out_mem_ctx;
6048 static void dcerpc_spoolss_ScheduleJob_done(struct tevent_req *subreq);
6050 struct tevent_req *dcerpc_spoolss_ScheduleJob_send(TALLOC_CTX *mem_ctx,
6051 struct tevent_context *ev,
6052 struct dcerpc_binding_handle *h,
6053 struct policy_handle *_handle /* [in] [ref] */,
6054 uint32_t _jobid /* [in] */)
6056 struct tevent_req *req;
6057 struct dcerpc_spoolss_ScheduleJob_state *state;
6058 struct tevent_req *subreq;
6060 req = tevent_req_create(mem_ctx, &state,
6061 struct dcerpc_spoolss_ScheduleJob_state);
6065 state->out_mem_ctx = NULL;
6068 state->orig.in.handle = _handle;
6069 state->orig.in.jobid = _jobid;
6071 /* Out parameters */
6074 ZERO_STRUCT(state->orig.out.result);
6076 /* make a temporary copy, that we pass to the dispatch function */
6077 state->tmp = state->orig;
6079 subreq = dcerpc_spoolss_ScheduleJob_r_send(state, ev, h, &state->tmp);
6080 if (tevent_req_nomem(subreq, req)) {
6081 return tevent_req_post(req, ev);
6083 tevent_req_set_callback(subreq, dcerpc_spoolss_ScheduleJob_done, req);
6087 static void dcerpc_spoolss_ScheduleJob_done(struct tevent_req *subreq)
6089 struct tevent_req *req = tevent_req_callback_data(
6090 subreq, struct tevent_req);
6091 struct dcerpc_spoolss_ScheduleJob_state *state = tevent_req_data(
6092 req, struct dcerpc_spoolss_ScheduleJob_state);
6094 TALLOC_CTX *mem_ctx;
6096 if (state->out_mem_ctx) {
6097 mem_ctx = state->out_mem_ctx;
6102 status = dcerpc_spoolss_ScheduleJob_r_recv(subreq, mem_ctx);
6103 TALLOC_FREE(subreq);
6104 if (!NT_STATUS_IS_OK(status)) {
6105 tevent_req_nterror(req, status);
6109 /* Copy out parameters */
6112 state->orig.out.result = state->tmp.out.result;
6114 /* Reset temporary structure */
6115 ZERO_STRUCT(state->tmp);
6117 tevent_req_done(req);
6120 NTSTATUS dcerpc_spoolss_ScheduleJob_recv(struct tevent_req *req,
6121 TALLOC_CTX *mem_ctx,
6124 struct dcerpc_spoolss_ScheduleJob_state *state = tevent_req_data(
6125 req, struct dcerpc_spoolss_ScheduleJob_state);
6128 if (tevent_req_is_nterror(req, &status)) {
6129 tevent_req_received(req);
6133 /* Steal possible out parameters to the callers context */
6134 talloc_steal(mem_ctx, state->out_mem_ctx);
6137 *result = state->orig.out.result;
6139 tevent_req_received(req);
6140 return NT_STATUS_OK;
6143 NTSTATUS dcerpc_spoolss_ScheduleJob(struct dcerpc_binding_handle *h,
6144 TALLOC_CTX *mem_ctx,
6145 struct policy_handle *_handle /* [in] [ref] */,
6146 uint32_t _jobid /* [in] */,
6149 struct spoolss_ScheduleJob r;
6153 r.in.handle = _handle;
6154 r.in.jobid = _jobid;
6156 status = dcerpc_spoolss_ScheduleJob_r(h, mem_ctx, &r);
6157 if (!NT_STATUS_IS_OK(status)) {
6161 /* Return variables */
6164 *result = r.out.result;
6166 return NT_STATUS_OK;
6169 struct dcerpc_spoolss_GetPrinterData_r_state {
6170 TALLOC_CTX *out_mem_ctx;
6173 static void dcerpc_spoolss_GetPrinterData_r_done(struct tevent_req *subreq);
6175 struct tevent_req *dcerpc_spoolss_GetPrinterData_r_send(TALLOC_CTX *mem_ctx,
6176 struct tevent_context *ev,
6177 struct dcerpc_binding_handle *h,
6178 struct spoolss_GetPrinterData *r)
6180 struct tevent_req *req;
6181 struct dcerpc_spoolss_GetPrinterData_r_state *state;
6182 struct tevent_req *subreq;
6184 req = tevent_req_create(mem_ctx, &state,
6185 struct dcerpc_spoolss_GetPrinterData_r_state);
6190 state->out_mem_ctx = talloc_new(state);
6191 if (tevent_req_nomem(state->out_mem_ctx, req)) {
6192 return tevent_req_post(req, ev);
6195 subreq = dcerpc_binding_handle_call_send(state, ev, h,
6196 NULL, &ndr_table_spoolss,
6197 NDR_SPOOLSS_GETPRINTERDATA, state->out_mem_ctx, r);
6198 if (tevent_req_nomem(subreq, req)) {
6199 return tevent_req_post(req, ev);
6201 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterData_r_done, req);
6206 static void dcerpc_spoolss_GetPrinterData_r_done(struct tevent_req *subreq)
6208 struct tevent_req *req =
6209 tevent_req_callback_data(subreq,
6213 status = dcerpc_binding_handle_call_recv(subreq);
6214 if (!NT_STATUS_IS_OK(status)) {
6215 tevent_req_nterror(req, status);
6219 tevent_req_done(req);
6222 NTSTATUS dcerpc_spoolss_GetPrinterData_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
6224 struct dcerpc_spoolss_GetPrinterData_r_state *state =
6225 tevent_req_data(req,
6226 struct dcerpc_spoolss_GetPrinterData_r_state);
6229 if (tevent_req_is_nterror(req, &status)) {
6230 tevent_req_received(req);
6234 talloc_steal(mem_ctx, state->out_mem_ctx);
6236 tevent_req_received(req);
6237 return NT_STATUS_OK;
6240 NTSTATUS dcerpc_spoolss_GetPrinterData_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterData *r)
6244 status = dcerpc_binding_handle_call(h,
6245 NULL, &ndr_table_spoolss,
6246 NDR_SPOOLSS_GETPRINTERDATA, mem_ctx, r);
6251 NTSTATUS dcerpc_spoolss_GetPrinterData_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterData *r)
6255 status = dcerpc_spoolss_GetPrinterData_r(p->binding_handle, mem_ctx, r);
6257 if (NT_STATUS_IS_RPC(status)) {
6258 status = NT_STATUS_NET_WRITE_FAULT;
6264 struct dcerpc_spoolss_GetPrinterData_state {
6265 struct spoolss_GetPrinterData orig;
6266 struct spoolss_GetPrinterData tmp;
6267 TALLOC_CTX *out_mem_ctx;
6270 static void dcerpc_spoolss_GetPrinterData_done(struct tevent_req *subreq);
6272 struct tevent_req *dcerpc_spoolss_GetPrinterData_send(TALLOC_CTX *mem_ctx,
6273 struct tevent_context *ev,
6274 struct dcerpc_binding_handle *h,
6275 struct policy_handle *_handle /* [in] [ref] */,
6276 const char *_value_name /* [in] [charset(UTF16)] */,
6277 enum winreg_Type *_type /* [out] [ref] */,
6278 uint8_t *_data /* [out] [ref,size_is(offered)] */,
6279 uint32_t _offered /* [in] */,
6280 uint32_t *_needed /* [out] [ref] */)
6282 struct tevent_req *req;
6283 struct dcerpc_spoolss_GetPrinterData_state *state;
6284 struct tevent_req *subreq;
6286 req = tevent_req_create(mem_ctx, &state,
6287 struct dcerpc_spoolss_GetPrinterData_state);
6291 state->out_mem_ctx = NULL;
6294 state->orig.in.handle = _handle;
6295 state->orig.in.value_name = _value_name;
6296 state->orig.in.offered = _offered;
6298 /* Out parameters */
6299 state->orig.out.type = _type;
6300 state->orig.out.data = _data;
6301 state->orig.out.needed = _needed;
6304 ZERO_STRUCT(state->orig.out.result);
6306 state->out_mem_ctx = talloc_named_const(state, 0,
6307 "dcerpc_spoolss_GetPrinterData_out_memory");
6308 if (tevent_req_nomem(state->out_mem_ctx, req)) {
6309 return tevent_req_post(req, ev);
6312 /* make a temporary copy, that we pass to the dispatch function */
6313 state->tmp = state->orig;
6315 subreq = dcerpc_spoolss_GetPrinterData_r_send(state, ev, h, &state->tmp);
6316 if (tevent_req_nomem(subreq, req)) {
6317 return tevent_req_post(req, ev);
6319 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterData_done, req);
6323 static void dcerpc_spoolss_GetPrinterData_done(struct tevent_req *subreq)
6325 struct tevent_req *req = tevent_req_callback_data(
6326 subreq, struct tevent_req);
6327 struct dcerpc_spoolss_GetPrinterData_state *state = tevent_req_data(
6328 req, struct dcerpc_spoolss_GetPrinterData_state);
6330 TALLOC_CTX *mem_ctx;
6332 if (state->out_mem_ctx) {
6333 mem_ctx = state->out_mem_ctx;
6338 status = dcerpc_spoolss_GetPrinterData_r_recv(subreq, mem_ctx);
6339 TALLOC_FREE(subreq);
6340 if (!NT_STATUS_IS_OK(status)) {
6341 tevent_req_nterror(req, status);
6345 /* Copy out parameters */
6346 *state->orig.out.type = *state->tmp.out.type;
6348 size_t _copy_len_data;
6349 _copy_len_data = state->tmp.in.offered;
6350 memcpy(state->orig.out.data, state->tmp.out.data, _copy_len_data * sizeof(*state->orig.out.data));
6352 *state->orig.out.needed = *state->tmp.out.needed;
6355 state->orig.out.result = state->tmp.out.result;
6357 /* Reset temporary structure */
6358 ZERO_STRUCT(state->tmp);
6360 tevent_req_done(req);
6363 NTSTATUS dcerpc_spoolss_GetPrinterData_recv(struct tevent_req *req,
6364 TALLOC_CTX *mem_ctx,
6367 struct dcerpc_spoolss_GetPrinterData_state *state = tevent_req_data(
6368 req, struct dcerpc_spoolss_GetPrinterData_state);
6371 if (tevent_req_is_nterror(req, &status)) {
6372 tevent_req_received(req);
6376 /* Steal possible out parameters to the callers context */
6377 talloc_steal(mem_ctx, state->out_mem_ctx);
6380 *result = state->orig.out.result;
6382 tevent_req_received(req);
6383 return NT_STATUS_OK;
6386 NTSTATUS dcerpc_spoolss_GetPrinterData(struct dcerpc_binding_handle *h,
6387 TALLOC_CTX *mem_ctx,
6388 struct policy_handle *_handle /* [in] [ref] */,
6389 const char *_value_name /* [in] [charset(UTF16)] */,
6390 enum winreg_Type *_type /* [out] [ref] */,
6391 uint8_t *_data /* [out] [ref,size_is(offered)] */,
6392 uint32_t _offered /* [in] */,
6393 uint32_t *_needed /* [out] [ref] */,
6396 struct spoolss_GetPrinterData r;
6400 r.in.handle = _handle;
6401 r.in.value_name = _value_name;
6402 r.in.offered = _offered;
6404 status = dcerpc_spoolss_GetPrinterData_r(h, mem_ctx, &r);
6405 if (!NT_STATUS_IS_OK(status)) {
6409 /* Return variables */
6410 *_type = *r.out.type;
6412 size_t _copy_len_data;
6413 _copy_len_data = r.in.offered;
6414 memcpy(_data, r.out.data, _copy_len_data * sizeof(*_data));
6416 *_needed = *r.out.needed;
6419 *result = r.out.result;
6421 return NT_STATUS_OK;
6424 struct dcerpc_spoolss_SetPrinterData_r_state {
6425 TALLOC_CTX *out_mem_ctx;
6428 static void dcerpc_spoolss_SetPrinterData_r_done(struct tevent_req *subreq);
6430 struct tevent_req *dcerpc_spoolss_SetPrinterData_r_send(TALLOC_CTX *mem_ctx,
6431 struct tevent_context *ev,
6432 struct dcerpc_binding_handle *h,
6433 struct spoolss_SetPrinterData *r)
6435 struct tevent_req *req;
6436 struct dcerpc_spoolss_SetPrinterData_r_state *state;
6437 struct tevent_req *subreq;
6439 req = tevent_req_create(mem_ctx, &state,
6440 struct dcerpc_spoolss_SetPrinterData_r_state);
6445 state->out_mem_ctx = NULL;
6446 subreq = dcerpc_binding_handle_call_send(state, ev, h,
6447 NULL, &ndr_table_spoolss,
6448 NDR_SPOOLSS_SETPRINTERDATA, state, r);
6449 if (tevent_req_nomem(subreq, req)) {
6450 return tevent_req_post(req, ev);
6452 tevent_req_set_callback(subreq, dcerpc_spoolss_SetPrinterData_r_done, req);
6457 static void dcerpc_spoolss_SetPrinterData_r_done(struct tevent_req *subreq)
6459 struct tevent_req *req =
6460 tevent_req_callback_data(subreq,
6464 status = dcerpc_binding_handle_call_recv(subreq);
6465 if (!NT_STATUS_IS_OK(status)) {
6466 tevent_req_nterror(req, status);
6470 tevent_req_done(req);
6473 NTSTATUS dcerpc_spoolss_SetPrinterData_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
6475 struct dcerpc_spoolss_SetPrinterData_r_state *state =
6476 tevent_req_data(req,
6477 struct dcerpc_spoolss_SetPrinterData_r_state);
6480 if (tevent_req_is_nterror(req, &status)) {
6481 tevent_req_received(req);
6485 talloc_steal(mem_ctx, state->out_mem_ctx);
6487 tevent_req_received(req);
6488 return NT_STATUS_OK;
6491 NTSTATUS dcerpc_spoolss_SetPrinterData_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_SetPrinterData *r)
6495 status = dcerpc_binding_handle_call(h,
6496 NULL, &ndr_table_spoolss,
6497 NDR_SPOOLSS_SETPRINTERDATA, mem_ctx, r);
6502 NTSTATUS dcerpc_spoolss_SetPrinterData_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_SetPrinterData *r)
6506 status = dcerpc_spoolss_SetPrinterData_r(p->binding_handle, mem_ctx, r);
6508 if (NT_STATUS_IS_RPC(status)) {
6509 status = NT_STATUS_NET_WRITE_FAULT;
6515 struct dcerpc_spoolss_SetPrinterData_state {
6516 struct spoolss_SetPrinterData orig;
6517 struct spoolss_SetPrinterData tmp;
6518 TALLOC_CTX *out_mem_ctx;
6521 static void dcerpc_spoolss_SetPrinterData_done(struct tevent_req *subreq);
6523 struct tevent_req *dcerpc_spoolss_SetPrinterData_send(TALLOC_CTX *mem_ctx,
6524 struct tevent_context *ev,
6525 struct dcerpc_binding_handle *h,
6526 struct policy_handle *_handle /* [in] [ref] */,
6527 const char *_value_name /* [in] [charset(UTF16)] */,
6528 enum winreg_Type _type /* [in] */,
6529 uint8_t *_data /* [in] [ref,size_is(offered)] */,
6530 uint32_t _offered /* [in] */)
6532 struct tevent_req *req;
6533 struct dcerpc_spoolss_SetPrinterData_state *state;
6534 struct tevent_req *subreq;
6536 req = tevent_req_create(mem_ctx, &state,
6537 struct dcerpc_spoolss_SetPrinterData_state);
6541 state->out_mem_ctx = NULL;
6544 state->orig.in.handle = _handle;
6545 state->orig.in.value_name = _value_name;
6546 state->orig.in.type = _type;
6547 state->orig.in.data = _data;
6548 state->orig.in.offered = _offered;
6550 /* Out parameters */
6553 ZERO_STRUCT(state->orig.out.result);
6555 /* make a temporary copy, that we pass to the dispatch function */
6556 state->tmp = state->orig;
6558 subreq = dcerpc_spoolss_SetPrinterData_r_send(state, ev, h, &state->tmp);
6559 if (tevent_req_nomem(subreq, req)) {
6560 return tevent_req_post(req, ev);
6562 tevent_req_set_callback(subreq, dcerpc_spoolss_SetPrinterData_done, req);
6566 static void dcerpc_spoolss_SetPrinterData_done(struct tevent_req *subreq)
6568 struct tevent_req *req = tevent_req_callback_data(
6569 subreq, struct tevent_req);
6570 struct dcerpc_spoolss_SetPrinterData_state *state = tevent_req_data(
6571 req, struct dcerpc_spoolss_SetPrinterData_state);
6573 TALLOC_CTX *mem_ctx;
6575 if (state->out_mem_ctx) {
6576 mem_ctx = state->out_mem_ctx;
6581 status = dcerpc_spoolss_SetPrinterData_r_recv(subreq, mem_ctx);
6582 TALLOC_FREE(subreq);
6583 if (!NT_STATUS_IS_OK(status)) {
6584 tevent_req_nterror(req, status);
6588 /* Copy out parameters */
6591 state->orig.out.result = state->tmp.out.result;
6593 /* Reset temporary structure */
6594 ZERO_STRUCT(state->tmp);
6596 tevent_req_done(req);
6599 NTSTATUS dcerpc_spoolss_SetPrinterData_recv(struct tevent_req *req,
6600 TALLOC_CTX *mem_ctx,
6603 struct dcerpc_spoolss_SetPrinterData_state *state = tevent_req_data(
6604 req, struct dcerpc_spoolss_SetPrinterData_state);
6607 if (tevent_req_is_nterror(req, &status)) {
6608 tevent_req_received(req);
6612 /* Steal possible out parameters to the callers context */
6613 talloc_steal(mem_ctx, state->out_mem_ctx);
6616 *result = state->orig.out.result;
6618 tevent_req_received(req);
6619 return NT_STATUS_OK;
6622 NTSTATUS dcerpc_spoolss_SetPrinterData(struct dcerpc_binding_handle *h,
6623 TALLOC_CTX *mem_ctx,
6624 struct policy_handle *_handle /* [in] [ref] */,
6625 const char *_value_name /* [in] [charset(UTF16)] */,
6626 enum winreg_Type _type /* [in] */,
6627 uint8_t *_data /* [in] [ref,size_is(offered)] */,
6628 uint32_t _offered /* [in] */,
6631 struct spoolss_SetPrinterData r;
6635 r.in.handle = _handle;
6636 r.in.value_name = _value_name;
6639 r.in.offered = _offered;
6641 status = dcerpc_spoolss_SetPrinterData_r(h, mem_ctx, &r);
6642 if (!NT_STATUS_IS_OK(status)) {
6646 /* Return variables */
6649 *result = r.out.result;
6651 return NT_STATUS_OK;
6654 struct dcerpc_spoolss_ClosePrinter_r_state {
6655 TALLOC_CTX *out_mem_ctx;
6658 static void dcerpc_spoolss_ClosePrinter_r_done(struct tevent_req *subreq);
6660 struct tevent_req *dcerpc_spoolss_ClosePrinter_r_send(TALLOC_CTX *mem_ctx,
6661 struct tevent_context *ev,
6662 struct dcerpc_binding_handle *h,
6663 struct spoolss_ClosePrinter *r)
6665 struct tevent_req *req;
6666 struct dcerpc_spoolss_ClosePrinter_r_state *state;
6667 struct tevent_req *subreq;
6669 req = tevent_req_create(mem_ctx, &state,
6670 struct dcerpc_spoolss_ClosePrinter_r_state);
6675 state->out_mem_ctx = talloc_new(state);
6676 if (tevent_req_nomem(state->out_mem_ctx, req)) {
6677 return tevent_req_post(req, ev);
6680 subreq = dcerpc_binding_handle_call_send(state, ev, h,
6681 NULL, &ndr_table_spoolss,
6682 NDR_SPOOLSS_CLOSEPRINTER, state->out_mem_ctx, r);
6683 if (tevent_req_nomem(subreq, req)) {
6684 return tevent_req_post(req, ev);
6686 tevent_req_set_callback(subreq, dcerpc_spoolss_ClosePrinter_r_done, req);
6691 static void dcerpc_spoolss_ClosePrinter_r_done(struct tevent_req *subreq)
6693 struct tevent_req *req =
6694 tevent_req_callback_data(subreq,
6698 status = dcerpc_binding_handle_call_recv(subreq);
6699 if (!NT_STATUS_IS_OK(status)) {
6700 tevent_req_nterror(req, status);
6704 tevent_req_done(req);
6707 NTSTATUS dcerpc_spoolss_ClosePrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
6709 struct dcerpc_spoolss_ClosePrinter_r_state *state =
6710 tevent_req_data(req,
6711 struct dcerpc_spoolss_ClosePrinter_r_state);
6714 if (tevent_req_is_nterror(req, &status)) {
6715 tevent_req_received(req);
6719 talloc_steal(mem_ctx, state->out_mem_ctx);
6721 tevent_req_received(req);
6722 return NT_STATUS_OK;
6725 NTSTATUS dcerpc_spoolss_ClosePrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ClosePrinter *r)
6729 status = dcerpc_binding_handle_call(h,
6730 NULL, &ndr_table_spoolss,
6731 NDR_SPOOLSS_CLOSEPRINTER, mem_ctx, r);
6736 NTSTATUS dcerpc_spoolss_ClosePrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_ClosePrinter *r)
6740 status = dcerpc_spoolss_ClosePrinter_r(p->binding_handle, mem_ctx, r);
6742 if (NT_STATUS_IS_RPC(status)) {
6743 status = NT_STATUS_NET_WRITE_FAULT;
6749 struct dcerpc_spoolss_ClosePrinter_state {
6750 struct spoolss_ClosePrinter orig;
6751 struct spoolss_ClosePrinter tmp;
6752 TALLOC_CTX *out_mem_ctx;
6755 static void dcerpc_spoolss_ClosePrinter_done(struct tevent_req *subreq);
6757 struct tevent_req *dcerpc_spoolss_ClosePrinter_send(TALLOC_CTX *mem_ctx,
6758 struct tevent_context *ev,
6759 struct dcerpc_binding_handle *h,
6760 struct policy_handle *_handle /* [in,out] [ref] */)
6762 struct tevent_req *req;
6763 struct dcerpc_spoolss_ClosePrinter_state *state;
6764 struct tevent_req *subreq;
6766 req = tevent_req_create(mem_ctx, &state,
6767 struct dcerpc_spoolss_ClosePrinter_state);
6771 state->out_mem_ctx = NULL;
6774 state->orig.in.handle = _handle;
6776 /* Out parameters */
6777 state->orig.out.handle = _handle;
6780 ZERO_STRUCT(state->orig.out.result);
6782 state->out_mem_ctx = talloc_named_const(state, 0,
6783 "dcerpc_spoolss_ClosePrinter_out_memory");
6784 if (tevent_req_nomem(state->out_mem_ctx, req)) {
6785 return tevent_req_post(req, ev);
6788 /* make a temporary copy, that we pass to the dispatch function */
6789 state->tmp = state->orig;
6791 subreq = dcerpc_spoolss_ClosePrinter_r_send(state, ev, h, &state->tmp);
6792 if (tevent_req_nomem(subreq, req)) {
6793 return tevent_req_post(req, ev);
6795 tevent_req_set_callback(subreq, dcerpc_spoolss_ClosePrinter_done, req);
6799 static void dcerpc_spoolss_ClosePrinter_done(struct tevent_req *subreq)
6801 struct tevent_req *req = tevent_req_callback_data(
6802 subreq, struct tevent_req);
6803 struct dcerpc_spoolss_ClosePrinter_state *state = tevent_req_data(
6804 req, struct dcerpc_spoolss_ClosePrinter_state);
6806 TALLOC_CTX *mem_ctx;
6808 if (state->out_mem_ctx) {
6809 mem_ctx = state->out_mem_ctx;
6814 status = dcerpc_spoolss_ClosePrinter_r_recv(subreq, mem_ctx);
6815 TALLOC_FREE(subreq);
6816 if (!NT_STATUS_IS_OK(status)) {
6817 tevent_req_nterror(req, status);
6821 /* Copy out parameters */
6822 *state->orig.out.handle = *state->tmp.out.handle;
6825 state->orig.out.result = state->tmp.out.result;
6827 /* Reset temporary structure */
6828 ZERO_STRUCT(state->tmp);
6830 tevent_req_done(req);
6833 NTSTATUS dcerpc_spoolss_ClosePrinter_recv(struct tevent_req *req,
6834 TALLOC_CTX *mem_ctx,
6837 struct dcerpc_spoolss_ClosePrinter_state *state = tevent_req_data(
6838 req, struct dcerpc_spoolss_ClosePrinter_state);
6841 if (tevent_req_is_nterror(req, &status)) {
6842 tevent_req_received(req);
6846 /* Steal possible out parameters to the callers context */
6847 talloc_steal(mem_ctx, state->out_mem_ctx);
6850 *result = state->orig.out.result;
6852 tevent_req_received(req);
6853 return NT_STATUS_OK;
6856 NTSTATUS dcerpc_spoolss_ClosePrinter(struct dcerpc_binding_handle *h,
6857 TALLOC_CTX *mem_ctx,
6858 struct policy_handle *_handle /* [in,out] [ref] */,
6861 struct spoolss_ClosePrinter r;
6865 r.in.handle = _handle;
6867 status = dcerpc_spoolss_ClosePrinter_r(h, mem_ctx, &r);
6868 if (!NT_STATUS_IS_OK(status)) {
6872 /* Return variables */
6873 *_handle = *r.out.handle;
6876 *result = r.out.result;
6878 return NT_STATUS_OK;
6881 struct dcerpc_spoolss_AddForm_r_state {
6882 TALLOC_CTX *out_mem_ctx;
6885 static void dcerpc_spoolss_AddForm_r_done(struct tevent_req *subreq);
6887 struct tevent_req *dcerpc_spoolss_AddForm_r_send(TALLOC_CTX *mem_ctx,
6888 struct tevent_context *ev,
6889 struct dcerpc_binding_handle *h,
6890 struct spoolss_AddForm *r)
6892 struct tevent_req *req;
6893 struct dcerpc_spoolss_AddForm_r_state *state;
6894 struct tevent_req *subreq;
6896 req = tevent_req_create(mem_ctx, &state,
6897 struct dcerpc_spoolss_AddForm_r_state);
6902 state->out_mem_ctx = NULL;
6903 subreq = dcerpc_binding_handle_call_send(state, ev, h,
6904 NULL, &ndr_table_spoolss,
6905 NDR_SPOOLSS_ADDFORM, state, r);
6906 if (tevent_req_nomem(subreq, req)) {
6907 return tevent_req_post(req, ev);
6909 tevent_req_set_callback(subreq, dcerpc_spoolss_AddForm_r_done, req);
6914 static void dcerpc_spoolss_AddForm_r_done(struct tevent_req *subreq)
6916 struct tevent_req *req =
6917 tevent_req_callback_data(subreq,
6921 status = dcerpc_binding_handle_call_recv(subreq);
6922 if (!NT_STATUS_IS_OK(status)) {
6923 tevent_req_nterror(req, status);
6927 tevent_req_done(req);
6930 NTSTATUS dcerpc_spoolss_AddForm_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
6932 struct dcerpc_spoolss_AddForm_r_state *state =
6933 tevent_req_data(req,
6934 struct dcerpc_spoolss_AddForm_r_state);
6937 if (tevent_req_is_nterror(req, &status)) {
6938 tevent_req_received(req);
6942 talloc_steal(mem_ctx, state->out_mem_ctx);
6944 tevent_req_received(req);
6945 return NT_STATUS_OK;
6948 NTSTATUS dcerpc_spoolss_AddForm_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddForm *r)
6952 status = dcerpc_binding_handle_call(h,
6953 NULL, &ndr_table_spoolss,
6954 NDR_SPOOLSS_ADDFORM, mem_ctx, r);
6959 NTSTATUS dcerpc_spoolss_AddForm_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_AddForm *r)
6963 status = dcerpc_spoolss_AddForm_r(p->binding_handle, mem_ctx, r);
6965 if (NT_STATUS_IS_RPC(status)) {
6966 status = NT_STATUS_NET_WRITE_FAULT;
6972 struct dcerpc_spoolss_AddForm_state {
6973 struct spoolss_AddForm orig;
6974 struct spoolss_AddForm tmp;
6975 TALLOC_CTX *out_mem_ctx;
6978 static void dcerpc_spoolss_AddForm_done(struct tevent_req *subreq);
6980 struct tevent_req *dcerpc_spoolss_AddForm_send(TALLOC_CTX *mem_ctx,
6981 struct tevent_context *ev,
6982 struct dcerpc_binding_handle *h,
6983 struct policy_handle *_handle /* [in] [ref] */,
6984 uint32_t _level /* [in] */,
6985 union spoolss_AddFormInfo _info /* [in] [switch_is(level)] */)
6987 struct tevent_req *req;
6988 struct dcerpc_spoolss_AddForm_state *state;
6989 struct tevent_req *subreq;
6991 req = tevent_req_create(mem_ctx, &state,
6992 struct dcerpc_spoolss_AddForm_state);
6996 state->out_mem_ctx = NULL;
6999 state->orig.in.handle = _handle;
7000 state->orig.in.level = _level;
7001 state->orig.in.info = _info;
7003 /* Out parameters */
7006 ZERO_STRUCT(state->orig.out.result);
7008 /* make a temporary copy, that we pass to the dispatch function */
7009 state->tmp = state->orig;
7011 subreq = dcerpc_spoolss_AddForm_r_send(state, ev, h, &state->tmp);
7012 if (tevent_req_nomem(subreq, req)) {
7013 return tevent_req_post(req, ev);
7015 tevent_req_set_callback(subreq, dcerpc_spoolss_AddForm_done, req);
7019 static void dcerpc_spoolss_AddForm_done(struct tevent_req *subreq)
7021 struct tevent_req *req = tevent_req_callback_data(
7022 subreq, struct tevent_req);
7023 struct dcerpc_spoolss_AddForm_state *state = tevent_req_data(
7024 req, struct dcerpc_spoolss_AddForm_state);
7026 TALLOC_CTX *mem_ctx;
7028 if (state->out_mem_ctx) {
7029 mem_ctx = state->out_mem_ctx;
7034 status = dcerpc_spoolss_AddForm_r_recv(subreq, mem_ctx);
7035 TALLOC_FREE(subreq);
7036 if (!NT_STATUS_IS_OK(status)) {
7037 tevent_req_nterror(req, status);
7041 /* Copy out parameters */
7044 state->orig.out.result = state->tmp.out.result;
7046 /* Reset temporary structure */
7047 ZERO_STRUCT(state->tmp);
7049 tevent_req_done(req);
7052 NTSTATUS dcerpc_spoolss_AddForm_recv(struct tevent_req *req,
7053 TALLOC_CTX *mem_ctx,
7056 struct dcerpc_spoolss_AddForm_state *state = tevent_req_data(
7057 req, struct dcerpc_spoolss_AddForm_state);
7060 if (tevent_req_is_nterror(req, &status)) {
7061 tevent_req_received(req);
7065 /* Steal possible out parameters to the callers context */
7066 talloc_steal(mem_ctx, state->out_mem_ctx);
7069 *result = state->orig.out.result;
7071 tevent_req_received(req);
7072 return NT_STATUS_OK;
7075 NTSTATUS dcerpc_spoolss_AddForm(struct dcerpc_binding_handle *h,
7076 TALLOC_CTX *mem_ctx,
7077 struct policy_handle *_handle /* [in] [ref] */,
7078 uint32_t _level /* [in] */,
7079 union spoolss_AddFormInfo _info /* [in] [switch_is(level)] */,
7082 struct spoolss_AddForm r;
7086 r.in.handle = _handle;
7087 r.in.level = _level;
7090 status = dcerpc_spoolss_AddForm_r(h, mem_ctx, &r);
7091 if (!NT_STATUS_IS_OK(status)) {
7095 /* Return variables */
7098 *result = r.out.result;
7100 return NT_STATUS_OK;
7103 struct dcerpc_spoolss_DeleteForm_r_state {
7104 TALLOC_CTX *out_mem_ctx;
7107 static void dcerpc_spoolss_DeleteForm_r_done(struct tevent_req *subreq);
7109 struct tevent_req *dcerpc_spoolss_DeleteForm_r_send(TALLOC_CTX *mem_ctx,
7110 struct tevent_context *ev,
7111 struct dcerpc_binding_handle *h,
7112 struct spoolss_DeleteForm *r)
7114 struct tevent_req *req;
7115 struct dcerpc_spoolss_DeleteForm_r_state *state;
7116 struct tevent_req *subreq;
7118 req = tevent_req_create(mem_ctx, &state,
7119 struct dcerpc_spoolss_DeleteForm_r_state);
7124 state->out_mem_ctx = NULL;
7125 subreq = dcerpc_binding_handle_call_send(state, ev, h,
7126 NULL, &ndr_table_spoolss,
7127 NDR_SPOOLSS_DELETEFORM, state, r);
7128 if (tevent_req_nomem(subreq, req)) {
7129 return tevent_req_post(req, ev);
7131 tevent_req_set_callback(subreq, dcerpc_spoolss_DeleteForm_r_done, req);
7136 static void dcerpc_spoolss_DeleteForm_r_done(struct tevent_req *subreq)
7138 struct tevent_req *req =
7139 tevent_req_callback_data(subreq,
7143 status = dcerpc_binding_handle_call_recv(subreq);
7144 if (!NT_STATUS_IS_OK(status)) {
7145 tevent_req_nterror(req, status);
7149 tevent_req_done(req);
7152 NTSTATUS dcerpc_spoolss_DeleteForm_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
7154 struct dcerpc_spoolss_DeleteForm_r_state *state =
7155 tevent_req_data(req,
7156 struct dcerpc_spoolss_DeleteForm_r_state);
7159 if (tevent_req_is_nterror(req, &status)) {
7160 tevent_req_received(req);
7164 talloc_steal(mem_ctx, state->out_mem_ctx);
7166 tevent_req_received(req);
7167 return NT_STATUS_OK;
7170 NTSTATUS dcerpc_spoolss_DeleteForm_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeleteForm *r)
7174 status = dcerpc_binding_handle_call(h,
7175 NULL, &ndr_table_spoolss,
7176 NDR_SPOOLSS_DELETEFORM, mem_ctx, r);
7181 NTSTATUS dcerpc_spoolss_DeleteForm_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_DeleteForm *r)
7185 status = dcerpc_spoolss_DeleteForm_r(p->binding_handle, mem_ctx, r);
7187 if (NT_STATUS_IS_RPC(status)) {
7188 status = NT_STATUS_NET_WRITE_FAULT;
7194 struct dcerpc_spoolss_DeleteForm_state {
7195 struct spoolss_DeleteForm orig;
7196 struct spoolss_DeleteForm tmp;
7197 TALLOC_CTX *out_mem_ctx;
7200 static void dcerpc_spoolss_DeleteForm_done(struct tevent_req *subreq);
7202 struct tevent_req *dcerpc_spoolss_DeleteForm_send(TALLOC_CTX *mem_ctx,
7203 struct tevent_context *ev,
7204 struct dcerpc_binding_handle *h,
7205 struct policy_handle *_handle /* [in] [ref] */,
7206 const char *_form_name /* [in] [charset(UTF16)] */)
7208 struct tevent_req *req;
7209 struct dcerpc_spoolss_DeleteForm_state *state;
7210 struct tevent_req *subreq;
7212 req = tevent_req_create(mem_ctx, &state,
7213 struct dcerpc_spoolss_DeleteForm_state);
7217 state->out_mem_ctx = NULL;
7220 state->orig.in.handle = _handle;
7221 state->orig.in.form_name = _form_name;
7223 /* Out parameters */
7226 ZERO_STRUCT(state->orig.out.result);
7228 /* make a temporary copy, that we pass to the dispatch function */
7229 state->tmp = state->orig;
7231 subreq = dcerpc_spoolss_DeleteForm_r_send(state, ev, h, &state->tmp);
7232 if (tevent_req_nomem(subreq, req)) {
7233 return tevent_req_post(req, ev);
7235 tevent_req_set_callback(subreq, dcerpc_spoolss_DeleteForm_done, req);
7239 static void dcerpc_spoolss_DeleteForm_done(struct tevent_req *subreq)
7241 struct tevent_req *req = tevent_req_callback_data(
7242 subreq, struct tevent_req);
7243 struct dcerpc_spoolss_DeleteForm_state *state = tevent_req_data(
7244 req, struct dcerpc_spoolss_DeleteForm_state);
7246 TALLOC_CTX *mem_ctx;
7248 if (state->out_mem_ctx) {
7249 mem_ctx = state->out_mem_ctx;
7254 status = dcerpc_spoolss_DeleteForm_r_recv(subreq, mem_ctx);
7255 TALLOC_FREE(subreq);
7256 if (!NT_STATUS_IS_OK(status)) {
7257 tevent_req_nterror(req, status);
7261 /* Copy out parameters */
7264 state->orig.out.result = state->tmp.out.result;
7266 /* Reset temporary structure */
7267 ZERO_STRUCT(state->tmp);
7269 tevent_req_done(req);
7272 NTSTATUS dcerpc_spoolss_DeleteForm_recv(struct tevent_req *req,
7273 TALLOC_CTX *mem_ctx,
7276 struct dcerpc_spoolss_DeleteForm_state *state = tevent_req_data(
7277 req, struct dcerpc_spoolss_DeleteForm_state);
7280 if (tevent_req_is_nterror(req, &status)) {
7281 tevent_req_received(req);
7285 /* Steal possible out parameters to the callers context */
7286 talloc_steal(mem_ctx, state->out_mem_ctx);
7289 *result = state->orig.out.result;
7291 tevent_req_received(req);
7292 return NT_STATUS_OK;
7295 NTSTATUS dcerpc_spoolss_DeleteForm(struct dcerpc_binding_handle *h,
7296 TALLOC_CTX *mem_ctx,
7297 struct policy_handle *_handle /* [in] [ref] */,
7298 const char *_form_name /* [in] [charset(UTF16)] */,
7301 struct spoolss_DeleteForm r;
7305 r.in.handle = _handle;
7306 r.in.form_name = _form_name;
7308 status = dcerpc_spoolss_DeleteForm_r(h, mem_ctx, &r);
7309 if (!NT_STATUS_IS_OK(status)) {
7313 /* Return variables */
7316 *result = r.out.result;
7318 return NT_STATUS_OK;
7321 struct dcerpc_spoolss_GetForm_r_state {
7322 TALLOC_CTX *out_mem_ctx;
7325 static void dcerpc_spoolss_GetForm_r_done(struct tevent_req *subreq);
7327 struct tevent_req *dcerpc_spoolss_GetForm_r_send(TALLOC_CTX *mem_ctx,
7328 struct tevent_context *ev,
7329 struct dcerpc_binding_handle *h,
7330 struct spoolss_GetForm *r)
7332 struct tevent_req *req;
7333 struct dcerpc_spoolss_GetForm_r_state *state;
7334 struct tevent_req *subreq;
7336 req = tevent_req_create(mem_ctx, &state,
7337 struct dcerpc_spoolss_GetForm_r_state);
7342 state->out_mem_ctx = talloc_new(state);
7343 if (tevent_req_nomem(state->out_mem_ctx, req)) {
7344 return tevent_req_post(req, ev);
7347 subreq = dcerpc_binding_handle_call_send(state, ev, h,
7348 NULL, &ndr_table_spoolss,
7349 NDR_SPOOLSS_GETFORM, state->out_mem_ctx, r);
7350 if (tevent_req_nomem(subreq, req)) {
7351 return tevent_req_post(req, ev);
7353 tevent_req_set_callback(subreq, dcerpc_spoolss_GetForm_r_done, req);
7358 static void dcerpc_spoolss_GetForm_r_done(struct tevent_req *subreq)
7360 struct tevent_req *req =
7361 tevent_req_callback_data(subreq,
7365 status = dcerpc_binding_handle_call_recv(subreq);
7366 if (!NT_STATUS_IS_OK(status)) {
7367 tevent_req_nterror(req, status);
7371 tevent_req_done(req);
7374 NTSTATUS dcerpc_spoolss_GetForm_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
7376 struct dcerpc_spoolss_GetForm_r_state *state =
7377 tevent_req_data(req,
7378 struct dcerpc_spoolss_GetForm_r_state);
7381 if (tevent_req_is_nterror(req, &status)) {
7382 tevent_req_received(req);
7386 talloc_steal(mem_ctx, state->out_mem_ctx);
7388 tevent_req_received(req);
7389 return NT_STATUS_OK;
7392 NTSTATUS dcerpc_spoolss_GetForm_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetForm *r)
7396 status = dcerpc_binding_handle_call(h,
7397 NULL, &ndr_table_spoolss,
7398 NDR_SPOOLSS_GETFORM, mem_ctx, r);
7403 NTSTATUS dcerpc_spoolss_GetForm_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetForm *r)
7407 status = dcerpc_spoolss_GetForm_r(p->binding_handle, mem_ctx, r);
7409 if (NT_STATUS_IS_RPC(status)) {
7410 status = NT_STATUS_NET_WRITE_FAULT;
7416 struct dcerpc_spoolss_GetForm_state {
7417 struct spoolss_GetForm orig;
7418 struct spoolss_GetForm tmp;
7419 TALLOC_CTX *out_mem_ctx;
7422 static void dcerpc_spoolss_GetForm_done(struct tevent_req *subreq);
7424 struct tevent_req *dcerpc_spoolss_GetForm_send(TALLOC_CTX *mem_ctx,
7425 struct tevent_context *ev,
7426 struct dcerpc_binding_handle *h,
7427 struct policy_handle *_handle /* [in] [ref] */,
7428 const char *_form_name /* [in] [charset(UTF16)] */,
7429 uint32_t _level /* [in] */,
7430 DATA_BLOB *_buffer /* [in] [unique] */,
7431 uint32_t _offered /* [in] */,
7432 union spoolss_FormInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
7433 uint32_t *_needed /* [out] [ref] */)
7435 struct tevent_req *req;
7436 struct dcerpc_spoolss_GetForm_state *state;
7437 struct tevent_req *subreq;
7439 req = tevent_req_create(mem_ctx, &state,
7440 struct dcerpc_spoolss_GetForm_state);
7444 state->out_mem_ctx = NULL;
7447 state->orig.in.handle = _handle;
7448 state->orig.in.form_name = _form_name;
7449 state->orig.in.level = _level;
7450 state->orig.in.buffer = _buffer;
7451 state->orig.in.offered = _offered;
7453 /* Out parameters */
7454 state->orig.out.info = _info;
7455 state->orig.out.needed = _needed;
7458 ZERO_STRUCT(state->orig.out.result);
7460 state->out_mem_ctx = talloc_named_const(state, 0,
7461 "dcerpc_spoolss_GetForm_out_memory");
7462 if (tevent_req_nomem(state->out_mem_ctx, req)) {
7463 return tevent_req_post(req, ev);
7466 /* make a temporary copy, that we pass to the dispatch function */
7467 state->tmp = state->orig;
7469 subreq = dcerpc_spoolss_GetForm_r_send(state, ev, h, &state->tmp);
7470 if (tevent_req_nomem(subreq, req)) {
7471 return tevent_req_post(req, ev);
7473 tevent_req_set_callback(subreq, dcerpc_spoolss_GetForm_done, req);
7477 static void dcerpc_spoolss_GetForm_done(struct tevent_req *subreq)
7479 struct tevent_req *req = tevent_req_callback_data(
7480 subreq, struct tevent_req);
7481 struct dcerpc_spoolss_GetForm_state *state = tevent_req_data(
7482 req, struct dcerpc_spoolss_GetForm_state);
7484 TALLOC_CTX *mem_ctx;
7486 if (state->out_mem_ctx) {
7487 mem_ctx = state->out_mem_ctx;
7492 status = dcerpc_spoolss_GetForm_r_recv(subreq, mem_ctx);
7493 TALLOC_FREE(subreq);
7494 if (!NT_STATUS_IS_OK(status)) {
7495 tevent_req_nterror(req, status);
7499 /* Copy out parameters */
7500 if (state->orig.out.info && state->tmp.out.info) {
7501 *state->orig.out.info = *state->tmp.out.info;
7503 *state->orig.out.needed = *state->tmp.out.needed;
7506 state->orig.out.result = state->tmp.out.result;
7508 /* Reset temporary structure */
7509 ZERO_STRUCT(state->tmp);
7511 tevent_req_done(req);
7514 NTSTATUS dcerpc_spoolss_GetForm_recv(struct tevent_req *req,
7515 TALLOC_CTX *mem_ctx,
7518 struct dcerpc_spoolss_GetForm_state *state = tevent_req_data(
7519 req, struct dcerpc_spoolss_GetForm_state);
7522 if (tevent_req_is_nterror(req, &status)) {
7523 tevent_req_received(req);
7527 /* Steal possible out parameters to the callers context */
7528 talloc_steal(mem_ctx, state->out_mem_ctx);
7531 *result = state->orig.out.result;
7533 tevent_req_received(req);
7534 return NT_STATUS_OK;
7537 NTSTATUS dcerpc_spoolss_GetForm(struct dcerpc_binding_handle *h,
7538 TALLOC_CTX *mem_ctx,
7539 struct policy_handle *_handle /* [in] [ref] */,
7540 const char *_form_name /* [in] [charset(UTF16)] */,
7541 uint32_t _level /* [in] */,
7542 DATA_BLOB *_buffer /* [in] [unique] */,
7543 uint32_t _offered /* [in] */,
7544 union spoolss_FormInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
7545 uint32_t *_needed /* [out] [ref] */,
7548 struct spoolss_GetForm r;
7552 r.in.handle = _handle;
7553 r.in.form_name = _form_name;
7554 r.in.level = _level;
7555 r.in.buffer = _buffer;
7556 r.in.offered = _offered;
7558 status = dcerpc_spoolss_GetForm_r(h, mem_ctx, &r);
7559 if (!NT_STATUS_IS_OK(status)) {
7563 /* Return variables */
7564 if (_info && r.out.info) {
7565 *_info = *r.out.info;
7567 *_needed = *r.out.needed;
7570 *result = r.out.result;
7572 return NT_STATUS_OK;
7575 struct dcerpc_spoolss_SetForm_r_state {
7576 TALLOC_CTX *out_mem_ctx;
7579 static void dcerpc_spoolss_SetForm_r_done(struct tevent_req *subreq);
7581 struct tevent_req *dcerpc_spoolss_SetForm_r_send(TALLOC_CTX *mem_ctx,
7582 struct tevent_context *ev,
7583 struct dcerpc_binding_handle *h,
7584 struct spoolss_SetForm *r)
7586 struct tevent_req *req;
7587 struct dcerpc_spoolss_SetForm_r_state *state;
7588 struct tevent_req *subreq;
7590 req = tevent_req_create(mem_ctx, &state,
7591 struct dcerpc_spoolss_SetForm_r_state);
7596 state->out_mem_ctx = NULL;
7597 subreq = dcerpc_binding_handle_call_send(state, ev, h,
7598 NULL, &ndr_table_spoolss,
7599 NDR_SPOOLSS_SETFORM, state, r);
7600 if (tevent_req_nomem(subreq, req)) {
7601 return tevent_req_post(req, ev);
7603 tevent_req_set_callback(subreq, dcerpc_spoolss_SetForm_r_done, req);
7608 static void dcerpc_spoolss_SetForm_r_done(struct tevent_req *subreq)
7610 struct tevent_req *req =
7611 tevent_req_callback_data(subreq,
7615 status = dcerpc_binding_handle_call_recv(subreq);
7616 if (!NT_STATUS_IS_OK(status)) {
7617 tevent_req_nterror(req, status);
7621 tevent_req_done(req);
7624 NTSTATUS dcerpc_spoolss_SetForm_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
7626 struct dcerpc_spoolss_SetForm_r_state *state =
7627 tevent_req_data(req,
7628 struct dcerpc_spoolss_SetForm_r_state);
7631 if (tevent_req_is_nterror(req, &status)) {
7632 tevent_req_received(req);
7636 talloc_steal(mem_ctx, state->out_mem_ctx);
7638 tevent_req_received(req);
7639 return NT_STATUS_OK;
7642 NTSTATUS dcerpc_spoolss_SetForm_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_SetForm *r)
7646 status = dcerpc_binding_handle_call(h,
7647 NULL, &ndr_table_spoolss,
7648 NDR_SPOOLSS_SETFORM, mem_ctx, r);
7653 NTSTATUS dcerpc_spoolss_SetForm_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_SetForm *r)
7657 status = dcerpc_spoolss_SetForm_r(p->binding_handle, mem_ctx, r);
7659 if (NT_STATUS_IS_RPC(status)) {
7660 status = NT_STATUS_NET_WRITE_FAULT;
7666 struct dcerpc_spoolss_SetForm_state {
7667 struct spoolss_SetForm orig;
7668 struct spoolss_SetForm tmp;
7669 TALLOC_CTX *out_mem_ctx;
7672 static void dcerpc_spoolss_SetForm_done(struct tevent_req *subreq);
7674 struct tevent_req *dcerpc_spoolss_SetForm_send(TALLOC_CTX *mem_ctx,
7675 struct tevent_context *ev,
7676 struct dcerpc_binding_handle *h,
7677 struct policy_handle *_handle /* [in] [ref] */,
7678 const char *_form_name /* [in] [charset(UTF16)] */,
7679 uint32_t _level /* [in] */,
7680 union spoolss_AddFormInfo _info /* [in] [switch_is(level)] */)
7682 struct tevent_req *req;
7683 struct dcerpc_spoolss_SetForm_state *state;
7684 struct tevent_req *subreq;
7686 req = tevent_req_create(mem_ctx, &state,
7687 struct dcerpc_spoolss_SetForm_state);
7691 state->out_mem_ctx = NULL;
7694 state->orig.in.handle = _handle;
7695 state->orig.in.form_name = _form_name;
7696 state->orig.in.level = _level;
7697 state->orig.in.info = _info;
7699 /* Out parameters */
7702 ZERO_STRUCT(state->orig.out.result);
7704 /* make a temporary copy, that we pass to the dispatch function */
7705 state->tmp = state->orig;
7707 subreq = dcerpc_spoolss_SetForm_r_send(state, ev, h, &state->tmp);
7708 if (tevent_req_nomem(subreq, req)) {
7709 return tevent_req_post(req, ev);
7711 tevent_req_set_callback(subreq, dcerpc_spoolss_SetForm_done, req);
7715 static void dcerpc_spoolss_SetForm_done(struct tevent_req *subreq)
7717 struct tevent_req *req = tevent_req_callback_data(
7718 subreq, struct tevent_req);
7719 struct dcerpc_spoolss_SetForm_state *state = tevent_req_data(
7720 req, struct dcerpc_spoolss_SetForm_state);
7722 TALLOC_CTX *mem_ctx;
7724 if (state->out_mem_ctx) {
7725 mem_ctx = state->out_mem_ctx;
7730 status = dcerpc_spoolss_SetForm_r_recv(subreq, mem_ctx);
7731 TALLOC_FREE(subreq);
7732 if (!NT_STATUS_IS_OK(status)) {
7733 tevent_req_nterror(req, status);
7737 /* Copy out parameters */
7740 state->orig.out.result = state->tmp.out.result;
7742 /* Reset temporary structure */
7743 ZERO_STRUCT(state->tmp);
7745 tevent_req_done(req);
7748 NTSTATUS dcerpc_spoolss_SetForm_recv(struct tevent_req *req,
7749 TALLOC_CTX *mem_ctx,
7752 struct dcerpc_spoolss_SetForm_state *state = tevent_req_data(
7753 req, struct dcerpc_spoolss_SetForm_state);
7756 if (tevent_req_is_nterror(req, &status)) {
7757 tevent_req_received(req);
7761 /* Steal possible out parameters to the callers context */
7762 talloc_steal(mem_ctx, state->out_mem_ctx);
7765 *result = state->orig.out.result;
7767 tevent_req_received(req);
7768 return NT_STATUS_OK;
7771 NTSTATUS dcerpc_spoolss_SetForm(struct dcerpc_binding_handle *h,
7772 TALLOC_CTX *mem_ctx,
7773 struct policy_handle *_handle /* [in] [ref] */,
7774 const char *_form_name /* [in] [charset(UTF16)] */,
7775 uint32_t _level /* [in] */,
7776 union spoolss_AddFormInfo _info /* [in] [switch_is(level)] */,
7779 struct spoolss_SetForm r;
7783 r.in.handle = _handle;
7784 r.in.form_name = _form_name;
7785 r.in.level = _level;
7788 status = dcerpc_spoolss_SetForm_r(h, mem_ctx, &r);
7789 if (!NT_STATUS_IS_OK(status)) {
7793 /* Return variables */
7796 *result = r.out.result;
7798 return NT_STATUS_OK;
7801 struct dcerpc_spoolss_EnumForms_r_state {
7802 TALLOC_CTX *out_mem_ctx;
7805 static void dcerpc_spoolss_EnumForms_r_done(struct tevent_req *subreq);
7807 struct tevent_req *dcerpc_spoolss_EnumForms_r_send(TALLOC_CTX *mem_ctx,
7808 struct tevent_context *ev,
7809 struct dcerpc_binding_handle *h,
7810 struct spoolss_EnumForms *r)
7812 struct tevent_req *req;
7813 struct dcerpc_spoolss_EnumForms_r_state *state;
7814 struct tevent_req *subreq;
7816 req = tevent_req_create(mem_ctx, &state,
7817 struct dcerpc_spoolss_EnumForms_r_state);
7822 state->out_mem_ctx = talloc_new(state);
7823 if (tevent_req_nomem(state->out_mem_ctx, req)) {
7824 return tevent_req_post(req, ev);
7827 subreq = dcerpc_binding_handle_call_send(state, ev, h,
7828 NULL, &ndr_table_spoolss,
7829 NDR_SPOOLSS_ENUMFORMS, state->out_mem_ctx, r);
7830 if (tevent_req_nomem(subreq, req)) {
7831 return tevent_req_post(req, ev);
7833 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumForms_r_done, req);
7838 static void dcerpc_spoolss_EnumForms_r_done(struct tevent_req *subreq)
7840 struct tevent_req *req =
7841 tevent_req_callback_data(subreq,
7845 status = dcerpc_binding_handle_call_recv(subreq);
7846 if (!NT_STATUS_IS_OK(status)) {
7847 tevent_req_nterror(req, status);
7851 tevent_req_done(req);
7854 NTSTATUS dcerpc_spoolss_EnumForms_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
7856 struct dcerpc_spoolss_EnumForms_r_state *state =
7857 tevent_req_data(req,
7858 struct dcerpc_spoolss_EnumForms_r_state);
7861 if (tevent_req_is_nterror(req, &status)) {
7862 tevent_req_received(req);
7866 talloc_steal(mem_ctx, state->out_mem_ctx);
7868 tevent_req_received(req);
7869 return NT_STATUS_OK;
7872 NTSTATUS dcerpc_spoolss_EnumForms_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumForms *r)
7876 status = dcerpc_binding_handle_call(h,
7877 NULL, &ndr_table_spoolss,
7878 NDR_SPOOLSS_ENUMFORMS, mem_ctx, r);
7883 NTSTATUS dcerpc_spoolss_EnumForms_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumForms *r)
7887 status = dcerpc_spoolss_EnumForms_r(p->binding_handle, mem_ctx, r);
7889 if (NT_STATUS_IS_RPC(status)) {
7890 status = NT_STATUS_NET_WRITE_FAULT;
7896 struct dcerpc_spoolss_EnumForms_state {
7897 struct spoolss_EnumForms orig;
7898 struct spoolss_EnumForms tmp;
7899 TALLOC_CTX *out_mem_ctx;
7902 static void dcerpc_spoolss_EnumForms_done(struct tevent_req *subreq);
7904 struct tevent_req *dcerpc_spoolss_EnumForms_send(TALLOC_CTX *mem_ctx,
7905 struct tevent_context *ev,
7906 struct dcerpc_binding_handle *h,
7907 struct policy_handle *_handle /* [in] [ref] */,
7908 uint32_t _level /* [in] */,
7909 DATA_BLOB *_buffer /* [in] [unique] */,
7910 uint32_t _offered /* [in] */,
7911 uint32_t *_count /* [out] [ref] */,
7912 union spoolss_FormInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
7913 uint32_t *_needed /* [out] [ref] */)
7915 struct tevent_req *req;
7916 struct dcerpc_spoolss_EnumForms_state *state;
7917 struct tevent_req *subreq;
7919 req = tevent_req_create(mem_ctx, &state,
7920 struct dcerpc_spoolss_EnumForms_state);
7924 state->out_mem_ctx = NULL;
7927 state->orig.in.handle = _handle;
7928 state->orig.in.level = _level;
7929 state->orig.in.buffer = _buffer;
7930 state->orig.in.offered = _offered;
7932 /* Out parameters */
7933 state->orig.out.count = _count;
7934 state->orig.out.info = _info;
7935 state->orig.out.needed = _needed;
7938 ZERO_STRUCT(state->orig.out.result);
7940 state->out_mem_ctx = talloc_named_const(state, 0,
7941 "dcerpc_spoolss_EnumForms_out_memory");
7942 if (tevent_req_nomem(state->out_mem_ctx, req)) {
7943 return tevent_req_post(req, ev);
7946 /* make a temporary copy, that we pass to the dispatch function */
7947 state->tmp = state->orig;
7949 subreq = dcerpc_spoolss_EnumForms_r_send(state, ev, h, &state->tmp);
7950 if (tevent_req_nomem(subreq, req)) {
7951 return tevent_req_post(req, ev);
7953 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumForms_done, req);
7957 static void dcerpc_spoolss_EnumForms_done(struct tevent_req *subreq)
7959 struct tevent_req *req = tevent_req_callback_data(
7960 subreq, struct tevent_req);
7961 struct dcerpc_spoolss_EnumForms_state *state = tevent_req_data(
7962 req, struct dcerpc_spoolss_EnumForms_state);
7964 TALLOC_CTX *mem_ctx;
7966 if (state->out_mem_ctx) {
7967 mem_ctx = state->out_mem_ctx;
7972 status = dcerpc_spoolss_EnumForms_r_recv(subreq, mem_ctx);
7973 TALLOC_FREE(subreq);
7974 if (!NT_STATUS_IS_OK(status)) {
7975 tevent_req_nterror(req, status);
7979 /* Copy out parameters */
7980 *state->orig.out.count = *state->tmp.out.count;
7981 *state->orig.out.info = *state->tmp.out.info;
7982 *state->orig.out.needed = *state->tmp.out.needed;
7985 state->orig.out.result = state->tmp.out.result;
7987 /* Reset temporary structure */
7988 ZERO_STRUCT(state->tmp);
7990 tevent_req_done(req);
7993 NTSTATUS dcerpc_spoolss_EnumForms_recv(struct tevent_req *req,
7994 TALLOC_CTX *mem_ctx,
7997 struct dcerpc_spoolss_EnumForms_state *state = tevent_req_data(
7998 req, struct dcerpc_spoolss_EnumForms_state);
8001 if (tevent_req_is_nterror(req, &status)) {
8002 tevent_req_received(req);
8006 /* Steal possible out parameters to the callers context */
8007 talloc_steal(mem_ctx, state->out_mem_ctx);
8010 *result = state->orig.out.result;
8012 tevent_req_received(req);
8013 return NT_STATUS_OK;
8016 NTSTATUS dcerpc_spoolss_EnumForms(struct dcerpc_binding_handle *h,
8017 TALLOC_CTX *mem_ctx,
8018 struct policy_handle *_handle /* [in] [ref] */,
8019 uint32_t _level /* [in] */,
8020 DATA_BLOB *_buffer /* [in] [unique] */,
8021 uint32_t _offered /* [in] */,
8022 uint32_t *_count /* [out] [ref] */,
8023 union spoolss_FormInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
8024 uint32_t *_needed /* [out] [ref] */,
8027 struct spoolss_EnumForms r;
8031 r.in.handle = _handle;
8032 r.in.level = _level;
8033 r.in.buffer = _buffer;
8034 r.in.offered = _offered;
8036 status = dcerpc_spoolss_EnumForms_r(h, mem_ctx, &r);
8037 if (!NT_STATUS_IS_OK(status)) {
8041 /* Return variables */
8042 *_count = *r.out.count;
8043 *_info = *r.out.info;
8044 *_needed = *r.out.needed;
8047 *result = r.out.result;
8049 return NT_STATUS_OK;
8052 struct dcerpc_spoolss_EnumPorts_r_state {
8053 TALLOC_CTX *out_mem_ctx;
8056 static void dcerpc_spoolss_EnumPorts_r_done(struct tevent_req *subreq);
8058 struct tevent_req *dcerpc_spoolss_EnumPorts_r_send(TALLOC_CTX *mem_ctx,
8059 struct tevent_context *ev,
8060 struct dcerpc_binding_handle *h,
8061 struct spoolss_EnumPorts *r)
8063 struct tevent_req *req;
8064 struct dcerpc_spoolss_EnumPorts_r_state *state;
8065 struct tevent_req *subreq;
8067 req = tevent_req_create(mem_ctx, &state,
8068 struct dcerpc_spoolss_EnumPorts_r_state);
8073 state->out_mem_ctx = talloc_new(state);
8074 if (tevent_req_nomem(state->out_mem_ctx, req)) {
8075 return tevent_req_post(req, ev);
8078 subreq = dcerpc_binding_handle_call_send(state, ev, h,
8079 NULL, &ndr_table_spoolss,
8080 NDR_SPOOLSS_ENUMPORTS, state->out_mem_ctx, r);
8081 if (tevent_req_nomem(subreq, req)) {
8082 return tevent_req_post(req, ev);
8084 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPorts_r_done, req);
8089 static void dcerpc_spoolss_EnumPorts_r_done(struct tevent_req *subreq)
8091 struct tevent_req *req =
8092 tevent_req_callback_data(subreq,
8096 status = dcerpc_binding_handle_call_recv(subreq);
8097 if (!NT_STATUS_IS_OK(status)) {
8098 tevent_req_nterror(req, status);
8102 tevent_req_done(req);
8105 NTSTATUS dcerpc_spoolss_EnumPorts_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
8107 struct dcerpc_spoolss_EnumPorts_r_state *state =
8108 tevent_req_data(req,
8109 struct dcerpc_spoolss_EnumPorts_r_state);
8112 if (tevent_req_is_nterror(req, &status)) {
8113 tevent_req_received(req);
8117 talloc_steal(mem_ctx, state->out_mem_ctx);
8119 tevent_req_received(req);
8120 return NT_STATUS_OK;
8123 NTSTATUS dcerpc_spoolss_EnumPorts_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPorts *r)
8127 status = dcerpc_binding_handle_call(h,
8128 NULL, &ndr_table_spoolss,
8129 NDR_SPOOLSS_ENUMPORTS, mem_ctx, r);
8134 NTSTATUS dcerpc_spoolss_EnumPorts_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumPorts *r)
8138 status = dcerpc_spoolss_EnumPorts_r(p->binding_handle, mem_ctx, r);
8140 if (NT_STATUS_IS_RPC(status)) {
8141 status = NT_STATUS_NET_WRITE_FAULT;
8147 struct dcerpc_spoolss_EnumPorts_state {
8148 struct spoolss_EnumPorts orig;
8149 struct spoolss_EnumPorts tmp;
8150 TALLOC_CTX *out_mem_ctx;
8153 static void dcerpc_spoolss_EnumPorts_done(struct tevent_req *subreq);
8155 struct tevent_req *dcerpc_spoolss_EnumPorts_send(TALLOC_CTX *mem_ctx,
8156 struct tevent_context *ev,
8157 struct dcerpc_binding_handle *h,
8158 const char *_servername /* [in] [unique,charset(UTF16)] */,
8159 uint32_t _level /* [in] */,
8160 DATA_BLOB *_buffer /* [in] [unique] */,
8161 uint32_t _offered /* [in] */,
8162 uint32_t *_count /* [out] [ref] */,
8163 union spoolss_PortInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
8164 uint32_t *_needed /* [out] [ref] */)
8166 struct tevent_req *req;
8167 struct dcerpc_spoolss_EnumPorts_state *state;
8168 struct tevent_req *subreq;
8170 req = tevent_req_create(mem_ctx, &state,
8171 struct dcerpc_spoolss_EnumPorts_state);
8175 state->out_mem_ctx = NULL;
8178 state->orig.in.servername = _servername;
8179 state->orig.in.level = _level;
8180 state->orig.in.buffer = _buffer;
8181 state->orig.in.offered = _offered;
8183 /* Out parameters */
8184 state->orig.out.count = _count;
8185 state->orig.out.info = _info;
8186 state->orig.out.needed = _needed;
8189 ZERO_STRUCT(state->orig.out.result);
8191 state->out_mem_ctx = talloc_named_const(state, 0,
8192 "dcerpc_spoolss_EnumPorts_out_memory");
8193 if (tevent_req_nomem(state->out_mem_ctx, req)) {
8194 return tevent_req_post(req, ev);
8197 /* make a temporary copy, that we pass to the dispatch function */
8198 state->tmp = state->orig;
8200 subreq = dcerpc_spoolss_EnumPorts_r_send(state, ev, h, &state->tmp);
8201 if (tevent_req_nomem(subreq, req)) {
8202 return tevent_req_post(req, ev);
8204 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPorts_done, req);
8208 static void dcerpc_spoolss_EnumPorts_done(struct tevent_req *subreq)
8210 struct tevent_req *req = tevent_req_callback_data(
8211 subreq, struct tevent_req);
8212 struct dcerpc_spoolss_EnumPorts_state *state = tevent_req_data(
8213 req, struct dcerpc_spoolss_EnumPorts_state);
8215 TALLOC_CTX *mem_ctx;
8217 if (state->out_mem_ctx) {
8218 mem_ctx = state->out_mem_ctx;
8223 status = dcerpc_spoolss_EnumPorts_r_recv(subreq, mem_ctx);
8224 TALLOC_FREE(subreq);
8225 if (!NT_STATUS_IS_OK(status)) {
8226 tevent_req_nterror(req, status);
8230 /* Copy out parameters */
8231 *state->orig.out.count = *state->tmp.out.count;
8232 *state->orig.out.info = *state->tmp.out.info;
8233 *state->orig.out.needed = *state->tmp.out.needed;
8236 state->orig.out.result = state->tmp.out.result;
8238 /* Reset temporary structure */
8239 ZERO_STRUCT(state->tmp);
8241 tevent_req_done(req);
8244 NTSTATUS dcerpc_spoolss_EnumPorts_recv(struct tevent_req *req,
8245 TALLOC_CTX *mem_ctx,
8248 struct dcerpc_spoolss_EnumPorts_state *state = tevent_req_data(
8249 req, struct dcerpc_spoolss_EnumPorts_state);
8252 if (tevent_req_is_nterror(req, &status)) {
8253 tevent_req_received(req);
8257 /* Steal possible out parameters to the callers context */
8258 talloc_steal(mem_ctx, state->out_mem_ctx);
8261 *result = state->orig.out.result;
8263 tevent_req_received(req);
8264 return NT_STATUS_OK;
8267 NTSTATUS dcerpc_spoolss_EnumPorts(struct dcerpc_binding_handle *h,
8268 TALLOC_CTX *mem_ctx,
8269 const char *_servername /* [in] [unique,charset(UTF16)] */,
8270 uint32_t _level /* [in] */,
8271 DATA_BLOB *_buffer /* [in] [unique] */,
8272 uint32_t _offered /* [in] */,
8273 uint32_t *_count /* [out] [ref] */,
8274 union spoolss_PortInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
8275 uint32_t *_needed /* [out] [ref] */,
8278 struct spoolss_EnumPorts r;
8282 r.in.servername = _servername;
8283 r.in.level = _level;
8284 r.in.buffer = _buffer;
8285 r.in.offered = _offered;
8287 status = dcerpc_spoolss_EnumPorts_r(h, mem_ctx, &r);
8288 if (!NT_STATUS_IS_OK(status)) {
8292 /* Return variables */
8293 *_count = *r.out.count;
8294 *_info = *r.out.info;
8295 *_needed = *r.out.needed;
8298 *result = r.out.result;
8300 return NT_STATUS_OK;
8303 struct dcerpc_spoolss_EnumMonitors_r_state {
8304 TALLOC_CTX *out_mem_ctx;
8307 static void dcerpc_spoolss_EnumMonitors_r_done(struct tevent_req *subreq);
8309 struct tevent_req *dcerpc_spoolss_EnumMonitors_r_send(TALLOC_CTX *mem_ctx,
8310 struct tevent_context *ev,
8311 struct dcerpc_binding_handle *h,
8312 struct spoolss_EnumMonitors *r)
8314 struct tevent_req *req;
8315 struct dcerpc_spoolss_EnumMonitors_r_state *state;
8316 struct tevent_req *subreq;
8318 req = tevent_req_create(mem_ctx, &state,
8319 struct dcerpc_spoolss_EnumMonitors_r_state);
8324 state->out_mem_ctx = talloc_new(state);
8325 if (tevent_req_nomem(state->out_mem_ctx, req)) {
8326 return tevent_req_post(req, ev);
8329 subreq = dcerpc_binding_handle_call_send(state, ev, h,
8330 NULL, &ndr_table_spoolss,
8331 NDR_SPOOLSS_ENUMMONITORS, state->out_mem_ctx, r);
8332 if (tevent_req_nomem(subreq, req)) {
8333 return tevent_req_post(req, ev);
8335 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumMonitors_r_done, req);
8340 static void dcerpc_spoolss_EnumMonitors_r_done(struct tevent_req *subreq)
8342 struct tevent_req *req =
8343 tevent_req_callback_data(subreq,
8347 status = dcerpc_binding_handle_call_recv(subreq);
8348 if (!NT_STATUS_IS_OK(status)) {
8349 tevent_req_nterror(req, status);
8353 tevent_req_done(req);
8356 NTSTATUS dcerpc_spoolss_EnumMonitors_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
8358 struct dcerpc_spoolss_EnumMonitors_r_state *state =
8359 tevent_req_data(req,
8360 struct dcerpc_spoolss_EnumMonitors_r_state);
8363 if (tevent_req_is_nterror(req, &status)) {
8364 tevent_req_received(req);
8368 talloc_steal(mem_ctx, state->out_mem_ctx);
8370 tevent_req_received(req);
8371 return NT_STATUS_OK;
8374 NTSTATUS dcerpc_spoolss_EnumMonitors_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumMonitors *r)
8378 status = dcerpc_binding_handle_call(h,
8379 NULL, &ndr_table_spoolss,
8380 NDR_SPOOLSS_ENUMMONITORS, mem_ctx, r);
8385 NTSTATUS dcerpc_spoolss_EnumMonitors_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumMonitors *r)
8389 status = dcerpc_spoolss_EnumMonitors_r(p->binding_handle, mem_ctx, r);
8391 if (NT_STATUS_IS_RPC(status)) {
8392 status = NT_STATUS_NET_WRITE_FAULT;
8398 struct dcerpc_spoolss_EnumMonitors_state {
8399 struct spoolss_EnumMonitors orig;
8400 struct spoolss_EnumMonitors tmp;
8401 TALLOC_CTX *out_mem_ctx;
8404 static void dcerpc_spoolss_EnumMonitors_done(struct tevent_req *subreq);
8406 struct tevent_req *dcerpc_spoolss_EnumMonitors_send(TALLOC_CTX *mem_ctx,
8407 struct tevent_context *ev,
8408 struct dcerpc_binding_handle *h,
8409 const char *_servername /* [in] [unique,charset(UTF16)] */,
8410 uint32_t _level /* [in] */,
8411 DATA_BLOB *_buffer /* [in] [unique] */,
8412 uint32_t _offered /* [in] */,
8413 uint32_t *_count /* [out] [ref] */,
8414 union spoolss_MonitorInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
8415 uint32_t *_needed /* [out] [ref] */)
8417 struct tevent_req *req;
8418 struct dcerpc_spoolss_EnumMonitors_state *state;
8419 struct tevent_req *subreq;
8421 req = tevent_req_create(mem_ctx, &state,
8422 struct dcerpc_spoolss_EnumMonitors_state);
8426 state->out_mem_ctx = NULL;
8429 state->orig.in.servername = _servername;
8430 state->orig.in.level = _level;
8431 state->orig.in.buffer = _buffer;
8432 state->orig.in.offered = _offered;
8434 /* Out parameters */
8435 state->orig.out.count = _count;
8436 state->orig.out.info = _info;
8437 state->orig.out.needed = _needed;
8440 ZERO_STRUCT(state->orig.out.result);
8442 state->out_mem_ctx = talloc_named_const(state, 0,
8443 "dcerpc_spoolss_EnumMonitors_out_memory");
8444 if (tevent_req_nomem(state->out_mem_ctx, req)) {
8445 return tevent_req_post(req, ev);
8448 /* make a temporary copy, that we pass to the dispatch function */
8449 state->tmp = state->orig;
8451 subreq = dcerpc_spoolss_EnumMonitors_r_send(state, ev, h, &state->tmp);
8452 if (tevent_req_nomem(subreq, req)) {
8453 return tevent_req_post(req, ev);
8455 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumMonitors_done, req);
8459 static void dcerpc_spoolss_EnumMonitors_done(struct tevent_req *subreq)
8461 struct tevent_req *req = tevent_req_callback_data(
8462 subreq, struct tevent_req);
8463 struct dcerpc_spoolss_EnumMonitors_state *state = tevent_req_data(
8464 req, struct dcerpc_spoolss_EnumMonitors_state);
8466 TALLOC_CTX *mem_ctx;
8468 if (state->out_mem_ctx) {
8469 mem_ctx = state->out_mem_ctx;
8474 status = dcerpc_spoolss_EnumMonitors_r_recv(subreq, mem_ctx);
8475 TALLOC_FREE(subreq);
8476 if (!NT_STATUS_IS_OK(status)) {
8477 tevent_req_nterror(req, status);
8481 /* Copy out parameters */
8482 *state->orig.out.count = *state->tmp.out.count;
8483 *state->orig.out.info = *state->tmp.out.info;
8484 *state->orig.out.needed = *state->tmp.out.needed;
8487 state->orig.out.result = state->tmp.out.result;
8489 /* Reset temporary structure */
8490 ZERO_STRUCT(state->tmp);
8492 tevent_req_done(req);
8495 NTSTATUS dcerpc_spoolss_EnumMonitors_recv(struct tevent_req *req,
8496 TALLOC_CTX *mem_ctx,
8499 struct dcerpc_spoolss_EnumMonitors_state *state = tevent_req_data(
8500 req, struct dcerpc_spoolss_EnumMonitors_state);
8503 if (tevent_req_is_nterror(req, &status)) {
8504 tevent_req_received(req);
8508 /* Steal possible out parameters to the callers context */
8509 talloc_steal(mem_ctx, state->out_mem_ctx);
8512 *result = state->orig.out.result;
8514 tevent_req_received(req);
8515 return NT_STATUS_OK;
8518 NTSTATUS dcerpc_spoolss_EnumMonitors(struct dcerpc_binding_handle *h,
8519 TALLOC_CTX *mem_ctx,
8520 const char *_servername /* [in] [unique,charset(UTF16)] */,
8521 uint32_t _level /* [in] */,
8522 DATA_BLOB *_buffer /* [in] [unique] */,
8523 uint32_t _offered /* [in] */,
8524 uint32_t *_count /* [out] [ref] */,
8525 union spoolss_MonitorInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
8526 uint32_t *_needed /* [out] [ref] */,
8529 struct spoolss_EnumMonitors r;
8533 r.in.servername = _servername;
8534 r.in.level = _level;
8535 r.in.buffer = _buffer;
8536 r.in.offered = _offered;
8538 status = dcerpc_spoolss_EnumMonitors_r(h, mem_ctx, &r);
8539 if (!NT_STATUS_IS_OK(status)) {
8543 /* Return variables */
8544 *_count = *r.out.count;
8545 *_info = *r.out.info;
8546 *_needed = *r.out.needed;
8549 *result = r.out.result;
8551 return NT_STATUS_OK;
8554 struct dcerpc_spoolss_AddPort_r_state {
8555 TALLOC_CTX *out_mem_ctx;
8558 static void dcerpc_spoolss_AddPort_r_done(struct tevent_req *subreq);
8560 struct tevent_req *dcerpc_spoolss_AddPort_r_send(TALLOC_CTX *mem_ctx,
8561 struct tevent_context *ev,
8562 struct dcerpc_binding_handle *h,
8563 struct spoolss_AddPort *r)
8565 struct tevent_req *req;
8566 struct dcerpc_spoolss_AddPort_r_state *state;
8567 struct tevent_req *subreq;
8569 req = tevent_req_create(mem_ctx, &state,
8570 struct dcerpc_spoolss_AddPort_r_state);
8575 state->out_mem_ctx = NULL;
8576 subreq = dcerpc_binding_handle_call_send(state, ev, h,
8577 NULL, &ndr_table_spoolss,
8578 NDR_SPOOLSS_ADDPORT, state, r);
8579 if (tevent_req_nomem(subreq, req)) {
8580 return tevent_req_post(req, ev);
8582 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPort_r_done, req);
8587 static void dcerpc_spoolss_AddPort_r_done(struct tevent_req *subreq)
8589 struct tevent_req *req =
8590 tevent_req_callback_data(subreq,
8594 status = dcerpc_binding_handle_call_recv(subreq);
8595 if (!NT_STATUS_IS_OK(status)) {
8596 tevent_req_nterror(req, status);
8600 tevent_req_done(req);
8603 NTSTATUS dcerpc_spoolss_AddPort_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
8605 struct dcerpc_spoolss_AddPort_r_state *state =
8606 tevent_req_data(req,
8607 struct dcerpc_spoolss_AddPort_r_state);
8610 if (tevent_req_is_nterror(req, &status)) {
8611 tevent_req_received(req);
8615 talloc_steal(mem_ctx, state->out_mem_ctx);
8617 tevent_req_received(req);
8618 return NT_STATUS_OK;
8621 NTSTATUS dcerpc_spoolss_AddPort_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPort *r)
8625 status = dcerpc_binding_handle_call(h,
8626 NULL, &ndr_table_spoolss,
8627 NDR_SPOOLSS_ADDPORT, mem_ctx, r);
8632 NTSTATUS dcerpc_spoolss_AddPort_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_AddPort *r)
8636 status = dcerpc_spoolss_AddPort_r(p->binding_handle, mem_ctx, r);
8638 if (NT_STATUS_IS_RPC(status)) {
8639 status = NT_STATUS_NET_WRITE_FAULT;
8645 struct dcerpc_spoolss_AddPort_state {
8646 struct spoolss_AddPort orig;
8647 struct spoolss_AddPort tmp;
8648 TALLOC_CTX *out_mem_ctx;
8651 static void dcerpc_spoolss_AddPort_done(struct tevent_req *subreq);
8653 struct tevent_req *dcerpc_spoolss_AddPort_send(TALLOC_CTX *mem_ctx,
8654 struct tevent_context *ev,
8655 struct dcerpc_binding_handle *h,
8656 const char *_server_name /* [in] [unique,charset(UTF16)] */,
8657 uint32_t _unknown /* [in] */,
8658 const char *_monitor_name /* [in] [charset(UTF16)] */)
8660 struct tevent_req *req;
8661 struct dcerpc_spoolss_AddPort_state *state;
8662 struct tevent_req *subreq;
8664 req = tevent_req_create(mem_ctx, &state,
8665 struct dcerpc_spoolss_AddPort_state);
8669 state->out_mem_ctx = NULL;
8672 state->orig.in.server_name = _server_name;
8673 state->orig.in.unknown = _unknown;
8674 state->orig.in.monitor_name = _monitor_name;
8676 /* Out parameters */
8679 ZERO_STRUCT(state->orig.out.result);
8681 /* make a temporary copy, that we pass to the dispatch function */
8682 state->tmp = state->orig;
8684 subreq = dcerpc_spoolss_AddPort_r_send(state, ev, h, &state->tmp);
8685 if (tevent_req_nomem(subreq, req)) {
8686 return tevent_req_post(req, ev);
8688 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPort_done, req);
8692 static void dcerpc_spoolss_AddPort_done(struct tevent_req *subreq)
8694 struct tevent_req *req = tevent_req_callback_data(
8695 subreq, struct tevent_req);
8696 struct dcerpc_spoolss_AddPort_state *state = tevent_req_data(
8697 req, struct dcerpc_spoolss_AddPort_state);
8699 TALLOC_CTX *mem_ctx;
8701 if (state->out_mem_ctx) {
8702 mem_ctx = state->out_mem_ctx;
8707 status = dcerpc_spoolss_AddPort_r_recv(subreq, mem_ctx);
8708 TALLOC_FREE(subreq);
8709 if (!NT_STATUS_IS_OK(status)) {
8710 tevent_req_nterror(req, status);
8714 /* Copy out parameters */
8717 state->orig.out.result = state->tmp.out.result;
8719 /* Reset temporary structure */
8720 ZERO_STRUCT(state->tmp);
8722 tevent_req_done(req);
8725 NTSTATUS dcerpc_spoolss_AddPort_recv(struct tevent_req *req,
8726 TALLOC_CTX *mem_ctx,
8729 struct dcerpc_spoolss_AddPort_state *state = tevent_req_data(
8730 req, struct dcerpc_spoolss_AddPort_state);
8733 if (tevent_req_is_nterror(req, &status)) {
8734 tevent_req_received(req);
8738 /* Steal possible out parameters to the callers context */
8739 talloc_steal(mem_ctx, state->out_mem_ctx);
8742 *result = state->orig.out.result;
8744 tevent_req_received(req);
8745 return NT_STATUS_OK;
8748 NTSTATUS dcerpc_spoolss_AddPort(struct dcerpc_binding_handle *h,
8749 TALLOC_CTX *mem_ctx,
8750 const char *_server_name /* [in] [unique,charset(UTF16)] */,
8751 uint32_t _unknown /* [in] */,
8752 const char *_monitor_name /* [in] [charset(UTF16)] */,
8755 struct spoolss_AddPort r;
8759 r.in.server_name = _server_name;
8760 r.in.unknown = _unknown;
8761 r.in.monitor_name = _monitor_name;
8763 status = dcerpc_spoolss_AddPort_r(h, mem_ctx, &r);
8764 if (!NT_STATUS_IS_OK(status)) {
8768 /* Return variables */
8771 *result = r.out.result;
8773 return NT_STATUS_OK;
8776 struct dcerpc_spoolss_CreatePrinterIC_r_state {
8777 TALLOC_CTX *out_mem_ctx;
8780 static void dcerpc_spoolss_CreatePrinterIC_r_done(struct tevent_req *subreq);
8782 struct tevent_req *dcerpc_spoolss_CreatePrinterIC_r_send(TALLOC_CTX *mem_ctx,
8783 struct tevent_context *ev,
8784 struct dcerpc_binding_handle *h,
8785 struct spoolss_CreatePrinterIC *r)
8787 struct tevent_req *req;
8788 struct dcerpc_spoolss_CreatePrinterIC_r_state *state;
8789 struct tevent_req *subreq;
8791 req = tevent_req_create(mem_ctx, &state,
8792 struct dcerpc_spoolss_CreatePrinterIC_r_state);
8797 state->out_mem_ctx = talloc_new(state);
8798 if (tevent_req_nomem(state->out_mem_ctx, req)) {
8799 return tevent_req_post(req, ev);
8802 subreq = dcerpc_binding_handle_call_send(state, ev, h,
8803 NULL, &ndr_table_spoolss,
8804 NDR_SPOOLSS_CREATEPRINTERIC, state->out_mem_ctx, r);
8805 if (tevent_req_nomem(subreq, req)) {
8806 return tevent_req_post(req, ev);
8808 tevent_req_set_callback(subreq, dcerpc_spoolss_CreatePrinterIC_r_done, req);
8813 static void dcerpc_spoolss_CreatePrinterIC_r_done(struct tevent_req *subreq)
8815 struct tevent_req *req =
8816 tevent_req_callback_data(subreq,
8820 status = dcerpc_binding_handle_call_recv(subreq);
8821 if (!NT_STATUS_IS_OK(status)) {
8822 tevent_req_nterror(req, status);
8826 tevent_req_done(req);
8829 NTSTATUS dcerpc_spoolss_CreatePrinterIC_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
8831 struct dcerpc_spoolss_CreatePrinterIC_r_state *state =
8832 tevent_req_data(req,
8833 struct dcerpc_spoolss_CreatePrinterIC_r_state);
8836 if (tevent_req_is_nterror(req, &status)) {
8837 tevent_req_received(req);
8841 talloc_steal(mem_ctx, state->out_mem_ctx);
8843 tevent_req_received(req);
8844 return NT_STATUS_OK;
8847 NTSTATUS dcerpc_spoolss_CreatePrinterIC_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_CreatePrinterIC *r)
8851 status = dcerpc_binding_handle_call(h,
8852 NULL, &ndr_table_spoolss,
8853 NDR_SPOOLSS_CREATEPRINTERIC, mem_ctx, r);
8858 NTSTATUS dcerpc_spoolss_CreatePrinterIC_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_CreatePrinterIC *r)
8862 status = dcerpc_spoolss_CreatePrinterIC_r(p->binding_handle, mem_ctx, r);
8864 if (NT_STATUS_IS_RPC(status)) {
8865 status = NT_STATUS_NET_WRITE_FAULT;
8871 struct dcerpc_spoolss_CreatePrinterIC_state {
8872 struct spoolss_CreatePrinterIC orig;
8873 struct spoolss_CreatePrinterIC tmp;
8874 TALLOC_CTX *out_mem_ctx;
8877 static void dcerpc_spoolss_CreatePrinterIC_done(struct tevent_req *subreq);
8879 struct tevent_req *dcerpc_spoolss_CreatePrinterIC_send(TALLOC_CTX *mem_ctx,
8880 struct tevent_context *ev,
8881 struct dcerpc_binding_handle *h,
8882 struct policy_handle *_handle /* [in] [ref] */,
8883 struct policy_handle *_gdi_handle /* [out] [ref] */,
8884 struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */)
8886 struct tevent_req *req;
8887 struct dcerpc_spoolss_CreatePrinterIC_state *state;
8888 struct tevent_req *subreq;
8890 req = tevent_req_create(mem_ctx, &state,
8891 struct dcerpc_spoolss_CreatePrinterIC_state);
8895 state->out_mem_ctx = NULL;
8898 state->orig.in.handle = _handle;
8899 state->orig.in.devmode_ctr = _devmode_ctr;
8901 /* Out parameters */
8902 state->orig.out.gdi_handle = _gdi_handle;
8905 ZERO_STRUCT(state->orig.out.result);
8907 state->out_mem_ctx = talloc_named_const(state, 0,
8908 "dcerpc_spoolss_CreatePrinterIC_out_memory");
8909 if (tevent_req_nomem(state->out_mem_ctx, req)) {
8910 return tevent_req_post(req, ev);
8913 /* make a temporary copy, that we pass to the dispatch function */
8914 state->tmp = state->orig;
8916 subreq = dcerpc_spoolss_CreatePrinterIC_r_send(state, ev, h, &state->tmp);
8917 if (tevent_req_nomem(subreq, req)) {
8918 return tevent_req_post(req, ev);
8920 tevent_req_set_callback(subreq, dcerpc_spoolss_CreatePrinterIC_done, req);
8924 static void dcerpc_spoolss_CreatePrinterIC_done(struct tevent_req *subreq)
8926 struct tevent_req *req = tevent_req_callback_data(
8927 subreq, struct tevent_req);
8928 struct dcerpc_spoolss_CreatePrinterIC_state *state = tevent_req_data(
8929 req, struct dcerpc_spoolss_CreatePrinterIC_state);
8931 TALLOC_CTX *mem_ctx;
8933 if (state->out_mem_ctx) {
8934 mem_ctx = state->out_mem_ctx;
8939 status = dcerpc_spoolss_CreatePrinterIC_r_recv(subreq, mem_ctx);
8940 TALLOC_FREE(subreq);
8941 if (!NT_STATUS_IS_OK(status)) {
8942 tevent_req_nterror(req, status);
8946 /* Copy out parameters */
8947 *state->orig.out.gdi_handle = *state->tmp.out.gdi_handle;
8950 state->orig.out.result = state->tmp.out.result;
8952 /* Reset temporary structure */
8953 ZERO_STRUCT(state->tmp);
8955 tevent_req_done(req);
8958 NTSTATUS dcerpc_spoolss_CreatePrinterIC_recv(struct tevent_req *req,
8959 TALLOC_CTX *mem_ctx,
8962 struct dcerpc_spoolss_CreatePrinterIC_state *state = tevent_req_data(
8963 req, struct dcerpc_spoolss_CreatePrinterIC_state);
8966 if (tevent_req_is_nterror(req, &status)) {
8967 tevent_req_received(req);
8971 /* Steal possible out parameters to the callers context */
8972 talloc_steal(mem_ctx, state->out_mem_ctx);
8975 *result = state->orig.out.result;
8977 tevent_req_received(req);
8978 return NT_STATUS_OK;
8981 NTSTATUS dcerpc_spoolss_CreatePrinterIC(struct dcerpc_binding_handle *h,
8982 TALLOC_CTX *mem_ctx,
8983 struct policy_handle *_handle /* [in] [ref] */,
8984 struct policy_handle *_gdi_handle /* [out] [ref] */,
8985 struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
8988 struct spoolss_CreatePrinterIC r;
8992 r.in.handle = _handle;
8993 r.in.devmode_ctr = _devmode_ctr;
8995 status = dcerpc_spoolss_CreatePrinterIC_r(h, mem_ctx, &r);
8996 if (!NT_STATUS_IS_OK(status)) {
9000 /* Return variables */
9001 *_gdi_handle = *r.out.gdi_handle;
9004 *result = r.out.result;
9006 return NT_STATUS_OK;
9009 struct dcerpc_spoolss_DeletePrinterIC_r_state {
9010 TALLOC_CTX *out_mem_ctx;
9013 static void dcerpc_spoolss_DeletePrinterIC_r_done(struct tevent_req *subreq);
9015 struct tevent_req *dcerpc_spoolss_DeletePrinterIC_r_send(TALLOC_CTX *mem_ctx,
9016 struct tevent_context *ev,
9017 struct dcerpc_binding_handle *h,
9018 struct spoolss_DeletePrinterIC *r)
9020 struct tevent_req *req;
9021 struct dcerpc_spoolss_DeletePrinterIC_r_state *state;
9022 struct tevent_req *subreq;
9024 req = tevent_req_create(mem_ctx, &state,
9025 struct dcerpc_spoolss_DeletePrinterIC_r_state);
9030 state->out_mem_ctx = talloc_new(state);
9031 if (tevent_req_nomem(state->out_mem_ctx, req)) {
9032 return tevent_req_post(req, ev);
9035 subreq = dcerpc_binding_handle_call_send(state, ev, h,
9036 NULL, &ndr_table_spoolss,
9037 NDR_SPOOLSS_DELETEPRINTERIC, state->out_mem_ctx, r);
9038 if (tevent_req_nomem(subreq, req)) {
9039 return tevent_req_post(req, ev);
9041 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterIC_r_done, req);
9046 static void dcerpc_spoolss_DeletePrinterIC_r_done(struct tevent_req *subreq)
9048 struct tevent_req *req =
9049 tevent_req_callback_data(subreq,
9053 status = dcerpc_binding_handle_call_recv(subreq);
9054 if (!NT_STATUS_IS_OK(status)) {
9055 tevent_req_nterror(req, status);
9059 tevent_req_done(req);
9062 NTSTATUS dcerpc_spoolss_DeletePrinterIC_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
9064 struct dcerpc_spoolss_DeletePrinterIC_r_state *state =
9065 tevent_req_data(req,
9066 struct dcerpc_spoolss_DeletePrinterIC_r_state);
9069 if (tevent_req_is_nterror(req, &status)) {
9070 tevent_req_received(req);
9074 talloc_steal(mem_ctx, state->out_mem_ctx);
9076 tevent_req_received(req);
9077 return NT_STATUS_OK;
9080 NTSTATUS dcerpc_spoolss_DeletePrinterIC_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterIC *r)
9084 status = dcerpc_binding_handle_call(h,
9085 NULL, &ndr_table_spoolss,
9086 NDR_SPOOLSS_DELETEPRINTERIC, mem_ctx, r);
9091 NTSTATUS dcerpc_spoolss_DeletePrinterIC_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterIC *r)
9095 status = dcerpc_spoolss_DeletePrinterIC_r(p->binding_handle, mem_ctx, r);
9097 if (NT_STATUS_IS_RPC(status)) {
9098 status = NT_STATUS_NET_WRITE_FAULT;
9104 struct dcerpc_spoolss_DeletePrinterIC_state {
9105 struct spoolss_DeletePrinterIC orig;
9106 struct spoolss_DeletePrinterIC tmp;
9107 TALLOC_CTX *out_mem_ctx;
9110 static void dcerpc_spoolss_DeletePrinterIC_done(struct tevent_req *subreq);
9112 struct tevent_req *dcerpc_spoolss_DeletePrinterIC_send(TALLOC_CTX *mem_ctx,
9113 struct tevent_context *ev,
9114 struct dcerpc_binding_handle *h,
9115 struct policy_handle *_gdi_handle /* [in,out] [ref] */)
9117 struct tevent_req *req;
9118 struct dcerpc_spoolss_DeletePrinterIC_state *state;
9119 struct tevent_req *subreq;
9121 req = tevent_req_create(mem_ctx, &state,
9122 struct dcerpc_spoolss_DeletePrinterIC_state);
9126 state->out_mem_ctx = NULL;
9129 state->orig.in.gdi_handle = _gdi_handle;
9131 /* Out parameters */
9132 state->orig.out.gdi_handle = _gdi_handle;
9135 ZERO_STRUCT(state->orig.out.result);
9137 state->out_mem_ctx = talloc_named_const(state, 0,
9138 "dcerpc_spoolss_DeletePrinterIC_out_memory");
9139 if (tevent_req_nomem(state->out_mem_ctx, req)) {
9140 return tevent_req_post(req, ev);
9143 /* make a temporary copy, that we pass to the dispatch function */
9144 state->tmp = state->orig;
9146 subreq = dcerpc_spoolss_DeletePrinterIC_r_send(state, ev, h, &state->tmp);
9147 if (tevent_req_nomem(subreq, req)) {
9148 return tevent_req_post(req, ev);
9150 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterIC_done, req);
9154 static void dcerpc_spoolss_DeletePrinterIC_done(struct tevent_req *subreq)
9156 struct tevent_req *req = tevent_req_callback_data(
9157 subreq, struct tevent_req);
9158 struct dcerpc_spoolss_DeletePrinterIC_state *state = tevent_req_data(
9159 req, struct dcerpc_spoolss_DeletePrinterIC_state);
9161 TALLOC_CTX *mem_ctx;
9163 if (state->out_mem_ctx) {
9164 mem_ctx = state->out_mem_ctx;
9169 status = dcerpc_spoolss_DeletePrinterIC_r_recv(subreq, mem_ctx);
9170 TALLOC_FREE(subreq);
9171 if (!NT_STATUS_IS_OK(status)) {
9172 tevent_req_nterror(req, status);
9176 /* Copy out parameters */
9177 *state->orig.out.gdi_handle = *state->tmp.out.gdi_handle;
9180 state->orig.out.result = state->tmp.out.result;
9182 /* Reset temporary structure */
9183 ZERO_STRUCT(state->tmp);
9185 tevent_req_done(req);
9188 NTSTATUS dcerpc_spoolss_DeletePrinterIC_recv(struct tevent_req *req,
9189 TALLOC_CTX *mem_ctx,
9192 struct dcerpc_spoolss_DeletePrinterIC_state *state = tevent_req_data(
9193 req, struct dcerpc_spoolss_DeletePrinterIC_state);
9196 if (tevent_req_is_nterror(req, &status)) {
9197 tevent_req_received(req);
9201 /* Steal possible out parameters to the callers context */
9202 talloc_steal(mem_ctx, state->out_mem_ctx);
9205 *result = state->orig.out.result;
9207 tevent_req_received(req);
9208 return NT_STATUS_OK;
9211 NTSTATUS dcerpc_spoolss_DeletePrinterIC(struct dcerpc_binding_handle *h,
9212 TALLOC_CTX *mem_ctx,
9213 struct policy_handle *_gdi_handle /* [in,out] [ref] */,
9216 struct spoolss_DeletePrinterIC r;
9220 r.in.gdi_handle = _gdi_handle;
9222 status = dcerpc_spoolss_DeletePrinterIC_r(h, mem_ctx, &r);
9223 if (!NT_STATUS_IS_OK(status)) {
9227 /* Return variables */
9228 *_gdi_handle = *r.out.gdi_handle;
9231 *result = r.out.result;
9233 return NT_STATUS_OK;
9236 struct dcerpc_spoolss_EnumPrintProcDataTypes_r_state {
9237 TALLOC_CTX *out_mem_ctx;
9240 static void dcerpc_spoolss_EnumPrintProcDataTypes_r_done(struct tevent_req *subreq);
9242 struct tevent_req *dcerpc_spoolss_EnumPrintProcDataTypes_r_send(TALLOC_CTX *mem_ctx,
9243 struct tevent_context *ev,
9244 struct dcerpc_binding_handle *h,
9245 struct spoolss_EnumPrintProcDataTypes *r)
9247 struct tevent_req *req;
9248 struct dcerpc_spoolss_EnumPrintProcDataTypes_r_state *state;
9249 struct tevent_req *subreq;
9251 req = tevent_req_create(mem_ctx, &state,
9252 struct dcerpc_spoolss_EnumPrintProcDataTypes_r_state);
9257 state->out_mem_ctx = talloc_new(state);
9258 if (tevent_req_nomem(state->out_mem_ctx, req)) {
9259 return tevent_req_post(req, ev);
9262 subreq = dcerpc_binding_handle_call_send(state, ev, h,
9263 NULL, &ndr_table_spoolss,
9264 NDR_SPOOLSS_ENUMPRINTPROCDATATYPES, state->out_mem_ctx, r);
9265 if (tevent_req_nomem(subreq, req)) {
9266 return tevent_req_post(req, ev);
9268 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrintProcDataTypes_r_done, req);
9273 static void dcerpc_spoolss_EnumPrintProcDataTypes_r_done(struct tevent_req *subreq)
9275 struct tevent_req *req =
9276 tevent_req_callback_data(subreq,
9280 status = dcerpc_binding_handle_call_recv(subreq);
9281 if (!NT_STATUS_IS_OK(status)) {
9282 tevent_req_nterror(req, status);
9286 tevent_req_done(req);
9289 NTSTATUS dcerpc_spoolss_EnumPrintProcDataTypes_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
9291 struct dcerpc_spoolss_EnumPrintProcDataTypes_r_state *state =
9292 tevent_req_data(req,
9293 struct dcerpc_spoolss_EnumPrintProcDataTypes_r_state);
9296 if (tevent_req_is_nterror(req, &status)) {
9297 tevent_req_received(req);
9301 talloc_steal(mem_ctx, state->out_mem_ctx);
9303 tevent_req_received(req);
9304 return NT_STATUS_OK;
9307 NTSTATUS dcerpc_spoolss_EnumPrintProcDataTypes_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrintProcDataTypes *r)
9311 status = dcerpc_binding_handle_call(h,
9312 NULL, &ndr_table_spoolss,
9313 NDR_SPOOLSS_ENUMPRINTPROCDATATYPES, mem_ctx, r);
9318 NTSTATUS dcerpc_spoolss_EnumPrintProcDataTypes_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrintProcDataTypes *r)
9322 status = dcerpc_spoolss_EnumPrintProcDataTypes_r(p->binding_handle, mem_ctx, r);
9324 if (NT_STATUS_IS_RPC(status)) {
9325 status = NT_STATUS_NET_WRITE_FAULT;
9331 struct dcerpc_spoolss_EnumPrintProcDataTypes_state {
9332 struct spoolss_EnumPrintProcDataTypes orig;
9333 struct spoolss_EnumPrintProcDataTypes tmp;
9334 TALLOC_CTX *out_mem_ctx;
9337 static void dcerpc_spoolss_EnumPrintProcDataTypes_done(struct tevent_req *subreq);
9339 struct tevent_req *dcerpc_spoolss_EnumPrintProcDataTypes_send(TALLOC_CTX *mem_ctx,
9340 struct tevent_context *ev,
9341 struct dcerpc_binding_handle *h,
9342 const char *_servername /* [in] [unique,charset(UTF16)] */,
9343 const char *_print_processor_name /* [in] [unique,charset(UTF16)] */,
9344 uint32_t _level /* [in] */,
9345 DATA_BLOB *_buffer /* [in] [unique] */,
9346 uint32_t _offered /* [in] */,
9347 uint32_t *_count /* [out] [ref] */,
9348 union spoolss_PrintProcDataTypesInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
9349 uint32_t *_needed /* [out] [ref] */)
9351 struct tevent_req *req;
9352 struct dcerpc_spoolss_EnumPrintProcDataTypes_state *state;
9353 struct tevent_req *subreq;
9355 req = tevent_req_create(mem_ctx, &state,
9356 struct dcerpc_spoolss_EnumPrintProcDataTypes_state);
9360 state->out_mem_ctx = NULL;
9363 state->orig.in.servername = _servername;
9364 state->orig.in.print_processor_name = _print_processor_name;
9365 state->orig.in.level = _level;
9366 state->orig.in.buffer = _buffer;
9367 state->orig.in.offered = _offered;
9369 /* Out parameters */
9370 state->orig.out.count = _count;
9371 state->orig.out.info = _info;
9372 state->orig.out.needed = _needed;
9375 ZERO_STRUCT(state->orig.out.result);
9377 state->out_mem_ctx = talloc_named_const(state, 0,
9378 "dcerpc_spoolss_EnumPrintProcDataTypes_out_memory");
9379 if (tevent_req_nomem(state->out_mem_ctx, req)) {
9380 return tevent_req_post(req, ev);
9383 /* make a temporary copy, that we pass to the dispatch function */
9384 state->tmp = state->orig;
9386 subreq = dcerpc_spoolss_EnumPrintProcDataTypes_r_send(state, ev, h, &state->tmp);
9387 if (tevent_req_nomem(subreq, req)) {
9388 return tevent_req_post(req, ev);
9390 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrintProcDataTypes_done, req);
9394 static void dcerpc_spoolss_EnumPrintProcDataTypes_done(struct tevent_req *subreq)
9396 struct tevent_req *req = tevent_req_callback_data(
9397 subreq, struct tevent_req);
9398 struct dcerpc_spoolss_EnumPrintProcDataTypes_state *state = tevent_req_data(
9399 req, struct dcerpc_spoolss_EnumPrintProcDataTypes_state);
9401 TALLOC_CTX *mem_ctx;
9403 if (state->out_mem_ctx) {
9404 mem_ctx = state->out_mem_ctx;
9409 status = dcerpc_spoolss_EnumPrintProcDataTypes_r_recv(subreq, mem_ctx);
9410 TALLOC_FREE(subreq);
9411 if (!NT_STATUS_IS_OK(status)) {
9412 tevent_req_nterror(req, status);
9416 /* Copy out parameters */
9417 *state->orig.out.count = *state->tmp.out.count;
9418 *state->orig.out.info = *state->tmp.out.info;
9419 *state->orig.out.needed = *state->tmp.out.needed;
9422 state->orig.out.result = state->tmp.out.result;
9424 /* Reset temporary structure */
9425 ZERO_STRUCT(state->tmp);
9427 tevent_req_done(req);
9430 NTSTATUS dcerpc_spoolss_EnumPrintProcDataTypes_recv(struct tevent_req *req,
9431 TALLOC_CTX *mem_ctx,
9434 struct dcerpc_spoolss_EnumPrintProcDataTypes_state *state = tevent_req_data(
9435 req, struct dcerpc_spoolss_EnumPrintProcDataTypes_state);
9438 if (tevent_req_is_nterror(req, &status)) {
9439 tevent_req_received(req);
9443 /* Steal possible out parameters to the callers context */
9444 talloc_steal(mem_ctx, state->out_mem_ctx);
9447 *result = state->orig.out.result;
9449 tevent_req_received(req);
9450 return NT_STATUS_OK;
9453 NTSTATUS dcerpc_spoolss_EnumPrintProcDataTypes(struct dcerpc_binding_handle *h,
9454 TALLOC_CTX *mem_ctx,
9455 const char *_servername /* [in] [unique,charset(UTF16)] */,
9456 const char *_print_processor_name /* [in] [unique,charset(UTF16)] */,
9457 uint32_t _level /* [in] */,
9458 DATA_BLOB *_buffer /* [in] [unique] */,
9459 uint32_t _offered /* [in] */,
9460 uint32_t *_count /* [out] [ref] */,
9461 union spoolss_PrintProcDataTypesInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
9462 uint32_t *_needed /* [out] [ref] */,
9465 struct spoolss_EnumPrintProcDataTypes r;
9469 r.in.servername = _servername;
9470 r.in.print_processor_name = _print_processor_name;
9471 r.in.level = _level;
9472 r.in.buffer = _buffer;
9473 r.in.offered = _offered;
9475 status = dcerpc_spoolss_EnumPrintProcDataTypes_r(h, mem_ctx, &r);
9476 if (!NT_STATUS_IS_OK(status)) {
9480 /* Return variables */
9481 *_count = *r.out.count;
9482 *_info = *r.out.info;
9483 *_needed = *r.out.needed;
9486 *result = r.out.result;
9488 return NT_STATUS_OK;
9491 struct dcerpc_spoolss_ResetPrinter_r_state {
9492 TALLOC_CTX *out_mem_ctx;
9495 static void dcerpc_spoolss_ResetPrinter_r_done(struct tevent_req *subreq);
9497 struct tevent_req *dcerpc_spoolss_ResetPrinter_r_send(TALLOC_CTX *mem_ctx,
9498 struct tevent_context *ev,
9499 struct dcerpc_binding_handle *h,
9500 struct spoolss_ResetPrinter *r)
9502 struct tevent_req *req;
9503 struct dcerpc_spoolss_ResetPrinter_r_state *state;
9504 struct tevent_req *subreq;
9506 req = tevent_req_create(mem_ctx, &state,
9507 struct dcerpc_spoolss_ResetPrinter_r_state);
9512 state->out_mem_ctx = NULL;
9513 subreq = dcerpc_binding_handle_call_send(state, ev, h,
9514 NULL, &ndr_table_spoolss,
9515 NDR_SPOOLSS_RESETPRINTER, state, r);
9516 if (tevent_req_nomem(subreq, req)) {
9517 return tevent_req_post(req, ev);
9519 tevent_req_set_callback(subreq, dcerpc_spoolss_ResetPrinter_r_done, req);
9524 static void dcerpc_spoolss_ResetPrinter_r_done(struct tevent_req *subreq)
9526 struct tevent_req *req =
9527 tevent_req_callback_data(subreq,
9531 status = dcerpc_binding_handle_call_recv(subreq);
9532 if (!NT_STATUS_IS_OK(status)) {
9533 tevent_req_nterror(req, status);
9537 tevent_req_done(req);
9540 NTSTATUS dcerpc_spoolss_ResetPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
9542 struct dcerpc_spoolss_ResetPrinter_r_state *state =
9543 tevent_req_data(req,
9544 struct dcerpc_spoolss_ResetPrinter_r_state);
9547 if (tevent_req_is_nterror(req, &status)) {
9548 tevent_req_received(req);
9552 talloc_steal(mem_ctx, state->out_mem_ctx);
9554 tevent_req_received(req);
9555 return NT_STATUS_OK;
9558 NTSTATUS dcerpc_spoolss_ResetPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ResetPrinter *r)
9562 status = dcerpc_binding_handle_call(h,
9563 NULL, &ndr_table_spoolss,
9564 NDR_SPOOLSS_RESETPRINTER, mem_ctx, r);
9569 NTSTATUS dcerpc_spoolss_ResetPrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_ResetPrinter *r)
9573 status = dcerpc_spoolss_ResetPrinter_r(p->binding_handle, mem_ctx, r);
9575 if (NT_STATUS_IS_RPC(status)) {
9576 status = NT_STATUS_NET_WRITE_FAULT;
9582 struct dcerpc_spoolss_ResetPrinter_state {
9583 struct spoolss_ResetPrinter orig;
9584 struct spoolss_ResetPrinter tmp;
9585 TALLOC_CTX *out_mem_ctx;
9588 static void dcerpc_spoolss_ResetPrinter_done(struct tevent_req *subreq);
9590 struct tevent_req *dcerpc_spoolss_ResetPrinter_send(TALLOC_CTX *mem_ctx,
9591 struct tevent_context *ev,
9592 struct dcerpc_binding_handle *h,
9593 struct policy_handle *_handle /* [in] [ref] */,
9594 const char *_data_type /* [in] [unique,charset(UTF16)] */,
9595 struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */)
9597 struct tevent_req *req;
9598 struct dcerpc_spoolss_ResetPrinter_state *state;
9599 struct tevent_req *subreq;
9601 req = tevent_req_create(mem_ctx, &state,
9602 struct dcerpc_spoolss_ResetPrinter_state);
9606 state->out_mem_ctx = NULL;
9609 state->orig.in.handle = _handle;
9610 state->orig.in.data_type = _data_type;
9611 state->orig.in.devmode_ctr = _devmode_ctr;
9613 /* Out parameters */
9616 ZERO_STRUCT(state->orig.out.result);
9618 /* make a temporary copy, that we pass to the dispatch function */
9619 state->tmp = state->orig;
9621 subreq = dcerpc_spoolss_ResetPrinter_r_send(state, ev, h, &state->tmp);
9622 if (tevent_req_nomem(subreq, req)) {
9623 return tevent_req_post(req, ev);
9625 tevent_req_set_callback(subreq, dcerpc_spoolss_ResetPrinter_done, req);
9629 static void dcerpc_spoolss_ResetPrinter_done(struct tevent_req *subreq)
9631 struct tevent_req *req = tevent_req_callback_data(
9632 subreq, struct tevent_req);
9633 struct dcerpc_spoolss_ResetPrinter_state *state = tevent_req_data(
9634 req, struct dcerpc_spoolss_ResetPrinter_state);
9636 TALLOC_CTX *mem_ctx;
9638 if (state->out_mem_ctx) {
9639 mem_ctx = state->out_mem_ctx;
9644 status = dcerpc_spoolss_ResetPrinter_r_recv(subreq, mem_ctx);
9645 TALLOC_FREE(subreq);
9646 if (!NT_STATUS_IS_OK(status)) {
9647 tevent_req_nterror(req, status);
9651 /* Copy out parameters */
9654 state->orig.out.result = state->tmp.out.result;
9656 /* Reset temporary structure */
9657 ZERO_STRUCT(state->tmp);
9659 tevent_req_done(req);
9662 NTSTATUS dcerpc_spoolss_ResetPrinter_recv(struct tevent_req *req,
9663 TALLOC_CTX *mem_ctx,
9666 struct dcerpc_spoolss_ResetPrinter_state *state = tevent_req_data(
9667 req, struct dcerpc_spoolss_ResetPrinter_state);
9670 if (tevent_req_is_nterror(req, &status)) {
9671 tevent_req_received(req);
9675 /* Steal possible out parameters to the callers context */
9676 talloc_steal(mem_ctx, state->out_mem_ctx);
9679 *result = state->orig.out.result;
9681 tevent_req_received(req);
9682 return NT_STATUS_OK;
9685 NTSTATUS dcerpc_spoolss_ResetPrinter(struct dcerpc_binding_handle *h,
9686 TALLOC_CTX *mem_ctx,
9687 struct policy_handle *_handle /* [in] [ref] */,
9688 const char *_data_type /* [in] [unique,charset(UTF16)] */,
9689 struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
9692 struct spoolss_ResetPrinter r;
9696 r.in.handle = _handle;
9697 r.in.data_type = _data_type;
9698 r.in.devmode_ctr = _devmode_ctr;
9700 status = dcerpc_spoolss_ResetPrinter_r(h, mem_ctx, &r);
9701 if (!NT_STATUS_IS_OK(status)) {
9705 /* Return variables */
9708 *result = r.out.result;
9710 return NT_STATUS_OK;
9713 struct dcerpc_spoolss_GetPrinterDriver2_r_state {
9714 TALLOC_CTX *out_mem_ctx;
9717 static void dcerpc_spoolss_GetPrinterDriver2_r_done(struct tevent_req *subreq);
9719 struct tevent_req *dcerpc_spoolss_GetPrinterDriver2_r_send(TALLOC_CTX *mem_ctx,
9720 struct tevent_context *ev,
9721 struct dcerpc_binding_handle *h,
9722 struct spoolss_GetPrinterDriver2 *r)
9724 struct tevent_req *req;
9725 struct dcerpc_spoolss_GetPrinterDriver2_r_state *state;
9726 struct tevent_req *subreq;
9728 req = tevent_req_create(mem_ctx, &state,
9729 struct dcerpc_spoolss_GetPrinterDriver2_r_state);
9734 state->out_mem_ctx = talloc_new(state);
9735 if (tevent_req_nomem(state->out_mem_ctx, req)) {
9736 return tevent_req_post(req, ev);
9739 subreq = dcerpc_binding_handle_call_send(state, ev, h,
9740 NULL, &ndr_table_spoolss,
9741 NDR_SPOOLSS_GETPRINTERDRIVER2, state->out_mem_ctx, r);
9742 if (tevent_req_nomem(subreq, req)) {
9743 return tevent_req_post(req, ev);
9745 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriver2_r_done, req);
9750 static void dcerpc_spoolss_GetPrinterDriver2_r_done(struct tevent_req *subreq)
9752 struct tevent_req *req =
9753 tevent_req_callback_data(subreq,
9757 status = dcerpc_binding_handle_call_recv(subreq);
9758 if (!NT_STATUS_IS_OK(status)) {
9759 tevent_req_nterror(req, status);
9763 tevent_req_done(req);
9766 NTSTATUS dcerpc_spoolss_GetPrinterDriver2_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
9768 struct dcerpc_spoolss_GetPrinterDriver2_r_state *state =
9769 tevent_req_data(req,
9770 struct dcerpc_spoolss_GetPrinterDriver2_r_state);
9773 if (tevent_req_is_nterror(req, &status)) {
9774 tevent_req_received(req);
9778 talloc_steal(mem_ctx, state->out_mem_ctx);
9780 tevent_req_received(req);
9781 return NT_STATUS_OK;
9784 NTSTATUS dcerpc_spoolss_GetPrinterDriver2_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDriver2 *r)
9788 status = dcerpc_binding_handle_call(h,
9789 NULL, &ndr_table_spoolss,
9790 NDR_SPOOLSS_GETPRINTERDRIVER2, mem_ctx, r);
9795 NTSTATUS dcerpc_spoolss_GetPrinterDriver2_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDriver2 *r)
9799 status = dcerpc_spoolss_GetPrinterDriver2_r(p->binding_handle, mem_ctx, r);
9801 if (NT_STATUS_IS_RPC(status)) {
9802 status = NT_STATUS_NET_WRITE_FAULT;
9808 struct dcerpc_spoolss_GetPrinterDriver2_state {
9809 struct spoolss_GetPrinterDriver2 orig;
9810 struct spoolss_GetPrinterDriver2 tmp;
9811 TALLOC_CTX *out_mem_ctx;
9814 static void dcerpc_spoolss_GetPrinterDriver2_done(struct tevent_req *subreq);
9816 struct tevent_req *dcerpc_spoolss_GetPrinterDriver2_send(TALLOC_CTX *mem_ctx,
9817 struct tevent_context *ev,
9818 struct dcerpc_binding_handle *h,
9819 struct policy_handle *_handle /* [in] [ref] */,
9820 const char *_architecture /* [in] [unique,charset(UTF16)] */,
9821 uint32_t _level /* [in] */,
9822 DATA_BLOB *_buffer /* [in] [unique] */,
9823 uint32_t _offered /* [in] */,
9824 uint32_t _client_major_version /* [in] */,
9825 uint32_t _client_minor_version /* [in] */,
9826 union spoolss_DriverInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
9827 uint32_t *_needed /* [out] [ref] */,
9828 uint32_t *_server_major_version /* [out] [ref] */,
9829 uint32_t *_server_minor_version /* [out] [ref] */)
9831 struct tevent_req *req;
9832 struct dcerpc_spoolss_GetPrinterDriver2_state *state;
9833 struct tevent_req *subreq;
9835 req = tevent_req_create(mem_ctx, &state,
9836 struct dcerpc_spoolss_GetPrinterDriver2_state);
9840 state->out_mem_ctx = NULL;
9843 state->orig.in.handle = _handle;
9844 state->orig.in.architecture = _architecture;
9845 state->orig.in.level = _level;
9846 state->orig.in.buffer = _buffer;
9847 state->orig.in.offered = _offered;
9848 state->orig.in.client_major_version = _client_major_version;
9849 state->orig.in.client_minor_version = _client_minor_version;
9851 /* Out parameters */
9852 state->orig.out.info = _info;
9853 state->orig.out.needed = _needed;
9854 state->orig.out.server_major_version = _server_major_version;
9855 state->orig.out.server_minor_version = _server_minor_version;
9858 ZERO_STRUCT(state->orig.out.result);
9860 state->out_mem_ctx = talloc_named_const(state, 0,
9861 "dcerpc_spoolss_GetPrinterDriver2_out_memory");
9862 if (tevent_req_nomem(state->out_mem_ctx, req)) {
9863 return tevent_req_post(req, ev);
9866 /* make a temporary copy, that we pass to the dispatch function */
9867 state->tmp = state->orig;
9869 subreq = dcerpc_spoolss_GetPrinterDriver2_r_send(state, ev, h, &state->tmp);
9870 if (tevent_req_nomem(subreq, req)) {
9871 return tevent_req_post(req, ev);
9873 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriver2_done, req);
9877 static void dcerpc_spoolss_GetPrinterDriver2_done(struct tevent_req *subreq)
9879 struct tevent_req *req = tevent_req_callback_data(
9880 subreq, struct tevent_req);
9881 struct dcerpc_spoolss_GetPrinterDriver2_state *state = tevent_req_data(
9882 req, struct dcerpc_spoolss_GetPrinterDriver2_state);
9884 TALLOC_CTX *mem_ctx;
9886 if (state->out_mem_ctx) {
9887 mem_ctx = state->out_mem_ctx;
9892 status = dcerpc_spoolss_GetPrinterDriver2_r_recv(subreq, mem_ctx);
9893 TALLOC_FREE(subreq);
9894 if (!NT_STATUS_IS_OK(status)) {
9895 tevent_req_nterror(req, status);
9899 /* Copy out parameters */
9900 if (state->orig.out.info && state->tmp.out.info) {
9901 *state->orig.out.info = *state->tmp.out.info;
9903 *state->orig.out.needed = *state->tmp.out.needed;
9904 *state->orig.out.server_major_version = *state->tmp.out.server_major_version;
9905 *state->orig.out.server_minor_version = *state->tmp.out.server_minor_version;
9908 state->orig.out.result = state->tmp.out.result;
9910 /* Reset temporary structure */
9911 ZERO_STRUCT(state->tmp);
9913 tevent_req_done(req);
9916 NTSTATUS dcerpc_spoolss_GetPrinterDriver2_recv(struct tevent_req *req,
9917 TALLOC_CTX *mem_ctx,
9920 struct dcerpc_spoolss_GetPrinterDriver2_state *state = tevent_req_data(
9921 req, struct dcerpc_spoolss_GetPrinterDriver2_state);
9924 if (tevent_req_is_nterror(req, &status)) {
9925 tevent_req_received(req);
9929 /* Steal possible out parameters to the callers context */
9930 talloc_steal(mem_ctx, state->out_mem_ctx);
9933 *result = state->orig.out.result;
9935 tevent_req_received(req);
9936 return NT_STATUS_OK;
9939 NTSTATUS dcerpc_spoolss_GetPrinterDriver2(struct dcerpc_binding_handle *h,
9940 TALLOC_CTX *mem_ctx,
9941 struct policy_handle *_handle /* [in] [ref] */,
9942 const char *_architecture /* [in] [unique,charset(UTF16)] */,
9943 uint32_t _level /* [in] */,
9944 DATA_BLOB *_buffer /* [in] [unique] */,
9945 uint32_t _offered /* [in] */,
9946 uint32_t _client_major_version /* [in] */,
9947 uint32_t _client_minor_version /* [in] */,
9948 union spoolss_DriverInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
9949 uint32_t *_needed /* [out] [ref] */,
9950 uint32_t *_server_major_version /* [out] [ref] */,
9951 uint32_t *_server_minor_version /* [out] [ref] */,
9954 struct spoolss_GetPrinterDriver2 r;
9958 r.in.handle = _handle;
9959 r.in.architecture = _architecture;
9960 r.in.level = _level;
9961 r.in.buffer = _buffer;
9962 r.in.offered = _offered;
9963 r.in.client_major_version = _client_major_version;
9964 r.in.client_minor_version = _client_minor_version;
9966 status = dcerpc_spoolss_GetPrinterDriver2_r(h, mem_ctx, &r);
9967 if (!NT_STATUS_IS_OK(status)) {
9971 /* Return variables */
9972 if (_info && r.out.info) {
9973 *_info = *r.out.info;
9975 *_needed = *r.out.needed;
9976 *_server_major_version = *r.out.server_major_version;
9977 *_server_minor_version = *r.out.server_minor_version;
9980 *result = r.out.result;
9982 return NT_STATUS_OK;
9985 struct dcerpc_spoolss_FindClosePrinterNotify_r_state {
9986 TALLOC_CTX *out_mem_ctx;
9989 static void dcerpc_spoolss_FindClosePrinterNotify_r_done(struct tevent_req *subreq);
9991 struct tevent_req *dcerpc_spoolss_FindClosePrinterNotify_r_send(TALLOC_CTX *mem_ctx,
9992 struct tevent_context *ev,
9993 struct dcerpc_binding_handle *h,
9994 struct spoolss_FindClosePrinterNotify *r)
9996 struct tevent_req *req;
9997 struct dcerpc_spoolss_FindClosePrinterNotify_r_state *state;
9998 struct tevent_req *subreq;
10000 req = tevent_req_create(mem_ctx, &state,
10001 struct dcerpc_spoolss_FindClosePrinterNotify_r_state);
10006 state->out_mem_ctx = NULL;
10007 subreq = dcerpc_binding_handle_call_send(state, ev, h,
10008 NULL, &ndr_table_spoolss,
10009 NDR_SPOOLSS_FINDCLOSEPRINTERNOTIFY, state, r);
10010 if (tevent_req_nomem(subreq, req)) {
10011 return tevent_req_post(req, ev);
10013 tevent_req_set_callback(subreq, dcerpc_spoolss_FindClosePrinterNotify_r_done, req);
10018 static void dcerpc_spoolss_FindClosePrinterNotify_r_done(struct tevent_req *subreq)
10020 struct tevent_req *req =
10021 tevent_req_callback_data(subreq,
10022 struct tevent_req);
10025 status = dcerpc_binding_handle_call_recv(subreq);
10026 if (!NT_STATUS_IS_OK(status)) {
10027 tevent_req_nterror(req, status);
10031 tevent_req_done(req);
10034 NTSTATUS dcerpc_spoolss_FindClosePrinterNotify_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
10036 struct dcerpc_spoolss_FindClosePrinterNotify_r_state *state =
10037 tevent_req_data(req,
10038 struct dcerpc_spoolss_FindClosePrinterNotify_r_state);
10041 if (tevent_req_is_nterror(req, &status)) {
10042 tevent_req_received(req);
10046 talloc_steal(mem_ctx, state->out_mem_ctx);
10048 tevent_req_received(req);
10049 return NT_STATUS_OK;
10052 NTSTATUS dcerpc_spoolss_FindClosePrinterNotify_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_FindClosePrinterNotify *r)
10056 status = dcerpc_binding_handle_call(h,
10057 NULL, &ndr_table_spoolss,
10058 NDR_SPOOLSS_FINDCLOSEPRINTERNOTIFY, mem_ctx, r);
10063 NTSTATUS dcerpc_spoolss_FindClosePrinterNotify_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_FindClosePrinterNotify *r)
10067 status = dcerpc_spoolss_FindClosePrinterNotify_r(p->binding_handle, mem_ctx, r);
10069 if (NT_STATUS_IS_RPC(status)) {
10070 status = NT_STATUS_NET_WRITE_FAULT;
10076 struct dcerpc_spoolss_FindClosePrinterNotify_state {
10077 struct spoolss_FindClosePrinterNotify orig;
10078 struct spoolss_FindClosePrinterNotify tmp;
10079 TALLOC_CTX *out_mem_ctx;
10082 static void dcerpc_spoolss_FindClosePrinterNotify_done(struct tevent_req *subreq);
10084 struct tevent_req *dcerpc_spoolss_FindClosePrinterNotify_send(TALLOC_CTX *mem_ctx,
10085 struct tevent_context *ev,
10086 struct dcerpc_binding_handle *h,
10087 struct policy_handle *_handle /* [in] [ref] */)
10089 struct tevent_req *req;
10090 struct dcerpc_spoolss_FindClosePrinterNotify_state *state;
10091 struct tevent_req *subreq;
10093 req = tevent_req_create(mem_ctx, &state,
10094 struct dcerpc_spoolss_FindClosePrinterNotify_state);
10098 state->out_mem_ctx = NULL;
10100 /* In parameters */
10101 state->orig.in.handle = _handle;
10103 /* Out parameters */
10106 ZERO_STRUCT(state->orig.out.result);
10108 /* make a temporary copy, that we pass to the dispatch function */
10109 state->tmp = state->orig;
10111 subreq = dcerpc_spoolss_FindClosePrinterNotify_r_send(state, ev, h, &state->tmp);
10112 if (tevent_req_nomem(subreq, req)) {
10113 return tevent_req_post(req, ev);
10115 tevent_req_set_callback(subreq, dcerpc_spoolss_FindClosePrinterNotify_done, req);
10119 static void dcerpc_spoolss_FindClosePrinterNotify_done(struct tevent_req *subreq)
10121 struct tevent_req *req = tevent_req_callback_data(
10122 subreq, struct tevent_req);
10123 struct dcerpc_spoolss_FindClosePrinterNotify_state *state = tevent_req_data(
10124 req, struct dcerpc_spoolss_FindClosePrinterNotify_state);
10126 TALLOC_CTX *mem_ctx;
10128 if (state->out_mem_ctx) {
10129 mem_ctx = state->out_mem_ctx;
10134 status = dcerpc_spoolss_FindClosePrinterNotify_r_recv(subreq, mem_ctx);
10135 TALLOC_FREE(subreq);
10136 if (!NT_STATUS_IS_OK(status)) {
10137 tevent_req_nterror(req, status);
10141 /* Copy out parameters */
10144 state->orig.out.result = state->tmp.out.result;
10146 /* Reset temporary structure */
10147 ZERO_STRUCT(state->tmp);
10149 tevent_req_done(req);
10152 NTSTATUS dcerpc_spoolss_FindClosePrinterNotify_recv(struct tevent_req *req,
10153 TALLOC_CTX *mem_ctx,
10156 struct dcerpc_spoolss_FindClosePrinterNotify_state *state = tevent_req_data(
10157 req, struct dcerpc_spoolss_FindClosePrinterNotify_state);
10160 if (tevent_req_is_nterror(req, &status)) {
10161 tevent_req_received(req);
10165 /* Steal possible out parameters to the callers context */
10166 talloc_steal(mem_ctx, state->out_mem_ctx);
10168 /* Return result */
10169 *result = state->orig.out.result;
10171 tevent_req_received(req);
10172 return NT_STATUS_OK;
10175 NTSTATUS dcerpc_spoolss_FindClosePrinterNotify(struct dcerpc_binding_handle *h,
10176 TALLOC_CTX *mem_ctx,
10177 struct policy_handle *_handle /* [in] [ref] */,
10180 struct spoolss_FindClosePrinterNotify r;
10183 /* In parameters */
10184 r.in.handle = _handle;
10186 status = dcerpc_spoolss_FindClosePrinterNotify_r(h, mem_ctx, &r);
10187 if (!NT_STATUS_IS_OK(status)) {
10191 /* Return variables */
10193 /* Return result */
10194 *result = r.out.result;
10196 return NT_STATUS_OK;
10199 struct dcerpc_spoolss_ReplyOpenPrinter_r_state {
10200 TALLOC_CTX *out_mem_ctx;
10203 static void dcerpc_spoolss_ReplyOpenPrinter_r_done(struct tevent_req *subreq);
10205 struct tevent_req *dcerpc_spoolss_ReplyOpenPrinter_r_send(TALLOC_CTX *mem_ctx,
10206 struct tevent_context *ev,
10207 struct dcerpc_binding_handle *h,
10208 struct spoolss_ReplyOpenPrinter *r)
10210 struct tevent_req *req;
10211 struct dcerpc_spoolss_ReplyOpenPrinter_r_state *state;
10212 struct tevent_req *subreq;
10214 req = tevent_req_create(mem_ctx, &state,
10215 struct dcerpc_spoolss_ReplyOpenPrinter_r_state);
10220 state->out_mem_ctx = talloc_new(state);
10221 if (tevent_req_nomem(state->out_mem_ctx, req)) {
10222 return tevent_req_post(req, ev);
10225 subreq = dcerpc_binding_handle_call_send(state, ev, h,
10226 NULL, &ndr_table_spoolss,
10227 NDR_SPOOLSS_REPLYOPENPRINTER, state->out_mem_ctx, r);
10228 if (tevent_req_nomem(subreq, req)) {
10229 return tevent_req_post(req, ev);
10231 tevent_req_set_callback(subreq, dcerpc_spoolss_ReplyOpenPrinter_r_done, req);
10236 static void dcerpc_spoolss_ReplyOpenPrinter_r_done(struct tevent_req *subreq)
10238 struct tevent_req *req =
10239 tevent_req_callback_data(subreq,
10240 struct tevent_req);
10243 status = dcerpc_binding_handle_call_recv(subreq);
10244 if (!NT_STATUS_IS_OK(status)) {
10245 tevent_req_nterror(req, status);
10249 tevent_req_done(req);
10252 NTSTATUS dcerpc_spoolss_ReplyOpenPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
10254 struct dcerpc_spoolss_ReplyOpenPrinter_r_state *state =
10255 tevent_req_data(req,
10256 struct dcerpc_spoolss_ReplyOpenPrinter_r_state);
10259 if (tevent_req_is_nterror(req, &status)) {
10260 tevent_req_received(req);
10264 talloc_steal(mem_ctx, state->out_mem_ctx);
10266 tevent_req_received(req);
10267 return NT_STATUS_OK;
10270 NTSTATUS dcerpc_spoolss_ReplyOpenPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ReplyOpenPrinter *r)
10274 status = dcerpc_binding_handle_call(h,
10275 NULL, &ndr_table_spoolss,
10276 NDR_SPOOLSS_REPLYOPENPRINTER, mem_ctx, r);
10281 NTSTATUS dcerpc_spoolss_ReplyOpenPrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_ReplyOpenPrinter *r)
10285 status = dcerpc_spoolss_ReplyOpenPrinter_r(p->binding_handle, mem_ctx, r);
10287 if (NT_STATUS_IS_RPC(status)) {
10288 status = NT_STATUS_NET_WRITE_FAULT;
10294 struct dcerpc_spoolss_ReplyOpenPrinter_state {
10295 struct spoolss_ReplyOpenPrinter orig;
10296 struct spoolss_ReplyOpenPrinter tmp;
10297 TALLOC_CTX *out_mem_ctx;
10300 static void dcerpc_spoolss_ReplyOpenPrinter_done(struct tevent_req *subreq);
10302 struct tevent_req *dcerpc_spoolss_ReplyOpenPrinter_send(TALLOC_CTX *mem_ctx,
10303 struct tevent_context *ev,
10304 struct dcerpc_binding_handle *h,
10305 const char *_server_name /* [in] [charset(UTF16)] */,
10306 uint32_t _printer_local /* [in] */,
10307 enum winreg_Type _type /* [in] */,
10308 uint32_t _bufsize /* [in] [range(0,512)] */,
10309 uint8_t *_buffer /* [in] [unique,size_is(bufsize)] */,
10310 struct policy_handle *_handle /* [out] [ref] */)
10312 struct tevent_req *req;
10313 struct dcerpc_spoolss_ReplyOpenPrinter_state *state;
10314 struct tevent_req *subreq;
10316 req = tevent_req_create(mem_ctx, &state,
10317 struct dcerpc_spoolss_ReplyOpenPrinter_state);
10321 state->out_mem_ctx = NULL;
10323 /* In parameters */
10324 state->orig.in.server_name = _server_name;
10325 state->orig.in.printer_local = _printer_local;
10326 state->orig.in.type = _type;
10327 state->orig.in.bufsize = _bufsize;
10328 state->orig.in.buffer = _buffer;
10330 /* Out parameters */
10331 state->orig.out.handle = _handle;
10334 ZERO_STRUCT(state->orig.out.result);
10336 state->out_mem_ctx = talloc_named_const(state, 0,
10337 "dcerpc_spoolss_ReplyOpenPrinter_out_memory");
10338 if (tevent_req_nomem(state->out_mem_ctx, req)) {
10339 return tevent_req_post(req, ev);
10342 /* make a temporary copy, that we pass to the dispatch function */
10343 state->tmp = state->orig;
10345 subreq = dcerpc_spoolss_ReplyOpenPrinter_r_send(state, ev, h, &state->tmp);
10346 if (tevent_req_nomem(subreq, req)) {
10347 return tevent_req_post(req, ev);
10349 tevent_req_set_callback(subreq, dcerpc_spoolss_ReplyOpenPrinter_done, req);
10353 static void dcerpc_spoolss_ReplyOpenPrinter_done(struct tevent_req *subreq)
10355 struct tevent_req *req = tevent_req_callback_data(
10356 subreq, struct tevent_req);
10357 struct dcerpc_spoolss_ReplyOpenPrinter_state *state = tevent_req_data(
10358 req, struct dcerpc_spoolss_ReplyOpenPrinter_state);
10360 TALLOC_CTX *mem_ctx;
10362 if (state->out_mem_ctx) {
10363 mem_ctx = state->out_mem_ctx;
10368 status = dcerpc_spoolss_ReplyOpenPrinter_r_recv(subreq, mem_ctx);
10369 TALLOC_FREE(subreq);
10370 if (!NT_STATUS_IS_OK(status)) {
10371 tevent_req_nterror(req, status);
10375 /* Copy out parameters */
10376 *state->orig.out.handle = *state->tmp.out.handle;
10379 state->orig.out.result = state->tmp.out.result;
10381 /* Reset temporary structure */
10382 ZERO_STRUCT(state->tmp);
10384 tevent_req_done(req);
10387 NTSTATUS dcerpc_spoolss_ReplyOpenPrinter_recv(struct tevent_req *req,
10388 TALLOC_CTX *mem_ctx,
10391 struct dcerpc_spoolss_ReplyOpenPrinter_state *state = tevent_req_data(
10392 req, struct dcerpc_spoolss_ReplyOpenPrinter_state);
10395 if (tevent_req_is_nterror(req, &status)) {
10396 tevent_req_received(req);
10400 /* Steal possible out parameters to the callers context */
10401 talloc_steal(mem_ctx, state->out_mem_ctx);
10403 /* Return result */
10404 *result = state->orig.out.result;
10406 tevent_req_received(req);
10407 return NT_STATUS_OK;
10410 NTSTATUS dcerpc_spoolss_ReplyOpenPrinter(struct dcerpc_binding_handle *h,
10411 TALLOC_CTX *mem_ctx,
10412 const char *_server_name /* [in] [charset(UTF16)] */,
10413 uint32_t _printer_local /* [in] */,
10414 enum winreg_Type _type /* [in] */,
10415 uint32_t _bufsize /* [in] [range(0,512)] */,
10416 uint8_t *_buffer /* [in] [unique,size_is(bufsize)] */,
10417 struct policy_handle *_handle /* [out] [ref] */,
10420 struct spoolss_ReplyOpenPrinter r;
10423 /* In parameters */
10424 r.in.server_name = _server_name;
10425 r.in.printer_local = _printer_local;
10427 r.in.bufsize = _bufsize;
10428 r.in.buffer = _buffer;
10430 status = dcerpc_spoolss_ReplyOpenPrinter_r(h, mem_ctx, &r);
10431 if (!NT_STATUS_IS_OK(status)) {
10435 /* Return variables */
10436 *_handle = *r.out.handle;
10438 /* Return result */
10439 *result = r.out.result;
10441 return NT_STATUS_OK;
10444 struct dcerpc_spoolss_RouterReplyPrinter_r_state {
10445 TALLOC_CTX *out_mem_ctx;
10448 static void dcerpc_spoolss_RouterReplyPrinter_r_done(struct tevent_req *subreq);
10450 struct tevent_req *dcerpc_spoolss_RouterReplyPrinter_r_send(TALLOC_CTX *mem_ctx,
10451 struct tevent_context *ev,
10452 struct dcerpc_binding_handle *h,
10453 struct spoolss_RouterReplyPrinter *r)
10455 struct tevent_req *req;
10456 struct dcerpc_spoolss_RouterReplyPrinter_r_state *state;
10457 struct tevent_req *subreq;
10459 req = tevent_req_create(mem_ctx, &state,
10460 struct dcerpc_spoolss_RouterReplyPrinter_r_state);
10465 state->out_mem_ctx = NULL;
10466 subreq = dcerpc_binding_handle_call_send(state, ev, h,
10467 NULL, &ndr_table_spoolss,
10468 NDR_SPOOLSS_ROUTERREPLYPRINTER, state, r);
10469 if (tevent_req_nomem(subreq, req)) {
10470 return tevent_req_post(req, ev);
10472 tevent_req_set_callback(subreq, dcerpc_spoolss_RouterReplyPrinter_r_done, req);
10477 static void dcerpc_spoolss_RouterReplyPrinter_r_done(struct tevent_req *subreq)
10479 struct tevent_req *req =
10480 tevent_req_callback_data(subreq,
10481 struct tevent_req);
10484 status = dcerpc_binding_handle_call_recv(subreq);
10485 if (!NT_STATUS_IS_OK(status)) {
10486 tevent_req_nterror(req, status);
10490 tevent_req_done(req);
10493 NTSTATUS dcerpc_spoolss_RouterReplyPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
10495 struct dcerpc_spoolss_RouterReplyPrinter_r_state *state =
10496 tevent_req_data(req,
10497 struct dcerpc_spoolss_RouterReplyPrinter_r_state);
10500 if (tevent_req_is_nterror(req, &status)) {
10501 tevent_req_received(req);
10505 talloc_steal(mem_ctx, state->out_mem_ctx);
10507 tevent_req_received(req);
10508 return NT_STATUS_OK;
10511 NTSTATUS dcerpc_spoolss_RouterReplyPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_RouterReplyPrinter *r)
10515 status = dcerpc_binding_handle_call(h,
10516 NULL, &ndr_table_spoolss,
10517 NDR_SPOOLSS_ROUTERREPLYPRINTER, mem_ctx, r);
10522 NTSTATUS dcerpc_spoolss_RouterReplyPrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_RouterReplyPrinter *r)
10526 status = dcerpc_spoolss_RouterReplyPrinter_r(p->binding_handle, mem_ctx, r);
10528 if (NT_STATUS_IS_RPC(status)) {
10529 status = NT_STATUS_NET_WRITE_FAULT;
10535 struct dcerpc_spoolss_RouterReplyPrinter_state {
10536 struct spoolss_RouterReplyPrinter orig;
10537 struct spoolss_RouterReplyPrinter tmp;
10538 TALLOC_CTX *out_mem_ctx;
10541 static void dcerpc_spoolss_RouterReplyPrinter_done(struct tevent_req *subreq);
10543 struct tevent_req *dcerpc_spoolss_RouterReplyPrinter_send(TALLOC_CTX *mem_ctx,
10544 struct tevent_context *ev,
10545 struct dcerpc_binding_handle *h,
10546 struct policy_handle *_handle /* [in] [ref] */,
10547 uint32_t _flags /* [in] */,
10548 uint32_t _bufsize /* [in] [range(0,512)] */,
10549 uint8_t *_buffer /* [in] [unique,size_is(bufsize)] */)
10551 struct tevent_req *req;
10552 struct dcerpc_spoolss_RouterReplyPrinter_state *state;
10553 struct tevent_req *subreq;
10555 req = tevent_req_create(mem_ctx, &state,
10556 struct dcerpc_spoolss_RouterReplyPrinter_state);
10560 state->out_mem_ctx = NULL;
10562 /* In parameters */
10563 state->orig.in.handle = _handle;
10564 state->orig.in.flags = _flags;
10565 state->orig.in.bufsize = _bufsize;
10566 state->orig.in.buffer = _buffer;
10568 /* Out parameters */
10571 ZERO_STRUCT(state->orig.out.result);
10573 /* make a temporary copy, that we pass to the dispatch function */
10574 state->tmp = state->orig;
10576 subreq = dcerpc_spoolss_RouterReplyPrinter_r_send(state, ev, h, &state->tmp);
10577 if (tevent_req_nomem(subreq, req)) {
10578 return tevent_req_post(req, ev);
10580 tevent_req_set_callback(subreq, dcerpc_spoolss_RouterReplyPrinter_done, req);
10584 static void dcerpc_spoolss_RouterReplyPrinter_done(struct tevent_req *subreq)
10586 struct tevent_req *req = tevent_req_callback_data(
10587 subreq, struct tevent_req);
10588 struct dcerpc_spoolss_RouterReplyPrinter_state *state = tevent_req_data(
10589 req, struct dcerpc_spoolss_RouterReplyPrinter_state);
10591 TALLOC_CTX *mem_ctx;
10593 if (state->out_mem_ctx) {
10594 mem_ctx = state->out_mem_ctx;
10599 status = dcerpc_spoolss_RouterReplyPrinter_r_recv(subreq, mem_ctx);
10600 TALLOC_FREE(subreq);
10601 if (!NT_STATUS_IS_OK(status)) {
10602 tevent_req_nterror(req, status);
10606 /* Copy out parameters */
10609 state->orig.out.result = state->tmp.out.result;
10611 /* Reset temporary structure */
10612 ZERO_STRUCT(state->tmp);
10614 tevent_req_done(req);
10617 NTSTATUS dcerpc_spoolss_RouterReplyPrinter_recv(struct tevent_req *req,
10618 TALLOC_CTX *mem_ctx,
10621 struct dcerpc_spoolss_RouterReplyPrinter_state *state = tevent_req_data(
10622 req, struct dcerpc_spoolss_RouterReplyPrinter_state);
10625 if (tevent_req_is_nterror(req, &status)) {
10626 tevent_req_received(req);
10630 /* Steal possible out parameters to the callers context */
10631 talloc_steal(mem_ctx, state->out_mem_ctx);
10633 /* Return result */
10634 *result = state->orig.out.result;
10636 tevent_req_received(req);
10637 return NT_STATUS_OK;
10640 NTSTATUS dcerpc_spoolss_RouterReplyPrinter(struct dcerpc_binding_handle *h,
10641 TALLOC_CTX *mem_ctx,
10642 struct policy_handle *_handle /* [in] [ref] */,
10643 uint32_t _flags /* [in] */,
10644 uint32_t _bufsize /* [in] [range(0,512)] */,
10645 uint8_t *_buffer /* [in] [unique,size_is(bufsize)] */,
10648 struct spoolss_RouterReplyPrinter r;
10651 /* In parameters */
10652 r.in.handle = _handle;
10653 r.in.flags = _flags;
10654 r.in.bufsize = _bufsize;
10655 r.in.buffer = _buffer;
10657 status = dcerpc_spoolss_RouterReplyPrinter_r(h, mem_ctx, &r);
10658 if (!NT_STATUS_IS_OK(status)) {
10662 /* Return variables */
10664 /* Return result */
10665 *result = r.out.result;
10667 return NT_STATUS_OK;
10670 struct dcerpc_spoolss_ReplyClosePrinter_r_state {
10671 TALLOC_CTX *out_mem_ctx;
10674 static void dcerpc_spoolss_ReplyClosePrinter_r_done(struct tevent_req *subreq);
10676 struct tevent_req *dcerpc_spoolss_ReplyClosePrinter_r_send(TALLOC_CTX *mem_ctx,
10677 struct tevent_context *ev,
10678 struct dcerpc_binding_handle *h,
10679 struct spoolss_ReplyClosePrinter *r)
10681 struct tevent_req *req;
10682 struct dcerpc_spoolss_ReplyClosePrinter_r_state *state;
10683 struct tevent_req *subreq;
10685 req = tevent_req_create(mem_ctx, &state,
10686 struct dcerpc_spoolss_ReplyClosePrinter_r_state);
10691 state->out_mem_ctx = talloc_new(state);
10692 if (tevent_req_nomem(state->out_mem_ctx, req)) {
10693 return tevent_req_post(req, ev);
10696 subreq = dcerpc_binding_handle_call_send(state, ev, h,
10697 NULL, &ndr_table_spoolss,
10698 NDR_SPOOLSS_REPLYCLOSEPRINTER, state->out_mem_ctx, r);
10699 if (tevent_req_nomem(subreq, req)) {
10700 return tevent_req_post(req, ev);
10702 tevent_req_set_callback(subreq, dcerpc_spoolss_ReplyClosePrinter_r_done, req);
10707 static void dcerpc_spoolss_ReplyClosePrinter_r_done(struct tevent_req *subreq)
10709 struct tevent_req *req =
10710 tevent_req_callback_data(subreq,
10711 struct tevent_req);
10714 status = dcerpc_binding_handle_call_recv(subreq);
10715 if (!NT_STATUS_IS_OK(status)) {
10716 tevent_req_nterror(req, status);
10720 tevent_req_done(req);
10723 NTSTATUS dcerpc_spoolss_ReplyClosePrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
10725 struct dcerpc_spoolss_ReplyClosePrinter_r_state *state =
10726 tevent_req_data(req,
10727 struct dcerpc_spoolss_ReplyClosePrinter_r_state);
10730 if (tevent_req_is_nterror(req, &status)) {
10731 tevent_req_received(req);
10735 talloc_steal(mem_ctx, state->out_mem_ctx);
10737 tevent_req_received(req);
10738 return NT_STATUS_OK;
10741 NTSTATUS dcerpc_spoolss_ReplyClosePrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ReplyClosePrinter *r)
10745 status = dcerpc_binding_handle_call(h,
10746 NULL, &ndr_table_spoolss,
10747 NDR_SPOOLSS_REPLYCLOSEPRINTER, mem_ctx, r);
10752 NTSTATUS dcerpc_spoolss_ReplyClosePrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_ReplyClosePrinter *r)
10756 status = dcerpc_spoolss_ReplyClosePrinter_r(p->binding_handle, mem_ctx, r);
10758 if (NT_STATUS_IS_RPC(status)) {
10759 status = NT_STATUS_NET_WRITE_FAULT;
10765 struct dcerpc_spoolss_ReplyClosePrinter_state {
10766 struct spoolss_ReplyClosePrinter orig;
10767 struct spoolss_ReplyClosePrinter tmp;
10768 TALLOC_CTX *out_mem_ctx;
10771 static void dcerpc_spoolss_ReplyClosePrinter_done(struct tevent_req *subreq);
10773 struct tevent_req *dcerpc_spoolss_ReplyClosePrinter_send(TALLOC_CTX *mem_ctx,
10774 struct tevent_context *ev,
10775 struct dcerpc_binding_handle *h,
10776 struct policy_handle *_handle /* [in,out] [ref] */)
10778 struct tevent_req *req;
10779 struct dcerpc_spoolss_ReplyClosePrinter_state *state;
10780 struct tevent_req *subreq;
10782 req = tevent_req_create(mem_ctx, &state,
10783 struct dcerpc_spoolss_ReplyClosePrinter_state);
10787 state->out_mem_ctx = NULL;
10789 /* In parameters */
10790 state->orig.in.handle = _handle;
10792 /* Out parameters */
10793 state->orig.out.handle = _handle;
10796 ZERO_STRUCT(state->orig.out.result);
10798 state->out_mem_ctx = talloc_named_const(state, 0,
10799 "dcerpc_spoolss_ReplyClosePrinter_out_memory");
10800 if (tevent_req_nomem(state->out_mem_ctx, req)) {
10801 return tevent_req_post(req, ev);
10804 /* make a temporary copy, that we pass to the dispatch function */
10805 state->tmp = state->orig;
10807 subreq = dcerpc_spoolss_ReplyClosePrinter_r_send(state, ev, h, &state->tmp);
10808 if (tevent_req_nomem(subreq, req)) {
10809 return tevent_req_post(req, ev);
10811 tevent_req_set_callback(subreq, dcerpc_spoolss_ReplyClosePrinter_done, req);
10815 static void dcerpc_spoolss_ReplyClosePrinter_done(struct tevent_req *subreq)
10817 struct tevent_req *req = tevent_req_callback_data(
10818 subreq, struct tevent_req);
10819 struct dcerpc_spoolss_ReplyClosePrinter_state *state = tevent_req_data(
10820 req, struct dcerpc_spoolss_ReplyClosePrinter_state);
10822 TALLOC_CTX *mem_ctx;
10824 if (state->out_mem_ctx) {
10825 mem_ctx = state->out_mem_ctx;
10830 status = dcerpc_spoolss_ReplyClosePrinter_r_recv(subreq, mem_ctx);
10831 TALLOC_FREE(subreq);
10832 if (!NT_STATUS_IS_OK(status)) {
10833 tevent_req_nterror(req, status);
10837 /* Copy out parameters */
10838 *state->orig.out.handle = *state->tmp.out.handle;
10841 state->orig.out.result = state->tmp.out.result;
10843 /* Reset temporary structure */
10844 ZERO_STRUCT(state->tmp);
10846 tevent_req_done(req);
10849 NTSTATUS dcerpc_spoolss_ReplyClosePrinter_recv(struct tevent_req *req,
10850 TALLOC_CTX *mem_ctx,
10853 struct dcerpc_spoolss_ReplyClosePrinter_state *state = tevent_req_data(
10854 req, struct dcerpc_spoolss_ReplyClosePrinter_state);
10857 if (tevent_req_is_nterror(req, &status)) {
10858 tevent_req_received(req);
10862 /* Steal possible out parameters to the callers context */
10863 talloc_steal(mem_ctx, state->out_mem_ctx);
10865 /* Return result */
10866 *result = state->orig.out.result;
10868 tevent_req_received(req);
10869 return NT_STATUS_OK;
10872 NTSTATUS dcerpc_spoolss_ReplyClosePrinter(struct dcerpc_binding_handle *h,
10873 TALLOC_CTX *mem_ctx,
10874 struct policy_handle *_handle /* [in,out] [ref] */,
10877 struct spoolss_ReplyClosePrinter r;
10880 /* In parameters */
10881 r.in.handle = _handle;
10883 status = dcerpc_spoolss_ReplyClosePrinter_r(h, mem_ctx, &r);
10884 if (!NT_STATUS_IS_OK(status)) {
10888 /* Return variables */
10889 *_handle = *r.out.handle;
10891 /* Return result */
10892 *result = r.out.result;
10894 return NT_STATUS_OK;
10897 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_state {
10898 TALLOC_CTX *out_mem_ctx;
10901 static void dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_done(struct tevent_req *subreq);
10903 struct tevent_req *dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_send(TALLOC_CTX *mem_ctx,
10904 struct tevent_context *ev,
10905 struct dcerpc_binding_handle *h,
10906 struct spoolss_RemoteFindFirstPrinterChangeNotifyEx *r)
10908 struct tevent_req *req;
10909 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_state *state;
10910 struct tevent_req *subreq;
10912 req = tevent_req_create(mem_ctx, &state,
10913 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_state);
10918 state->out_mem_ctx = NULL;
10919 subreq = dcerpc_binding_handle_call_send(state, ev, h,
10920 NULL, &ndr_table_spoolss,
10921 NDR_SPOOLSS_REMOTEFINDFIRSTPRINTERCHANGENOTIFYEX, state, r);
10922 if (tevent_req_nomem(subreq, req)) {
10923 return tevent_req_post(req, ev);
10925 tevent_req_set_callback(subreq, dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_done, req);
10930 static void dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_done(struct tevent_req *subreq)
10932 struct tevent_req *req =
10933 tevent_req_callback_data(subreq,
10934 struct tevent_req);
10937 status = dcerpc_binding_handle_call_recv(subreq);
10938 if (!NT_STATUS_IS_OK(status)) {
10939 tevent_req_nterror(req, status);
10943 tevent_req_done(req);
10946 NTSTATUS dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
10948 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_state *state =
10949 tevent_req_data(req,
10950 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_state);
10953 if (tevent_req_is_nterror(req, &status)) {
10954 tevent_req_received(req);
10958 talloc_steal(mem_ctx, state->out_mem_ctx);
10960 tevent_req_received(req);
10961 return NT_STATUS_OK;
10964 NTSTATUS dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_RemoteFindFirstPrinterChangeNotifyEx *r)
10968 status = dcerpc_binding_handle_call(h,
10969 NULL, &ndr_table_spoolss,
10970 NDR_SPOOLSS_REMOTEFINDFIRSTPRINTERCHANGENOTIFYEX, mem_ctx, r);
10975 NTSTATUS dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_RemoteFindFirstPrinterChangeNotifyEx *r)
10979 status = dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r(p->binding_handle, mem_ctx, r);
10981 if (NT_STATUS_IS_RPC(status)) {
10982 status = NT_STATUS_NET_WRITE_FAULT;
10988 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state {
10989 struct spoolss_RemoteFindFirstPrinterChangeNotifyEx orig;
10990 struct spoolss_RemoteFindFirstPrinterChangeNotifyEx tmp;
10991 TALLOC_CTX *out_mem_ctx;
10994 static void dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_done(struct tevent_req *subreq);
10996 struct tevent_req *dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_send(TALLOC_CTX *mem_ctx,
10997 struct tevent_context *ev,
10998 struct dcerpc_binding_handle *h,
10999 struct policy_handle *_handle /* [in] [ref] */,
11000 uint32_t _flags /* [in] */,
11001 uint32_t _options /* [in] */,
11002 const char *_local_machine /* [in] [unique,charset(UTF16)] */,
11003 uint32_t _printer_local /* [in] */,
11004 struct spoolss_NotifyOption *_notify_options /* [in] [unique] */)
11006 struct tevent_req *req;
11007 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state *state;
11008 struct tevent_req *subreq;
11010 req = tevent_req_create(mem_ctx, &state,
11011 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state);
11015 state->out_mem_ctx = NULL;
11017 /* In parameters */
11018 state->orig.in.handle = _handle;
11019 state->orig.in.flags = _flags;
11020 state->orig.in.options = _options;
11021 state->orig.in.local_machine = _local_machine;
11022 state->orig.in.printer_local = _printer_local;
11023 state->orig.in.notify_options = _notify_options;
11025 /* Out parameters */
11028 ZERO_STRUCT(state->orig.out.result);
11030 /* make a temporary copy, that we pass to the dispatch function */
11031 state->tmp = state->orig;
11033 subreq = dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_send(state, ev, h, &state->tmp);
11034 if (tevent_req_nomem(subreq, req)) {
11035 return tevent_req_post(req, ev);
11037 tevent_req_set_callback(subreq, dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_done, req);
11041 static void dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_done(struct tevent_req *subreq)
11043 struct tevent_req *req = tevent_req_callback_data(
11044 subreq, struct tevent_req);
11045 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state *state = tevent_req_data(
11046 req, struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state);
11048 TALLOC_CTX *mem_ctx;
11050 if (state->out_mem_ctx) {
11051 mem_ctx = state->out_mem_ctx;
11056 status = dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_recv(subreq, mem_ctx);
11057 TALLOC_FREE(subreq);
11058 if (!NT_STATUS_IS_OK(status)) {
11059 tevent_req_nterror(req, status);
11063 /* Copy out parameters */
11066 state->orig.out.result = state->tmp.out.result;
11068 /* Reset temporary structure */
11069 ZERO_STRUCT(state->tmp);
11071 tevent_req_done(req);
11074 NTSTATUS dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_recv(struct tevent_req *req,
11075 TALLOC_CTX *mem_ctx,
11078 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state *state = tevent_req_data(
11079 req, struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state);
11082 if (tevent_req_is_nterror(req, &status)) {
11083 tevent_req_received(req);
11087 /* Steal possible out parameters to the callers context */
11088 talloc_steal(mem_ctx, state->out_mem_ctx);
11090 /* Return result */
11091 *result = state->orig.out.result;
11093 tevent_req_received(req);
11094 return NT_STATUS_OK;
11097 NTSTATUS dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx(struct dcerpc_binding_handle *h,
11098 TALLOC_CTX *mem_ctx,
11099 struct policy_handle *_handle /* [in] [ref] */,
11100 uint32_t _flags /* [in] */,
11101 uint32_t _options /* [in] */,
11102 const char *_local_machine /* [in] [unique,charset(UTF16)] */,
11103 uint32_t _printer_local /* [in] */,
11104 struct spoolss_NotifyOption *_notify_options /* [in] [unique] */,
11107 struct spoolss_RemoteFindFirstPrinterChangeNotifyEx r;
11110 /* In parameters */
11111 r.in.handle = _handle;
11112 r.in.flags = _flags;
11113 r.in.options = _options;
11114 r.in.local_machine = _local_machine;
11115 r.in.printer_local = _printer_local;
11116 r.in.notify_options = _notify_options;
11118 status = dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r(h, mem_ctx, &r);
11119 if (!NT_STATUS_IS_OK(status)) {
11123 /* Return variables */
11125 /* Return result */
11126 *result = r.out.result;
11128 return NT_STATUS_OK;
11131 struct dcerpc_spoolss_RouterReplyPrinterEx_r_state {
11132 TALLOC_CTX *out_mem_ctx;
11135 static void dcerpc_spoolss_RouterReplyPrinterEx_r_done(struct tevent_req *subreq);
11137 struct tevent_req *dcerpc_spoolss_RouterReplyPrinterEx_r_send(TALLOC_CTX *mem_ctx,
11138 struct tevent_context *ev,
11139 struct dcerpc_binding_handle *h,
11140 struct spoolss_RouterReplyPrinterEx *r)
11142 struct tevent_req *req;
11143 struct dcerpc_spoolss_RouterReplyPrinterEx_r_state *state;
11144 struct tevent_req *subreq;
11146 req = tevent_req_create(mem_ctx, &state,
11147 struct dcerpc_spoolss_RouterReplyPrinterEx_r_state);
11152 state->out_mem_ctx = talloc_new(state);
11153 if (tevent_req_nomem(state->out_mem_ctx, req)) {
11154 return tevent_req_post(req, ev);
11157 subreq = dcerpc_binding_handle_call_send(state, ev, h,
11158 NULL, &ndr_table_spoolss,
11159 NDR_SPOOLSS_ROUTERREPLYPRINTEREX, state->out_mem_ctx, r);
11160 if (tevent_req_nomem(subreq, req)) {
11161 return tevent_req_post(req, ev);
11163 tevent_req_set_callback(subreq, dcerpc_spoolss_RouterReplyPrinterEx_r_done, req);
11168 static void dcerpc_spoolss_RouterReplyPrinterEx_r_done(struct tevent_req *subreq)
11170 struct tevent_req *req =
11171 tevent_req_callback_data(subreq,
11172 struct tevent_req);
11175 status = dcerpc_binding_handle_call_recv(subreq);
11176 if (!NT_STATUS_IS_OK(status)) {
11177 tevent_req_nterror(req, status);
11181 tevent_req_done(req);
11184 NTSTATUS dcerpc_spoolss_RouterReplyPrinterEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
11186 struct dcerpc_spoolss_RouterReplyPrinterEx_r_state *state =
11187 tevent_req_data(req,
11188 struct dcerpc_spoolss_RouterReplyPrinterEx_r_state);
11191 if (tevent_req_is_nterror(req, &status)) {
11192 tevent_req_received(req);
11196 talloc_steal(mem_ctx, state->out_mem_ctx);
11198 tevent_req_received(req);
11199 return NT_STATUS_OK;
11202 NTSTATUS dcerpc_spoolss_RouterReplyPrinterEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_RouterReplyPrinterEx *r)
11206 status = dcerpc_binding_handle_call(h,
11207 NULL, &ndr_table_spoolss,
11208 NDR_SPOOLSS_ROUTERREPLYPRINTEREX, mem_ctx, r);
11213 NTSTATUS dcerpc_spoolss_RouterReplyPrinterEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_RouterReplyPrinterEx *r)
11217 status = dcerpc_spoolss_RouterReplyPrinterEx_r(p->binding_handle, mem_ctx, r);
11219 if (NT_STATUS_IS_RPC(status)) {
11220 status = NT_STATUS_NET_WRITE_FAULT;
11226 struct dcerpc_spoolss_RouterReplyPrinterEx_state {
11227 struct spoolss_RouterReplyPrinterEx orig;
11228 struct spoolss_RouterReplyPrinterEx tmp;
11229 TALLOC_CTX *out_mem_ctx;
11232 static void dcerpc_spoolss_RouterReplyPrinterEx_done(struct tevent_req *subreq);
11234 struct tevent_req *dcerpc_spoolss_RouterReplyPrinterEx_send(TALLOC_CTX *mem_ctx,
11235 struct tevent_context *ev,
11236 struct dcerpc_binding_handle *h,
11237 struct policy_handle *_handle /* [in] [ref] */,
11238 uint32_t _color /* [in] */,
11239 uint32_t _flags /* [in] */,
11240 uint32_t *_reply_result /* [out] [ref] */,
11241 uint32_t _reply_type /* [in] */,
11242 union spoolss_ReplyPrinterInfo _info /* [in] [switch_is(reply_type)] */)
11244 struct tevent_req *req;
11245 struct dcerpc_spoolss_RouterReplyPrinterEx_state *state;
11246 struct tevent_req *subreq;
11248 req = tevent_req_create(mem_ctx, &state,
11249 struct dcerpc_spoolss_RouterReplyPrinterEx_state);
11253 state->out_mem_ctx = NULL;
11255 /* In parameters */
11256 state->orig.in.handle = _handle;
11257 state->orig.in.color = _color;
11258 state->orig.in.flags = _flags;
11259 state->orig.in.reply_type = _reply_type;
11260 state->orig.in.info = _info;
11262 /* Out parameters */
11263 state->orig.out.reply_result = _reply_result;
11266 ZERO_STRUCT(state->orig.out.result);
11268 state->out_mem_ctx = talloc_named_const(state, 0,
11269 "dcerpc_spoolss_RouterReplyPrinterEx_out_memory");
11270 if (tevent_req_nomem(state->out_mem_ctx, req)) {
11271 return tevent_req_post(req, ev);
11274 /* make a temporary copy, that we pass to the dispatch function */
11275 state->tmp = state->orig;
11277 subreq = dcerpc_spoolss_RouterReplyPrinterEx_r_send(state, ev, h, &state->tmp);
11278 if (tevent_req_nomem(subreq, req)) {
11279 return tevent_req_post(req, ev);
11281 tevent_req_set_callback(subreq, dcerpc_spoolss_RouterReplyPrinterEx_done, req);
11285 static void dcerpc_spoolss_RouterReplyPrinterEx_done(struct tevent_req *subreq)
11287 struct tevent_req *req = tevent_req_callback_data(
11288 subreq, struct tevent_req);
11289 struct dcerpc_spoolss_RouterReplyPrinterEx_state *state = tevent_req_data(
11290 req, struct dcerpc_spoolss_RouterReplyPrinterEx_state);
11292 TALLOC_CTX *mem_ctx;
11294 if (state->out_mem_ctx) {
11295 mem_ctx = state->out_mem_ctx;
11300 status = dcerpc_spoolss_RouterReplyPrinterEx_r_recv(subreq, mem_ctx);
11301 TALLOC_FREE(subreq);
11302 if (!NT_STATUS_IS_OK(status)) {
11303 tevent_req_nterror(req, status);
11307 /* Copy out parameters */
11308 *state->orig.out.reply_result = *state->tmp.out.reply_result;
11311 state->orig.out.result = state->tmp.out.result;
11313 /* Reset temporary structure */
11314 ZERO_STRUCT(state->tmp);
11316 tevent_req_done(req);
11319 NTSTATUS dcerpc_spoolss_RouterReplyPrinterEx_recv(struct tevent_req *req,
11320 TALLOC_CTX *mem_ctx,
11323 struct dcerpc_spoolss_RouterReplyPrinterEx_state *state = tevent_req_data(
11324 req, struct dcerpc_spoolss_RouterReplyPrinterEx_state);
11327 if (tevent_req_is_nterror(req, &status)) {
11328 tevent_req_received(req);
11332 /* Steal possible out parameters to the callers context */
11333 talloc_steal(mem_ctx, state->out_mem_ctx);
11335 /* Return result */
11336 *result = state->orig.out.result;
11338 tevent_req_received(req);
11339 return NT_STATUS_OK;
11342 NTSTATUS dcerpc_spoolss_RouterReplyPrinterEx(struct dcerpc_binding_handle *h,
11343 TALLOC_CTX *mem_ctx,
11344 struct policy_handle *_handle /* [in] [ref] */,
11345 uint32_t _color /* [in] */,
11346 uint32_t _flags /* [in] */,
11347 uint32_t *_reply_result /* [out] [ref] */,
11348 uint32_t _reply_type /* [in] */,
11349 union spoolss_ReplyPrinterInfo _info /* [in] [switch_is(reply_type)] */,
11352 struct spoolss_RouterReplyPrinterEx r;
11355 /* In parameters */
11356 r.in.handle = _handle;
11357 r.in.color = _color;
11358 r.in.flags = _flags;
11359 r.in.reply_type = _reply_type;
11362 status = dcerpc_spoolss_RouterReplyPrinterEx_r(h, mem_ctx, &r);
11363 if (!NT_STATUS_IS_OK(status)) {
11367 /* Return variables */
11368 *_reply_result = *r.out.reply_result;
11370 /* Return result */
11371 *result = r.out.result;
11373 return NT_STATUS_OK;
11376 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_state {
11377 TALLOC_CTX *out_mem_ctx;
11380 static void dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_done(struct tevent_req *subreq);
11382 struct tevent_req *dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_send(TALLOC_CTX *mem_ctx,
11383 struct tevent_context *ev,
11384 struct dcerpc_binding_handle *h,
11385 struct spoolss_RouterRefreshPrinterChangeNotify *r)
11387 struct tevent_req *req;
11388 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_state *state;
11389 struct tevent_req *subreq;
11391 req = tevent_req_create(mem_ctx, &state,
11392 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_state);
11397 state->out_mem_ctx = talloc_new(state);
11398 if (tevent_req_nomem(state->out_mem_ctx, req)) {
11399 return tevent_req_post(req, ev);
11402 subreq = dcerpc_binding_handle_call_send(state, ev, h,
11403 NULL, &ndr_table_spoolss,
11404 NDR_SPOOLSS_ROUTERREFRESHPRINTERCHANGENOTIFY, state->out_mem_ctx, r);
11405 if (tevent_req_nomem(subreq, req)) {
11406 return tevent_req_post(req, ev);
11408 tevent_req_set_callback(subreq, dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_done, req);
11413 static void dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_done(struct tevent_req *subreq)
11415 struct tevent_req *req =
11416 tevent_req_callback_data(subreq,
11417 struct tevent_req);
11420 status = dcerpc_binding_handle_call_recv(subreq);
11421 if (!NT_STATUS_IS_OK(status)) {
11422 tevent_req_nterror(req, status);
11426 tevent_req_done(req);
11429 NTSTATUS dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
11431 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_state *state =
11432 tevent_req_data(req,
11433 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_state);
11436 if (tevent_req_is_nterror(req, &status)) {
11437 tevent_req_received(req);
11441 talloc_steal(mem_ctx, state->out_mem_ctx);
11443 tevent_req_received(req);
11444 return NT_STATUS_OK;
11447 NTSTATUS dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_RouterRefreshPrinterChangeNotify *r)
11451 status = dcerpc_binding_handle_call(h,
11452 NULL, &ndr_table_spoolss,
11453 NDR_SPOOLSS_ROUTERREFRESHPRINTERCHANGENOTIFY, mem_ctx, r);
11458 NTSTATUS dcerpc_spoolss_RouterRefreshPrinterChangeNotify_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_RouterRefreshPrinterChangeNotify *r)
11462 status = dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r(p->binding_handle, mem_ctx, r);
11464 if (NT_STATUS_IS_RPC(status)) {
11465 status = NT_STATUS_NET_WRITE_FAULT;
11471 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state {
11472 struct spoolss_RouterRefreshPrinterChangeNotify orig;
11473 struct spoolss_RouterRefreshPrinterChangeNotify tmp;
11474 TALLOC_CTX *out_mem_ctx;
11477 static void dcerpc_spoolss_RouterRefreshPrinterChangeNotify_done(struct tevent_req *subreq);
11479 struct tevent_req *dcerpc_spoolss_RouterRefreshPrinterChangeNotify_send(TALLOC_CTX *mem_ctx,
11480 struct tevent_context *ev,
11481 struct dcerpc_binding_handle *h,
11482 struct policy_handle *_handle /* [in] [ref] */,
11483 uint32_t _change_low /* [in] */,
11484 struct spoolss_NotifyOption *_options /* [in] [unique] */,
11485 struct spoolss_NotifyInfo **_info /* [out] [ref] */)
11487 struct tevent_req *req;
11488 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state *state;
11489 struct tevent_req *subreq;
11491 req = tevent_req_create(mem_ctx, &state,
11492 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state);
11496 state->out_mem_ctx = NULL;
11498 /* In parameters */
11499 state->orig.in.handle = _handle;
11500 state->orig.in.change_low = _change_low;
11501 state->orig.in.options = _options;
11503 /* Out parameters */
11504 state->orig.out.info = _info;
11507 ZERO_STRUCT(state->orig.out.result);
11509 state->out_mem_ctx = talloc_named_const(state, 0,
11510 "dcerpc_spoolss_RouterRefreshPrinterChangeNotify_out_memory");
11511 if (tevent_req_nomem(state->out_mem_ctx, req)) {
11512 return tevent_req_post(req, ev);
11515 /* make a temporary copy, that we pass to the dispatch function */
11516 state->tmp = state->orig;
11518 subreq = dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_send(state, ev, h, &state->tmp);
11519 if (tevent_req_nomem(subreq, req)) {
11520 return tevent_req_post(req, ev);
11522 tevent_req_set_callback(subreq, dcerpc_spoolss_RouterRefreshPrinterChangeNotify_done, req);
11526 static void dcerpc_spoolss_RouterRefreshPrinterChangeNotify_done(struct tevent_req *subreq)
11528 struct tevent_req *req = tevent_req_callback_data(
11529 subreq, struct tevent_req);
11530 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state *state = tevent_req_data(
11531 req, struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state);
11533 TALLOC_CTX *mem_ctx;
11535 if (state->out_mem_ctx) {
11536 mem_ctx = state->out_mem_ctx;
11541 status = dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_recv(subreq, mem_ctx);
11542 TALLOC_FREE(subreq);
11543 if (!NT_STATUS_IS_OK(status)) {
11544 tevent_req_nterror(req, status);
11548 /* Copy out parameters */
11549 *state->orig.out.info = *state->tmp.out.info;
11552 state->orig.out.result = state->tmp.out.result;
11554 /* Reset temporary structure */
11555 ZERO_STRUCT(state->tmp);
11557 tevent_req_done(req);
11560 NTSTATUS dcerpc_spoolss_RouterRefreshPrinterChangeNotify_recv(struct tevent_req *req,
11561 TALLOC_CTX *mem_ctx,
11564 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state *state = tevent_req_data(
11565 req, struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state);
11568 if (tevent_req_is_nterror(req, &status)) {
11569 tevent_req_received(req);
11573 /* Steal possible out parameters to the callers context */
11574 talloc_steal(mem_ctx, state->out_mem_ctx);
11576 /* Return result */
11577 *result = state->orig.out.result;
11579 tevent_req_received(req);
11580 return NT_STATUS_OK;
11583 NTSTATUS dcerpc_spoolss_RouterRefreshPrinterChangeNotify(struct dcerpc_binding_handle *h,
11584 TALLOC_CTX *mem_ctx,
11585 struct policy_handle *_handle /* [in] [ref] */,
11586 uint32_t _change_low /* [in] */,
11587 struct spoolss_NotifyOption *_options /* [in] [unique] */,
11588 struct spoolss_NotifyInfo **_info /* [out] [ref] */,
11591 struct spoolss_RouterRefreshPrinterChangeNotify r;
11594 /* In parameters */
11595 r.in.handle = _handle;
11596 r.in.change_low = _change_low;
11597 r.in.options = _options;
11599 status = dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r(h, mem_ctx, &r);
11600 if (!NT_STATUS_IS_OK(status)) {
11604 /* Return variables */
11605 *_info = *r.out.info;
11607 /* Return result */
11608 *result = r.out.result;
11610 return NT_STATUS_OK;
11613 struct dcerpc_spoolss_OpenPrinterEx_r_state {
11614 TALLOC_CTX *out_mem_ctx;
11617 static void dcerpc_spoolss_OpenPrinterEx_r_done(struct tevent_req *subreq);
11619 struct tevent_req *dcerpc_spoolss_OpenPrinterEx_r_send(TALLOC_CTX *mem_ctx,
11620 struct tevent_context *ev,
11621 struct dcerpc_binding_handle *h,
11622 struct spoolss_OpenPrinterEx *r)
11624 struct tevent_req *req;
11625 struct dcerpc_spoolss_OpenPrinterEx_r_state *state;
11626 struct tevent_req *subreq;
11628 req = tevent_req_create(mem_ctx, &state,
11629 struct dcerpc_spoolss_OpenPrinterEx_r_state);
11634 state->out_mem_ctx = talloc_new(state);
11635 if (tevent_req_nomem(state->out_mem_ctx, req)) {
11636 return tevent_req_post(req, ev);
11639 subreq = dcerpc_binding_handle_call_send(state, ev, h,
11640 NULL, &ndr_table_spoolss,
11641 NDR_SPOOLSS_OPENPRINTEREX, state->out_mem_ctx, r);
11642 if (tevent_req_nomem(subreq, req)) {
11643 return tevent_req_post(req, ev);
11645 tevent_req_set_callback(subreq, dcerpc_spoolss_OpenPrinterEx_r_done, req);
11650 static void dcerpc_spoolss_OpenPrinterEx_r_done(struct tevent_req *subreq)
11652 struct tevent_req *req =
11653 tevent_req_callback_data(subreq,
11654 struct tevent_req);
11657 status = dcerpc_binding_handle_call_recv(subreq);
11658 if (!NT_STATUS_IS_OK(status)) {
11659 tevent_req_nterror(req, status);
11663 tevent_req_done(req);
11666 NTSTATUS dcerpc_spoolss_OpenPrinterEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
11668 struct dcerpc_spoolss_OpenPrinterEx_r_state *state =
11669 tevent_req_data(req,
11670 struct dcerpc_spoolss_OpenPrinterEx_r_state);
11673 if (tevent_req_is_nterror(req, &status)) {
11674 tevent_req_received(req);
11678 talloc_steal(mem_ctx, state->out_mem_ctx);
11680 tevent_req_received(req);
11681 return NT_STATUS_OK;
11684 NTSTATUS dcerpc_spoolss_OpenPrinterEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_OpenPrinterEx *r)
11688 status = dcerpc_binding_handle_call(h,
11689 NULL, &ndr_table_spoolss,
11690 NDR_SPOOLSS_OPENPRINTEREX, mem_ctx, r);
11695 NTSTATUS dcerpc_spoolss_OpenPrinterEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_OpenPrinterEx *r)
11699 status = dcerpc_spoolss_OpenPrinterEx_r(p->binding_handle, mem_ctx, r);
11701 if (NT_STATUS_IS_RPC(status)) {
11702 status = NT_STATUS_NET_WRITE_FAULT;
11708 struct dcerpc_spoolss_OpenPrinterEx_state {
11709 struct spoolss_OpenPrinterEx orig;
11710 struct spoolss_OpenPrinterEx tmp;
11711 TALLOC_CTX *out_mem_ctx;
11714 static void dcerpc_spoolss_OpenPrinterEx_done(struct tevent_req *subreq);
11716 struct tevent_req *dcerpc_spoolss_OpenPrinterEx_send(TALLOC_CTX *mem_ctx,
11717 struct tevent_context *ev,
11718 struct dcerpc_binding_handle *h,
11719 const char *_printername /* [in] [unique,charset(UTF16)] */,
11720 const char *_datatype /* [in] [unique,charset(UTF16)] */,
11721 struct spoolss_DevmodeContainer _devmode_ctr /* [in] */,
11722 uint32_t _access_mask /* [in] */,
11723 uint32_t _level /* [in] */,
11724 union spoolss_UserLevel _userlevel /* [in] [switch_is(level)] */,
11725 struct policy_handle *_handle /* [out] [ref] */)
11727 struct tevent_req *req;
11728 struct dcerpc_spoolss_OpenPrinterEx_state *state;
11729 struct tevent_req *subreq;
11731 req = tevent_req_create(mem_ctx, &state,
11732 struct dcerpc_spoolss_OpenPrinterEx_state);
11736 state->out_mem_ctx = NULL;
11738 /* In parameters */
11739 state->orig.in.printername = _printername;
11740 state->orig.in.datatype = _datatype;
11741 state->orig.in.devmode_ctr = _devmode_ctr;
11742 state->orig.in.access_mask = _access_mask;
11743 state->orig.in.level = _level;
11744 state->orig.in.userlevel = _userlevel;
11746 /* Out parameters */
11747 state->orig.out.handle = _handle;
11750 ZERO_STRUCT(state->orig.out.result);
11752 state->out_mem_ctx = talloc_named_const(state, 0,
11753 "dcerpc_spoolss_OpenPrinterEx_out_memory");
11754 if (tevent_req_nomem(state->out_mem_ctx, req)) {
11755 return tevent_req_post(req, ev);
11758 /* make a temporary copy, that we pass to the dispatch function */
11759 state->tmp = state->orig;
11761 subreq = dcerpc_spoolss_OpenPrinterEx_r_send(state, ev, h, &state->tmp);
11762 if (tevent_req_nomem(subreq, req)) {
11763 return tevent_req_post(req, ev);
11765 tevent_req_set_callback(subreq, dcerpc_spoolss_OpenPrinterEx_done, req);
11769 static void dcerpc_spoolss_OpenPrinterEx_done(struct tevent_req *subreq)
11771 struct tevent_req *req = tevent_req_callback_data(
11772 subreq, struct tevent_req);
11773 struct dcerpc_spoolss_OpenPrinterEx_state *state = tevent_req_data(
11774 req, struct dcerpc_spoolss_OpenPrinterEx_state);
11776 TALLOC_CTX *mem_ctx;
11778 if (state->out_mem_ctx) {
11779 mem_ctx = state->out_mem_ctx;
11784 status = dcerpc_spoolss_OpenPrinterEx_r_recv(subreq, mem_ctx);
11785 TALLOC_FREE(subreq);
11786 if (!NT_STATUS_IS_OK(status)) {
11787 tevent_req_nterror(req, status);
11791 /* Copy out parameters */
11792 *state->orig.out.handle = *state->tmp.out.handle;
11795 state->orig.out.result = state->tmp.out.result;
11797 /* Reset temporary structure */
11798 ZERO_STRUCT(state->tmp);
11800 tevent_req_done(req);
11803 NTSTATUS dcerpc_spoolss_OpenPrinterEx_recv(struct tevent_req *req,
11804 TALLOC_CTX *mem_ctx,
11807 struct dcerpc_spoolss_OpenPrinterEx_state *state = tevent_req_data(
11808 req, struct dcerpc_spoolss_OpenPrinterEx_state);
11811 if (tevent_req_is_nterror(req, &status)) {
11812 tevent_req_received(req);
11816 /* Steal possible out parameters to the callers context */
11817 talloc_steal(mem_ctx, state->out_mem_ctx);
11819 /* Return result */
11820 *result = state->orig.out.result;
11822 tevent_req_received(req);
11823 return NT_STATUS_OK;
11826 NTSTATUS dcerpc_spoolss_OpenPrinterEx(struct dcerpc_binding_handle *h,
11827 TALLOC_CTX *mem_ctx,
11828 const char *_printername /* [in] [unique,charset(UTF16)] */,
11829 const char *_datatype /* [in] [unique,charset(UTF16)] */,
11830 struct spoolss_DevmodeContainer _devmode_ctr /* [in] */,
11831 uint32_t _access_mask /* [in] */,
11832 uint32_t _level /* [in] */,
11833 union spoolss_UserLevel _userlevel /* [in] [switch_is(level)] */,
11834 struct policy_handle *_handle /* [out] [ref] */,
11837 struct spoolss_OpenPrinterEx r;
11840 /* In parameters */
11841 r.in.printername = _printername;
11842 r.in.datatype = _datatype;
11843 r.in.devmode_ctr = _devmode_ctr;
11844 r.in.access_mask = _access_mask;
11845 r.in.level = _level;
11846 r.in.userlevel = _userlevel;
11848 status = dcerpc_spoolss_OpenPrinterEx_r(h, mem_ctx, &r);
11849 if (!NT_STATUS_IS_OK(status)) {
11853 /* Return variables */
11854 *_handle = *r.out.handle;
11856 /* Return result */
11857 *result = r.out.result;
11859 return NT_STATUS_OK;
11862 struct dcerpc_spoolss_AddPrinterEx_r_state {
11863 TALLOC_CTX *out_mem_ctx;
11866 static void dcerpc_spoolss_AddPrinterEx_r_done(struct tevent_req *subreq);
11868 struct tevent_req *dcerpc_spoolss_AddPrinterEx_r_send(TALLOC_CTX *mem_ctx,
11869 struct tevent_context *ev,
11870 struct dcerpc_binding_handle *h,
11871 struct spoolss_AddPrinterEx *r)
11873 struct tevent_req *req;
11874 struct dcerpc_spoolss_AddPrinterEx_r_state *state;
11875 struct tevent_req *subreq;
11877 req = tevent_req_create(mem_ctx, &state,
11878 struct dcerpc_spoolss_AddPrinterEx_r_state);
11883 state->out_mem_ctx = talloc_new(state);
11884 if (tevent_req_nomem(state->out_mem_ctx, req)) {
11885 return tevent_req_post(req, ev);
11888 subreq = dcerpc_binding_handle_call_send(state, ev, h,
11889 NULL, &ndr_table_spoolss,
11890 NDR_SPOOLSS_ADDPRINTEREX, state->out_mem_ctx, r);
11891 if (tevent_req_nomem(subreq, req)) {
11892 return tevent_req_post(req, ev);
11894 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinterEx_r_done, req);
11899 static void dcerpc_spoolss_AddPrinterEx_r_done(struct tevent_req *subreq)
11901 struct tevent_req *req =
11902 tevent_req_callback_data(subreq,
11903 struct tevent_req);
11906 status = dcerpc_binding_handle_call_recv(subreq);
11907 if (!NT_STATUS_IS_OK(status)) {
11908 tevent_req_nterror(req, status);
11912 tevent_req_done(req);
11915 NTSTATUS dcerpc_spoolss_AddPrinterEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
11917 struct dcerpc_spoolss_AddPrinterEx_r_state *state =
11918 tevent_req_data(req,
11919 struct dcerpc_spoolss_AddPrinterEx_r_state);
11922 if (tevent_req_is_nterror(req, &status)) {
11923 tevent_req_received(req);
11927 talloc_steal(mem_ctx, state->out_mem_ctx);
11929 tevent_req_received(req);
11930 return NT_STATUS_OK;
11933 NTSTATUS dcerpc_spoolss_AddPrinterEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPrinterEx *r)
11937 status = dcerpc_binding_handle_call(h,
11938 NULL, &ndr_table_spoolss,
11939 NDR_SPOOLSS_ADDPRINTEREX, mem_ctx, r);
11944 NTSTATUS dcerpc_spoolss_AddPrinterEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_AddPrinterEx *r)
11948 status = dcerpc_spoolss_AddPrinterEx_r(p->binding_handle, mem_ctx, r);
11950 if (NT_STATUS_IS_RPC(status)) {
11951 status = NT_STATUS_NET_WRITE_FAULT;
11957 struct dcerpc_spoolss_AddPrinterEx_state {
11958 struct spoolss_AddPrinterEx orig;
11959 struct spoolss_AddPrinterEx tmp;
11960 TALLOC_CTX *out_mem_ctx;
11963 static void dcerpc_spoolss_AddPrinterEx_done(struct tevent_req *subreq);
11965 struct tevent_req *dcerpc_spoolss_AddPrinterEx_send(TALLOC_CTX *mem_ctx,
11966 struct tevent_context *ev,
11967 struct dcerpc_binding_handle *h,
11968 const char *_server /* [in] [unique,charset(UTF16)] */,
11969 struct spoolss_SetPrinterInfoCtr *_info_ctr /* [in] [ref] */,
11970 struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
11971 struct sec_desc_buf *_secdesc_ctr /* [in] [ref] */,
11972 struct spoolss_UserLevelCtr *_userlevel_ctr /* [in] [ref] */,
11973 struct policy_handle *_handle /* [out] [ref] */)
11975 struct tevent_req *req;
11976 struct dcerpc_spoolss_AddPrinterEx_state *state;
11977 struct tevent_req *subreq;
11979 req = tevent_req_create(mem_ctx, &state,
11980 struct dcerpc_spoolss_AddPrinterEx_state);
11984 state->out_mem_ctx = NULL;
11986 /* In parameters */
11987 state->orig.in.server = _server;
11988 state->orig.in.info_ctr = _info_ctr;
11989 state->orig.in.devmode_ctr = _devmode_ctr;
11990 state->orig.in.secdesc_ctr = _secdesc_ctr;
11991 state->orig.in.userlevel_ctr = _userlevel_ctr;
11993 /* Out parameters */
11994 state->orig.out.handle = _handle;
11997 ZERO_STRUCT(state->orig.out.result);
11999 state->out_mem_ctx = talloc_named_const(state, 0,
12000 "dcerpc_spoolss_AddPrinterEx_out_memory");
12001 if (tevent_req_nomem(state->out_mem_ctx, req)) {
12002 return tevent_req_post(req, ev);
12005 /* make a temporary copy, that we pass to the dispatch function */
12006 state->tmp = state->orig;
12008 subreq = dcerpc_spoolss_AddPrinterEx_r_send(state, ev, h, &state->tmp);
12009 if (tevent_req_nomem(subreq, req)) {
12010 return tevent_req_post(req, ev);
12012 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinterEx_done, req);
12016 static void dcerpc_spoolss_AddPrinterEx_done(struct tevent_req *subreq)
12018 struct tevent_req *req = tevent_req_callback_data(
12019 subreq, struct tevent_req);
12020 struct dcerpc_spoolss_AddPrinterEx_state *state = tevent_req_data(
12021 req, struct dcerpc_spoolss_AddPrinterEx_state);
12023 TALLOC_CTX *mem_ctx;
12025 if (state->out_mem_ctx) {
12026 mem_ctx = state->out_mem_ctx;
12031 status = dcerpc_spoolss_AddPrinterEx_r_recv(subreq, mem_ctx);
12032 TALLOC_FREE(subreq);
12033 if (!NT_STATUS_IS_OK(status)) {
12034 tevent_req_nterror(req, status);
12038 /* Copy out parameters */
12039 *state->orig.out.handle = *state->tmp.out.handle;
12042 state->orig.out.result = state->tmp.out.result;
12044 /* Reset temporary structure */
12045 ZERO_STRUCT(state->tmp);
12047 tevent_req_done(req);
12050 NTSTATUS dcerpc_spoolss_AddPrinterEx_recv(struct tevent_req *req,
12051 TALLOC_CTX *mem_ctx,
12054 struct dcerpc_spoolss_AddPrinterEx_state *state = tevent_req_data(
12055 req, struct dcerpc_spoolss_AddPrinterEx_state);
12058 if (tevent_req_is_nterror(req, &status)) {
12059 tevent_req_received(req);
12063 /* Steal possible out parameters to the callers context */
12064 talloc_steal(mem_ctx, state->out_mem_ctx);
12066 /* Return result */
12067 *result = state->orig.out.result;
12069 tevent_req_received(req);
12070 return NT_STATUS_OK;
12073 NTSTATUS dcerpc_spoolss_AddPrinterEx(struct dcerpc_binding_handle *h,
12074 TALLOC_CTX *mem_ctx,
12075 const char *_server /* [in] [unique,charset(UTF16)] */,
12076 struct spoolss_SetPrinterInfoCtr *_info_ctr /* [in] [ref] */,
12077 struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
12078 struct sec_desc_buf *_secdesc_ctr /* [in] [ref] */,
12079 struct spoolss_UserLevelCtr *_userlevel_ctr /* [in] [ref] */,
12080 struct policy_handle *_handle /* [out] [ref] */,
12083 struct spoolss_AddPrinterEx r;
12086 /* In parameters */
12087 r.in.server = _server;
12088 r.in.info_ctr = _info_ctr;
12089 r.in.devmode_ctr = _devmode_ctr;
12090 r.in.secdesc_ctr = _secdesc_ctr;
12091 r.in.userlevel_ctr = _userlevel_ctr;
12093 status = dcerpc_spoolss_AddPrinterEx_r(h, mem_ctx, &r);
12094 if (!NT_STATUS_IS_OK(status)) {
12098 /* Return variables */
12099 *_handle = *r.out.handle;
12101 /* Return result */
12102 *result = r.out.result;
12104 return NT_STATUS_OK;
12107 struct dcerpc_spoolss_EnumPrinterData_r_state {
12108 TALLOC_CTX *out_mem_ctx;
12111 static void dcerpc_spoolss_EnumPrinterData_r_done(struct tevent_req *subreq);
12113 struct tevent_req *dcerpc_spoolss_EnumPrinterData_r_send(TALLOC_CTX *mem_ctx,
12114 struct tevent_context *ev,
12115 struct dcerpc_binding_handle *h,
12116 struct spoolss_EnumPrinterData *r)
12118 struct tevent_req *req;
12119 struct dcerpc_spoolss_EnumPrinterData_r_state *state;
12120 struct tevent_req *subreq;
12122 req = tevent_req_create(mem_ctx, &state,
12123 struct dcerpc_spoolss_EnumPrinterData_r_state);
12128 state->out_mem_ctx = talloc_new(state);
12129 if (tevent_req_nomem(state->out_mem_ctx, req)) {
12130 return tevent_req_post(req, ev);
12133 subreq = dcerpc_binding_handle_call_send(state, ev, h,
12134 NULL, &ndr_table_spoolss,
12135 NDR_SPOOLSS_ENUMPRINTERDATA, state->out_mem_ctx, r);
12136 if (tevent_req_nomem(subreq, req)) {
12137 return tevent_req_post(req, ev);
12139 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterData_r_done, req);
12144 static void dcerpc_spoolss_EnumPrinterData_r_done(struct tevent_req *subreq)
12146 struct tevent_req *req =
12147 tevent_req_callback_data(subreq,
12148 struct tevent_req);
12151 status = dcerpc_binding_handle_call_recv(subreq);
12152 if (!NT_STATUS_IS_OK(status)) {
12153 tevent_req_nterror(req, status);
12157 tevent_req_done(req);
12160 NTSTATUS dcerpc_spoolss_EnumPrinterData_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
12162 struct dcerpc_spoolss_EnumPrinterData_r_state *state =
12163 tevent_req_data(req,
12164 struct dcerpc_spoolss_EnumPrinterData_r_state);
12167 if (tevent_req_is_nterror(req, &status)) {
12168 tevent_req_received(req);
12172 talloc_steal(mem_ctx, state->out_mem_ctx);
12174 tevent_req_received(req);
12175 return NT_STATUS_OK;
12178 NTSTATUS dcerpc_spoolss_EnumPrinterData_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterData *r)
12182 status = dcerpc_binding_handle_call(h,
12183 NULL, &ndr_table_spoolss,
12184 NDR_SPOOLSS_ENUMPRINTERDATA, mem_ctx, r);
12189 NTSTATUS dcerpc_spoolss_EnumPrinterData_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterData *r)
12193 status = dcerpc_spoolss_EnumPrinterData_r(p->binding_handle, mem_ctx, r);
12195 if (NT_STATUS_IS_RPC(status)) {
12196 status = NT_STATUS_NET_WRITE_FAULT;
12202 struct dcerpc_spoolss_EnumPrinterData_state {
12203 struct spoolss_EnumPrinterData orig;
12204 struct spoolss_EnumPrinterData tmp;
12205 TALLOC_CTX *out_mem_ctx;
12208 static void dcerpc_spoolss_EnumPrinterData_done(struct tevent_req *subreq);
12210 struct tevent_req *dcerpc_spoolss_EnumPrinterData_send(TALLOC_CTX *mem_ctx,
12211 struct tevent_context *ev,
12212 struct dcerpc_binding_handle *h,
12213 struct policy_handle *_handle /* [in] [ref] */,
12214 uint32_t _enum_index /* [in] */,
12215 const char *_value_name /* [out] [charset(UTF16),size_is(value_offered/2)] */,
12216 uint32_t _value_offered /* [in] */,
12217 uint32_t *_value_needed /* [out] [ref] */,
12218 enum winreg_Type *_type /* [out] [ref] */,
12219 uint8_t *_data /* [out] [ref,flag(LIBNDR_PRINT_ARRAY_HEX),size_is(data_offered)] */,
12220 uint32_t _data_offered /* [in] */,
12221 uint32_t *_data_needed /* [out] [ref] */)
12223 struct tevent_req *req;
12224 struct dcerpc_spoolss_EnumPrinterData_state *state;
12225 struct tevent_req *subreq;
12227 req = tevent_req_create(mem_ctx, &state,
12228 struct dcerpc_spoolss_EnumPrinterData_state);
12232 state->out_mem_ctx = NULL;
12234 /* In parameters */
12235 state->orig.in.handle = _handle;
12236 state->orig.in.enum_index = _enum_index;
12237 state->orig.in.value_offered = _value_offered;
12238 state->orig.in.data_offered = _data_offered;
12240 /* Out parameters */
12241 state->orig.out.value_name = _value_name;
12242 state->orig.out.value_needed = _value_needed;
12243 state->orig.out.type = _type;
12244 state->orig.out.data = _data;
12245 state->orig.out.data_needed = _data_needed;
12248 ZERO_STRUCT(state->orig.out.result);
12250 state->out_mem_ctx = talloc_named_const(state, 0,
12251 "dcerpc_spoolss_EnumPrinterData_out_memory");
12252 if (tevent_req_nomem(state->out_mem_ctx, req)) {
12253 return tevent_req_post(req, ev);
12256 /* make a temporary copy, that we pass to the dispatch function */
12257 state->tmp = state->orig;
12259 subreq = dcerpc_spoolss_EnumPrinterData_r_send(state, ev, h, &state->tmp);
12260 if (tevent_req_nomem(subreq, req)) {
12261 return tevent_req_post(req, ev);
12263 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterData_done, req);
12267 static void dcerpc_spoolss_EnumPrinterData_done(struct tevent_req *subreq)
12269 struct tevent_req *req = tevent_req_callback_data(
12270 subreq, struct tevent_req);
12271 struct dcerpc_spoolss_EnumPrinterData_state *state = tevent_req_data(
12272 req, struct dcerpc_spoolss_EnumPrinterData_state);
12274 TALLOC_CTX *mem_ctx;
12276 if (state->out_mem_ctx) {
12277 mem_ctx = state->out_mem_ctx;
12282 status = dcerpc_spoolss_EnumPrinterData_r_recv(subreq, mem_ctx);
12283 TALLOC_FREE(subreq);
12284 if (!NT_STATUS_IS_OK(status)) {
12285 tevent_req_nterror(req, status);
12289 /* Copy out parameters */
12291 size_t _copy_len_value_name;
12292 _copy_len_value_name = ndr_charset_length(state->tmp.out.value_name, CH_UNIX);
12293 if (_copy_len_value_name > state->tmp.in.value_offered / 2) {
12294 tevent_req_nterror(req, NT_STATUS_INVALID_NETWORK_RESPONSE);
12297 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));
12299 *state->orig.out.value_needed = *state->tmp.out.value_needed;
12300 *state->orig.out.type = *state->tmp.out.type;
12302 size_t _copy_len_data;
12303 _copy_len_data = state->tmp.in.data_offered;
12304 memcpy(state->orig.out.data, state->tmp.out.data, _copy_len_data * sizeof(*state->orig.out.data));
12306 *state->orig.out.data_needed = *state->tmp.out.data_needed;
12309 state->orig.out.result = state->tmp.out.result;
12311 /* Reset temporary structure */
12312 ZERO_STRUCT(state->tmp);
12314 tevent_req_done(req);
12317 NTSTATUS dcerpc_spoolss_EnumPrinterData_recv(struct tevent_req *req,
12318 TALLOC_CTX *mem_ctx,
12321 struct dcerpc_spoolss_EnumPrinterData_state *state = tevent_req_data(
12322 req, struct dcerpc_spoolss_EnumPrinterData_state);
12325 if (tevent_req_is_nterror(req, &status)) {
12326 tevent_req_received(req);
12330 /* Steal possible out parameters to the callers context */
12331 talloc_steal(mem_ctx, state->out_mem_ctx);
12333 /* Return result */
12334 *result = state->orig.out.result;
12336 tevent_req_received(req);
12337 return NT_STATUS_OK;
12340 NTSTATUS dcerpc_spoolss_EnumPrinterData(struct dcerpc_binding_handle *h,
12341 TALLOC_CTX *mem_ctx,
12342 struct policy_handle *_handle /* [in] [ref] */,
12343 uint32_t _enum_index /* [in] */,
12344 const char *_value_name /* [out] [charset(UTF16),size_is(value_offered/2)] */,
12345 uint32_t _value_offered /* [in] */,
12346 uint32_t *_value_needed /* [out] [ref] */,
12347 enum winreg_Type *_type /* [out] [ref] */,
12348 uint8_t *_data /* [out] [ref,flag(LIBNDR_PRINT_ARRAY_HEX),size_is(data_offered)] */,
12349 uint32_t _data_offered /* [in] */,
12350 uint32_t *_data_needed /* [out] [ref] */,
12353 struct spoolss_EnumPrinterData r;
12356 /* In parameters */
12357 r.in.handle = _handle;
12358 r.in.enum_index = _enum_index;
12359 r.in.value_offered = _value_offered;
12360 r.in.data_offered = _data_offered;
12362 status = dcerpc_spoolss_EnumPrinterData_r(h, mem_ctx, &r);
12363 if (!NT_STATUS_IS_OK(status)) {
12367 /* Return variables */
12369 size_t _copy_len_value_name;
12370 _copy_len_value_name = ndr_charset_length(r.out.value_name, CH_UNIX);
12371 if (_copy_len_value_name > r.in.value_offered / 2) {
12372 return NT_STATUS_INVALID_NETWORK_RESPONSE;
12374 memcpy(discard_const_p(uint8_t *, _value_name), r.out.value_name, _copy_len_value_name * sizeof(*_value_name));
12376 *_value_needed = *r.out.value_needed;
12377 *_type = *r.out.type;
12379 size_t _copy_len_data;
12380 _copy_len_data = r.in.data_offered;
12381 memcpy(_data, r.out.data, _copy_len_data * sizeof(*_data));
12383 *_data_needed = *r.out.data_needed;
12385 /* Return result */
12386 *result = r.out.result;
12388 return NT_STATUS_OK;
12391 struct dcerpc_spoolss_DeletePrinterData_r_state {
12392 TALLOC_CTX *out_mem_ctx;
12395 static void dcerpc_spoolss_DeletePrinterData_r_done(struct tevent_req *subreq);
12397 struct tevent_req *dcerpc_spoolss_DeletePrinterData_r_send(TALLOC_CTX *mem_ctx,
12398 struct tevent_context *ev,
12399 struct dcerpc_binding_handle *h,
12400 struct spoolss_DeletePrinterData *r)
12402 struct tevent_req *req;
12403 struct dcerpc_spoolss_DeletePrinterData_r_state *state;
12404 struct tevent_req *subreq;
12406 req = tevent_req_create(mem_ctx, &state,
12407 struct dcerpc_spoolss_DeletePrinterData_r_state);
12412 state->out_mem_ctx = NULL;
12413 subreq = dcerpc_binding_handle_call_send(state, ev, h,
12414 NULL, &ndr_table_spoolss,
12415 NDR_SPOOLSS_DELETEPRINTERDATA, state, r);
12416 if (tevent_req_nomem(subreq, req)) {
12417 return tevent_req_post(req, ev);
12419 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterData_r_done, req);
12424 static void dcerpc_spoolss_DeletePrinterData_r_done(struct tevent_req *subreq)
12426 struct tevent_req *req =
12427 tevent_req_callback_data(subreq,
12428 struct tevent_req);
12431 status = dcerpc_binding_handle_call_recv(subreq);
12432 if (!NT_STATUS_IS_OK(status)) {
12433 tevent_req_nterror(req, status);
12437 tevent_req_done(req);
12440 NTSTATUS dcerpc_spoolss_DeletePrinterData_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
12442 struct dcerpc_spoolss_DeletePrinterData_r_state *state =
12443 tevent_req_data(req,
12444 struct dcerpc_spoolss_DeletePrinterData_r_state);
12447 if (tevent_req_is_nterror(req, &status)) {
12448 tevent_req_received(req);
12452 talloc_steal(mem_ctx, state->out_mem_ctx);
12454 tevent_req_received(req);
12455 return NT_STATUS_OK;
12458 NTSTATUS dcerpc_spoolss_DeletePrinterData_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterData *r)
12462 status = dcerpc_binding_handle_call(h,
12463 NULL, &ndr_table_spoolss,
12464 NDR_SPOOLSS_DELETEPRINTERDATA, mem_ctx, r);
12469 NTSTATUS dcerpc_spoolss_DeletePrinterData_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterData *r)
12473 status = dcerpc_spoolss_DeletePrinterData_r(p->binding_handle, mem_ctx, r);
12475 if (NT_STATUS_IS_RPC(status)) {
12476 status = NT_STATUS_NET_WRITE_FAULT;
12482 struct dcerpc_spoolss_DeletePrinterData_state {
12483 struct spoolss_DeletePrinterData orig;
12484 struct spoolss_DeletePrinterData tmp;
12485 TALLOC_CTX *out_mem_ctx;
12488 static void dcerpc_spoolss_DeletePrinterData_done(struct tevent_req *subreq);
12490 struct tevent_req *dcerpc_spoolss_DeletePrinterData_send(TALLOC_CTX *mem_ctx,
12491 struct tevent_context *ev,
12492 struct dcerpc_binding_handle *h,
12493 struct policy_handle *_handle /* [in] [ref] */,
12494 const char *_value_name /* [in] [charset(UTF16)] */)
12496 struct tevent_req *req;
12497 struct dcerpc_spoolss_DeletePrinterData_state *state;
12498 struct tevent_req *subreq;
12500 req = tevent_req_create(mem_ctx, &state,
12501 struct dcerpc_spoolss_DeletePrinterData_state);
12505 state->out_mem_ctx = NULL;
12507 /* In parameters */
12508 state->orig.in.handle = _handle;
12509 state->orig.in.value_name = _value_name;
12511 /* Out parameters */
12514 ZERO_STRUCT(state->orig.out.result);
12516 /* make a temporary copy, that we pass to the dispatch function */
12517 state->tmp = state->orig;
12519 subreq = dcerpc_spoolss_DeletePrinterData_r_send(state, ev, h, &state->tmp);
12520 if (tevent_req_nomem(subreq, req)) {
12521 return tevent_req_post(req, ev);
12523 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterData_done, req);
12527 static void dcerpc_spoolss_DeletePrinterData_done(struct tevent_req *subreq)
12529 struct tevent_req *req = tevent_req_callback_data(
12530 subreq, struct tevent_req);
12531 struct dcerpc_spoolss_DeletePrinterData_state *state = tevent_req_data(
12532 req, struct dcerpc_spoolss_DeletePrinterData_state);
12534 TALLOC_CTX *mem_ctx;
12536 if (state->out_mem_ctx) {
12537 mem_ctx = state->out_mem_ctx;
12542 status = dcerpc_spoolss_DeletePrinterData_r_recv(subreq, mem_ctx);
12543 TALLOC_FREE(subreq);
12544 if (!NT_STATUS_IS_OK(status)) {
12545 tevent_req_nterror(req, status);
12549 /* Copy out parameters */
12552 state->orig.out.result = state->tmp.out.result;
12554 /* Reset temporary structure */
12555 ZERO_STRUCT(state->tmp);
12557 tevent_req_done(req);
12560 NTSTATUS dcerpc_spoolss_DeletePrinterData_recv(struct tevent_req *req,
12561 TALLOC_CTX *mem_ctx,
12564 struct dcerpc_spoolss_DeletePrinterData_state *state = tevent_req_data(
12565 req, struct dcerpc_spoolss_DeletePrinterData_state);
12568 if (tevent_req_is_nterror(req, &status)) {
12569 tevent_req_received(req);
12573 /* Steal possible out parameters to the callers context */
12574 talloc_steal(mem_ctx, state->out_mem_ctx);
12576 /* Return result */
12577 *result = state->orig.out.result;
12579 tevent_req_received(req);
12580 return NT_STATUS_OK;
12583 NTSTATUS dcerpc_spoolss_DeletePrinterData(struct dcerpc_binding_handle *h,
12584 TALLOC_CTX *mem_ctx,
12585 struct policy_handle *_handle /* [in] [ref] */,
12586 const char *_value_name /* [in] [charset(UTF16)] */,
12589 struct spoolss_DeletePrinterData r;
12592 /* In parameters */
12593 r.in.handle = _handle;
12594 r.in.value_name = _value_name;
12596 status = dcerpc_spoolss_DeletePrinterData_r(h, mem_ctx, &r);
12597 if (!NT_STATUS_IS_OK(status)) {
12601 /* Return variables */
12603 /* Return result */
12604 *result = r.out.result;
12606 return NT_STATUS_OK;
12609 struct dcerpc_spoolss_SetPrinterDataEx_r_state {
12610 TALLOC_CTX *out_mem_ctx;
12613 static void dcerpc_spoolss_SetPrinterDataEx_r_done(struct tevent_req *subreq);
12615 struct tevent_req *dcerpc_spoolss_SetPrinterDataEx_r_send(TALLOC_CTX *mem_ctx,
12616 struct tevent_context *ev,
12617 struct dcerpc_binding_handle *h,
12618 struct spoolss_SetPrinterDataEx *r)
12620 struct tevent_req *req;
12621 struct dcerpc_spoolss_SetPrinterDataEx_r_state *state;
12622 struct tevent_req *subreq;
12624 req = tevent_req_create(mem_ctx, &state,
12625 struct dcerpc_spoolss_SetPrinterDataEx_r_state);
12630 state->out_mem_ctx = NULL;
12631 subreq = dcerpc_binding_handle_call_send(state, ev, h,
12632 NULL, &ndr_table_spoolss,
12633 NDR_SPOOLSS_SETPRINTERDATAEX, state, r);
12634 if (tevent_req_nomem(subreq, req)) {
12635 return tevent_req_post(req, ev);
12637 tevent_req_set_callback(subreq, dcerpc_spoolss_SetPrinterDataEx_r_done, req);
12642 static void dcerpc_spoolss_SetPrinterDataEx_r_done(struct tevent_req *subreq)
12644 struct tevent_req *req =
12645 tevent_req_callback_data(subreq,
12646 struct tevent_req);
12649 status = dcerpc_binding_handle_call_recv(subreq);
12650 if (!NT_STATUS_IS_OK(status)) {
12651 tevent_req_nterror(req, status);
12655 tevent_req_done(req);
12658 NTSTATUS dcerpc_spoolss_SetPrinterDataEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
12660 struct dcerpc_spoolss_SetPrinterDataEx_r_state *state =
12661 tevent_req_data(req,
12662 struct dcerpc_spoolss_SetPrinterDataEx_r_state);
12665 if (tevent_req_is_nterror(req, &status)) {
12666 tevent_req_received(req);
12670 talloc_steal(mem_ctx, state->out_mem_ctx);
12672 tevent_req_received(req);
12673 return NT_STATUS_OK;
12676 NTSTATUS dcerpc_spoolss_SetPrinterDataEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_SetPrinterDataEx *r)
12680 status = dcerpc_binding_handle_call(h,
12681 NULL, &ndr_table_spoolss,
12682 NDR_SPOOLSS_SETPRINTERDATAEX, mem_ctx, r);
12687 NTSTATUS dcerpc_spoolss_SetPrinterDataEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_SetPrinterDataEx *r)
12691 status = dcerpc_spoolss_SetPrinterDataEx_r(p->binding_handle, mem_ctx, r);
12693 if (NT_STATUS_IS_RPC(status)) {
12694 status = NT_STATUS_NET_WRITE_FAULT;
12700 struct dcerpc_spoolss_SetPrinterDataEx_state {
12701 struct spoolss_SetPrinterDataEx orig;
12702 struct spoolss_SetPrinterDataEx tmp;
12703 TALLOC_CTX *out_mem_ctx;
12706 static void dcerpc_spoolss_SetPrinterDataEx_done(struct tevent_req *subreq);
12708 struct tevent_req *dcerpc_spoolss_SetPrinterDataEx_send(TALLOC_CTX *mem_ctx,
12709 struct tevent_context *ev,
12710 struct dcerpc_binding_handle *h,
12711 struct policy_handle *_handle /* [in] [ref] */,
12712 const char *_key_name /* [in] [charset(UTF16)] */,
12713 const char *_value_name /* [in] [charset(UTF16)] */,
12714 enum winreg_Type _type /* [in] */,
12715 uint8_t *_data /* [in] [ref,size_is(offered)] */,
12716 uint32_t _offered /* [in] */)
12718 struct tevent_req *req;
12719 struct dcerpc_spoolss_SetPrinterDataEx_state *state;
12720 struct tevent_req *subreq;
12722 req = tevent_req_create(mem_ctx, &state,
12723 struct dcerpc_spoolss_SetPrinterDataEx_state);
12727 state->out_mem_ctx = NULL;
12729 /* In parameters */
12730 state->orig.in.handle = _handle;
12731 state->orig.in.key_name = _key_name;
12732 state->orig.in.value_name = _value_name;
12733 state->orig.in.type = _type;
12734 state->orig.in.data = _data;
12735 state->orig.in.offered = _offered;
12737 /* Out parameters */
12740 ZERO_STRUCT(state->orig.out.result);
12742 /* make a temporary copy, that we pass to the dispatch function */
12743 state->tmp = state->orig;
12745 subreq = dcerpc_spoolss_SetPrinterDataEx_r_send(state, ev, h, &state->tmp);
12746 if (tevent_req_nomem(subreq, req)) {
12747 return tevent_req_post(req, ev);
12749 tevent_req_set_callback(subreq, dcerpc_spoolss_SetPrinterDataEx_done, req);
12753 static void dcerpc_spoolss_SetPrinterDataEx_done(struct tevent_req *subreq)
12755 struct tevent_req *req = tevent_req_callback_data(
12756 subreq, struct tevent_req);
12757 struct dcerpc_spoolss_SetPrinterDataEx_state *state = tevent_req_data(
12758 req, struct dcerpc_spoolss_SetPrinterDataEx_state);
12760 TALLOC_CTX *mem_ctx;
12762 if (state->out_mem_ctx) {
12763 mem_ctx = state->out_mem_ctx;
12768 status = dcerpc_spoolss_SetPrinterDataEx_r_recv(subreq, mem_ctx);
12769 TALLOC_FREE(subreq);
12770 if (!NT_STATUS_IS_OK(status)) {
12771 tevent_req_nterror(req, status);
12775 /* Copy out parameters */
12778 state->orig.out.result = state->tmp.out.result;
12780 /* Reset temporary structure */
12781 ZERO_STRUCT(state->tmp);
12783 tevent_req_done(req);
12786 NTSTATUS dcerpc_spoolss_SetPrinterDataEx_recv(struct tevent_req *req,
12787 TALLOC_CTX *mem_ctx,
12790 struct dcerpc_spoolss_SetPrinterDataEx_state *state = tevent_req_data(
12791 req, struct dcerpc_spoolss_SetPrinterDataEx_state);
12794 if (tevent_req_is_nterror(req, &status)) {
12795 tevent_req_received(req);
12799 /* Steal possible out parameters to the callers context */
12800 talloc_steal(mem_ctx, state->out_mem_ctx);
12802 /* Return result */
12803 *result = state->orig.out.result;
12805 tevent_req_received(req);
12806 return NT_STATUS_OK;
12809 NTSTATUS dcerpc_spoolss_SetPrinterDataEx(struct dcerpc_binding_handle *h,
12810 TALLOC_CTX *mem_ctx,
12811 struct policy_handle *_handle /* [in] [ref] */,
12812 const char *_key_name /* [in] [charset(UTF16)] */,
12813 const char *_value_name /* [in] [charset(UTF16)] */,
12814 enum winreg_Type _type /* [in] */,
12815 uint8_t *_data /* [in] [ref,size_is(offered)] */,
12816 uint32_t _offered /* [in] */,
12819 struct spoolss_SetPrinterDataEx r;
12822 /* In parameters */
12823 r.in.handle = _handle;
12824 r.in.key_name = _key_name;
12825 r.in.value_name = _value_name;
12828 r.in.offered = _offered;
12830 status = dcerpc_spoolss_SetPrinterDataEx_r(h, mem_ctx, &r);
12831 if (!NT_STATUS_IS_OK(status)) {
12835 /* Return variables */
12837 /* Return result */
12838 *result = r.out.result;
12840 return NT_STATUS_OK;
12843 struct dcerpc_spoolss_GetPrinterDataEx_r_state {
12844 TALLOC_CTX *out_mem_ctx;
12847 static void dcerpc_spoolss_GetPrinterDataEx_r_done(struct tevent_req *subreq);
12849 struct tevent_req *dcerpc_spoolss_GetPrinterDataEx_r_send(TALLOC_CTX *mem_ctx,
12850 struct tevent_context *ev,
12851 struct dcerpc_binding_handle *h,
12852 struct spoolss_GetPrinterDataEx *r)
12854 struct tevent_req *req;
12855 struct dcerpc_spoolss_GetPrinterDataEx_r_state *state;
12856 struct tevent_req *subreq;
12858 req = tevent_req_create(mem_ctx, &state,
12859 struct dcerpc_spoolss_GetPrinterDataEx_r_state);
12864 state->out_mem_ctx = talloc_new(state);
12865 if (tevent_req_nomem(state->out_mem_ctx, req)) {
12866 return tevent_req_post(req, ev);
12869 subreq = dcerpc_binding_handle_call_send(state, ev, h,
12870 NULL, &ndr_table_spoolss,
12871 NDR_SPOOLSS_GETPRINTERDATAEX, state->out_mem_ctx, r);
12872 if (tevent_req_nomem(subreq, req)) {
12873 return tevent_req_post(req, ev);
12875 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDataEx_r_done, req);
12880 static void dcerpc_spoolss_GetPrinterDataEx_r_done(struct tevent_req *subreq)
12882 struct tevent_req *req =
12883 tevent_req_callback_data(subreq,
12884 struct tevent_req);
12887 status = dcerpc_binding_handle_call_recv(subreq);
12888 if (!NT_STATUS_IS_OK(status)) {
12889 tevent_req_nterror(req, status);
12893 tevent_req_done(req);
12896 NTSTATUS dcerpc_spoolss_GetPrinterDataEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
12898 struct dcerpc_spoolss_GetPrinterDataEx_r_state *state =
12899 tevent_req_data(req,
12900 struct dcerpc_spoolss_GetPrinterDataEx_r_state);
12903 if (tevent_req_is_nterror(req, &status)) {
12904 tevent_req_received(req);
12908 talloc_steal(mem_ctx, state->out_mem_ctx);
12910 tevent_req_received(req);
12911 return NT_STATUS_OK;
12914 NTSTATUS dcerpc_spoolss_GetPrinterDataEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDataEx *r)
12918 status = dcerpc_binding_handle_call(h,
12919 NULL, &ndr_table_spoolss,
12920 NDR_SPOOLSS_GETPRINTERDATAEX, mem_ctx, r);
12925 NTSTATUS dcerpc_spoolss_GetPrinterDataEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDataEx *r)
12929 status = dcerpc_spoolss_GetPrinterDataEx_r(p->binding_handle, mem_ctx, r);
12931 if (NT_STATUS_IS_RPC(status)) {
12932 status = NT_STATUS_NET_WRITE_FAULT;
12938 struct dcerpc_spoolss_GetPrinterDataEx_state {
12939 struct spoolss_GetPrinterDataEx orig;
12940 struct spoolss_GetPrinterDataEx tmp;
12941 TALLOC_CTX *out_mem_ctx;
12944 static void dcerpc_spoolss_GetPrinterDataEx_done(struct tevent_req *subreq);
12946 struct tevent_req *dcerpc_spoolss_GetPrinterDataEx_send(TALLOC_CTX *mem_ctx,
12947 struct tevent_context *ev,
12948 struct dcerpc_binding_handle *h,
12949 struct policy_handle *_handle /* [in] [ref] */,
12950 const char *_key_name /* [in] [charset(UTF16)] */,
12951 const char *_value_name /* [in] [charset(UTF16)] */,
12952 enum winreg_Type *_type /* [out] [ref] */,
12953 uint8_t *_data /* [out] [ref,size_is(offered)] */,
12954 uint32_t _offered /* [in] */,
12955 uint32_t *_needed /* [out] [ref] */)
12957 struct tevent_req *req;
12958 struct dcerpc_spoolss_GetPrinterDataEx_state *state;
12959 struct tevent_req *subreq;
12961 req = tevent_req_create(mem_ctx, &state,
12962 struct dcerpc_spoolss_GetPrinterDataEx_state);
12966 state->out_mem_ctx = NULL;
12968 /* In parameters */
12969 state->orig.in.handle = _handle;
12970 state->orig.in.key_name = _key_name;
12971 state->orig.in.value_name = _value_name;
12972 state->orig.in.offered = _offered;
12974 /* Out parameters */
12975 state->orig.out.type = _type;
12976 state->orig.out.data = _data;
12977 state->orig.out.needed = _needed;
12980 ZERO_STRUCT(state->orig.out.result);
12982 state->out_mem_ctx = talloc_named_const(state, 0,
12983 "dcerpc_spoolss_GetPrinterDataEx_out_memory");
12984 if (tevent_req_nomem(state->out_mem_ctx, req)) {
12985 return tevent_req_post(req, ev);
12988 /* make a temporary copy, that we pass to the dispatch function */
12989 state->tmp = state->orig;
12991 subreq = dcerpc_spoolss_GetPrinterDataEx_r_send(state, ev, h, &state->tmp);
12992 if (tevent_req_nomem(subreq, req)) {
12993 return tevent_req_post(req, ev);
12995 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDataEx_done, req);
12999 static void dcerpc_spoolss_GetPrinterDataEx_done(struct tevent_req *subreq)
13001 struct tevent_req *req = tevent_req_callback_data(
13002 subreq, struct tevent_req);
13003 struct dcerpc_spoolss_GetPrinterDataEx_state *state = tevent_req_data(
13004 req, struct dcerpc_spoolss_GetPrinterDataEx_state);
13006 TALLOC_CTX *mem_ctx;
13008 if (state->out_mem_ctx) {
13009 mem_ctx = state->out_mem_ctx;
13014 status = dcerpc_spoolss_GetPrinterDataEx_r_recv(subreq, mem_ctx);
13015 TALLOC_FREE(subreq);
13016 if (!NT_STATUS_IS_OK(status)) {
13017 tevent_req_nterror(req, status);
13021 /* Copy out parameters */
13022 *state->orig.out.type = *state->tmp.out.type;
13024 size_t _copy_len_data;
13025 _copy_len_data = state->tmp.in.offered;
13026 memcpy(state->orig.out.data, state->tmp.out.data, _copy_len_data * sizeof(*state->orig.out.data));
13028 *state->orig.out.needed = *state->tmp.out.needed;
13031 state->orig.out.result = state->tmp.out.result;
13033 /* Reset temporary structure */
13034 ZERO_STRUCT(state->tmp);
13036 tevent_req_done(req);
13039 NTSTATUS dcerpc_spoolss_GetPrinterDataEx_recv(struct tevent_req *req,
13040 TALLOC_CTX *mem_ctx,
13043 struct dcerpc_spoolss_GetPrinterDataEx_state *state = tevent_req_data(
13044 req, struct dcerpc_spoolss_GetPrinterDataEx_state);
13047 if (tevent_req_is_nterror(req, &status)) {
13048 tevent_req_received(req);
13052 /* Steal possible out parameters to the callers context */
13053 talloc_steal(mem_ctx, state->out_mem_ctx);
13055 /* Return result */
13056 *result = state->orig.out.result;
13058 tevent_req_received(req);
13059 return NT_STATUS_OK;
13062 NTSTATUS dcerpc_spoolss_GetPrinterDataEx(struct dcerpc_binding_handle *h,
13063 TALLOC_CTX *mem_ctx,
13064 struct policy_handle *_handle /* [in] [ref] */,
13065 const char *_key_name /* [in] [charset(UTF16)] */,
13066 const char *_value_name /* [in] [charset(UTF16)] */,
13067 enum winreg_Type *_type /* [out] [ref] */,
13068 uint8_t *_data /* [out] [ref,size_is(offered)] */,
13069 uint32_t _offered /* [in] */,
13070 uint32_t *_needed /* [out] [ref] */,
13073 struct spoolss_GetPrinterDataEx r;
13076 /* In parameters */
13077 r.in.handle = _handle;
13078 r.in.key_name = _key_name;
13079 r.in.value_name = _value_name;
13080 r.in.offered = _offered;
13082 status = dcerpc_spoolss_GetPrinterDataEx_r(h, mem_ctx, &r);
13083 if (!NT_STATUS_IS_OK(status)) {
13087 /* Return variables */
13088 *_type = *r.out.type;
13090 size_t _copy_len_data;
13091 _copy_len_data = r.in.offered;
13092 memcpy(_data, r.out.data, _copy_len_data * sizeof(*_data));
13094 *_needed = *r.out.needed;
13096 /* Return result */
13097 *result = r.out.result;
13099 return NT_STATUS_OK;
13102 struct dcerpc_spoolss_EnumPrinterDataEx_r_state {
13103 TALLOC_CTX *out_mem_ctx;
13106 static void dcerpc_spoolss_EnumPrinterDataEx_r_done(struct tevent_req *subreq);
13108 struct tevent_req *dcerpc_spoolss_EnumPrinterDataEx_r_send(TALLOC_CTX *mem_ctx,
13109 struct tevent_context *ev,
13110 struct dcerpc_binding_handle *h,
13111 struct spoolss_EnumPrinterDataEx *r)
13113 struct tevent_req *req;
13114 struct dcerpc_spoolss_EnumPrinterDataEx_r_state *state;
13115 struct tevent_req *subreq;
13117 req = tevent_req_create(mem_ctx, &state,
13118 struct dcerpc_spoolss_EnumPrinterDataEx_r_state);
13123 state->out_mem_ctx = talloc_new(state);
13124 if (tevent_req_nomem(state->out_mem_ctx, req)) {
13125 return tevent_req_post(req, ev);
13128 subreq = dcerpc_binding_handle_call_send(state, ev, h,
13129 NULL, &ndr_table_spoolss,
13130 NDR_SPOOLSS_ENUMPRINTERDATAEX, state->out_mem_ctx, r);
13131 if (tevent_req_nomem(subreq, req)) {
13132 return tevent_req_post(req, ev);
13134 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterDataEx_r_done, req);
13139 static void dcerpc_spoolss_EnumPrinterDataEx_r_done(struct tevent_req *subreq)
13141 struct tevent_req *req =
13142 tevent_req_callback_data(subreq,
13143 struct tevent_req);
13146 status = dcerpc_binding_handle_call_recv(subreq);
13147 if (!NT_STATUS_IS_OK(status)) {
13148 tevent_req_nterror(req, status);
13152 tevent_req_done(req);
13155 NTSTATUS dcerpc_spoolss_EnumPrinterDataEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
13157 struct dcerpc_spoolss_EnumPrinterDataEx_r_state *state =
13158 tevent_req_data(req,
13159 struct dcerpc_spoolss_EnumPrinterDataEx_r_state);
13162 if (tevent_req_is_nterror(req, &status)) {
13163 tevent_req_received(req);
13167 talloc_steal(mem_ctx, state->out_mem_ctx);
13169 tevent_req_received(req);
13170 return NT_STATUS_OK;
13173 NTSTATUS dcerpc_spoolss_EnumPrinterDataEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterDataEx *r)
13177 status = dcerpc_binding_handle_call(h,
13178 NULL, &ndr_table_spoolss,
13179 NDR_SPOOLSS_ENUMPRINTERDATAEX, mem_ctx, r);
13184 NTSTATUS dcerpc_spoolss_EnumPrinterDataEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterDataEx *r)
13188 status = dcerpc_spoolss_EnumPrinterDataEx_r(p->binding_handle, mem_ctx, r);
13190 if (NT_STATUS_IS_RPC(status)) {
13191 status = NT_STATUS_NET_WRITE_FAULT;
13197 struct dcerpc_spoolss_EnumPrinterDataEx_state {
13198 struct spoolss_EnumPrinterDataEx orig;
13199 struct spoolss_EnumPrinterDataEx tmp;
13200 TALLOC_CTX *out_mem_ctx;
13203 static void dcerpc_spoolss_EnumPrinterDataEx_done(struct tevent_req *subreq);
13205 struct tevent_req *dcerpc_spoolss_EnumPrinterDataEx_send(TALLOC_CTX *mem_ctx,
13206 struct tevent_context *ev,
13207 struct dcerpc_binding_handle *h,
13208 struct policy_handle *_handle /* [in] [ref] */,
13209 const char *_key_name /* [in] [charset(UTF16)] */,
13210 uint32_t _offered /* [in] */,
13211 uint32_t *_count /* [out] [ref] */,
13212 struct spoolss_PrinterEnumValues **_info /* [out] [ref,size_is(,*count)] */,
13213 uint32_t *_needed /* [out] [ref] */)
13215 struct tevent_req *req;
13216 struct dcerpc_spoolss_EnumPrinterDataEx_state *state;
13217 struct tevent_req *subreq;
13219 req = tevent_req_create(mem_ctx, &state,
13220 struct dcerpc_spoolss_EnumPrinterDataEx_state);
13224 state->out_mem_ctx = NULL;
13226 /* In parameters */
13227 state->orig.in.handle = _handle;
13228 state->orig.in.key_name = _key_name;
13229 state->orig.in.offered = _offered;
13231 /* Out parameters */
13232 state->orig.out.count = _count;
13233 state->orig.out.info = _info;
13234 state->orig.out.needed = _needed;
13237 ZERO_STRUCT(state->orig.out.result);
13239 state->out_mem_ctx = talloc_named_const(state, 0,
13240 "dcerpc_spoolss_EnumPrinterDataEx_out_memory");
13241 if (tevent_req_nomem(state->out_mem_ctx, req)) {
13242 return tevent_req_post(req, ev);
13245 /* make a temporary copy, that we pass to the dispatch function */
13246 state->tmp = state->orig;
13248 subreq = dcerpc_spoolss_EnumPrinterDataEx_r_send(state, ev, h, &state->tmp);
13249 if (tevent_req_nomem(subreq, req)) {
13250 return tevent_req_post(req, ev);
13252 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterDataEx_done, req);
13256 static void dcerpc_spoolss_EnumPrinterDataEx_done(struct tevent_req *subreq)
13258 struct tevent_req *req = tevent_req_callback_data(
13259 subreq, struct tevent_req);
13260 struct dcerpc_spoolss_EnumPrinterDataEx_state *state = tevent_req_data(
13261 req, struct dcerpc_spoolss_EnumPrinterDataEx_state);
13263 TALLOC_CTX *mem_ctx;
13265 if (state->out_mem_ctx) {
13266 mem_ctx = state->out_mem_ctx;
13271 status = dcerpc_spoolss_EnumPrinterDataEx_r_recv(subreq, mem_ctx);
13272 TALLOC_FREE(subreq);
13273 if (!NT_STATUS_IS_OK(status)) {
13274 tevent_req_nterror(req, status);
13278 /* Copy out parameters */
13279 *state->orig.out.count = *state->tmp.out.count;
13280 *state->orig.out.info = *state->tmp.out.info;
13281 *state->orig.out.needed = *state->tmp.out.needed;
13284 state->orig.out.result = state->tmp.out.result;
13286 /* Reset temporary structure */
13287 ZERO_STRUCT(state->tmp);
13289 tevent_req_done(req);
13292 NTSTATUS dcerpc_spoolss_EnumPrinterDataEx_recv(struct tevent_req *req,
13293 TALLOC_CTX *mem_ctx,
13296 struct dcerpc_spoolss_EnumPrinterDataEx_state *state = tevent_req_data(
13297 req, struct dcerpc_spoolss_EnumPrinterDataEx_state);
13300 if (tevent_req_is_nterror(req, &status)) {
13301 tevent_req_received(req);
13305 /* Steal possible out parameters to the callers context */
13306 talloc_steal(mem_ctx, state->out_mem_ctx);
13308 /* Return result */
13309 *result = state->orig.out.result;
13311 tevent_req_received(req);
13312 return NT_STATUS_OK;
13315 NTSTATUS dcerpc_spoolss_EnumPrinterDataEx(struct dcerpc_binding_handle *h,
13316 TALLOC_CTX *mem_ctx,
13317 struct policy_handle *_handle /* [in] [ref] */,
13318 const char *_key_name /* [in] [charset(UTF16)] */,
13319 uint32_t _offered /* [in] */,
13320 uint32_t *_count /* [out] [ref] */,
13321 struct spoolss_PrinterEnumValues **_info /* [out] [ref,size_is(,*count)] */,
13322 uint32_t *_needed /* [out] [ref] */,
13325 struct spoolss_EnumPrinterDataEx r;
13328 /* In parameters */
13329 r.in.handle = _handle;
13330 r.in.key_name = _key_name;
13331 r.in.offered = _offered;
13333 status = dcerpc_spoolss_EnumPrinterDataEx_r(h, mem_ctx, &r);
13334 if (!NT_STATUS_IS_OK(status)) {
13338 /* Return variables */
13339 *_count = *r.out.count;
13340 *_info = *r.out.info;
13341 *_needed = *r.out.needed;
13343 /* Return result */
13344 *result = r.out.result;
13346 return NT_STATUS_OK;
13349 struct dcerpc_spoolss_EnumPrinterKey_r_state {
13350 TALLOC_CTX *out_mem_ctx;
13353 static void dcerpc_spoolss_EnumPrinterKey_r_done(struct tevent_req *subreq);
13355 struct tevent_req *dcerpc_spoolss_EnumPrinterKey_r_send(TALLOC_CTX *mem_ctx,
13356 struct tevent_context *ev,
13357 struct dcerpc_binding_handle *h,
13358 struct spoolss_EnumPrinterKey *r)
13360 struct tevent_req *req;
13361 struct dcerpc_spoolss_EnumPrinterKey_r_state *state;
13362 struct tevent_req *subreq;
13364 req = tevent_req_create(mem_ctx, &state,
13365 struct dcerpc_spoolss_EnumPrinterKey_r_state);
13370 state->out_mem_ctx = talloc_new(state);
13371 if (tevent_req_nomem(state->out_mem_ctx, req)) {
13372 return tevent_req_post(req, ev);
13375 subreq = dcerpc_binding_handle_call_send(state, ev, h,
13376 NULL, &ndr_table_spoolss,
13377 NDR_SPOOLSS_ENUMPRINTERKEY, state->out_mem_ctx, r);
13378 if (tevent_req_nomem(subreq, req)) {
13379 return tevent_req_post(req, ev);
13381 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterKey_r_done, req);
13386 static void dcerpc_spoolss_EnumPrinterKey_r_done(struct tevent_req *subreq)
13388 struct tevent_req *req =
13389 tevent_req_callback_data(subreq,
13390 struct tevent_req);
13393 status = dcerpc_binding_handle_call_recv(subreq);
13394 if (!NT_STATUS_IS_OK(status)) {
13395 tevent_req_nterror(req, status);
13399 tevent_req_done(req);
13402 NTSTATUS dcerpc_spoolss_EnumPrinterKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
13404 struct dcerpc_spoolss_EnumPrinterKey_r_state *state =
13405 tevent_req_data(req,
13406 struct dcerpc_spoolss_EnumPrinterKey_r_state);
13409 if (tevent_req_is_nterror(req, &status)) {
13410 tevent_req_received(req);
13414 talloc_steal(mem_ctx, state->out_mem_ctx);
13416 tevent_req_received(req);
13417 return NT_STATUS_OK;
13420 NTSTATUS dcerpc_spoolss_EnumPrinterKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterKey *r)
13424 status = dcerpc_binding_handle_call(h,
13425 NULL, &ndr_table_spoolss,
13426 NDR_SPOOLSS_ENUMPRINTERKEY, mem_ctx, r);
13431 NTSTATUS dcerpc_spoolss_EnumPrinterKey_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterKey *r)
13435 status = dcerpc_spoolss_EnumPrinterKey_r(p->binding_handle, mem_ctx, r);
13437 if (NT_STATUS_IS_RPC(status)) {
13438 status = NT_STATUS_NET_WRITE_FAULT;
13444 struct dcerpc_spoolss_EnumPrinterKey_state {
13445 struct spoolss_EnumPrinterKey orig;
13446 struct spoolss_EnumPrinterKey tmp;
13447 TALLOC_CTX *out_mem_ctx;
13450 static void dcerpc_spoolss_EnumPrinterKey_done(struct tevent_req *subreq);
13452 struct tevent_req *dcerpc_spoolss_EnumPrinterKey_send(TALLOC_CTX *mem_ctx,
13453 struct tevent_context *ev,
13454 struct dcerpc_binding_handle *h,
13455 struct policy_handle *_handle /* [in] [ref] */,
13456 const char *_key_name /* [in] [charset(UTF16)] */,
13457 uint32_t *__ndr_size /* [out] [ref] */,
13458 union spoolss_KeyNames *_key_buffer /* [out] [subcontext_size(*_ndr_size*2),ref,subcontext(0),switch_is(*_ndr_size)] */,
13459 uint32_t _offered /* [in] */,
13460 uint32_t *_needed /* [out] [ref] */)
13462 struct tevent_req *req;
13463 struct dcerpc_spoolss_EnumPrinterKey_state *state;
13464 struct tevent_req *subreq;
13466 req = tevent_req_create(mem_ctx, &state,
13467 struct dcerpc_spoolss_EnumPrinterKey_state);
13471 state->out_mem_ctx = NULL;
13473 /* In parameters */
13474 state->orig.in.handle = _handle;
13475 state->orig.in.key_name = _key_name;
13476 state->orig.in.offered = _offered;
13478 /* Out parameters */
13479 state->orig.out._ndr_size = __ndr_size;
13480 state->orig.out.key_buffer = _key_buffer;
13481 state->orig.out.needed = _needed;
13484 ZERO_STRUCT(state->orig.out.result);
13486 state->out_mem_ctx = talloc_named_const(state, 0,
13487 "dcerpc_spoolss_EnumPrinterKey_out_memory");
13488 if (tevent_req_nomem(state->out_mem_ctx, req)) {
13489 return tevent_req_post(req, ev);
13492 /* make a temporary copy, that we pass to the dispatch function */
13493 state->tmp = state->orig;
13495 subreq = dcerpc_spoolss_EnumPrinterKey_r_send(state, ev, h, &state->tmp);
13496 if (tevent_req_nomem(subreq, req)) {
13497 return tevent_req_post(req, ev);
13499 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterKey_done, req);
13503 static void dcerpc_spoolss_EnumPrinterKey_done(struct tevent_req *subreq)
13505 struct tevent_req *req = tevent_req_callback_data(
13506 subreq, struct tevent_req);
13507 struct dcerpc_spoolss_EnumPrinterKey_state *state = tevent_req_data(
13508 req, struct dcerpc_spoolss_EnumPrinterKey_state);
13510 TALLOC_CTX *mem_ctx;
13512 if (state->out_mem_ctx) {
13513 mem_ctx = state->out_mem_ctx;
13518 status = dcerpc_spoolss_EnumPrinterKey_r_recv(subreq, mem_ctx);
13519 TALLOC_FREE(subreq);
13520 if (!NT_STATUS_IS_OK(status)) {
13521 tevent_req_nterror(req, status);
13525 /* Copy out parameters */
13526 *state->orig.out._ndr_size = *state->tmp.out._ndr_size;
13527 *state->orig.out.key_buffer = *state->tmp.out.key_buffer;
13528 *state->orig.out.needed = *state->tmp.out.needed;
13531 state->orig.out.result = state->tmp.out.result;
13533 /* Reset temporary structure */
13534 ZERO_STRUCT(state->tmp);
13536 tevent_req_done(req);
13539 NTSTATUS dcerpc_spoolss_EnumPrinterKey_recv(struct tevent_req *req,
13540 TALLOC_CTX *mem_ctx,
13543 struct dcerpc_spoolss_EnumPrinterKey_state *state = tevent_req_data(
13544 req, struct dcerpc_spoolss_EnumPrinterKey_state);
13547 if (tevent_req_is_nterror(req, &status)) {
13548 tevent_req_received(req);
13552 /* Steal possible out parameters to the callers context */
13553 talloc_steal(mem_ctx, state->out_mem_ctx);
13555 /* Return result */
13556 *result = state->orig.out.result;
13558 tevent_req_received(req);
13559 return NT_STATUS_OK;
13562 NTSTATUS dcerpc_spoolss_EnumPrinterKey(struct dcerpc_binding_handle *h,
13563 TALLOC_CTX *mem_ctx,
13564 struct policy_handle *_handle /* [in] [ref] */,
13565 const char *_key_name /* [in] [charset(UTF16)] */,
13566 uint32_t *__ndr_size /* [out] [ref] */,
13567 union spoolss_KeyNames *_key_buffer /* [out] [subcontext_size(*_ndr_size*2),ref,subcontext(0),switch_is(*_ndr_size)] */,
13568 uint32_t _offered /* [in] */,
13569 uint32_t *_needed /* [out] [ref] */,
13572 struct spoolss_EnumPrinterKey r;
13575 /* In parameters */
13576 r.in.handle = _handle;
13577 r.in.key_name = _key_name;
13578 r.in.offered = _offered;
13580 status = dcerpc_spoolss_EnumPrinterKey_r(h, mem_ctx, &r);
13581 if (!NT_STATUS_IS_OK(status)) {
13585 /* Return variables */
13586 *__ndr_size = *r.out._ndr_size;
13587 *_key_buffer = *r.out.key_buffer;
13588 *_needed = *r.out.needed;
13590 /* Return result */
13591 *result = r.out.result;
13593 return NT_STATUS_OK;
13596 struct dcerpc_spoolss_DeletePrinterDataEx_r_state {
13597 TALLOC_CTX *out_mem_ctx;
13600 static void dcerpc_spoolss_DeletePrinterDataEx_r_done(struct tevent_req *subreq);
13602 struct tevent_req *dcerpc_spoolss_DeletePrinterDataEx_r_send(TALLOC_CTX *mem_ctx,
13603 struct tevent_context *ev,
13604 struct dcerpc_binding_handle *h,
13605 struct spoolss_DeletePrinterDataEx *r)
13607 struct tevent_req *req;
13608 struct dcerpc_spoolss_DeletePrinterDataEx_r_state *state;
13609 struct tevent_req *subreq;
13611 req = tevent_req_create(mem_ctx, &state,
13612 struct dcerpc_spoolss_DeletePrinterDataEx_r_state);
13617 state->out_mem_ctx = NULL;
13618 subreq = dcerpc_binding_handle_call_send(state, ev, h,
13619 NULL, &ndr_table_spoolss,
13620 NDR_SPOOLSS_DELETEPRINTERDATAEX, state, r);
13621 if (tevent_req_nomem(subreq, req)) {
13622 return tevent_req_post(req, ev);
13624 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterDataEx_r_done, req);
13629 static void dcerpc_spoolss_DeletePrinterDataEx_r_done(struct tevent_req *subreq)
13631 struct tevent_req *req =
13632 tevent_req_callback_data(subreq,
13633 struct tevent_req);
13636 status = dcerpc_binding_handle_call_recv(subreq);
13637 if (!NT_STATUS_IS_OK(status)) {
13638 tevent_req_nterror(req, status);
13642 tevent_req_done(req);
13645 NTSTATUS dcerpc_spoolss_DeletePrinterDataEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
13647 struct dcerpc_spoolss_DeletePrinterDataEx_r_state *state =
13648 tevent_req_data(req,
13649 struct dcerpc_spoolss_DeletePrinterDataEx_r_state);
13652 if (tevent_req_is_nterror(req, &status)) {
13653 tevent_req_received(req);
13657 talloc_steal(mem_ctx, state->out_mem_ctx);
13659 tevent_req_received(req);
13660 return NT_STATUS_OK;
13663 NTSTATUS dcerpc_spoolss_DeletePrinterDataEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterDataEx *r)
13667 status = dcerpc_binding_handle_call(h,
13668 NULL, &ndr_table_spoolss,
13669 NDR_SPOOLSS_DELETEPRINTERDATAEX, mem_ctx, r);
13674 NTSTATUS dcerpc_spoolss_DeletePrinterDataEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterDataEx *r)
13678 status = dcerpc_spoolss_DeletePrinterDataEx_r(p->binding_handle, mem_ctx, r);
13680 if (NT_STATUS_IS_RPC(status)) {
13681 status = NT_STATUS_NET_WRITE_FAULT;
13687 struct dcerpc_spoolss_DeletePrinterDataEx_state {
13688 struct spoolss_DeletePrinterDataEx orig;
13689 struct spoolss_DeletePrinterDataEx tmp;
13690 TALLOC_CTX *out_mem_ctx;
13693 static void dcerpc_spoolss_DeletePrinterDataEx_done(struct tevent_req *subreq);
13695 struct tevent_req *dcerpc_spoolss_DeletePrinterDataEx_send(TALLOC_CTX *mem_ctx,
13696 struct tevent_context *ev,
13697 struct dcerpc_binding_handle *h,
13698 struct policy_handle *_handle /* [in] [ref] */,
13699 const char *_key_name /* [in] [charset(UTF16)] */,
13700 const char *_value_name /* [in] [charset(UTF16)] */)
13702 struct tevent_req *req;
13703 struct dcerpc_spoolss_DeletePrinterDataEx_state *state;
13704 struct tevent_req *subreq;
13706 req = tevent_req_create(mem_ctx, &state,
13707 struct dcerpc_spoolss_DeletePrinterDataEx_state);
13711 state->out_mem_ctx = NULL;
13713 /* In parameters */
13714 state->orig.in.handle = _handle;
13715 state->orig.in.key_name = _key_name;
13716 state->orig.in.value_name = _value_name;
13718 /* Out parameters */
13721 ZERO_STRUCT(state->orig.out.result);
13723 /* make a temporary copy, that we pass to the dispatch function */
13724 state->tmp = state->orig;
13726 subreq = dcerpc_spoolss_DeletePrinterDataEx_r_send(state, ev, h, &state->tmp);
13727 if (tevent_req_nomem(subreq, req)) {
13728 return tevent_req_post(req, ev);
13730 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterDataEx_done, req);
13734 static void dcerpc_spoolss_DeletePrinterDataEx_done(struct tevent_req *subreq)
13736 struct tevent_req *req = tevent_req_callback_data(
13737 subreq, struct tevent_req);
13738 struct dcerpc_spoolss_DeletePrinterDataEx_state *state = tevent_req_data(
13739 req, struct dcerpc_spoolss_DeletePrinterDataEx_state);
13741 TALLOC_CTX *mem_ctx;
13743 if (state->out_mem_ctx) {
13744 mem_ctx = state->out_mem_ctx;
13749 status = dcerpc_spoolss_DeletePrinterDataEx_r_recv(subreq, mem_ctx);
13750 TALLOC_FREE(subreq);
13751 if (!NT_STATUS_IS_OK(status)) {
13752 tevent_req_nterror(req, status);
13756 /* Copy out parameters */
13759 state->orig.out.result = state->tmp.out.result;
13761 /* Reset temporary structure */
13762 ZERO_STRUCT(state->tmp);
13764 tevent_req_done(req);
13767 NTSTATUS dcerpc_spoolss_DeletePrinterDataEx_recv(struct tevent_req *req,
13768 TALLOC_CTX *mem_ctx,
13771 struct dcerpc_spoolss_DeletePrinterDataEx_state *state = tevent_req_data(
13772 req, struct dcerpc_spoolss_DeletePrinterDataEx_state);
13775 if (tevent_req_is_nterror(req, &status)) {
13776 tevent_req_received(req);
13780 /* Steal possible out parameters to the callers context */
13781 talloc_steal(mem_ctx, state->out_mem_ctx);
13783 /* Return result */
13784 *result = state->orig.out.result;
13786 tevent_req_received(req);
13787 return NT_STATUS_OK;
13790 NTSTATUS dcerpc_spoolss_DeletePrinterDataEx(struct dcerpc_binding_handle *h,
13791 TALLOC_CTX *mem_ctx,
13792 struct policy_handle *_handle /* [in] [ref] */,
13793 const char *_key_name /* [in] [charset(UTF16)] */,
13794 const char *_value_name /* [in] [charset(UTF16)] */,
13797 struct spoolss_DeletePrinterDataEx r;
13800 /* In parameters */
13801 r.in.handle = _handle;
13802 r.in.key_name = _key_name;
13803 r.in.value_name = _value_name;
13805 status = dcerpc_spoolss_DeletePrinterDataEx_r(h, mem_ctx, &r);
13806 if (!NT_STATUS_IS_OK(status)) {
13810 /* Return variables */
13812 /* Return result */
13813 *result = r.out.result;
13815 return NT_STATUS_OK;
13818 struct dcerpc_spoolss_DeletePrinterKey_r_state {
13819 TALLOC_CTX *out_mem_ctx;
13822 static void dcerpc_spoolss_DeletePrinterKey_r_done(struct tevent_req *subreq);
13824 struct tevent_req *dcerpc_spoolss_DeletePrinterKey_r_send(TALLOC_CTX *mem_ctx,
13825 struct tevent_context *ev,
13826 struct dcerpc_binding_handle *h,
13827 struct spoolss_DeletePrinterKey *r)
13829 struct tevent_req *req;
13830 struct dcerpc_spoolss_DeletePrinterKey_r_state *state;
13831 struct tevent_req *subreq;
13833 req = tevent_req_create(mem_ctx, &state,
13834 struct dcerpc_spoolss_DeletePrinterKey_r_state);
13839 state->out_mem_ctx = NULL;
13840 subreq = dcerpc_binding_handle_call_send(state, ev, h,
13841 NULL, &ndr_table_spoolss,
13842 NDR_SPOOLSS_DELETEPRINTERKEY, state, r);
13843 if (tevent_req_nomem(subreq, req)) {
13844 return tevent_req_post(req, ev);
13846 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterKey_r_done, req);
13851 static void dcerpc_spoolss_DeletePrinterKey_r_done(struct tevent_req *subreq)
13853 struct tevent_req *req =
13854 tevent_req_callback_data(subreq,
13855 struct tevent_req);
13858 status = dcerpc_binding_handle_call_recv(subreq);
13859 if (!NT_STATUS_IS_OK(status)) {
13860 tevent_req_nterror(req, status);
13864 tevent_req_done(req);
13867 NTSTATUS dcerpc_spoolss_DeletePrinterKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
13869 struct dcerpc_spoolss_DeletePrinterKey_r_state *state =
13870 tevent_req_data(req,
13871 struct dcerpc_spoolss_DeletePrinterKey_r_state);
13874 if (tevent_req_is_nterror(req, &status)) {
13875 tevent_req_received(req);
13879 talloc_steal(mem_ctx, state->out_mem_ctx);
13881 tevent_req_received(req);
13882 return NT_STATUS_OK;
13885 NTSTATUS dcerpc_spoolss_DeletePrinterKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterKey *r)
13889 status = dcerpc_binding_handle_call(h,
13890 NULL, &ndr_table_spoolss,
13891 NDR_SPOOLSS_DELETEPRINTERKEY, mem_ctx, r);
13896 NTSTATUS dcerpc_spoolss_DeletePrinterKey_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterKey *r)
13900 status = dcerpc_spoolss_DeletePrinterKey_r(p->binding_handle, mem_ctx, r);
13902 if (NT_STATUS_IS_RPC(status)) {
13903 status = NT_STATUS_NET_WRITE_FAULT;
13909 struct dcerpc_spoolss_DeletePrinterKey_state {
13910 struct spoolss_DeletePrinterKey orig;
13911 struct spoolss_DeletePrinterKey tmp;
13912 TALLOC_CTX *out_mem_ctx;
13915 static void dcerpc_spoolss_DeletePrinterKey_done(struct tevent_req *subreq);
13917 struct tevent_req *dcerpc_spoolss_DeletePrinterKey_send(TALLOC_CTX *mem_ctx,
13918 struct tevent_context *ev,
13919 struct dcerpc_binding_handle *h,
13920 struct policy_handle *_handle /* [in] [ref] */,
13921 const char *_key_name /* [in] [charset(UTF16)] */)
13923 struct tevent_req *req;
13924 struct dcerpc_spoolss_DeletePrinterKey_state *state;
13925 struct tevent_req *subreq;
13927 req = tevent_req_create(mem_ctx, &state,
13928 struct dcerpc_spoolss_DeletePrinterKey_state);
13932 state->out_mem_ctx = NULL;
13934 /* In parameters */
13935 state->orig.in.handle = _handle;
13936 state->orig.in.key_name = _key_name;
13938 /* Out parameters */
13941 ZERO_STRUCT(state->orig.out.result);
13943 /* make a temporary copy, that we pass to the dispatch function */
13944 state->tmp = state->orig;
13946 subreq = dcerpc_spoolss_DeletePrinterKey_r_send(state, ev, h, &state->tmp);
13947 if (tevent_req_nomem(subreq, req)) {
13948 return tevent_req_post(req, ev);
13950 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterKey_done, req);
13954 static void dcerpc_spoolss_DeletePrinterKey_done(struct tevent_req *subreq)
13956 struct tevent_req *req = tevent_req_callback_data(
13957 subreq, struct tevent_req);
13958 struct dcerpc_spoolss_DeletePrinterKey_state *state = tevent_req_data(
13959 req, struct dcerpc_spoolss_DeletePrinterKey_state);
13961 TALLOC_CTX *mem_ctx;
13963 if (state->out_mem_ctx) {
13964 mem_ctx = state->out_mem_ctx;
13969 status = dcerpc_spoolss_DeletePrinterKey_r_recv(subreq, mem_ctx);
13970 TALLOC_FREE(subreq);
13971 if (!NT_STATUS_IS_OK(status)) {
13972 tevent_req_nterror(req, status);
13976 /* Copy out parameters */
13979 state->orig.out.result = state->tmp.out.result;
13981 /* Reset temporary structure */
13982 ZERO_STRUCT(state->tmp);
13984 tevent_req_done(req);
13987 NTSTATUS dcerpc_spoolss_DeletePrinterKey_recv(struct tevent_req *req,
13988 TALLOC_CTX *mem_ctx,
13991 struct dcerpc_spoolss_DeletePrinterKey_state *state = tevent_req_data(
13992 req, struct dcerpc_spoolss_DeletePrinterKey_state);
13995 if (tevent_req_is_nterror(req, &status)) {
13996 tevent_req_received(req);
14000 /* Steal possible out parameters to the callers context */
14001 talloc_steal(mem_ctx, state->out_mem_ctx);
14003 /* Return result */
14004 *result = state->orig.out.result;
14006 tevent_req_received(req);
14007 return NT_STATUS_OK;
14010 NTSTATUS dcerpc_spoolss_DeletePrinterKey(struct dcerpc_binding_handle *h,
14011 TALLOC_CTX *mem_ctx,
14012 struct policy_handle *_handle /* [in] [ref] */,
14013 const char *_key_name /* [in] [charset(UTF16)] */,
14016 struct spoolss_DeletePrinterKey r;
14019 /* In parameters */
14020 r.in.handle = _handle;
14021 r.in.key_name = _key_name;
14023 status = dcerpc_spoolss_DeletePrinterKey_r(h, mem_ctx, &r);
14024 if (!NT_STATUS_IS_OK(status)) {
14028 /* Return variables */
14030 /* Return result */
14031 *result = r.out.result;
14033 return NT_STATUS_OK;
14036 struct dcerpc_spoolss_DeletePrinterDriverEx_r_state {
14037 TALLOC_CTX *out_mem_ctx;
14040 static void dcerpc_spoolss_DeletePrinterDriverEx_r_done(struct tevent_req *subreq);
14042 struct tevent_req *dcerpc_spoolss_DeletePrinterDriverEx_r_send(TALLOC_CTX *mem_ctx,
14043 struct tevent_context *ev,
14044 struct dcerpc_binding_handle *h,
14045 struct spoolss_DeletePrinterDriverEx *r)
14047 struct tevent_req *req;
14048 struct dcerpc_spoolss_DeletePrinterDriverEx_r_state *state;
14049 struct tevent_req *subreq;
14051 req = tevent_req_create(mem_ctx, &state,
14052 struct dcerpc_spoolss_DeletePrinterDriverEx_r_state);
14057 state->out_mem_ctx = NULL;
14058 subreq = dcerpc_binding_handle_call_send(state, ev, h,
14059 NULL, &ndr_table_spoolss,
14060 NDR_SPOOLSS_DELETEPRINTERDRIVEREX, state, r);
14061 if (tevent_req_nomem(subreq, req)) {
14062 return tevent_req_post(req, ev);
14064 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterDriverEx_r_done, req);
14069 static void dcerpc_spoolss_DeletePrinterDriverEx_r_done(struct tevent_req *subreq)
14071 struct tevent_req *req =
14072 tevent_req_callback_data(subreq,
14073 struct tevent_req);
14076 status = dcerpc_binding_handle_call_recv(subreq);
14077 if (!NT_STATUS_IS_OK(status)) {
14078 tevent_req_nterror(req, status);
14082 tevent_req_done(req);
14085 NTSTATUS dcerpc_spoolss_DeletePrinterDriverEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
14087 struct dcerpc_spoolss_DeletePrinterDriverEx_r_state *state =
14088 tevent_req_data(req,
14089 struct dcerpc_spoolss_DeletePrinterDriverEx_r_state);
14092 if (tevent_req_is_nterror(req, &status)) {
14093 tevent_req_received(req);
14097 talloc_steal(mem_ctx, state->out_mem_ctx);
14099 tevent_req_received(req);
14100 return NT_STATUS_OK;
14103 NTSTATUS dcerpc_spoolss_DeletePrinterDriverEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterDriverEx *r)
14107 status = dcerpc_binding_handle_call(h,
14108 NULL, &ndr_table_spoolss,
14109 NDR_SPOOLSS_DELETEPRINTERDRIVEREX, mem_ctx, r);
14114 NTSTATUS dcerpc_spoolss_DeletePrinterDriverEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterDriverEx *r)
14118 status = dcerpc_spoolss_DeletePrinterDriverEx_r(p->binding_handle, mem_ctx, r);
14120 if (NT_STATUS_IS_RPC(status)) {
14121 status = NT_STATUS_NET_WRITE_FAULT;
14127 struct dcerpc_spoolss_DeletePrinterDriverEx_state {
14128 struct spoolss_DeletePrinterDriverEx orig;
14129 struct spoolss_DeletePrinterDriverEx tmp;
14130 TALLOC_CTX *out_mem_ctx;
14133 static void dcerpc_spoolss_DeletePrinterDriverEx_done(struct tevent_req *subreq);
14135 struct tevent_req *dcerpc_spoolss_DeletePrinterDriverEx_send(TALLOC_CTX *mem_ctx,
14136 struct tevent_context *ev,
14137 struct dcerpc_binding_handle *h,
14138 const char *_server /* [in] [unique,charset(UTF16)] */,
14139 const char *_architecture /* [in] [charset(UTF16)] */,
14140 const char *_driver /* [in] [charset(UTF16)] */,
14141 uint32_t _delete_flags /* [in] */,
14142 uint32_t _version /* [in] */)
14144 struct tevent_req *req;
14145 struct dcerpc_spoolss_DeletePrinterDriverEx_state *state;
14146 struct tevent_req *subreq;
14148 req = tevent_req_create(mem_ctx, &state,
14149 struct dcerpc_spoolss_DeletePrinterDriverEx_state);
14153 state->out_mem_ctx = NULL;
14155 /* In parameters */
14156 state->orig.in.server = _server;
14157 state->orig.in.architecture = _architecture;
14158 state->orig.in.driver = _driver;
14159 state->orig.in.delete_flags = _delete_flags;
14160 state->orig.in.version = _version;
14162 /* Out parameters */
14165 ZERO_STRUCT(state->orig.out.result);
14167 /* make a temporary copy, that we pass to the dispatch function */
14168 state->tmp = state->orig;
14170 subreq = dcerpc_spoolss_DeletePrinterDriverEx_r_send(state, ev, h, &state->tmp);
14171 if (tevent_req_nomem(subreq, req)) {
14172 return tevent_req_post(req, ev);
14174 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterDriverEx_done, req);
14178 static void dcerpc_spoolss_DeletePrinterDriverEx_done(struct tevent_req *subreq)
14180 struct tevent_req *req = tevent_req_callback_data(
14181 subreq, struct tevent_req);
14182 struct dcerpc_spoolss_DeletePrinterDriverEx_state *state = tevent_req_data(
14183 req, struct dcerpc_spoolss_DeletePrinterDriverEx_state);
14185 TALLOC_CTX *mem_ctx;
14187 if (state->out_mem_ctx) {
14188 mem_ctx = state->out_mem_ctx;
14193 status = dcerpc_spoolss_DeletePrinterDriverEx_r_recv(subreq, mem_ctx);
14194 TALLOC_FREE(subreq);
14195 if (!NT_STATUS_IS_OK(status)) {
14196 tevent_req_nterror(req, status);
14200 /* Copy out parameters */
14203 state->orig.out.result = state->tmp.out.result;
14205 /* Reset temporary structure */
14206 ZERO_STRUCT(state->tmp);
14208 tevent_req_done(req);
14211 NTSTATUS dcerpc_spoolss_DeletePrinterDriverEx_recv(struct tevent_req *req,
14212 TALLOC_CTX *mem_ctx,
14215 struct dcerpc_spoolss_DeletePrinterDriverEx_state *state = tevent_req_data(
14216 req, struct dcerpc_spoolss_DeletePrinterDriverEx_state);
14219 if (tevent_req_is_nterror(req, &status)) {
14220 tevent_req_received(req);
14224 /* Steal possible out parameters to the callers context */
14225 talloc_steal(mem_ctx, state->out_mem_ctx);
14227 /* Return result */
14228 *result = state->orig.out.result;
14230 tevent_req_received(req);
14231 return NT_STATUS_OK;
14234 NTSTATUS dcerpc_spoolss_DeletePrinterDriverEx(struct dcerpc_binding_handle *h,
14235 TALLOC_CTX *mem_ctx,
14236 const char *_server /* [in] [unique,charset(UTF16)] */,
14237 const char *_architecture /* [in] [charset(UTF16)] */,
14238 const char *_driver /* [in] [charset(UTF16)] */,
14239 uint32_t _delete_flags /* [in] */,
14240 uint32_t _version /* [in] */,
14243 struct spoolss_DeletePrinterDriverEx r;
14246 /* In parameters */
14247 r.in.server = _server;
14248 r.in.architecture = _architecture;
14249 r.in.driver = _driver;
14250 r.in.delete_flags = _delete_flags;
14251 r.in.version = _version;
14253 status = dcerpc_spoolss_DeletePrinterDriverEx_r(h, mem_ctx, &r);
14254 if (!NT_STATUS_IS_OK(status)) {
14258 /* Return variables */
14260 /* Return result */
14261 *result = r.out.result;
14263 return NT_STATUS_OK;
14266 struct dcerpc_spoolss_XcvData_r_state {
14267 TALLOC_CTX *out_mem_ctx;
14270 static void dcerpc_spoolss_XcvData_r_done(struct tevent_req *subreq);
14272 struct tevent_req *dcerpc_spoolss_XcvData_r_send(TALLOC_CTX *mem_ctx,
14273 struct tevent_context *ev,
14274 struct dcerpc_binding_handle *h,
14275 struct spoolss_XcvData *r)
14277 struct tevent_req *req;
14278 struct dcerpc_spoolss_XcvData_r_state *state;
14279 struct tevent_req *subreq;
14281 req = tevent_req_create(mem_ctx, &state,
14282 struct dcerpc_spoolss_XcvData_r_state);
14287 state->out_mem_ctx = talloc_new(state);
14288 if (tevent_req_nomem(state->out_mem_ctx, req)) {
14289 return tevent_req_post(req, ev);
14292 subreq = dcerpc_binding_handle_call_send(state, ev, h,
14293 NULL, &ndr_table_spoolss,
14294 NDR_SPOOLSS_XCVDATA, state->out_mem_ctx, r);
14295 if (tevent_req_nomem(subreq, req)) {
14296 return tevent_req_post(req, ev);
14298 tevent_req_set_callback(subreq, dcerpc_spoolss_XcvData_r_done, req);
14303 static void dcerpc_spoolss_XcvData_r_done(struct tevent_req *subreq)
14305 struct tevent_req *req =
14306 tevent_req_callback_data(subreq,
14307 struct tevent_req);
14310 status = dcerpc_binding_handle_call_recv(subreq);
14311 if (!NT_STATUS_IS_OK(status)) {
14312 tevent_req_nterror(req, status);
14316 tevent_req_done(req);
14319 NTSTATUS dcerpc_spoolss_XcvData_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
14321 struct dcerpc_spoolss_XcvData_r_state *state =
14322 tevent_req_data(req,
14323 struct dcerpc_spoolss_XcvData_r_state);
14326 if (tevent_req_is_nterror(req, &status)) {
14327 tevent_req_received(req);
14331 talloc_steal(mem_ctx, state->out_mem_ctx);
14333 tevent_req_received(req);
14334 return NT_STATUS_OK;
14337 NTSTATUS dcerpc_spoolss_XcvData_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_XcvData *r)
14341 status = dcerpc_binding_handle_call(h,
14342 NULL, &ndr_table_spoolss,
14343 NDR_SPOOLSS_XCVDATA, mem_ctx, r);
14348 NTSTATUS dcerpc_spoolss_XcvData_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_XcvData *r)
14352 status = dcerpc_spoolss_XcvData_r(p->binding_handle, mem_ctx, r);
14354 if (NT_STATUS_IS_RPC(status)) {
14355 status = NT_STATUS_NET_WRITE_FAULT;
14361 struct dcerpc_spoolss_XcvData_state {
14362 struct spoolss_XcvData orig;
14363 struct spoolss_XcvData tmp;
14364 TALLOC_CTX *out_mem_ctx;
14367 static void dcerpc_spoolss_XcvData_done(struct tevent_req *subreq);
14369 struct tevent_req *dcerpc_spoolss_XcvData_send(TALLOC_CTX *mem_ctx,
14370 struct tevent_context *ev,
14371 struct dcerpc_binding_handle *h,
14372 struct policy_handle *_handle /* [in] [ref] */,
14373 const char *_function_name /* [in] [charset(UTF16)] */,
14374 DATA_BLOB _in_data /* [in] */,
14375 uint32_t __in_data_length /* [in] [value(r->in.in_data.length)] */,
14376 uint8_t *_out_data /* [out] [ref,size_is(out_data_size)] */,
14377 uint32_t _out_data_size /* [in] */,
14378 uint32_t *_needed /* [out] [ref] */,
14379 uint32_t *_status_code /* [in,out] [ref] */)
14381 struct tevent_req *req;
14382 struct dcerpc_spoolss_XcvData_state *state;
14383 struct tevent_req *subreq;
14385 req = tevent_req_create(mem_ctx, &state,
14386 struct dcerpc_spoolss_XcvData_state);
14390 state->out_mem_ctx = NULL;
14392 /* In parameters */
14393 state->orig.in.handle = _handle;
14394 state->orig.in.function_name = _function_name;
14395 state->orig.in.in_data = _in_data;
14396 state->orig.in._in_data_length = __in_data_length;
14397 state->orig.in.out_data_size = _out_data_size;
14398 state->orig.in.status_code = _status_code;
14400 /* Out parameters */
14401 state->orig.out.out_data = _out_data;
14402 state->orig.out.needed = _needed;
14403 state->orig.out.status_code = _status_code;
14406 ZERO_STRUCT(state->orig.out.result);
14408 state->out_mem_ctx = talloc_named_const(state, 0,
14409 "dcerpc_spoolss_XcvData_out_memory");
14410 if (tevent_req_nomem(state->out_mem_ctx, req)) {
14411 return tevent_req_post(req, ev);
14414 /* make a temporary copy, that we pass to the dispatch function */
14415 state->tmp = state->orig;
14417 subreq = dcerpc_spoolss_XcvData_r_send(state, ev, h, &state->tmp);
14418 if (tevent_req_nomem(subreq, req)) {
14419 return tevent_req_post(req, ev);
14421 tevent_req_set_callback(subreq, dcerpc_spoolss_XcvData_done, req);
14425 static void dcerpc_spoolss_XcvData_done(struct tevent_req *subreq)
14427 struct tevent_req *req = tevent_req_callback_data(
14428 subreq, struct tevent_req);
14429 struct dcerpc_spoolss_XcvData_state *state = tevent_req_data(
14430 req, struct dcerpc_spoolss_XcvData_state);
14432 TALLOC_CTX *mem_ctx;
14434 if (state->out_mem_ctx) {
14435 mem_ctx = state->out_mem_ctx;
14440 status = dcerpc_spoolss_XcvData_r_recv(subreq, mem_ctx);
14441 TALLOC_FREE(subreq);
14442 if (!NT_STATUS_IS_OK(status)) {
14443 tevent_req_nterror(req, status);
14447 /* Copy out parameters */
14449 size_t _copy_len_out_data;
14450 _copy_len_out_data = state->tmp.in.out_data_size;
14451 memcpy(state->orig.out.out_data, state->tmp.out.out_data, _copy_len_out_data * sizeof(*state->orig.out.out_data));
14453 *state->orig.out.needed = *state->tmp.out.needed;
14454 *state->orig.out.status_code = *state->tmp.out.status_code;
14457 state->orig.out.result = state->tmp.out.result;
14459 /* Reset temporary structure */
14460 ZERO_STRUCT(state->tmp);
14462 tevent_req_done(req);
14465 NTSTATUS dcerpc_spoolss_XcvData_recv(struct tevent_req *req,
14466 TALLOC_CTX *mem_ctx,
14469 struct dcerpc_spoolss_XcvData_state *state = tevent_req_data(
14470 req, struct dcerpc_spoolss_XcvData_state);
14473 if (tevent_req_is_nterror(req, &status)) {
14474 tevent_req_received(req);
14478 /* Steal possible out parameters to the callers context */
14479 talloc_steal(mem_ctx, state->out_mem_ctx);
14481 /* Return result */
14482 *result = state->orig.out.result;
14484 tevent_req_received(req);
14485 return NT_STATUS_OK;
14488 NTSTATUS dcerpc_spoolss_XcvData(struct dcerpc_binding_handle *h,
14489 TALLOC_CTX *mem_ctx,
14490 struct policy_handle *_handle /* [in] [ref] */,
14491 const char *_function_name /* [in] [charset(UTF16)] */,
14492 DATA_BLOB _in_data /* [in] */,
14493 uint32_t __in_data_length /* [in] [value(r->in.in_data.length)] */,
14494 uint8_t *_out_data /* [out] [ref,size_is(out_data_size)] */,
14495 uint32_t _out_data_size /* [in] */,
14496 uint32_t *_needed /* [out] [ref] */,
14497 uint32_t *_status_code /* [in,out] [ref] */,
14500 struct spoolss_XcvData r;
14503 /* In parameters */
14504 r.in.handle = _handle;
14505 r.in.function_name = _function_name;
14506 r.in.in_data = _in_data;
14507 r.in._in_data_length = __in_data_length;
14508 r.in.out_data_size = _out_data_size;
14509 r.in.status_code = _status_code;
14511 status = dcerpc_spoolss_XcvData_r(h, mem_ctx, &r);
14512 if (!NT_STATUS_IS_OK(status)) {
14516 /* Return variables */
14518 size_t _copy_len_out_data;
14519 _copy_len_out_data = r.in.out_data_size;
14520 memcpy(_out_data, r.out.out_data, _copy_len_out_data * sizeof(*_out_data));
14522 *_needed = *r.out.needed;
14523 *_status_code = *r.out.status_code;
14525 /* Return result */
14526 *result = r.out.result;
14528 return NT_STATUS_OK;
14531 struct dcerpc_spoolss_AddPrinterDriverEx_r_state {
14532 TALLOC_CTX *out_mem_ctx;
14535 static void dcerpc_spoolss_AddPrinterDriverEx_r_done(struct tevent_req *subreq);
14537 struct tevent_req *dcerpc_spoolss_AddPrinterDriverEx_r_send(TALLOC_CTX *mem_ctx,
14538 struct tevent_context *ev,
14539 struct dcerpc_binding_handle *h,
14540 struct spoolss_AddPrinterDriverEx *r)
14542 struct tevent_req *req;
14543 struct dcerpc_spoolss_AddPrinterDriverEx_r_state *state;
14544 struct tevent_req *subreq;
14546 req = tevent_req_create(mem_ctx, &state,
14547 struct dcerpc_spoolss_AddPrinterDriverEx_r_state);
14552 state->out_mem_ctx = NULL;
14553 subreq = dcerpc_binding_handle_call_send(state, ev, h,
14554 NULL, &ndr_table_spoolss,
14555 NDR_SPOOLSS_ADDPRINTERDRIVEREX, state, r);
14556 if (tevent_req_nomem(subreq, req)) {
14557 return tevent_req_post(req, ev);
14559 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinterDriverEx_r_done, req);
14564 static void dcerpc_spoolss_AddPrinterDriverEx_r_done(struct tevent_req *subreq)
14566 struct tevent_req *req =
14567 tevent_req_callback_data(subreq,
14568 struct tevent_req);
14571 status = dcerpc_binding_handle_call_recv(subreq);
14572 if (!NT_STATUS_IS_OK(status)) {
14573 tevent_req_nterror(req, status);
14577 tevent_req_done(req);
14580 NTSTATUS dcerpc_spoolss_AddPrinterDriverEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
14582 struct dcerpc_spoolss_AddPrinterDriverEx_r_state *state =
14583 tevent_req_data(req,
14584 struct dcerpc_spoolss_AddPrinterDriverEx_r_state);
14587 if (tevent_req_is_nterror(req, &status)) {
14588 tevent_req_received(req);
14592 talloc_steal(mem_ctx, state->out_mem_ctx);
14594 tevent_req_received(req);
14595 return NT_STATUS_OK;
14598 NTSTATUS dcerpc_spoolss_AddPrinterDriverEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPrinterDriverEx *r)
14602 status = dcerpc_binding_handle_call(h,
14603 NULL, &ndr_table_spoolss,
14604 NDR_SPOOLSS_ADDPRINTERDRIVEREX, mem_ctx, r);
14609 NTSTATUS dcerpc_spoolss_AddPrinterDriverEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_AddPrinterDriverEx *r)
14613 status = dcerpc_spoolss_AddPrinterDriverEx_r(p->binding_handle, mem_ctx, r);
14615 if (NT_STATUS_IS_RPC(status)) {
14616 status = NT_STATUS_NET_WRITE_FAULT;
14622 struct dcerpc_spoolss_AddPrinterDriverEx_state {
14623 struct spoolss_AddPrinterDriverEx orig;
14624 struct spoolss_AddPrinterDriverEx tmp;
14625 TALLOC_CTX *out_mem_ctx;
14628 static void dcerpc_spoolss_AddPrinterDriverEx_done(struct tevent_req *subreq);
14630 struct tevent_req *dcerpc_spoolss_AddPrinterDriverEx_send(TALLOC_CTX *mem_ctx,
14631 struct tevent_context *ev,
14632 struct dcerpc_binding_handle *h,
14633 const char *_servername /* [in] [unique,charset(UTF16)] */,
14634 struct spoolss_AddDriverInfoCtr *_info_ctr /* [in] [ref] */,
14635 uint32_t _flags /* [in] */)
14637 struct tevent_req *req;
14638 struct dcerpc_spoolss_AddPrinterDriverEx_state *state;
14639 struct tevent_req *subreq;
14641 req = tevent_req_create(mem_ctx, &state,
14642 struct dcerpc_spoolss_AddPrinterDriverEx_state);
14646 state->out_mem_ctx = NULL;
14648 /* In parameters */
14649 state->orig.in.servername = _servername;
14650 state->orig.in.info_ctr = _info_ctr;
14651 state->orig.in.flags = _flags;
14653 /* Out parameters */
14656 ZERO_STRUCT(state->orig.out.result);
14658 /* make a temporary copy, that we pass to the dispatch function */
14659 state->tmp = state->orig;
14661 subreq = dcerpc_spoolss_AddPrinterDriverEx_r_send(state, ev, h, &state->tmp);
14662 if (tevent_req_nomem(subreq, req)) {
14663 return tevent_req_post(req, ev);
14665 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinterDriverEx_done, req);
14669 static void dcerpc_spoolss_AddPrinterDriverEx_done(struct tevent_req *subreq)
14671 struct tevent_req *req = tevent_req_callback_data(
14672 subreq, struct tevent_req);
14673 struct dcerpc_spoolss_AddPrinterDriverEx_state *state = tevent_req_data(
14674 req, struct dcerpc_spoolss_AddPrinterDriverEx_state);
14676 TALLOC_CTX *mem_ctx;
14678 if (state->out_mem_ctx) {
14679 mem_ctx = state->out_mem_ctx;
14684 status = dcerpc_spoolss_AddPrinterDriverEx_r_recv(subreq, mem_ctx);
14685 TALLOC_FREE(subreq);
14686 if (!NT_STATUS_IS_OK(status)) {
14687 tevent_req_nterror(req, status);
14691 /* Copy out parameters */
14694 state->orig.out.result = state->tmp.out.result;
14696 /* Reset temporary structure */
14697 ZERO_STRUCT(state->tmp);
14699 tevent_req_done(req);
14702 NTSTATUS dcerpc_spoolss_AddPrinterDriverEx_recv(struct tevent_req *req,
14703 TALLOC_CTX *mem_ctx,
14706 struct dcerpc_spoolss_AddPrinterDriverEx_state *state = tevent_req_data(
14707 req, struct dcerpc_spoolss_AddPrinterDriverEx_state);
14710 if (tevent_req_is_nterror(req, &status)) {
14711 tevent_req_received(req);
14715 /* Steal possible out parameters to the callers context */
14716 talloc_steal(mem_ctx, state->out_mem_ctx);
14718 /* Return result */
14719 *result = state->orig.out.result;
14721 tevent_req_received(req);
14722 return NT_STATUS_OK;
14725 NTSTATUS dcerpc_spoolss_AddPrinterDriverEx(struct dcerpc_binding_handle *h,
14726 TALLOC_CTX *mem_ctx,
14727 const char *_servername /* [in] [unique,charset(UTF16)] */,
14728 struct spoolss_AddDriverInfoCtr *_info_ctr /* [in] [ref] */,
14729 uint32_t _flags /* [in] */,
14732 struct spoolss_AddPrinterDriverEx r;
14735 /* In parameters */
14736 r.in.servername = _servername;
14737 r.in.info_ctr = _info_ctr;
14738 r.in.flags = _flags;
14740 status = dcerpc_spoolss_AddPrinterDriverEx_r(h, mem_ctx, &r);
14741 if (!NT_STATUS_IS_OK(status)) {
14745 /* Return variables */
14747 /* Return result */
14748 *result = r.out.result;
14750 return NT_STATUS_OK;
14753 struct dcerpc_spoolss_GetCorePrinterDrivers_r_state {
14754 TALLOC_CTX *out_mem_ctx;
14757 static void dcerpc_spoolss_GetCorePrinterDrivers_r_done(struct tevent_req *subreq);
14759 struct tevent_req *dcerpc_spoolss_GetCorePrinterDrivers_r_send(TALLOC_CTX *mem_ctx,
14760 struct tevent_context *ev,
14761 struct dcerpc_binding_handle *h,
14762 struct spoolss_GetCorePrinterDrivers *r)
14764 struct tevent_req *req;
14765 struct dcerpc_spoolss_GetCorePrinterDrivers_r_state *state;
14766 struct tevent_req *subreq;
14768 req = tevent_req_create(mem_ctx, &state,
14769 struct dcerpc_spoolss_GetCorePrinterDrivers_r_state);
14774 state->out_mem_ctx = talloc_new(state);
14775 if (tevent_req_nomem(state->out_mem_ctx, req)) {
14776 return tevent_req_post(req, ev);
14779 subreq = dcerpc_binding_handle_call_send(state, ev, h,
14780 NULL, &ndr_table_spoolss,
14781 NDR_SPOOLSS_GETCOREPRINTERDRIVERS, state->out_mem_ctx, r);
14782 if (tevent_req_nomem(subreq, req)) {
14783 return tevent_req_post(req, ev);
14785 tevent_req_set_callback(subreq, dcerpc_spoolss_GetCorePrinterDrivers_r_done, req);
14790 static void dcerpc_spoolss_GetCorePrinterDrivers_r_done(struct tevent_req *subreq)
14792 struct tevent_req *req =
14793 tevent_req_callback_data(subreq,
14794 struct tevent_req);
14797 status = dcerpc_binding_handle_call_recv(subreq);
14798 if (!NT_STATUS_IS_OK(status)) {
14799 tevent_req_nterror(req, status);
14803 tevent_req_done(req);
14806 NTSTATUS dcerpc_spoolss_GetCorePrinterDrivers_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
14808 struct dcerpc_spoolss_GetCorePrinterDrivers_r_state *state =
14809 tevent_req_data(req,
14810 struct dcerpc_spoolss_GetCorePrinterDrivers_r_state);
14813 if (tevent_req_is_nterror(req, &status)) {
14814 tevent_req_received(req);
14818 talloc_steal(mem_ctx, state->out_mem_ctx);
14820 tevent_req_received(req);
14821 return NT_STATUS_OK;
14824 NTSTATUS dcerpc_spoolss_GetCorePrinterDrivers_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetCorePrinterDrivers *r)
14828 status = dcerpc_binding_handle_call(h,
14829 NULL, &ndr_table_spoolss,
14830 NDR_SPOOLSS_GETCOREPRINTERDRIVERS, mem_ctx, r);
14835 NTSTATUS dcerpc_spoolss_GetCorePrinterDrivers_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetCorePrinterDrivers *r)
14839 status = dcerpc_spoolss_GetCorePrinterDrivers_r(p->binding_handle, mem_ctx, r);
14841 if (NT_STATUS_IS_RPC(status)) {
14842 status = NT_STATUS_NET_WRITE_FAULT;
14848 struct dcerpc_spoolss_GetCorePrinterDrivers_state {
14849 struct spoolss_GetCorePrinterDrivers orig;
14850 struct spoolss_GetCorePrinterDrivers tmp;
14851 TALLOC_CTX *out_mem_ctx;
14854 static void dcerpc_spoolss_GetCorePrinterDrivers_done(struct tevent_req *subreq);
14856 struct tevent_req *dcerpc_spoolss_GetCorePrinterDrivers_send(TALLOC_CTX *mem_ctx,
14857 struct tevent_context *ev,
14858 struct dcerpc_binding_handle *h,
14859 const char *_servername /* [in] [unique,charset(UTF16)] */,
14860 const char *_architecture /* [in] [ref,charset(UTF16)] */,
14861 uint32_t _core_driver_size /* [in] */,
14862 const char *_core_driver_dependencies /* [in] [ref,charset(UTF16),size_is(core_driver_size)] */,
14863 uint32_t _core_printer_driver_count /* [in] */,
14864 struct spoolss_CorePrinterDriver *_core_printer_drivers /* [out] [ref,size_is(core_printer_driver_count)] */)
14866 struct tevent_req *req;
14867 struct dcerpc_spoolss_GetCorePrinterDrivers_state *state;
14868 struct tevent_req *subreq;
14870 req = tevent_req_create(mem_ctx, &state,
14871 struct dcerpc_spoolss_GetCorePrinterDrivers_state);
14875 state->out_mem_ctx = NULL;
14877 /* In parameters */
14878 state->orig.in.servername = _servername;
14879 state->orig.in.architecture = _architecture;
14880 state->orig.in.core_driver_size = _core_driver_size;
14881 state->orig.in.core_driver_dependencies = _core_driver_dependencies;
14882 state->orig.in.core_printer_driver_count = _core_printer_driver_count;
14884 /* Out parameters */
14885 state->orig.out.core_printer_drivers = _core_printer_drivers;
14888 ZERO_STRUCT(state->orig.out.result);
14890 state->out_mem_ctx = talloc_named_const(state, 0,
14891 "dcerpc_spoolss_GetCorePrinterDrivers_out_memory");
14892 if (tevent_req_nomem(state->out_mem_ctx, req)) {
14893 return tevent_req_post(req, ev);
14896 /* make a temporary copy, that we pass to the dispatch function */
14897 state->tmp = state->orig;
14899 subreq = dcerpc_spoolss_GetCorePrinterDrivers_r_send(state, ev, h, &state->tmp);
14900 if (tevent_req_nomem(subreq, req)) {
14901 return tevent_req_post(req, ev);
14903 tevent_req_set_callback(subreq, dcerpc_spoolss_GetCorePrinterDrivers_done, req);
14907 static void dcerpc_spoolss_GetCorePrinterDrivers_done(struct tevent_req *subreq)
14909 struct tevent_req *req = tevent_req_callback_data(
14910 subreq, struct tevent_req);
14911 struct dcerpc_spoolss_GetCorePrinterDrivers_state *state = tevent_req_data(
14912 req, struct dcerpc_spoolss_GetCorePrinterDrivers_state);
14914 TALLOC_CTX *mem_ctx;
14916 if (state->out_mem_ctx) {
14917 mem_ctx = state->out_mem_ctx;
14922 status = dcerpc_spoolss_GetCorePrinterDrivers_r_recv(subreq, mem_ctx);
14923 TALLOC_FREE(subreq);
14924 if (!NT_STATUS_IS_OK(status)) {
14925 tevent_req_nterror(req, status);
14929 /* Copy out parameters */
14931 size_t _copy_len_core_printer_drivers;
14932 _copy_len_core_printer_drivers = state->tmp.in.core_printer_driver_count;
14933 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));
14937 state->orig.out.result = state->tmp.out.result;
14939 /* Reset temporary structure */
14940 ZERO_STRUCT(state->tmp);
14942 tevent_req_done(req);
14945 NTSTATUS dcerpc_spoolss_GetCorePrinterDrivers_recv(struct tevent_req *req,
14946 TALLOC_CTX *mem_ctx,
14949 struct dcerpc_spoolss_GetCorePrinterDrivers_state *state = tevent_req_data(
14950 req, struct dcerpc_spoolss_GetCorePrinterDrivers_state);
14953 if (tevent_req_is_nterror(req, &status)) {
14954 tevent_req_received(req);
14958 /* Steal possible out parameters to the callers context */
14959 talloc_steal(mem_ctx, state->out_mem_ctx);
14961 /* Return result */
14962 *result = state->orig.out.result;
14964 tevent_req_received(req);
14965 return NT_STATUS_OK;
14968 NTSTATUS dcerpc_spoolss_GetCorePrinterDrivers(struct dcerpc_binding_handle *h,
14969 TALLOC_CTX *mem_ctx,
14970 const char *_servername /* [in] [unique,charset(UTF16)] */,
14971 const char *_architecture /* [in] [ref,charset(UTF16)] */,
14972 uint32_t _core_driver_size /* [in] */,
14973 const char *_core_driver_dependencies /* [in] [ref,charset(UTF16),size_is(core_driver_size)] */,
14974 uint32_t _core_printer_driver_count /* [in] */,
14975 struct spoolss_CorePrinterDriver *_core_printer_drivers /* [out] [ref,size_is(core_printer_driver_count)] */,
14978 struct spoolss_GetCorePrinterDrivers r;
14981 /* In parameters */
14982 r.in.servername = _servername;
14983 r.in.architecture = _architecture;
14984 r.in.core_driver_size = _core_driver_size;
14985 r.in.core_driver_dependencies = _core_driver_dependencies;
14986 r.in.core_printer_driver_count = _core_printer_driver_count;
14988 status = dcerpc_spoolss_GetCorePrinterDrivers_r(h, mem_ctx, &r);
14989 if (!NT_STATUS_IS_OK(status)) {
14993 /* Return variables */
14995 size_t _copy_len_core_printer_drivers;
14996 _copy_len_core_printer_drivers = r.in.core_printer_driver_count;
14997 memcpy(_core_printer_drivers, r.out.core_printer_drivers, _copy_len_core_printer_drivers * sizeof(*_core_printer_drivers));
15000 /* Return result */
15001 *result = r.out.result;
15003 return NT_STATUS_OK;
15006 struct dcerpc_spoolss_GetPrinterDriverPackagePath_r_state {
15007 TALLOC_CTX *out_mem_ctx;
15010 static void dcerpc_spoolss_GetPrinterDriverPackagePath_r_done(struct tevent_req *subreq);
15012 struct tevent_req *dcerpc_spoolss_GetPrinterDriverPackagePath_r_send(TALLOC_CTX *mem_ctx,
15013 struct tevent_context *ev,
15014 struct dcerpc_binding_handle *h,
15015 struct spoolss_GetPrinterDriverPackagePath *r)
15017 struct tevent_req *req;
15018 struct dcerpc_spoolss_GetPrinterDriverPackagePath_r_state *state;
15019 struct tevent_req *subreq;
15021 req = tevent_req_create(mem_ctx, &state,
15022 struct dcerpc_spoolss_GetPrinterDriverPackagePath_r_state);
15027 state->out_mem_ctx = talloc_new(state);
15028 if (tevent_req_nomem(state->out_mem_ctx, req)) {
15029 return tevent_req_post(req, ev);
15032 subreq = dcerpc_binding_handle_call_send(state, ev, h,
15033 NULL, &ndr_table_spoolss,
15034 NDR_SPOOLSS_GETPRINTERDRIVERPACKAGEPATH, state->out_mem_ctx, r);
15035 if (tevent_req_nomem(subreq, req)) {
15036 return tevent_req_post(req, ev);
15038 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriverPackagePath_r_done, req);
15043 static void dcerpc_spoolss_GetPrinterDriverPackagePath_r_done(struct tevent_req *subreq)
15045 struct tevent_req *req =
15046 tevent_req_callback_data(subreq,
15047 struct tevent_req);
15050 status = dcerpc_binding_handle_call_recv(subreq);
15051 if (!NT_STATUS_IS_OK(status)) {
15052 tevent_req_nterror(req, status);
15056 tevent_req_done(req);
15059 NTSTATUS dcerpc_spoolss_GetPrinterDriverPackagePath_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
15061 struct dcerpc_spoolss_GetPrinterDriverPackagePath_r_state *state =
15062 tevent_req_data(req,
15063 struct dcerpc_spoolss_GetPrinterDriverPackagePath_r_state);
15066 if (tevent_req_is_nterror(req, &status)) {
15067 tevent_req_received(req);
15071 talloc_steal(mem_ctx, state->out_mem_ctx);
15073 tevent_req_received(req);
15074 return NT_STATUS_OK;
15077 NTSTATUS dcerpc_spoolss_GetPrinterDriverPackagePath_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDriverPackagePath *r)
15081 status = dcerpc_binding_handle_call(h,
15082 NULL, &ndr_table_spoolss,
15083 NDR_SPOOLSS_GETPRINTERDRIVERPACKAGEPATH, mem_ctx, r);
15088 NTSTATUS dcerpc_spoolss_GetPrinterDriverPackagePath_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDriverPackagePath *r)
15092 status = dcerpc_spoolss_GetPrinterDriverPackagePath_r(p->binding_handle, mem_ctx, r);
15094 if (NT_STATUS_IS_RPC(status)) {
15095 status = NT_STATUS_NET_WRITE_FAULT;
15101 struct dcerpc_spoolss_GetPrinterDriverPackagePath_state {
15102 struct spoolss_GetPrinterDriverPackagePath orig;
15103 struct spoolss_GetPrinterDriverPackagePath tmp;
15104 TALLOC_CTX *out_mem_ctx;
15107 static void dcerpc_spoolss_GetPrinterDriverPackagePath_done(struct tevent_req *subreq);
15109 struct tevent_req *dcerpc_spoolss_GetPrinterDriverPackagePath_send(TALLOC_CTX *mem_ctx,
15110 struct tevent_context *ev,
15111 struct dcerpc_binding_handle *h,
15112 const char *_servername /* [in] [unique,charset(UTF16)] */,
15113 const char *_architecture /* [in] [ref,charset(UTF16)] */,
15114 const char *_language /* [in] [unique,charset(UTF16)] */,
15115 const char *_package_id /* [in] [ref,charset(UTF16)] */,
15116 const char *_driver_package_cab /* [in,out] [unique,charset(UTF16),size_is(driver_package_cab_size)] */,
15117 uint32_t _driver_package_cab_size /* [in] */,
15118 uint32_t *_required /* [out] [ref] */)
15120 struct tevent_req *req;
15121 struct dcerpc_spoolss_GetPrinterDriverPackagePath_state *state;
15122 struct tevent_req *subreq;
15124 req = tevent_req_create(mem_ctx, &state,
15125 struct dcerpc_spoolss_GetPrinterDriverPackagePath_state);
15129 state->out_mem_ctx = NULL;
15131 /* In parameters */
15132 state->orig.in.servername = _servername;
15133 state->orig.in.architecture = _architecture;
15134 state->orig.in.language = _language;
15135 state->orig.in.package_id = _package_id;
15136 state->orig.in.driver_package_cab = _driver_package_cab;
15137 state->orig.in.driver_package_cab_size = _driver_package_cab_size;
15139 /* Out parameters */
15140 state->orig.out.driver_package_cab = _driver_package_cab;
15141 state->orig.out.required = _required;
15144 ZERO_STRUCT(state->orig.out.result);
15146 state->out_mem_ctx = talloc_named_const(state, 0,
15147 "dcerpc_spoolss_GetPrinterDriverPackagePath_out_memory");
15148 if (tevent_req_nomem(state->out_mem_ctx, req)) {
15149 return tevent_req_post(req, ev);
15152 /* make a temporary copy, that we pass to the dispatch function */
15153 state->tmp = state->orig;
15155 subreq = dcerpc_spoolss_GetPrinterDriverPackagePath_r_send(state, ev, h, &state->tmp);
15156 if (tevent_req_nomem(subreq, req)) {
15157 return tevent_req_post(req, ev);
15159 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriverPackagePath_done, req);
15163 static void dcerpc_spoolss_GetPrinterDriverPackagePath_done(struct tevent_req *subreq)
15165 struct tevent_req *req = tevent_req_callback_data(
15166 subreq, struct tevent_req);
15167 struct dcerpc_spoolss_GetPrinterDriverPackagePath_state *state = tevent_req_data(
15168 req, struct dcerpc_spoolss_GetPrinterDriverPackagePath_state);
15170 TALLOC_CTX *mem_ctx;
15172 if (state->out_mem_ctx) {
15173 mem_ctx = state->out_mem_ctx;
15178 status = dcerpc_spoolss_GetPrinterDriverPackagePath_r_recv(subreq, mem_ctx);
15179 TALLOC_FREE(subreq);
15180 if (!NT_STATUS_IS_OK(status)) {
15181 tevent_req_nterror(req, status);
15185 /* Copy out parameters */
15186 if (state->orig.out.driver_package_cab && state->tmp.out.driver_package_cab) {
15188 size_t _copy_len_driver_package_cab;
15189 _copy_len_driver_package_cab = ndr_charset_length(state->tmp.out.driver_package_cab, CH_UNIX);
15190 if (_copy_len_driver_package_cab > ndr_charset_length(state->tmp.in.driver_package_cab, CH_UNIX)) {
15191 tevent_req_nterror(req, NT_STATUS_INVALID_NETWORK_RESPONSE);
15194 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));
15197 *state->orig.out.required = *state->tmp.out.required;
15200 state->orig.out.result = state->tmp.out.result;
15202 /* Reset temporary structure */
15203 ZERO_STRUCT(state->tmp);
15205 tevent_req_done(req);
15208 NTSTATUS dcerpc_spoolss_GetPrinterDriverPackagePath_recv(struct tevent_req *req,
15209 TALLOC_CTX *mem_ctx,
15212 struct dcerpc_spoolss_GetPrinterDriverPackagePath_state *state = tevent_req_data(
15213 req, struct dcerpc_spoolss_GetPrinterDriverPackagePath_state);
15216 if (tevent_req_is_nterror(req, &status)) {
15217 tevent_req_received(req);
15221 /* Steal possible out parameters to the callers context */
15222 talloc_steal(mem_ctx, state->out_mem_ctx);
15224 /* Return result */
15225 *result = state->orig.out.result;
15227 tevent_req_received(req);
15228 return NT_STATUS_OK;
15231 NTSTATUS dcerpc_spoolss_GetPrinterDriverPackagePath(struct dcerpc_binding_handle *h,
15232 TALLOC_CTX *mem_ctx,
15233 const char *_servername /* [in] [unique,charset(UTF16)] */,
15234 const char *_architecture /* [in] [ref,charset(UTF16)] */,
15235 const char *_language /* [in] [unique,charset(UTF16)] */,
15236 const char *_package_id /* [in] [ref,charset(UTF16)] */,
15237 const char *_driver_package_cab /* [in,out] [unique,charset(UTF16),size_is(driver_package_cab_size)] */,
15238 uint32_t _driver_package_cab_size /* [in] */,
15239 uint32_t *_required /* [out] [ref] */,
15242 struct spoolss_GetPrinterDriverPackagePath r;
15245 /* In parameters */
15246 r.in.servername = _servername;
15247 r.in.architecture = _architecture;
15248 r.in.language = _language;
15249 r.in.package_id = _package_id;
15250 r.in.driver_package_cab = _driver_package_cab;
15251 r.in.driver_package_cab_size = _driver_package_cab_size;
15253 status = dcerpc_spoolss_GetPrinterDriverPackagePath_r(h, mem_ctx, &r);
15254 if (!NT_STATUS_IS_OK(status)) {
15258 /* Return variables */
15259 if (_driver_package_cab && r.out.driver_package_cab) {
15261 size_t _copy_len_driver_package_cab;
15262 _copy_len_driver_package_cab = ndr_charset_length(r.out.driver_package_cab, CH_UNIX);
15263 if (_copy_len_driver_package_cab > ndr_charset_length(r.in.driver_package_cab, CH_UNIX)) {
15264 return NT_STATUS_INVALID_NETWORK_RESPONSE;
15266 memcpy(discard_const_p(uint8_t *, _driver_package_cab), r.out.driver_package_cab, _copy_len_driver_package_cab * sizeof(*_driver_package_cab));
15269 *_required = *r.out.required;
15271 /* Return result */
15272 *result = r.out.result;
15274 return NT_STATUS_OK;