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 */
5408 memcpy(state->orig.out.data, state->tmp.out.data, (state->tmp.in.data_size) * sizeof(*state->orig.out.data));
5409 *state->orig.out._data_size = *state->tmp.out._data_size;
5412 state->orig.out.result = state->tmp.out.result;
5414 /* Reset temporary structure */
5415 ZERO_STRUCT(state->tmp);
5417 tevent_req_done(req);
5420 NTSTATUS dcerpc_spoolss_ReadPrinter_recv(struct tevent_req *req,
5421 TALLOC_CTX *mem_ctx,
5424 struct dcerpc_spoolss_ReadPrinter_state *state = tevent_req_data(
5425 req, struct dcerpc_spoolss_ReadPrinter_state);
5428 if (tevent_req_is_nterror(req, &status)) {
5429 tevent_req_received(req);
5433 /* Steal possible out parameters to the callers context */
5434 talloc_steal(mem_ctx, state->out_mem_ctx);
5437 *result = state->orig.out.result;
5439 tevent_req_received(req);
5440 return NT_STATUS_OK;
5443 NTSTATUS dcerpc_spoolss_ReadPrinter(struct dcerpc_binding_handle *h,
5444 TALLOC_CTX *mem_ctx,
5445 struct policy_handle *_handle /* [in] [ref] */,
5446 uint8_t *_data /* [out] [ref,size_is(data_size)] */,
5447 uint32_t _data_size /* [in] */,
5448 uint32_t *__data_size /* [out] [ref] */,
5451 struct spoolss_ReadPrinter r;
5455 r.in.handle = _handle;
5456 r.in.data_size = _data_size;
5458 status = dcerpc_spoolss_ReadPrinter_r(h, mem_ctx, &r);
5459 if (!NT_STATUS_IS_OK(status)) {
5463 /* Return variables */
5464 memcpy(_data, r.out.data, (r.in.data_size) * sizeof(*_data));
5465 *__data_size = *r.out._data_size;
5468 *result = r.out.result;
5470 return NT_STATUS_OK;
5473 struct dcerpc_spoolss_EndDocPrinter_r_state {
5474 TALLOC_CTX *out_mem_ctx;
5477 static void dcerpc_spoolss_EndDocPrinter_r_done(struct tevent_req *subreq);
5479 struct tevent_req *dcerpc_spoolss_EndDocPrinter_r_send(TALLOC_CTX *mem_ctx,
5480 struct tevent_context *ev,
5481 struct dcerpc_binding_handle *h,
5482 struct spoolss_EndDocPrinter *r)
5484 struct tevent_req *req;
5485 struct dcerpc_spoolss_EndDocPrinter_r_state *state;
5486 struct tevent_req *subreq;
5488 req = tevent_req_create(mem_ctx, &state,
5489 struct dcerpc_spoolss_EndDocPrinter_r_state);
5494 state->out_mem_ctx = NULL;
5495 subreq = dcerpc_binding_handle_call_send(state, ev, h,
5496 NULL, &ndr_table_spoolss,
5497 NDR_SPOOLSS_ENDDOCPRINTER, state, r);
5498 if (tevent_req_nomem(subreq, req)) {
5499 return tevent_req_post(req, ev);
5501 tevent_req_set_callback(subreq, dcerpc_spoolss_EndDocPrinter_r_done, req);
5506 static void dcerpc_spoolss_EndDocPrinter_r_done(struct tevent_req *subreq)
5508 struct tevent_req *req =
5509 tevent_req_callback_data(subreq,
5513 status = dcerpc_binding_handle_call_recv(subreq);
5514 if (!NT_STATUS_IS_OK(status)) {
5515 tevent_req_nterror(req, status);
5519 tevent_req_done(req);
5522 NTSTATUS dcerpc_spoolss_EndDocPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
5524 struct dcerpc_spoolss_EndDocPrinter_r_state *state =
5525 tevent_req_data(req,
5526 struct dcerpc_spoolss_EndDocPrinter_r_state);
5529 if (tevent_req_is_nterror(req, &status)) {
5530 tevent_req_received(req);
5534 talloc_steal(mem_ctx, state->out_mem_ctx);
5536 tevent_req_received(req);
5537 return NT_STATUS_OK;
5540 NTSTATUS dcerpc_spoolss_EndDocPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EndDocPrinter *r)
5544 status = dcerpc_binding_handle_call(h,
5545 NULL, &ndr_table_spoolss,
5546 NDR_SPOOLSS_ENDDOCPRINTER, mem_ctx, r);
5551 NTSTATUS dcerpc_spoolss_EndDocPrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EndDocPrinter *r)
5555 status = dcerpc_spoolss_EndDocPrinter_r(p->binding_handle, mem_ctx, r);
5557 if (NT_STATUS_IS_RPC(status)) {
5558 status = NT_STATUS_NET_WRITE_FAULT;
5564 struct dcerpc_spoolss_EndDocPrinter_state {
5565 struct spoolss_EndDocPrinter orig;
5566 struct spoolss_EndDocPrinter tmp;
5567 TALLOC_CTX *out_mem_ctx;
5570 static void dcerpc_spoolss_EndDocPrinter_done(struct tevent_req *subreq);
5572 struct tevent_req *dcerpc_spoolss_EndDocPrinter_send(TALLOC_CTX *mem_ctx,
5573 struct tevent_context *ev,
5574 struct dcerpc_binding_handle *h,
5575 struct policy_handle *_handle /* [in] [ref] */)
5577 struct tevent_req *req;
5578 struct dcerpc_spoolss_EndDocPrinter_state *state;
5579 struct tevent_req *subreq;
5581 req = tevent_req_create(mem_ctx, &state,
5582 struct dcerpc_spoolss_EndDocPrinter_state);
5586 state->out_mem_ctx = NULL;
5589 state->orig.in.handle = _handle;
5591 /* Out parameters */
5594 ZERO_STRUCT(state->orig.out.result);
5596 /* make a temporary copy, that we pass to the dispatch function */
5597 state->tmp = state->orig;
5599 subreq = dcerpc_spoolss_EndDocPrinter_r_send(state, ev, h, &state->tmp);
5600 if (tevent_req_nomem(subreq, req)) {
5601 return tevent_req_post(req, ev);
5603 tevent_req_set_callback(subreq, dcerpc_spoolss_EndDocPrinter_done, req);
5607 static void dcerpc_spoolss_EndDocPrinter_done(struct tevent_req *subreq)
5609 struct tevent_req *req = tevent_req_callback_data(
5610 subreq, struct tevent_req);
5611 struct dcerpc_spoolss_EndDocPrinter_state *state = tevent_req_data(
5612 req, struct dcerpc_spoolss_EndDocPrinter_state);
5614 TALLOC_CTX *mem_ctx;
5616 if (state->out_mem_ctx) {
5617 mem_ctx = state->out_mem_ctx;
5622 status = dcerpc_spoolss_EndDocPrinter_r_recv(subreq, mem_ctx);
5623 TALLOC_FREE(subreq);
5624 if (!NT_STATUS_IS_OK(status)) {
5625 tevent_req_nterror(req, status);
5629 /* Copy out parameters */
5632 state->orig.out.result = state->tmp.out.result;
5634 /* Reset temporary structure */
5635 ZERO_STRUCT(state->tmp);
5637 tevent_req_done(req);
5640 NTSTATUS dcerpc_spoolss_EndDocPrinter_recv(struct tevent_req *req,
5641 TALLOC_CTX *mem_ctx,
5644 struct dcerpc_spoolss_EndDocPrinter_state *state = tevent_req_data(
5645 req, struct dcerpc_spoolss_EndDocPrinter_state);
5648 if (tevent_req_is_nterror(req, &status)) {
5649 tevent_req_received(req);
5653 /* Steal possible out parameters to the callers context */
5654 talloc_steal(mem_ctx, state->out_mem_ctx);
5657 *result = state->orig.out.result;
5659 tevent_req_received(req);
5660 return NT_STATUS_OK;
5663 NTSTATUS dcerpc_spoolss_EndDocPrinter(struct dcerpc_binding_handle *h,
5664 TALLOC_CTX *mem_ctx,
5665 struct policy_handle *_handle /* [in] [ref] */,
5668 struct spoolss_EndDocPrinter r;
5672 r.in.handle = _handle;
5674 status = dcerpc_spoolss_EndDocPrinter_r(h, mem_ctx, &r);
5675 if (!NT_STATUS_IS_OK(status)) {
5679 /* Return variables */
5682 *result = r.out.result;
5684 return NT_STATUS_OK;
5687 struct dcerpc_spoolss_AddJob_r_state {
5688 TALLOC_CTX *out_mem_ctx;
5691 static void dcerpc_spoolss_AddJob_r_done(struct tevent_req *subreq);
5693 struct tevent_req *dcerpc_spoolss_AddJob_r_send(TALLOC_CTX *mem_ctx,
5694 struct tevent_context *ev,
5695 struct dcerpc_binding_handle *h,
5696 struct spoolss_AddJob *r)
5698 struct tevent_req *req;
5699 struct dcerpc_spoolss_AddJob_r_state *state;
5700 struct tevent_req *subreq;
5702 req = tevent_req_create(mem_ctx, &state,
5703 struct dcerpc_spoolss_AddJob_r_state);
5708 state->out_mem_ctx = talloc_new(state);
5709 if (tevent_req_nomem(state->out_mem_ctx, req)) {
5710 return tevent_req_post(req, ev);
5713 subreq = dcerpc_binding_handle_call_send(state, ev, h,
5714 NULL, &ndr_table_spoolss,
5715 NDR_SPOOLSS_ADDJOB, state->out_mem_ctx, r);
5716 if (tevent_req_nomem(subreq, req)) {
5717 return tevent_req_post(req, ev);
5719 tevent_req_set_callback(subreq, dcerpc_spoolss_AddJob_r_done, req);
5724 static void dcerpc_spoolss_AddJob_r_done(struct tevent_req *subreq)
5726 struct tevent_req *req =
5727 tevent_req_callback_data(subreq,
5731 status = dcerpc_binding_handle_call_recv(subreq);
5732 if (!NT_STATUS_IS_OK(status)) {
5733 tevent_req_nterror(req, status);
5737 tevent_req_done(req);
5740 NTSTATUS dcerpc_spoolss_AddJob_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
5742 struct dcerpc_spoolss_AddJob_r_state *state =
5743 tevent_req_data(req,
5744 struct dcerpc_spoolss_AddJob_r_state);
5747 if (tevent_req_is_nterror(req, &status)) {
5748 tevent_req_received(req);
5752 talloc_steal(mem_ctx, state->out_mem_ctx);
5754 tevent_req_received(req);
5755 return NT_STATUS_OK;
5758 NTSTATUS dcerpc_spoolss_AddJob_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddJob *r)
5762 status = dcerpc_binding_handle_call(h,
5763 NULL, &ndr_table_spoolss,
5764 NDR_SPOOLSS_ADDJOB, mem_ctx, r);
5769 NTSTATUS dcerpc_spoolss_AddJob_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_AddJob *r)
5773 status = dcerpc_spoolss_AddJob_r(p->binding_handle, mem_ctx, r);
5775 if (NT_STATUS_IS_RPC(status)) {
5776 status = NT_STATUS_NET_WRITE_FAULT;
5782 struct dcerpc_spoolss_AddJob_state {
5783 struct spoolss_AddJob orig;
5784 struct spoolss_AddJob tmp;
5785 TALLOC_CTX *out_mem_ctx;
5788 static void dcerpc_spoolss_AddJob_done(struct tevent_req *subreq);
5790 struct tevent_req *dcerpc_spoolss_AddJob_send(TALLOC_CTX *mem_ctx,
5791 struct tevent_context *ev,
5792 struct dcerpc_binding_handle *h,
5793 struct policy_handle *_handle /* [in] [ref] */,
5794 uint32_t _level /* [in] */,
5795 uint8_t *_buffer /* [in,out] [unique,size_is(offered)] */,
5796 uint32_t _offered /* [in] */,
5797 uint32_t *_needed /* [out] [ref] */)
5799 struct tevent_req *req;
5800 struct dcerpc_spoolss_AddJob_state *state;
5801 struct tevent_req *subreq;
5803 req = tevent_req_create(mem_ctx, &state,
5804 struct dcerpc_spoolss_AddJob_state);
5808 state->out_mem_ctx = NULL;
5811 state->orig.in.handle = _handle;
5812 state->orig.in.level = _level;
5813 state->orig.in.buffer = _buffer;
5814 state->orig.in.offered = _offered;
5816 /* Out parameters */
5817 state->orig.out.buffer = _buffer;
5818 state->orig.out.needed = _needed;
5821 ZERO_STRUCT(state->orig.out.result);
5823 state->out_mem_ctx = talloc_named_const(state, 0,
5824 "dcerpc_spoolss_AddJob_out_memory");
5825 if (tevent_req_nomem(state->out_mem_ctx, req)) {
5826 return tevent_req_post(req, ev);
5829 /* make a temporary copy, that we pass to the dispatch function */
5830 state->tmp = state->orig;
5832 subreq = dcerpc_spoolss_AddJob_r_send(state, ev, h, &state->tmp);
5833 if (tevent_req_nomem(subreq, req)) {
5834 return tevent_req_post(req, ev);
5836 tevent_req_set_callback(subreq, dcerpc_spoolss_AddJob_done, req);
5840 static void dcerpc_spoolss_AddJob_done(struct tevent_req *subreq)
5842 struct tevent_req *req = tevent_req_callback_data(
5843 subreq, struct tevent_req);
5844 struct dcerpc_spoolss_AddJob_state *state = tevent_req_data(
5845 req, struct dcerpc_spoolss_AddJob_state);
5847 TALLOC_CTX *mem_ctx;
5849 if (state->out_mem_ctx) {
5850 mem_ctx = state->out_mem_ctx;
5855 status = dcerpc_spoolss_AddJob_r_recv(subreq, mem_ctx);
5856 TALLOC_FREE(subreq);
5857 if (!NT_STATUS_IS_OK(status)) {
5858 tevent_req_nterror(req, status);
5862 /* Copy out parameters */
5863 if (state->orig.out.buffer && state->tmp.out.buffer) {
5864 memcpy(state->orig.out.buffer, state->tmp.out.buffer, (state->tmp.in.offered) * sizeof(*state->orig.out.buffer));
5866 *state->orig.out.needed = *state->tmp.out.needed;
5869 state->orig.out.result = state->tmp.out.result;
5871 /* Reset temporary structure */
5872 ZERO_STRUCT(state->tmp);
5874 tevent_req_done(req);
5877 NTSTATUS dcerpc_spoolss_AddJob_recv(struct tevent_req *req,
5878 TALLOC_CTX *mem_ctx,
5881 struct dcerpc_spoolss_AddJob_state *state = tevent_req_data(
5882 req, struct dcerpc_spoolss_AddJob_state);
5885 if (tevent_req_is_nterror(req, &status)) {
5886 tevent_req_received(req);
5890 /* Steal possible out parameters to the callers context */
5891 talloc_steal(mem_ctx, state->out_mem_ctx);
5894 *result = state->orig.out.result;
5896 tevent_req_received(req);
5897 return NT_STATUS_OK;
5900 NTSTATUS dcerpc_spoolss_AddJob(struct dcerpc_binding_handle *h,
5901 TALLOC_CTX *mem_ctx,
5902 struct policy_handle *_handle /* [in] [ref] */,
5903 uint32_t _level /* [in] */,
5904 uint8_t *_buffer /* [in,out] [unique,size_is(offered)] */,
5905 uint32_t _offered /* [in] */,
5906 uint32_t *_needed /* [out] [ref] */,
5909 struct spoolss_AddJob r;
5913 r.in.handle = _handle;
5914 r.in.level = _level;
5915 r.in.buffer = _buffer;
5916 r.in.offered = _offered;
5918 status = dcerpc_spoolss_AddJob_r(h, mem_ctx, &r);
5919 if (!NT_STATUS_IS_OK(status)) {
5923 /* Return variables */
5924 if (_buffer && r.out.buffer) {
5925 memcpy(_buffer, r.out.buffer, (r.in.offered) * sizeof(*_buffer));
5927 *_needed = *r.out.needed;
5930 *result = r.out.result;
5932 return NT_STATUS_OK;
5935 struct dcerpc_spoolss_ScheduleJob_r_state {
5936 TALLOC_CTX *out_mem_ctx;
5939 static void dcerpc_spoolss_ScheduleJob_r_done(struct tevent_req *subreq);
5941 struct tevent_req *dcerpc_spoolss_ScheduleJob_r_send(TALLOC_CTX *mem_ctx,
5942 struct tevent_context *ev,
5943 struct dcerpc_binding_handle *h,
5944 struct spoolss_ScheduleJob *r)
5946 struct tevent_req *req;
5947 struct dcerpc_spoolss_ScheduleJob_r_state *state;
5948 struct tevent_req *subreq;
5950 req = tevent_req_create(mem_ctx, &state,
5951 struct dcerpc_spoolss_ScheduleJob_r_state);
5956 state->out_mem_ctx = NULL;
5957 subreq = dcerpc_binding_handle_call_send(state, ev, h,
5958 NULL, &ndr_table_spoolss,
5959 NDR_SPOOLSS_SCHEDULEJOB, state, r);
5960 if (tevent_req_nomem(subreq, req)) {
5961 return tevent_req_post(req, ev);
5963 tevent_req_set_callback(subreq, dcerpc_spoolss_ScheduleJob_r_done, req);
5968 static void dcerpc_spoolss_ScheduleJob_r_done(struct tevent_req *subreq)
5970 struct tevent_req *req =
5971 tevent_req_callback_data(subreq,
5975 status = dcerpc_binding_handle_call_recv(subreq);
5976 if (!NT_STATUS_IS_OK(status)) {
5977 tevent_req_nterror(req, status);
5981 tevent_req_done(req);
5984 NTSTATUS dcerpc_spoolss_ScheduleJob_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
5986 struct dcerpc_spoolss_ScheduleJob_r_state *state =
5987 tevent_req_data(req,
5988 struct dcerpc_spoolss_ScheduleJob_r_state);
5991 if (tevent_req_is_nterror(req, &status)) {
5992 tevent_req_received(req);
5996 talloc_steal(mem_ctx, state->out_mem_ctx);
5998 tevent_req_received(req);
5999 return NT_STATUS_OK;
6002 NTSTATUS dcerpc_spoolss_ScheduleJob_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ScheduleJob *r)
6006 status = dcerpc_binding_handle_call(h,
6007 NULL, &ndr_table_spoolss,
6008 NDR_SPOOLSS_SCHEDULEJOB, mem_ctx, r);
6013 NTSTATUS dcerpc_spoolss_ScheduleJob_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_ScheduleJob *r)
6017 status = dcerpc_spoolss_ScheduleJob_r(p->binding_handle, mem_ctx, r);
6019 if (NT_STATUS_IS_RPC(status)) {
6020 status = NT_STATUS_NET_WRITE_FAULT;
6026 struct dcerpc_spoolss_ScheduleJob_state {
6027 struct spoolss_ScheduleJob orig;
6028 struct spoolss_ScheduleJob tmp;
6029 TALLOC_CTX *out_mem_ctx;
6032 static void dcerpc_spoolss_ScheduleJob_done(struct tevent_req *subreq);
6034 struct tevent_req *dcerpc_spoolss_ScheduleJob_send(TALLOC_CTX *mem_ctx,
6035 struct tevent_context *ev,
6036 struct dcerpc_binding_handle *h,
6037 struct policy_handle *_handle /* [in] [ref] */,
6038 uint32_t _jobid /* [in] */)
6040 struct tevent_req *req;
6041 struct dcerpc_spoolss_ScheduleJob_state *state;
6042 struct tevent_req *subreq;
6044 req = tevent_req_create(mem_ctx, &state,
6045 struct dcerpc_spoolss_ScheduleJob_state);
6049 state->out_mem_ctx = NULL;
6052 state->orig.in.handle = _handle;
6053 state->orig.in.jobid = _jobid;
6055 /* Out parameters */
6058 ZERO_STRUCT(state->orig.out.result);
6060 /* make a temporary copy, that we pass to the dispatch function */
6061 state->tmp = state->orig;
6063 subreq = dcerpc_spoolss_ScheduleJob_r_send(state, ev, h, &state->tmp);
6064 if (tevent_req_nomem(subreq, req)) {
6065 return tevent_req_post(req, ev);
6067 tevent_req_set_callback(subreq, dcerpc_spoolss_ScheduleJob_done, req);
6071 static void dcerpc_spoolss_ScheduleJob_done(struct tevent_req *subreq)
6073 struct tevent_req *req = tevent_req_callback_data(
6074 subreq, struct tevent_req);
6075 struct dcerpc_spoolss_ScheduleJob_state *state = tevent_req_data(
6076 req, struct dcerpc_spoolss_ScheduleJob_state);
6078 TALLOC_CTX *mem_ctx;
6080 if (state->out_mem_ctx) {
6081 mem_ctx = state->out_mem_ctx;
6086 status = dcerpc_spoolss_ScheduleJob_r_recv(subreq, mem_ctx);
6087 TALLOC_FREE(subreq);
6088 if (!NT_STATUS_IS_OK(status)) {
6089 tevent_req_nterror(req, status);
6093 /* Copy out parameters */
6096 state->orig.out.result = state->tmp.out.result;
6098 /* Reset temporary structure */
6099 ZERO_STRUCT(state->tmp);
6101 tevent_req_done(req);
6104 NTSTATUS dcerpc_spoolss_ScheduleJob_recv(struct tevent_req *req,
6105 TALLOC_CTX *mem_ctx,
6108 struct dcerpc_spoolss_ScheduleJob_state *state = tevent_req_data(
6109 req, struct dcerpc_spoolss_ScheduleJob_state);
6112 if (tevent_req_is_nterror(req, &status)) {
6113 tevent_req_received(req);
6117 /* Steal possible out parameters to the callers context */
6118 talloc_steal(mem_ctx, state->out_mem_ctx);
6121 *result = state->orig.out.result;
6123 tevent_req_received(req);
6124 return NT_STATUS_OK;
6127 NTSTATUS dcerpc_spoolss_ScheduleJob(struct dcerpc_binding_handle *h,
6128 TALLOC_CTX *mem_ctx,
6129 struct policy_handle *_handle /* [in] [ref] */,
6130 uint32_t _jobid /* [in] */,
6133 struct spoolss_ScheduleJob r;
6137 r.in.handle = _handle;
6138 r.in.jobid = _jobid;
6140 status = dcerpc_spoolss_ScheduleJob_r(h, mem_ctx, &r);
6141 if (!NT_STATUS_IS_OK(status)) {
6145 /* Return variables */
6148 *result = r.out.result;
6150 return NT_STATUS_OK;
6153 struct dcerpc_spoolss_GetPrinterData_r_state {
6154 TALLOC_CTX *out_mem_ctx;
6157 static void dcerpc_spoolss_GetPrinterData_r_done(struct tevent_req *subreq);
6159 struct tevent_req *dcerpc_spoolss_GetPrinterData_r_send(TALLOC_CTX *mem_ctx,
6160 struct tevent_context *ev,
6161 struct dcerpc_binding_handle *h,
6162 struct spoolss_GetPrinterData *r)
6164 struct tevent_req *req;
6165 struct dcerpc_spoolss_GetPrinterData_r_state *state;
6166 struct tevent_req *subreq;
6168 req = tevent_req_create(mem_ctx, &state,
6169 struct dcerpc_spoolss_GetPrinterData_r_state);
6174 state->out_mem_ctx = talloc_new(state);
6175 if (tevent_req_nomem(state->out_mem_ctx, req)) {
6176 return tevent_req_post(req, ev);
6179 subreq = dcerpc_binding_handle_call_send(state, ev, h,
6180 NULL, &ndr_table_spoolss,
6181 NDR_SPOOLSS_GETPRINTERDATA, state->out_mem_ctx, r);
6182 if (tevent_req_nomem(subreq, req)) {
6183 return tevent_req_post(req, ev);
6185 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterData_r_done, req);
6190 static void dcerpc_spoolss_GetPrinterData_r_done(struct tevent_req *subreq)
6192 struct tevent_req *req =
6193 tevent_req_callback_data(subreq,
6197 status = dcerpc_binding_handle_call_recv(subreq);
6198 if (!NT_STATUS_IS_OK(status)) {
6199 tevent_req_nterror(req, status);
6203 tevent_req_done(req);
6206 NTSTATUS dcerpc_spoolss_GetPrinterData_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
6208 struct dcerpc_spoolss_GetPrinterData_r_state *state =
6209 tevent_req_data(req,
6210 struct dcerpc_spoolss_GetPrinterData_r_state);
6213 if (tevent_req_is_nterror(req, &status)) {
6214 tevent_req_received(req);
6218 talloc_steal(mem_ctx, state->out_mem_ctx);
6220 tevent_req_received(req);
6221 return NT_STATUS_OK;
6224 NTSTATUS dcerpc_spoolss_GetPrinterData_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterData *r)
6228 status = dcerpc_binding_handle_call(h,
6229 NULL, &ndr_table_spoolss,
6230 NDR_SPOOLSS_GETPRINTERDATA, mem_ctx, r);
6235 NTSTATUS dcerpc_spoolss_GetPrinterData_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterData *r)
6239 status = dcerpc_spoolss_GetPrinterData_r(p->binding_handle, mem_ctx, r);
6241 if (NT_STATUS_IS_RPC(status)) {
6242 status = NT_STATUS_NET_WRITE_FAULT;
6248 struct dcerpc_spoolss_GetPrinterData_state {
6249 struct spoolss_GetPrinterData orig;
6250 struct spoolss_GetPrinterData tmp;
6251 TALLOC_CTX *out_mem_ctx;
6254 static void dcerpc_spoolss_GetPrinterData_done(struct tevent_req *subreq);
6256 struct tevent_req *dcerpc_spoolss_GetPrinterData_send(TALLOC_CTX *mem_ctx,
6257 struct tevent_context *ev,
6258 struct dcerpc_binding_handle *h,
6259 struct policy_handle *_handle /* [in] [ref] */,
6260 const char *_value_name /* [in] [charset(UTF16)] */,
6261 enum winreg_Type *_type /* [out] [ref] */,
6262 uint8_t *_data /* [out] [ref,size_is(offered)] */,
6263 uint32_t _offered /* [in] */,
6264 uint32_t *_needed /* [out] [ref] */)
6266 struct tevent_req *req;
6267 struct dcerpc_spoolss_GetPrinterData_state *state;
6268 struct tevent_req *subreq;
6270 req = tevent_req_create(mem_ctx, &state,
6271 struct dcerpc_spoolss_GetPrinterData_state);
6275 state->out_mem_ctx = NULL;
6278 state->orig.in.handle = _handle;
6279 state->orig.in.value_name = _value_name;
6280 state->orig.in.offered = _offered;
6282 /* Out parameters */
6283 state->orig.out.type = _type;
6284 state->orig.out.data = _data;
6285 state->orig.out.needed = _needed;
6288 ZERO_STRUCT(state->orig.out.result);
6290 state->out_mem_ctx = talloc_named_const(state, 0,
6291 "dcerpc_spoolss_GetPrinterData_out_memory");
6292 if (tevent_req_nomem(state->out_mem_ctx, req)) {
6293 return tevent_req_post(req, ev);
6296 /* make a temporary copy, that we pass to the dispatch function */
6297 state->tmp = state->orig;
6299 subreq = dcerpc_spoolss_GetPrinterData_r_send(state, ev, h, &state->tmp);
6300 if (tevent_req_nomem(subreq, req)) {
6301 return tevent_req_post(req, ev);
6303 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterData_done, req);
6307 static void dcerpc_spoolss_GetPrinterData_done(struct tevent_req *subreq)
6309 struct tevent_req *req = tevent_req_callback_data(
6310 subreq, struct tevent_req);
6311 struct dcerpc_spoolss_GetPrinterData_state *state = tevent_req_data(
6312 req, struct dcerpc_spoolss_GetPrinterData_state);
6314 TALLOC_CTX *mem_ctx;
6316 if (state->out_mem_ctx) {
6317 mem_ctx = state->out_mem_ctx;
6322 status = dcerpc_spoolss_GetPrinterData_r_recv(subreq, mem_ctx);
6323 TALLOC_FREE(subreq);
6324 if (!NT_STATUS_IS_OK(status)) {
6325 tevent_req_nterror(req, status);
6329 /* Copy out parameters */
6330 *state->orig.out.type = *state->tmp.out.type;
6331 memcpy(state->orig.out.data, state->tmp.out.data, (state->tmp.in.offered) * sizeof(*state->orig.out.data));
6332 *state->orig.out.needed = *state->tmp.out.needed;
6335 state->orig.out.result = state->tmp.out.result;
6337 /* Reset temporary structure */
6338 ZERO_STRUCT(state->tmp);
6340 tevent_req_done(req);
6343 NTSTATUS dcerpc_spoolss_GetPrinterData_recv(struct tevent_req *req,
6344 TALLOC_CTX *mem_ctx,
6347 struct dcerpc_spoolss_GetPrinterData_state *state = tevent_req_data(
6348 req, struct dcerpc_spoolss_GetPrinterData_state);
6351 if (tevent_req_is_nterror(req, &status)) {
6352 tevent_req_received(req);
6356 /* Steal possible out parameters to the callers context */
6357 talloc_steal(mem_ctx, state->out_mem_ctx);
6360 *result = state->orig.out.result;
6362 tevent_req_received(req);
6363 return NT_STATUS_OK;
6366 NTSTATUS dcerpc_spoolss_GetPrinterData(struct dcerpc_binding_handle *h,
6367 TALLOC_CTX *mem_ctx,
6368 struct policy_handle *_handle /* [in] [ref] */,
6369 const char *_value_name /* [in] [charset(UTF16)] */,
6370 enum winreg_Type *_type /* [out] [ref] */,
6371 uint8_t *_data /* [out] [ref,size_is(offered)] */,
6372 uint32_t _offered /* [in] */,
6373 uint32_t *_needed /* [out] [ref] */,
6376 struct spoolss_GetPrinterData r;
6380 r.in.handle = _handle;
6381 r.in.value_name = _value_name;
6382 r.in.offered = _offered;
6384 status = dcerpc_spoolss_GetPrinterData_r(h, mem_ctx, &r);
6385 if (!NT_STATUS_IS_OK(status)) {
6389 /* Return variables */
6390 *_type = *r.out.type;
6391 memcpy(_data, r.out.data, (r.in.offered) * sizeof(*_data));
6392 *_needed = *r.out.needed;
6395 *result = r.out.result;
6397 return NT_STATUS_OK;
6400 struct dcerpc_spoolss_SetPrinterData_r_state {
6401 TALLOC_CTX *out_mem_ctx;
6404 static void dcerpc_spoolss_SetPrinterData_r_done(struct tevent_req *subreq);
6406 struct tevent_req *dcerpc_spoolss_SetPrinterData_r_send(TALLOC_CTX *mem_ctx,
6407 struct tevent_context *ev,
6408 struct dcerpc_binding_handle *h,
6409 struct spoolss_SetPrinterData *r)
6411 struct tevent_req *req;
6412 struct dcerpc_spoolss_SetPrinterData_r_state *state;
6413 struct tevent_req *subreq;
6415 req = tevent_req_create(mem_ctx, &state,
6416 struct dcerpc_spoolss_SetPrinterData_r_state);
6421 state->out_mem_ctx = NULL;
6422 subreq = dcerpc_binding_handle_call_send(state, ev, h,
6423 NULL, &ndr_table_spoolss,
6424 NDR_SPOOLSS_SETPRINTERDATA, state, r);
6425 if (tevent_req_nomem(subreq, req)) {
6426 return tevent_req_post(req, ev);
6428 tevent_req_set_callback(subreq, dcerpc_spoolss_SetPrinterData_r_done, req);
6433 static void dcerpc_spoolss_SetPrinterData_r_done(struct tevent_req *subreq)
6435 struct tevent_req *req =
6436 tevent_req_callback_data(subreq,
6440 status = dcerpc_binding_handle_call_recv(subreq);
6441 if (!NT_STATUS_IS_OK(status)) {
6442 tevent_req_nterror(req, status);
6446 tevent_req_done(req);
6449 NTSTATUS dcerpc_spoolss_SetPrinterData_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
6451 struct dcerpc_spoolss_SetPrinterData_r_state *state =
6452 tevent_req_data(req,
6453 struct dcerpc_spoolss_SetPrinterData_r_state);
6456 if (tevent_req_is_nterror(req, &status)) {
6457 tevent_req_received(req);
6461 talloc_steal(mem_ctx, state->out_mem_ctx);
6463 tevent_req_received(req);
6464 return NT_STATUS_OK;
6467 NTSTATUS dcerpc_spoolss_SetPrinterData_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_SetPrinterData *r)
6471 status = dcerpc_binding_handle_call(h,
6472 NULL, &ndr_table_spoolss,
6473 NDR_SPOOLSS_SETPRINTERDATA, mem_ctx, r);
6478 NTSTATUS dcerpc_spoolss_SetPrinterData_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_SetPrinterData *r)
6482 status = dcerpc_spoolss_SetPrinterData_r(p->binding_handle, mem_ctx, r);
6484 if (NT_STATUS_IS_RPC(status)) {
6485 status = NT_STATUS_NET_WRITE_FAULT;
6491 struct dcerpc_spoolss_SetPrinterData_state {
6492 struct spoolss_SetPrinterData orig;
6493 struct spoolss_SetPrinterData tmp;
6494 TALLOC_CTX *out_mem_ctx;
6497 static void dcerpc_spoolss_SetPrinterData_done(struct tevent_req *subreq);
6499 struct tevent_req *dcerpc_spoolss_SetPrinterData_send(TALLOC_CTX *mem_ctx,
6500 struct tevent_context *ev,
6501 struct dcerpc_binding_handle *h,
6502 struct policy_handle *_handle /* [in] [ref] */,
6503 const char *_value_name /* [in] [charset(UTF16)] */,
6504 enum winreg_Type _type /* [in] */,
6505 uint8_t *_data /* [in] [ref,size_is(offered)] */,
6506 uint32_t _offered /* [in] */)
6508 struct tevent_req *req;
6509 struct dcerpc_spoolss_SetPrinterData_state *state;
6510 struct tevent_req *subreq;
6512 req = tevent_req_create(mem_ctx, &state,
6513 struct dcerpc_spoolss_SetPrinterData_state);
6517 state->out_mem_ctx = NULL;
6520 state->orig.in.handle = _handle;
6521 state->orig.in.value_name = _value_name;
6522 state->orig.in.type = _type;
6523 state->orig.in.data = _data;
6524 state->orig.in.offered = _offered;
6526 /* Out parameters */
6529 ZERO_STRUCT(state->orig.out.result);
6531 /* make a temporary copy, that we pass to the dispatch function */
6532 state->tmp = state->orig;
6534 subreq = dcerpc_spoolss_SetPrinterData_r_send(state, ev, h, &state->tmp);
6535 if (tevent_req_nomem(subreq, req)) {
6536 return tevent_req_post(req, ev);
6538 tevent_req_set_callback(subreq, dcerpc_spoolss_SetPrinterData_done, req);
6542 static void dcerpc_spoolss_SetPrinterData_done(struct tevent_req *subreq)
6544 struct tevent_req *req = tevent_req_callback_data(
6545 subreq, struct tevent_req);
6546 struct dcerpc_spoolss_SetPrinterData_state *state = tevent_req_data(
6547 req, struct dcerpc_spoolss_SetPrinterData_state);
6549 TALLOC_CTX *mem_ctx;
6551 if (state->out_mem_ctx) {
6552 mem_ctx = state->out_mem_ctx;
6557 status = dcerpc_spoolss_SetPrinterData_r_recv(subreq, mem_ctx);
6558 TALLOC_FREE(subreq);
6559 if (!NT_STATUS_IS_OK(status)) {
6560 tevent_req_nterror(req, status);
6564 /* Copy out parameters */
6567 state->orig.out.result = state->tmp.out.result;
6569 /* Reset temporary structure */
6570 ZERO_STRUCT(state->tmp);
6572 tevent_req_done(req);
6575 NTSTATUS dcerpc_spoolss_SetPrinterData_recv(struct tevent_req *req,
6576 TALLOC_CTX *mem_ctx,
6579 struct dcerpc_spoolss_SetPrinterData_state *state = tevent_req_data(
6580 req, struct dcerpc_spoolss_SetPrinterData_state);
6583 if (tevent_req_is_nterror(req, &status)) {
6584 tevent_req_received(req);
6588 /* Steal possible out parameters to the callers context */
6589 talloc_steal(mem_ctx, state->out_mem_ctx);
6592 *result = state->orig.out.result;
6594 tevent_req_received(req);
6595 return NT_STATUS_OK;
6598 NTSTATUS dcerpc_spoolss_SetPrinterData(struct dcerpc_binding_handle *h,
6599 TALLOC_CTX *mem_ctx,
6600 struct policy_handle *_handle /* [in] [ref] */,
6601 const char *_value_name /* [in] [charset(UTF16)] */,
6602 enum winreg_Type _type /* [in] */,
6603 uint8_t *_data /* [in] [ref,size_is(offered)] */,
6604 uint32_t _offered /* [in] */,
6607 struct spoolss_SetPrinterData r;
6611 r.in.handle = _handle;
6612 r.in.value_name = _value_name;
6615 r.in.offered = _offered;
6617 status = dcerpc_spoolss_SetPrinterData_r(h, mem_ctx, &r);
6618 if (!NT_STATUS_IS_OK(status)) {
6622 /* Return variables */
6625 *result = r.out.result;
6627 return NT_STATUS_OK;
6630 struct dcerpc_spoolss_ClosePrinter_r_state {
6631 TALLOC_CTX *out_mem_ctx;
6634 static void dcerpc_spoolss_ClosePrinter_r_done(struct tevent_req *subreq);
6636 struct tevent_req *dcerpc_spoolss_ClosePrinter_r_send(TALLOC_CTX *mem_ctx,
6637 struct tevent_context *ev,
6638 struct dcerpc_binding_handle *h,
6639 struct spoolss_ClosePrinter *r)
6641 struct tevent_req *req;
6642 struct dcerpc_spoolss_ClosePrinter_r_state *state;
6643 struct tevent_req *subreq;
6645 req = tevent_req_create(mem_ctx, &state,
6646 struct dcerpc_spoolss_ClosePrinter_r_state);
6651 state->out_mem_ctx = talloc_new(state);
6652 if (tevent_req_nomem(state->out_mem_ctx, req)) {
6653 return tevent_req_post(req, ev);
6656 subreq = dcerpc_binding_handle_call_send(state, ev, h,
6657 NULL, &ndr_table_spoolss,
6658 NDR_SPOOLSS_CLOSEPRINTER, state->out_mem_ctx, r);
6659 if (tevent_req_nomem(subreq, req)) {
6660 return tevent_req_post(req, ev);
6662 tevent_req_set_callback(subreq, dcerpc_spoolss_ClosePrinter_r_done, req);
6667 static void dcerpc_spoolss_ClosePrinter_r_done(struct tevent_req *subreq)
6669 struct tevent_req *req =
6670 tevent_req_callback_data(subreq,
6674 status = dcerpc_binding_handle_call_recv(subreq);
6675 if (!NT_STATUS_IS_OK(status)) {
6676 tevent_req_nterror(req, status);
6680 tevent_req_done(req);
6683 NTSTATUS dcerpc_spoolss_ClosePrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
6685 struct dcerpc_spoolss_ClosePrinter_r_state *state =
6686 tevent_req_data(req,
6687 struct dcerpc_spoolss_ClosePrinter_r_state);
6690 if (tevent_req_is_nterror(req, &status)) {
6691 tevent_req_received(req);
6695 talloc_steal(mem_ctx, state->out_mem_ctx);
6697 tevent_req_received(req);
6698 return NT_STATUS_OK;
6701 NTSTATUS dcerpc_spoolss_ClosePrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ClosePrinter *r)
6705 status = dcerpc_binding_handle_call(h,
6706 NULL, &ndr_table_spoolss,
6707 NDR_SPOOLSS_CLOSEPRINTER, mem_ctx, r);
6712 NTSTATUS dcerpc_spoolss_ClosePrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_ClosePrinter *r)
6716 status = dcerpc_spoolss_ClosePrinter_r(p->binding_handle, mem_ctx, r);
6718 if (NT_STATUS_IS_RPC(status)) {
6719 status = NT_STATUS_NET_WRITE_FAULT;
6725 struct dcerpc_spoolss_ClosePrinter_state {
6726 struct spoolss_ClosePrinter orig;
6727 struct spoolss_ClosePrinter tmp;
6728 TALLOC_CTX *out_mem_ctx;
6731 static void dcerpc_spoolss_ClosePrinter_done(struct tevent_req *subreq);
6733 struct tevent_req *dcerpc_spoolss_ClosePrinter_send(TALLOC_CTX *mem_ctx,
6734 struct tevent_context *ev,
6735 struct dcerpc_binding_handle *h,
6736 struct policy_handle *_handle /* [in,out] [ref] */)
6738 struct tevent_req *req;
6739 struct dcerpc_spoolss_ClosePrinter_state *state;
6740 struct tevent_req *subreq;
6742 req = tevent_req_create(mem_ctx, &state,
6743 struct dcerpc_spoolss_ClosePrinter_state);
6747 state->out_mem_ctx = NULL;
6750 state->orig.in.handle = _handle;
6752 /* Out parameters */
6753 state->orig.out.handle = _handle;
6756 ZERO_STRUCT(state->orig.out.result);
6758 state->out_mem_ctx = talloc_named_const(state, 0,
6759 "dcerpc_spoolss_ClosePrinter_out_memory");
6760 if (tevent_req_nomem(state->out_mem_ctx, req)) {
6761 return tevent_req_post(req, ev);
6764 /* make a temporary copy, that we pass to the dispatch function */
6765 state->tmp = state->orig;
6767 subreq = dcerpc_spoolss_ClosePrinter_r_send(state, ev, h, &state->tmp);
6768 if (tevent_req_nomem(subreq, req)) {
6769 return tevent_req_post(req, ev);
6771 tevent_req_set_callback(subreq, dcerpc_spoolss_ClosePrinter_done, req);
6775 static void dcerpc_spoolss_ClosePrinter_done(struct tevent_req *subreq)
6777 struct tevent_req *req = tevent_req_callback_data(
6778 subreq, struct tevent_req);
6779 struct dcerpc_spoolss_ClosePrinter_state *state = tevent_req_data(
6780 req, struct dcerpc_spoolss_ClosePrinter_state);
6782 TALLOC_CTX *mem_ctx;
6784 if (state->out_mem_ctx) {
6785 mem_ctx = state->out_mem_ctx;
6790 status = dcerpc_spoolss_ClosePrinter_r_recv(subreq, mem_ctx);
6791 TALLOC_FREE(subreq);
6792 if (!NT_STATUS_IS_OK(status)) {
6793 tevent_req_nterror(req, status);
6797 /* Copy out parameters */
6798 *state->orig.out.handle = *state->tmp.out.handle;
6801 state->orig.out.result = state->tmp.out.result;
6803 /* Reset temporary structure */
6804 ZERO_STRUCT(state->tmp);
6806 tevent_req_done(req);
6809 NTSTATUS dcerpc_spoolss_ClosePrinter_recv(struct tevent_req *req,
6810 TALLOC_CTX *mem_ctx,
6813 struct dcerpc_spoolss_ClosePrinter_state *state = tevent_req_data(
6814 req, struct dcerpc_spoolss_ClosePrinter_state);
6817 if (tevent_req_is_nterror(req, &status)) {
6818 tevent_req_received(req);
6822 /* Steal possible out parameters to the callers context */
6823 talloc_steal(mem_ctx, state->out_mem_ctx);
6826 *result = state->orig.out.result;
6828 tevent_req_received(req);
6829 return NT_STATUS_OK;
6832 NTSTATUS dcerpc_spoolss_ClosePrinter(struct dcerpc_binding_handle *h,
6833 TALLOC_CTX *mem_ctx,
6834 struct policy_handle *_handle /* [in,out] [ref] */,
6837 struct spoolss_ClosePrinter r;
6841 r.in.handle = _handle;
6843 status = dcerpc_spoolss_ClosePrinter_r(h, mem_ctx, &r);
6844 if (!NT_STATUS_IS_OK(status)) {
6848 /* Return variables */
6849 *_handle = *r.out.handle;
6852 *result = r.out.result;
6854 return NT_STATUS_OK;
6857 struct dcerpc_spoolss_AddForm_r_state {
6858 TALLOC_CTX *out_mem_ctx;
6861 static void dcerpc_spoolss_AddForm_r_done(struct tevent_req *subreq);
6863 struct tevent_req *dcerpc_spoolss_AddForm_r_send(TALLOC_CTX *mem_ctx,
6864 struct tevent_context *ev,
6865 struct dcerpc_binding_handle *h,
6866 struct spoolss_AddForm *r)
6868 struct tevent_req *req;
6869 struct dcerpc_spoolss_AddForm_r_state *state;
6870 struct tevent_req *subreq;
6872 req = tevent_req_create(mem_ctx, &state,
6873 struct dcerpc_spoolss_AddForm_r_state);
6878 state->out_mem_ctx = NULL;
6879 subreq = dcerpc_binding_handle_call_send(state, ev, h,
6880 NULL, &ndr_table_spoolss,
6881 NDR_SPOOLSS_ADDFORM, state, r);
6882 if (tevent_req_nomem(subreq, req)) {
6883 return tevent_req_post(req, ev);
6885 tevent_req_set_callback(subreq, dcerpc_spoolss_AddForm_r_done, req);
6890 static void dcerpc_spoolss_AddForm_r_done(struct tevent_req *subreq)
6892 struct tevent_req *req =
6893 tevent_req_callback_data(subreq,
6897 status = dcerpc_binding_handle_call_recv(subreq);
6898 if (!NT_STATUS_IS_OK(status)) {
6899 tevent_req_nterror(req, status);
6903 tevent_req_done(req);
6906 NTSTATUS dcerpc_spoolss_AddForm_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
6908 struct dcerpc_spoolss_AddForm_r_state *state =
6909 tevent_req_data(req,
6910 struct dcerpc_spoolss_AddForm_r_state);
6913 if (tevent_req_is_nterror(req, &status)) {
6914 tevent_req_received(req);
6918 talloc_steal(mem_ctx, state->out_mem_ctx);
6920 tevent_req_received(req);
6921 return NT_STATUS_OK;
6924 NTSTATUS dcerpc_spoolss_AddForm_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddForm *r)
6928 status = dcerpc_binding_handle_call(h,
6929 NULL, &ndr_table_spoolss,
6930 NDR_SPOOLSS_ADDFORM, mem_ctx, r);
6935 NTSTATUS dcerpc_spoolss_AddForm_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_AddForm *r)
6939 status = dcerpc_spoolss_AddForm_r(p->binding_handle, mem_ctx, r);
6941 if (NT_STATUS_IS_RPC(status)) {
6942 status = NT_STATUS_NET_WRITE_FAULT;
6948 struct dcerpc_spoolss_AddForm_state {
6949 struct spoolss_AddForm orig;
6950 struct spoolss_AddForm tmp;
6951 TALLOC_CTX *out_mem_ctx;
6954 static void dcerpc_spoolss_AddForm_done(struct tevent_req *subreq);
6956 struct tevent_req *dcerpc_spoolss_AddForm_send(TALLOC_CTX *mem_ctx,
6957 struct tevent_context *ev,
6958 struct dcerpc_binding_handle *h,
6959 struct policy_handle *_handle /* [in] [ref] */,
6960 uint32_t _level /* [in] */,
6961 union spoolss_AddFormInfo _info /* [in] [switch_is(level)] */)
6963 struct tevent_req *req;
6964 struct dcerpc_spoolss_AddForm_state *state;
6965 struct tevent_req *subreq;
6967 req = tevent_req_create(mem_ctx, &state,
6968 struct dcerpc_spoolss_AddForm_state);
6972 state->out_mem_ctx = NULL;
6975 state->orig.in.handle = _handle;
6976 state->orig.in.level = _level;
6977 state->orig.in.info = _info;
6979 /* Out parameters */
6982 ZERO_STRUCT(state->orig.out.result);
6984 /* make a temporary copy, that we pass to the dispatch function */
6985 state->tmp = state->orig;
6987 subreq = dcerpc_spoolss_AddForm_r_send(state, ev, h, &state->tmp);
6988 if (tevent_req_nomem(subreq, req)) {
6989 return tevent_req_post(req, ev);
6991 tevent_req_set_callback(subreq, dcerpc_spoolss_AddForm_done, req);
6995 static void dcerpc_spoolss_AddForm_done(struct tevent_req *subreq)
6997 struct tevent_req *req = tevent_req_callback_data(
6998 subreq, struct tevent_req);
6999 struct dcerpc_spoolss_AddForm_state *state = tevent_req_data(
7000 req, struct dcerpc_spoolss_AddForm_state);
7002 TALLOC_CTX *mem_ctx;
7004 if (state->out_mem_ctx) {
7005 mem_ctx = state->out_mem_ctx;
7010 status = dcerpc_spoolss_AddForm_r_recv(subreq, mem_ctx);
7011 TALLOC_FREE(subreq);
7012 if (!NT_STATUS_IS_OK(status)) {
7013 tevent_req_nterror(req, status);
7017 /* Copy out parameters */
7020 state->orig.out.result = state->tmp.out.result;
7022 /* Reset temporary structure */
7023 ZERO_STRUCT(state->tmp);
7025 tevent_req_done(req);
7028 NTSTATUS dcerpc_spoolss_AddForm_recv(struct tevent_req *req,
7029 TALLOC_CTX *mem_ctx,
7032 struct dcerpc_spoolss_AddForm_state *state = tevent_req_data(
7033 req, struct dcerpc_spoolss_AddForm_state);
7036 if (tevent_req_is_nterror(req, &status)) {
7037 tevent_req_received(req);
7041 /* Steal possible out parameters to the callers context */
7042 talloc_steal(mem_ctx, state->out_mem_ctx);
7045 *result = state->orig.out.result;
7047 tevent_req_received(req);
7048 return NT_STATUS_OK;
7051 NTSTATUS dcerpc_spoolss_AddForm(struct dcerpc_binding_handle *h,
7052 TALLOC_CTX *mem_ctx,
7053 struct policy_handle *_handle /* [in] [ref] */,
7054 uint32_t _level /* [in] */,
7055 union spoolss_AddFormInfo _info /* [in] [switch_is(level)] */,
7058 struct spoolss_AddForm r;
7062 r.in.handle = _handle;
7063 r.in.level = _level;
7066 status = dcerpc_spoolss_AddForm_r(h, mem_ctx, &r);
7067 if (!NT_STATUS_IS_OK(status)) {
7071 /* Return variables */
7074 *result = r.out.result;
7076 return NT_STATUS_OK;
7079 struct dcerpc_spoolss_DeleteForm_r_state {
7080 TALLOC_CTX *out_mem_ctx;
7083 static void dcerpc_spoolss_DeleteForm_r_done(struct tevent_req *subreq);
7085 struct tevent_req *dcerpc_spoolss_DeleteForm_r_send(TALLOC_CTX *mem_ctx,
7086 struct tevent_context *ev,
7087 struct dcerpc_binding_handle *h,
7088 struct spoolss_DeleteForm *r)
7090 struct tevent_req *req;
7091 struct dcerpc_spoolss_DeleteForm_r_state *state;
7092 struct tevent_req *subreq;
7094 req = tevent_req_create(mem_ctx, &state,
7095 struct dcerpc_spoolss_DeleteForm_r_state);
7100 state->out_mem_ctx = NULL;
7101 subreq = dcerpc_binding_handle_call_send(state, ev, h,
7102 NULL, &ndr_table_spoolss,
7103 NDR_SPOOLSS_DELETEFORM, state, r);
7104 if (tevent_req_nomem(subreq, req)) {
7105 return tevent_req_post(req, ev);
7107 tevent_req_set_callback(subreq, dcerpc_spoolss_DeleteForm_r_done, req);
7112 static void dcerpc_spoolss_DeleteForm_r_done(struct tevent_req *subreq)
7114 struct tevent_req *req =
7115 tevent_req_callback_data(subreq,
7119 status = dcerpc_binding_handle_call_recv(subreq);
7120 if (!NT_STATUS_IS_OK(status)) {
7121 tevent_req_nterror(req, status);
7125 tevent_req_done(req);
7128 NTSTATUS dcerpc_spoolss_DeleteForm_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
7130 struct dcerpc_spoolss_DeleteForm_r_state *state =
7131 tevent_req_data(req,
7132 struct dcerpc_spoolss_DeleteForm_r_state);
7135 if (tevent_req_is_nterror(req, &status)) {
7136 tevent_req_received(req);
7140 talloc_steal(mem_ctx, state->out_mem_ctx);
7142 tevent_req_received(req);
7143 return NT_STATUS_OK;
7146 NTSTATUS dcerpc_spoolss_DeleteForm_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeleteForm *r)
7150 status = dcerpc_binding_handle_call(h,
7151 NULL, &ndr_table_spoolss,
7152 NDR_SPOOLSS_DELETEFORM, mem_ctx, r);
7157 NTSTATUS dcerpc_spoolss_DeleteForm_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_DeleteForm *r)
7161 status = dcerpc_spoolss_DeleteForm_r(p->binding_handle, mem_ctx, r);
7163 if (NT_STATUS_IS_RPC(status)) {
7164 status = NT_STATUS_NET_WRITE_FAULT;
7170 struct dcerpc_spoolss_DeleteForm_state {
7171 struct spoolss_DeleteForm orig;
7172 struct spoolss_DeleteForm tmp;
7173 TALLOC_CTX *out_mem_ctx;
7176 static void dcerpc_spoolss_DeleteForm_done(struct tevent_req *subreq);
7178 struct tevent_req *dcerpc_spoolss_DeleteForm_send(TALLOC_CTX *mem_ctx,
7179 struct tevent_context *ev,
7180 struct dcerpc_binding_handle *h,
7181 struct policy_handle *_handle /* [in] [ref] */,
7182 const char *_form_name /* [in] [charset(UTF16)] */)
7184 struct tevent_req *req;
7185 struct dcerpc_spoolss_DeleteForm_state *state;
7186 struct tevent_req *subreq;
7188 req = tevent_req_create(mem_ctx, &state,
7189 struct dcerpc_spoolss_DeleteForm_state);
7193 state->out_mem_ctx = NULL;
7196 state->orig.in.handle = _handle;
7197 state->orig.in.form_name = _form_name;
7199 /* Out parameters */
7202 ZERO_STRUCT(state->orig.out.result);
7204 /* make a temporary copy, that we pass to the dispatch function */
7205 state->tmp = state->orig;
7207 subreq = dcerpc_spoolss_DeleteForm_r_send(state, ev, h, &state->tmp);
7208 if (tevent_req_nomem(subreq, req)) {
7209 return tevent_req_post(req, ev);
7211 tevent_req_set_callback(subreq, dcerpc_spoolss_DeleteForm_done, req);
7215 static void dcerpc_spoolss_DeleteForm_done(struct tevent_req *subreq)
7217 struct tevent_req *req = tevent_req_callback_data(
7218 subreq, struct tevent_req);
7219 struct dcerpc_spoolss_DeleteForm_state *state = tevent_req_data(
7220 req, struct dcerpc_spoolss_DeleteForm_state);
7222 TALLOC_CTX *mem_ctx;
7224 if (state->out_mem_ctx) {
7225 mem_ctx = state->out_mem_ctx;
7230 status = dcerpc_spoolss_DeleteForm_r_recv(subreq, mem_ctx);
7231 TALLOC_FREE(subreq);
7232 if (!NT_STATUS_IS_OK(status)) {
7233 tevent_req_nterror(req, status);
7237 /* Copy out parameters */
7240 state->orig.out.result = state->tmp.out.result;
7242 /* Reset temporary structure */
7243 ZERO_STRUCT(state->tmp);
7245 tevent_req_done(req);
7248 NTSTATUS dcerpc_spoolss_DeleteForm_recv(struct tevent_req *req,
7249 TALLOC_CTX *mem_ctx,
7252 struct dcerpc_spoolss_DeleteForm_state *state = tevent_req_data(
7253 req, struct dcerpc_spoolss_DeleteForm_state);
7256 if (tevent_req_is_nterror(req, &status)) {
7257 tevent_req_received(req);
7261 /* Steal possible out parameters to the callers context */
7262 talloc_steal(mem_ctx, state->out_mem_ctx);
7265 *result = state->orig.out.result;
7267 tevent_req_received(req);
7268 return NT_STATUS_OK;
7271 NTSTATUS dcerpc_spoolss_DeleteForm(struct dcerpc_binding_handle *h,
7272 TALLOC_CTX *mem_ctx,
7273 struct policy_handle *_handle /* [in] [ref] */,
7274 const char *_form_name /* [in] [charset(UTF16)] */,
7277 struct spoolss_DeleteForm r;
7281 r.in.handle = _handle;
7282 r.in.form_name = _form_name;
7284 status = dcerpc_spoolss_DeleteForm_r(h, mem_ctx, &r);
7285 if (!NT_STATUS_IS_OK(status)) {
7289 /* Return variables */
7292 *result = r.out.result;
7294 return NT_STATUS_OK;
7297 struct dcerpc_spoolss_GetForm_r_state {
7298 TALLOC_CTX *out_mem_ctx;
7301 static void dcerpc_spoolss_GetForm_r_done(struct tevent_req *subreq);
7303 struct tevent_req *dcerpc_spoolss_GetForm_r_send(TALLOC_CTX *mem_ctx,
7304 struct tevent_context *ev,
7305 struct dcerpc_binding_handle *h,
7306 struct spoolss_GetForm *r)
7308 struct tevent_req *req;
7309 struct dcerpc_spoolss_GetForm_r_state *state;
7310 struct tevent_req *subreq;
7312 req = tevent_req_create(mem_ctx, &state,
7313 struct dcerpc_spoolss_GetForm_r_state);
7318 state->out_mem_ctx = talloc_new(state);
7319 if (tevent_req_nomem(state->out_mem_ctx, req)) {
7320 return tevent_req_post(req, ev);
7323 subreq = dcerpc_binding_handle_call_send(state, ev, h,
7324 NULL, &ndr_table_spoolss,
7325 NDR_SPOOLSS_GETFORM, state->out_mem_ctx, r);
7326 if (tevent_req_nomem(subreq, req)) {
7327 return tevent_req_post(req, ev);
7329 tevent_req_set_callback(subreq, dcerpc_spoolss_GetForm_r_done, req);
7334 static void dcerpc_spoolss_GetForm_r_done(struct tevent_req *subreq)
7336 struct tevent_req *req =
7337 tevent_req_callback_data(subreq,
7341 status = dcerpc_binding_handle_call_recv(subreq);
7342 if (!NT_STATUS_IS_OK(status)) {
7343 tevent_req_nterror(req, status);
7347 tevent_req_done(req);
7350 NTSTATUS dcerpc_spoolss_GetForm_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
7352 struct dcerpc_spoolss_GetForm_r_state *state =
7353 tevent_req_data(req,
7354 struct dcerpc_spoolss_GetForm_r_state);
7357 if (tevent_req_is_nterror(req, &status)) {
7358 tevent_req_received(req);
7362 talloc_steal(mem_ctx, state->out_mem_ctx);
7364 tevent_req_received(req);
7365 return NT_STATUS_OK;
7368 NTSTATUS dcerpc_spoolss_GetForm_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetForm *r)
7372 status = dcerpc_binding_handle_call(h,
7373 NULL, &ndr_table_spoolss,
7374 NDR_SPOOLSS_GETFORM, mem_ctx, r);
7379 NTSTATUS dcerpc_spoolss_GetForm_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetForm *r)
7383 status = dcerpc_spoolss_GetForm_r(p->binding_handle, mem_ctx, r);
7385 if (NT_STATUS_IS_RPC(status)) {
7386 status = NT_STATUS_NET_WRITE_FAULT;
7392 struct dcerpc_spoolss_GetForm_state {
7393 struct spoolss_GetForm orig;
7394 struct spoolss_GetForm tmp;
7395 TALLOC_CTX *out_mem_ctx;
7398 static void dcerpc_spoolss_GetForm_done(struct tevent_req *subreq);
7400 struct tevent_req *dcerpc_spoolss_GetForm_send(TALLOC_CTX *mem_ctx,
7401 struct tevent_context *ev,
7402 struct dcerpc_binding_handle *h,
7403 struct policy_handle *_handle /* [in] [ref] */,
7404 const char *_form_name /* [in] [charset(UTF16)] */,
7405 uint32_t _level /* [in] */,
7406 DATA_BLOB *_buffer /* [in] [unique] */,
7407 uint32_t _offered /* [in] */,
7408 union spoolss_FormInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
7409 uint32_t *_needed /* [out] [ref] */)
7411 struct tevent_req *req;
7412 struct dcerpc_spoolss_GetForm_state *state;
7413 struct tevent_req *subreq;
7415 req = tevent_req_create(mem_ctx, &state,
7416 struct dcerpc_spoolss_GetForm_state);
7420 state->out_mem_ctx = NULL;
7423 state->orig.in.handle = _handle;
7424 state->orig.in.form_name = _form_name;
7425 state->orig.in.level = _level;
7426 state->orig.in.buffer = _buffer;
7427 state->orig.in.offered = _offered;
7429 /* Out parameters */
7430 state->orig.out.info = _info;
7431 state->orig.out.needed = _needed;
7434 ZERO_STRUCT(state->orig.out.result);
7436 state->out_mem_ctx = talloc_named_const(state, 0,
7437 "dcerpc_spoolss_GetForm_out_memory");
7438 if (tevent_req_nomem(state->out_mem_ctx, req)) {
7439 return tevent_req_post(req, ev);
7442 /* make a temporary copy, that we pass to the dispatch function */
7443 state->tmp = state->orig;
7445 subreq = dcerpc_spoolss_GetForm_r_send(state, ev, h, &state->tmp);
7446 if (tevent_req_nomem(subreq, req)) {
7447 return tevent_req_post(req, ev);
7449 tevent_req_set_callback(subreq, dcerpc_spoolss_GetForm_done, req);
7453 static void dcerpc_spoolss_GetForm_done(struct tevent_req *subreq)
7455 struct tevent_req *req = tevent_req_callback_data(
7456 subreq, struct tevent_req);
7457 struct dcerpc_spoolss_GetForm_state *state = tevent_req_data(
7458 req, struct dcerpc_spoolss_GetForm_state);
7460 TALLOC_CTX *mem_ctx;
7462 if (state->out_mem_ctx) {
7463 mem_ctx = state->out_mem_ctx;
7468 status = dcerpc_spoolss_GetForm_r_recv(subreq, mem_ctx);
7469 TALLOC_FREE(subreq);
7470 if (!NT_STATUS_IS_OK(status)) {
7471 tevent_req_nterror(req, status);
7475 /* Copy out parameters */
7476 if (state->orig.out.info && state->tmp.out.info) {
7477 *state->orig.out.info = *state->tmp.out.info;
7479 *state->orig.out.needed = *state->tmp.out.needed;
7482 state->orig.out.result = state->tmp.out.result;
7484 /* Reset temporary structure */
7485 ZERO_STRUCT(state->tmp);
7487 tevent_req_done(req);
7490 NTSTATUS dcerpc_spoolss_GetForm_recv(struct tevent_req *req,
7491 TALLOC_CTX *mem_ctx,
7494 struct dcerpc_spoolss_GetForm_state *state = tevent_req_data(
7495 req, struct dcerpc_spoolss_GetForm_state);
7498 if (tevent_req_is_nterror(req, &status)) {
7499 tevent_req_received(req);
7503 /* Steal possible out parameters to the callers context */
7504 talloc_steal(mem_ctx, state->out_mem_ctx);
7507 *result = state->orig.out.result;
7509 tevent_req_received(req);
7510 return NT_STATUS_OK;
7513 NTSTATUS dcerpc_spoolss_GetForm(struct dcerpc_binding_handle *h,
7514 TALLOC_CTX *mem_ctx,
7515 struct policy_handle *_handle /* [in] [ref] */,
7516 const char *_form_name /* [in] [charset(UTF16)] */,
7517 uint32_t _level /* [in] */,
7518 DATA_BLOB *_buffer /* [in] [unique] */,
7519 uint32_t _offered /* [in] */,
7520 union spoolss_FormInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
7521 uint32_t *_needed /* [out] [ref] */,
7524 struct spoolss_GetForm r;
7528 r.in.handle = _handle;
7529 r.in.form_name = _form_name;
7530 r.in.level = _level;
7531 r.in.buffer = _buffer;
7532 r.in.offered = _offered;
7534 status = dcerpc_spoolss_GetForm_r(h, mem_ctx, &r);
7535 if (!NT_STATUS_IS_OK(status)) {
7539 /* Return variables */
7540 if (_info && r.out.info) {
7541 *_info = *r.out.info;
7543 *_needed = *r.out.needed;
7546 *result = r.out.result;
7548 return NT_STATUS_OK;
7551 struct dcerpc_spoolss_SetForm_r_state {
7552 TALLOC_CTX *out_mem_ctx;
7555 static void dcerpc_spoolss_SetForm_r_done(struct tevent_req *subreq);
7557 struct tevent_req *dcerpc_spoolss_SetForm_r_send(TALLOC_CTX *mem_ctx,
7558 struct tevent_context *ev,
7559 struct dcerpc_binding_handle *h,
7560 struct spoolss_SetForm *r)
7562 struct tevent_req *req;
7563 struct dcerpc_spoolss_SetForm_r_state *state;
7564 struct tevent_req *subreq;
7566 req = tevent_req_create(mem_ctx, &state,
7567 struct dcerpc_spoolss_SetForm_r_state);
7572 state->out_mem_ctx = NULL;
7573 subreq = dcerpc_binding_handle_call_send(state, ev, h,
7574 NULL, &ndr_table_spoolss,
7575 NDR_SPOOLSS_SETFORM, state, r);
7576 if (tevent_req_nomem(subreq, req)) {
7577 return tevent_req_post(req, ev);
7579 tevent_req_set_callback(subreq, dcerpc_spoolss_SetForm_r_done, req);
7584 static void dcerpc_spoolss_SetForm_r_done(struct tevent_req *subreq)
7586 struct tevent_req *req =
7587 tevent_req_callback_data(subreq,
7591 status = dcerpc_binding_handle_call_recv(subreq);
7592 if (!NT_STATUS_IS_OK(status)) {
7593 tevent_req_nterror(req, status);
7597 tevent_req_done(req);
7600 NTSTATUS dcerpc_spoolss_SetForm_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
7602 struct dcerpc_spoolss_SetForm_r_state *state =
7603 tevent_req_data(req,
7604 struct dcerpc_spoolss_SetForm_r_state);
7607 if (tevent_req_is_nterror(req, &status)) {
7608 tevent_req_received(req);
7612 talloc_steal(mem_ctx, state->out_mem_ctx);
7614 tevent_req_received(req);
7615 return NT_STATUS_OK;
7618 NTSTATUS dcerpc_spoolss_SetForm_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_SetForm *r)
7622 status = dcerpc_binding_handle_call(h,
7623 NULL, &ndr_table_spoolss,
7624 NDR_SPOOLSS_SETFORM, mem_ctx, r);
7629 NTSTATUS dcerpc_spoolss_SetForm_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_SetForm *r)
7633 status = dcerpc_spoolss_SetForm_r(p->binding_handle, mem_ctx, r);
7635 if (NT_STATUS_IS_RPC(status)) {
7636 status = NT_STATUS_NET_WRITE_FAULT;
7642 struct dcerpc_spoolss_SetForm_state {
7643 struct spoolss_SetForm orig;
7644 struct spoolss_SetForm tmp;
7645 TALLOC_CTX *out_mem_ctx;
7648 static void dcerpc_spoolss_SetForm_done(struct tevent_req *subreq);
7650 struct tevent_req *dcerpc_spoolss_SetForm_send(TALLOC_CTX *mem_ctx,
7651 struct tevent_context *ev,
7652 struct dcerpc_binding_handle *h,
7653 struct policy_handle *_handle /* [in] [ref] */,
7654 const char *_form_name /* [in] [charset(UTF16)] */,
7655 uint32_t _level /* [in] */,
7656 union spoolss_AddFormInfo _info /* [in] [switch_is(level)] */)
7658 struct tevent_req *req;
7659 struct dcerpc_spoolss_SetForm_state *state;
7660 struct tevent_req *subreq;
7662 req = tevent_req_create(mem_ctx, &state,
7663 struct dcerpc_spoolss_SetForm_state);
7667 state->out_mem_ctx = NULL;
7670 state->orig.in.handle = _handle;
7671 state->orig.in.form_name = _form_name;
7672 state->orig.in.level = _level;
7673 state->orig.in.info = _info;
7675 /* Out parameters */
7678 ZERO_STRUCT(state->orig.out.result);
7680 /* make a temporary copy, that we pass to the dispatch function */
7681 state->tmp = state->orig;
7683 subreq = dcerpc_spoolss_SetForm_r_send(state, ev, h, &state->tmp);
7684 if (tevent_req_nomem(subreq, req)) {
7685 return tevent_req_post(req, ev);
7687 tevent_req_set_callback(subreq, dcerpc_spoolss_SetForm_done, req);
7691 static void dcerpc_spoolss_SetForm_done(struct tevent_req *subreq)
7693 struct tevent_req *req = tevent_req_callback_data(
7694 subreq, struct tevent_req);
7695 struct dcerpc_spoolss_SetForm_state *state = tevent_req_data(
7696 req, struct dcerpc_spoolss_SetForm_state);
7698 TALLOC_CTX *mem_ctx;
7700 if (state->out_mem_ctx) {
7701 mem_ctx = state->out_mem_ctx;
7706 status = dcerpc_spoolss_SetForm_r_recv(subreq, mem_ctx);
7707 TALLOC_FREE(subreq);
7708 if (!NT_STATUS_IS_OK(status)) {
7709 tevent_req_nterror(req, status);
7713 /* Copy out parameters */
7716 state->orig.out.result = state->tmp.out.result;
7718 /* Reset temporary structure */
7719 ZERO_STRUCT(state->tmp);
7721 tevent_req_done(req);
7724 NTSTATUS dcerpc_spoolss_SetForm_recv(struct tevent_req *req,
7725 TALLOC_CTX *mem_ctx,
7728 struct dcerpc_spoolss_SetForm_state *state = tevent_req_data(
7729 req, struct dcerpc_spoolss_SetForm_state);
7732 if (tevent_req_is_nterror(req, &status)) {
7733 tevent_req_received(req);
7737 /* Steal possible out parameters to the callers context */
7738 talloc_steal(mem_ctx, state->out_mem_ctx);
7741 *result = state->orig.out.result;
7743 tevent_req_received(req);
7744 return NT_STATUS_OK;
7747 NTSTATUS dcerpc_spoolss_SetForm(struct dcerpc_binding_handle *h,
7748 TALLOC_CTX *mem_ctx,
7749 struct policy_handle *_handle /* [in] [ref] */,
7750 const char *_form_name /* [in] [charset(UTF16)] */,
7751 uint32_t _level /* [in] */,
7752 union spoolss_AddFormInfo _info /* [in] [switch_is(level)] */,
7755 struct spoolss_SetForm r;
7759 r.in.handle = _handle;
7760 r.in.form_name = _form_name;
7761 r.in.level = _level;
7764 status = dcerpc_spoolss_SetForm_r(h, mem_ctx, &r);
7765 if (!NT_STATUS_IS_OK(status)) {
7769 /* Return variables */
7772 *result = r.out.result;
7774 return NT_STATUS_OK;
7777 struct dcerpc_spoolss_EnumForms_r_state {
7778 TALLOC_CTX *out_mem_ctx;
7781 static void dcerpc_spoolss_EnumForms_r_done(struct tevent_req *subreq);
7783 struct tevent_req *dcerpc_spoolss_EnumForms_r_send(TALLOC_CTX *mem_ctx,
7784 struct tevent_context *ev,
7785 struct dcerpc_binding_handle *h,
7786 struct spoolss_EnumForms *r)
7788 struct tevent_req *req;
7789 struct dcerpc_spoolss_EnumForms_r_state *state;
7790 struct tevent_req *subreq;
7792 req = tevent_req_create(mem_ctx, &state,
7793 struct dcerpc_spoolss_EnumForms_r_state);
7798 state->out_mem_ctx = talloc_new(state);
7799 if (tevent_req_nomem(state->out_mem_ctx, req)) {
7800 return tevent_req_post(req, ev);
7803 subreq = dcerpc_binding_handle_call_send(state, ev, h,
7804 NULL, &ndr_table_spoolss,
7805 NDR_SPOOLSS_ENUMFORMS, state->out_mem_ctx, r);
7806 if (tevent_req_nomem(subreq, req)) {
7807 return tevent_req_post(req, ev);
7809 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumForms_r_done, req);
7814 static void dcerpc_spoolss_EnumForms_r_done(struct tevent_req *subreq)
7816 struct tevent_req *req =
7817 tevent_req_callback_data(subreq,
7821 status = dcerpc_binding_handle_call_recv(subreq);
7822 if (!NT_STATUS_IS_OK(status)) {
7823 tevent_req_nterror(req, status);
7827 tevent_req_done(req);
7830 NTSTATUS dcerpc_spoolss_EnumForms_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
7832 struct dcerpc_spoolss_EnumForms_r_state *state =
7833 tevent_req_data(req,
7834 struct dcerpc_spoolss_EnumForms_r_state);
7837 if (tevent_req_is_nterror(req, &status)) {
7838 tevent_req_received(req);
7842 talloc_steal(mem_ctx, state->out_mem_ctx);
7844 tevent_req_received(req);
7845 return NT_STATUS_OK;
7848 NTSTATUS dcerpc_spoolss_EnumForms_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumForms *r)
7852 status = dcerpc_binding_handle_call(h,
7853 NULL, &ndr_table_spoolss,
7854 NDR_SPOOLSS_ENUMFORMS, mem_ctx, r);
7859 NTSTATUS dcerpc_spoolss_EnumForms_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumForms *r)
7863 status = dcerpc_spoolss_EnumForms_r(p->binding_handle, mem_ctx, r);
7865 if (NT_STATUS_IS_RPC(status)) {
7866 status = NT_STATUS_NET_WRITE_FAULT;
7872 struct dcerpc_spoolss_EnumForms_state {
7873 struct spoolss_EnumForms orig;
7874 struct spoolss_EnumForms tmp;
7875 TALLOC_CTX *out_mem_ctx;
7878 static void dcerpc_spoolss_EnumForms_done(struct tevent_req *subreq);
7880 struct tevent_req *dcerpc_spoolss_EnumForms_send(TALLOC_CTX *mem_ctx,
7881 struct tevent_context *ev,
7882 struct dcerpc_binding_handle *h,
7883 struct policy_handle *_handle /* [in] [ref] */,
7884 uint32_t _level /* [in] */,
7885 DATA_BLOB *_buffer /* [in] [unique] */,
7886 uint32_t _offered /* [in] */,
7887 uint32_t *_count /* [out] [ref] */,
7888 union spoolss_FormInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
7889 uint32_t *_needed /* [out] [ref] */)
7891 struct tevent_req *req;
7892 struct dcerpc_spoolss_EnumForms_state *state;
7893 struct tevent_req *subreq;
7895 req = tevent_req_create(mem_ctx, &state,
7896 struct dcerpc_spoolss_EnumForms_state);
7900 state->out_mem_ctx = NULL;
7903 state->orig.in.handle = _handle;
7904 state->orig.in.level = _level;
7905 state->orig.in.buffer = _buffer;
7906 state->orig.in.offered = _offered;
7908 /* Out parameters */
7909 state->orig.out.count = _count;
7910 state->orig.out.info = _info;
7911 state->orig.out.needed = _needed;
7914 ZERO_STRUCT(state->orig.out.result);
7916 state->out_mem_ctx = talloc_named_const(state, 0,
7917 "dcerpc_spoolss_EnumForms_out_memory");
7918 if (tevent_req_nomem(state->out_mem_ctx, req)) {
7919 return tevent_req_post(req, ev);
7922 /* make a temporary copy, that we pass to the dispatch function */
7923 state->tmp = state->orig;
7925 subreq = dcerpc_spoolss_EnumForms_r_send(state, ev, h, &state->tmp);
7926 if (tevent_req_nomem(subreq, req)) {
7927 return tevent_req_post(req, ev);
7929 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumForms_done, req);
7933 static void dcerpc_spoolss_EnumForms_done(struct tevent_req *subreq)
7935 struct tevent_req *req = tevent_req_callback_data(
7936 subreq, struct tevent_req);
7937 struct dcerpc_spoolss_EnumForms_state *state = tevent_req_data(
7938 req, struct dcerpc_spoolss_EnumForms_state);
7940 TALLOC_CTX *mem_ctx;
7942 if (state->out_mem_ctx) {
7943 mem_ctx = state->out_mem_ctx;
7948 status = dcerpc_spoolss_EnumForms_r_recv(subreq, mem_ctx);
7949 TALLOC_FREE(subreq);
7950 if (!NT_STATUS_IS_OK(status)) {
7951 tevent_req_nterror(req, status);
7955 /* Copy out parameters */
7956 *state->orig.out.count = *state->tmp.out.count;
7957 *state->orig.out.info = *state->tmp.out.info;
7958 *state->orig.out.needed = *state->tmp.out.needed;
7961 state->orig.out.result = state->tmp.out.result;
7963 /* Reset temporary structure */
7964 ZERO_STRUCT(state->tmp);
7966 tevent_req_done(req);
7969 NTSTATUS dcerpc_spoolss_EnumForms_recv(struct tevent_req *req,
7970 TALLOC_CTX *mem_ctx,
7973 struct dcerpc_spoolss_EnumForms_state *state = tevent_req_data(
7974 req, struct dcerpc_spoolss_EnumForms_state);
7977 if (tevent_req_is_nterror(req, &status)) {
7978 tevent_req_received(req);
7982 /* Steal possible out parameters to the callers context */
7983 talloc_steal(mem_ctx, state->out_mem_ctx);
7986 *result = state->orig.out.result;
7988 tevent_req_received(req);
7989 return NT_STATUS_OK;
7992 NTSTATUS dcerpc_spoolss_EnumForms(struct dcerpc_binding_handle *h,
7993 TALLOC_CTX *mem_ctx,
7994 struct policy_handle *_handle /* [in] [ref] */,
7995 uint32_t _level /* [in] */,
7996 DATA_BLOB *_buffer /* [in] [unique] */,
7997 uint32_t _offered /* [in] */,
7998 uint32_t *_count /* [out] [ref] */,
7999 union spoolss_FormInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
8000 uint32_t *_needed /* [out] [ref] */,
8003 struct spoolss_EnumForms r;
8007 r.in.handle = _handle;
8008 r.in.level = _level;
8009 r.in.buffer = _buffer;
8010 r.in.offered = _offered;
8012 status = dcerpc_spoolss_EnumForms_r(h, mem_ctx, &r);
8013 if (!NT_STATUS_IS_OK(status)) {
8017 /* Return variables */
8018 *_count = *r.out.count;
8019 *_info = *r.out.info;
8020 *_needed = *r.out.needed;
8023 *result = r.out.result;
8025 return NT_STATUS_OK;
8028 struct dcerpc_spoolss_EnumPorts_r_state {
8029 TALLOC_CTX *out_mem_ctx;
8032 static void dcerpc_spoolss_EnumPorts_r_done(struct tevent_req *subreq);
8034 struct tevent_req *dcerpc_spoolss_EnumPorts_r_send(TALLOC_CTX *mem_ctx,
8035 struct tevent_context *ev,
8036 struct dcerpc_binding_handle *h,
8037 struct spoolss_EnumPorts *r)
8039 struct tevent_req *req;
8040 struct dcerpc_spoolss_EnumPorts_r_state *state;
8041 struct tevent_req *subreq;
8043 req = tevent_req_create(mem_ctx, &state,
8044 struct dcerpc_spoolss_EnumPorts_r_state);
8049 state->out_mem_ctx = talloc_new(state);
8050 if (tevent_req_nomem(state->out_mem_ctx, req)) {
8051 return tevent_req_post(req, ev);
8054 subreq = dcerpc_binding_handle_call_send(state, ev, h,
8055 NULL, &ndr_table_spoolss,
8056 NDR_SPOOLSS_ENUMPORTS, state->out_mem_ctx, r);
8057 if (tevent_req_nomem(subreq, req)) {
8058 return tevent_req_post(req, ev);
8060 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPorts_r_done, req);
8065 static void dcerpc_spoolss_EnumPorts_r_done(struct tevent_req *subreq)
8067 struct tevent_req *req =
8068 tevent_req_callback_data(subreq,
8072 status = dcerpc_binding_handle_call_recv(subreq);
8073 if (!NT_STATUS_IS_OK(status)) {
8074 tevent_req_nterror(req, status);
8078 tevent_req_done(req);
8081 NTSTATUS dcerpc_spoolss_EnumPorts_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
8083 struct dcerpc_spoolss_EnumPorts_r_state *state =
8084 tevent_req_data(req,
8085 struct dcerpc_spoolss_EnumPorts_r_state);
8088 if (tevent_req_is_nterror(req, &status)) {
8089 tevent_req_received(req);
8093 talloc_steal(mem_ctx, state->out_mem_ctx);
8095 tevent_req_received(req);
8096 return NT_STATUS_OK;
8099 NTSTATUS dcerpc_spoolss_EnumPorts_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPorts *r)
8103 status = dcerpc_binding_handle_call(h,
8104 NULL, &ndr_table_spoolss,
8105 NDR_SPOOLSS_ENUMPORTS, mem_ctx, r);
8110 NTSTATUS dcerpc_spoolss_EnumPorts_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumPorts *r)
8114 status = dcerpc_spoolss_EnumPorts_r(p->binding_handle, mem_ctx, r);
8116 if (NT_STATUS_IS_RPC(status)) {
8117 status = NT_STATUS_NET_WRITE_FAULT;
8123 struct dcerpc_spoolss_EnumPorts_state {
8124 struct spoolss_EnumPorts orig;
8125 struct spoolss_EnumPorts tmp;
8126 TALLOC_CTX *out_mem_ctx;
8129 static void dcerpc_spoolss_EnumPorts_done(struct tevent_req *subreq);
8131 struct tevent_req *dcerpc_spoolss_EnumPorts_send(TALLOC_CTX *mem_ctx,
8132 struct tevent_context *ev,
8133 struct dcerpc_binding_handle *h,
8134 const char *_servername /* [in] [unique,charset(UTF16)] */,
8135 uint32_t _level /* [in] */,
8136 DATA_BLOB *_buffer /* [in] [unique] */,
8137 uint32_t _offered /* [in] */,
8138 uint32_t *_count /* [out] [ref] */,
8139 union spoolss_PortInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
8140 uint32_t *_needed /* [out] [ref] */)
8142 struct tevent_req *req;
8143 struct dcerpc_spoolss_EnumPorts_state *state;
8144 struct tevent_req *subreq;
8146 req = tevent_req_create(mem_ctx, &state,
8147 struct dcerpc_spoolss_EnumPorts_state);
8151 state->out_mem_ctx = NULL;
8154 state->orig.in.servername = _servername;
8155 state->orig.in.level = _level;
8156 state->orig.in.buffer = _buffer;
8157 state->orig.in.offered = _offered;
8159 /* Out parameters */
8160 state->orig.out.count = _count;
8161 state->orig.out.info = _info;
8162 state->orig.out.needed = _needed;
8165 ZERO_STRUCT(state->orig.out.result);
8167 state->out_mem_ctx = talloc_named_const(state, 0,
8168 "dcerpc_spoolss_EnumPorts_out_memory");
8169 if (tevent_req_nomem(state->out_mem_ctx, req)) {
8170 return tevent_req_post(req, ev);
8173 /* make a temporary copy, that we pass to the dispatch function */
8174 state->tmp = state->orig;
8176 subreq = dcerpc_spoolss_EnumPorts_r_send(state, ev, h, &state->tmp);
8177 if (tevent_req_nomem(subreq, req)) {
8178 return tevent_req_post(req, ev);
8180 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPorts_done, req);
8184 static void dcerpc_spoolss_EnumPorts_done(struct tevent_req *subreq)
8186 struct tevent_req *req = tevent_req_callback_data(
8187 subreq, struct tevent_req);
8188 struct dcerpc_spoolss_EnumPorts_state *state = tevent_req_data(
8189 req, struct dcerpc_spoolss_EnumPorts_state);
8191 TALLOC_CTX *mem_ctx;
8193 if (state->out_mem_ctx) {
8194 mem_ctx = state->out_mem_ctx;
8199 status = dcerpc_spoolss_EnumPorts_r_recv(subreq, mem_ctx);
8200 TALLOC_FREE(subreq);
8201 if (!NT_STATUS_IS_OK(status)) {
8202 tevent_req_nterror(req, status);
8206 /* Copy out parameters */
8207 *state->orig.out.count = *state->tmp.out.count;
8208 *state->orig.out.info = *state->tmp.out.info;
8209 *state->orig.out.needed = *state->tmp.out.needed;
8212 state->orig.out.result = state->tmp.out.result;
8214 /* Reset temporary structure */
8215 ZERO_STRUCT(state->tmp);
8217 tevent_req_done(req);
8220 NTSTATUS dcerpc_spoolss_EnumPorts_recv(struct tevent_req *req,
8221 TALLOC_CTX *mem_ctx,
8224 struct dcerpc_spoolss_EnumPorts_state *state = tevent_req_data(
8225 req, struct dcerpc_spoolss_EnumPorts_state);
8228 if (tevent_req_is_nterror(req, &status)) {
8229 tevent_req_received(req);
8233 /* Steal possible out parameters to the callers context */
8234 talloc_steal(mem_ctx, state->out_mem_ctx);
8237 *result = state->orig.out.result;
8239 tevent_req_received(req);
8240 return NT_STATUS_OK;
8243 NTSTATUS dcerpc_spoolss_EnumPorts(struct dcerpc_binding_handle *h,
8244 TALLOC_CTX *mem_ctx,
8245 const char *_servername /* [in] [unique,charset(UTF16)] */,
8246 uint32_t _level /* [in] */,
8247 DATA_BLOB *_buffer /* [in] [unique] */,
8248 uint32_t _offered /* [in] */,
8249 uint32_t *_count /* [out] [ref] */,
8250 union spoolss_PortInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
8251 uint32_t *_needed /* [out] [ref] */,
8254 struct spoolss_EnumPorts r;
8258 r.in.servername = _servername;
8259 r.in.level = _level;
8260 r.in.buffer = _buffer;
8261 r.in.offered = _offered;
8263 status = dcerpc_spoolss_EnumPorts_r(h, mem_ctx, &r);
8264 if (!NT_STATUS_IS_OK(status)) {
8268 /* Return variables */
8269 *_count = *r.out.count;
8270 *_info = *r.out.info;
8271 *_needed = *r.out.needed;
8274 *result = r.out.result;
8276 return NT_STATUS_OK;
8279 struct dcerpc_spoolss_EnumMonitors_r_state {
8280 TALLOC_CTX *out_mem_ctx;
8283 static void dcerpc_spoolss_EnumMonitors_r_done(struct tevent_req *subreq);
8285 struct tevent_req *dcerpc_spoolss_EnumMonitors_r_send(TALLOC_CTX *mem_ctx,
8286 struct tevent_context *ev,
8287 struct dcerpc_binding_handle *h,
8288 struct spoolss_EnumMonitors *r)
8290 struct tevent_req *req;
8291 struct dcerpc_spoolss_EnumMonitors_r_state *state;
8292 struct tevent_req *subreq;
8294 req = tevent_req_create(mem_ctx, &state,
8295 struct dcerpc_spoolss_EnumMonitors_r_state);
8300 state->out_mem_ctx = talloc_new(state);
8301 if (tevent_req_nomem(state->out_mem_ctx, req)) {
8302 return tevent_req_post(req, ev);
8305 subreq = dcerpc_binding_handle_call_send(state, ev, h,
8306 NULL, &ndr_table_spoolss,
8307 NDR_SPOOLSS_ENUMMONITORS, state->out_mem_ctx, r);
8308 if (tevent_req_nomem(subreq, req)) {
8309 return tevent_req_post(req, ev);
8311 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumMonitors_r_done, req);
8316 static void dcerpc_spoolss_EnumMonitors_r_done(struct tevent_req *subreq)
8318 struct tevent_req *req =
8319 tevent_req_callback_data(subreq,
8323 status = dcerpc_binding_handle_call_recv(subreq);
8324 if (!NT_STATUS_IS_OK(status)) {
8325 tevent_req_nterror(req, status);
8329 tevent_req_done(req);
8332 NTSTATUS dcerpc_spoolss_EnumMonitors_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
8334 struct dcerpc_spoolss_EnumMonitors_r_state *state =
8335 tevent_req_data(req,
8336 struct dcerpc_spoolss_EnumMonitors_r_state);
8339 if (tevent_req_is_nterror(req, &status)) {
8340 tevent_req_received(req);
8344 talloc_steal(mem_ctx, state->out_mem_ctx);
8346 tevent_req_received(req);
8347 return NT_STATUS_OK;
8350 NTSTATUS dcerpc_spoolss_EnumMonitors_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumMonitors *r)
8354 status = dcerpc_binding_handle_call(h,
8355 NULL, &ndr_table_spoolss,
8356 NDR_SPOOLSS_ENUMMONITORS, mem_ctx, r);
8361 NTSTATUS dcerpc_spoolss_EnumMonitors_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumMonitors *r)
8365 status = dcerpc_spoolss_EnumMonitors_r(p->binding_handle, mem_ctx, r);
8367 if (NT_STATUS_IS_RPC(status)) {
8368 status = NT_STATUS_NET_WRITE_FAULT;
8374 struct dcerpc_spoolss_EnumMonitors_state {
8375 struct spoolss_EnumMonitors orig;
8376 struct spoolss_EnumMonitors tmp;
8377 TALLOC_CTX *out_mem_ctx;
8380 static void dcerpc_spoolss_EnumMonitors_done(struct tevent_req *subreq);
8382 struct tevent_req *dcerpc_spoolss_EnumMonitors_send(TALLOC_CTX *mem_ctx,
8383 struct tevent_context *ev,
8384 struct dcerpc_binding_handle *h,
8385 const char *_servername /* [in] [unique,charset(UTF16)] */,
8386 uint32_t _level /* [in] */,
8387 DATA_BLOB *_buffer /* [in] [unique] */,
8388 uint32_t _offered /* [in] */,
8389 uint32_t *_count /* [out] [ref] */,
8390 union spoolss_MonitorInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
8391 uint32_t *_needed /* [out] [ref] */)
8393 struct tevent_req *req;
8394 struct dcerpc_spoolss_EnumMonitors_state *state;
8395 struct tevent_req *subreq;
8397 req = tevent_req_create(mem_ctx, &state,
8398 struct dcerpc_spoolss_EnumMonitors_state);
8402 state->out_mem_ctx = NULL;
8405 state->orig.in.servername = _servername;
8406 state->orig.in.level = _level;
8407 state->orig.in.buffer = _buffer;
8408 state->orig.in.offered = _offered;
8410 /* Out parameters */
8411 state->orig.out.count = _count;
8412 state->orig.out.info = _info;
8413 state->orig.out.needed = _needed;
8416 ZERO_STRUCT(state->orig.out.result);
8418 state->out_mem_ctx = talloc_named_const(state, 0,
8419 "dcerpc_spoolss_EnumMonitors_out_memory");
8420 if (tevent_req_nomem(state->out_mem_ctx, req)) {
8421 return tevent_req_post(req, ev);
8424 /* make a temporary copy, that we pass to the dispatch function */
8425 state->tmp = state->orig;
8427 subreq = dcerpc_spoolss_EnumMonitors_r_send(state, ev, h, &state->tmp);
8428 if (tevent_req_nomem(subreq, req)) {
8429 return tevent_req_post(req, ev);
8431 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumMonitors_done, req);
8435 static void dcerpc_spoolss_EnumMonitors_done(struct tevent_req *subreq)
8437 struct tevent_req *req = tevent_req_callback_data(
8438 subreq, struct tevent_req);
8439 struct dcerpc_spoolss_EnumMonitors_state *state = tevent_req_data(
8440 req, struct dcerpc_spoolss_EnumMonitors_state);
8442 TALLOC_CTX *mem_ctx;
8444 if (state->out_mem_ctx) {
8445 mem_ctx = state->out_mem_ctx;
8450 status = dcerpc_spoolss_EnumMonitors_r_recv(subreq, mem_ctx);
8451 TALLOC_FREE(subreq);
8452 if (!NT_STATUS_IS_OK(status)) {
8453 tevent_req_nterror(req, status);
8457 /* Copy out parameters */
8458 *state->orig.out.count = *state->tmp.out.count;
8459 *state->orig.out.info = *state->tmp.out.info;
8460 *state->orig.out.needed = *state->tmp.out.needed;
8463 state->orig.out.result = state->tmp.out.result;
8465 /* Reset temporary structure */
8466 ZERO_STRUCT(state->tmp);
8468 tevent_req_done(req);
8471 NTSTATUS dcerpc_spoolss_EnumMonitors_recv(struct tevent_req *req,
8472 TALLOC_CTX *mem_ctx,
8475 struct dcerpc_spoolss_EnumMonitors_state *state = tevent_req_data(
8476 req, struct dcerpc_spoolss_EnumMonitors_state);
8479 if (tevent_req_is_nterror(req, &status)) {
8480 tevent_req_received(req);
8484 /* Steal possible out parameters to the callers context */
8485 talloc_steal(mem_ctx, state->out_mem_ctx);
8488 *result = state->orig.out.result;
8490 tevent_req_received(req);
8491 return NT_STATUS_OK;
8494 NTSTATUS dcerpc_spoolss_EnumMonitors(struct dcerpc_binding_handle *h,
8495 TALLOC_CTX *mem_ctx,
8496 const char *_servername /* [in] [unique,charset(UTF16)] */,
8497 uint32_t _level /* [in] */,
8498 DATA_BLOB *_buffer /* [in] [unique] */,
8499 uint32_t _offered /* [in] */,
8500 uint32_t *_count /* [out] [ref] */,
8501 union spoolss_MonitorInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
8502 uint32_t *_needed /* [out] [ref] */,
8505 struct spoolss_EnumMonitors r;
8509 r.in.servername = _servername;
8510 r.in.level = _level;
8511 r.in.buffer = _buffer;
8512 r.in.offered = _offered;
8514 status = dcerpc_spoolss_EnumMonitors_r(h, mem_ctx, &r);
8515 if (!NT_STATUS_IS_OK(status)) {
8519 /* Return variables */
8520 *_count = *r.out.count;
8521 *_info = *r.out.info;
8522 *_needed = *r.out.needed;
8525 *result = r.out.result;
8527 return NT_STATUS_OK;
8530 struct dcerpc_spoolss_AddPort_r_state {
8531 TALLOC_CTX *out_mem_ctx;
8534 static void dcerpc_spoolss_AddPort_r_done(struct tevent_req *subreq);
8536 struct tevent_req *dcerpc_spoolss_AddPort_r_send(TALLOC_CTX *mem_ctx,
8537 struct tevent_context *ev,
8538 struct dcerpc_binding_handle *h,
8539 struct spoolss_AddPort *r)
8541 struct tevent_req *req;
8542 struct dcerpc_spoolss_AddPort_r_state *state;
8543 struct tevent_req *subreq;
8545 req = tevent_req_create(mem_ctx, &state,
8546 struct dcerpc_spoolss_AddPort_r_state);
8551 state->out_mem_ctx = NULL;
8552 subreq = dcerpc_binding_handle_call_send(state, ev, h,
8553 NULL, &ndr_table_spoolss,
8554 NDR_SPOOLSS_ADDPORT, state, r);
8555 if (tevent_req_nomem(subreq, req)) {
8556 return tevent_req_post(req, ev);
8558 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPort_r_done, req);
8563 static void dcerpc_spoolss_AddPort_r_done(struct tevent_req *subreq)
8565 struct tevent_req *req =
8566 tevent_req_callback_data(subreq,
8570 status = dcerpc_binding_handle_call_recv(subreq);
8571 if (!NT_STATUS_IS_OK(status)) {
8572 tevent_req_nterror(req, status);
8576 tevent_req_done(req);
8579 NTSTATUS dcerpc_spoolss_AddPort_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
8581 struct dcerpc_spoolss_AddPort_r_state *state =
8582 tevent_req_data(req,
8583 struct dcerpc_spoolss_AddPort_r_state);
8586 if (tevent_req_is_nterror(req, &status)) {
8587 tevent_req_received(req);
8591 talloc_steal(mem_ctx, state->out_mem_ctx);
8593 tevent_req_received(req);
8594 return NT_STATUS_OK;
8597 NTSTATUS dcerpc_spoolss_AddPort_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPort *r)
8601 status = dcerpc_binding_handle_call(h,
8602 NULL, &ndr_table_spoolss,
8603 NDR_SPOOLSS_ADDPORT, mem_ctx, r);
8608 NTSTATUS dcerpc_spoolss_AddPort_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_AddPort *r)
8612 status = dcerpc_spoolss_AddPort_r(p->binding_handle, mem_ctx, r);
8614 if (NT_STATUS_IS_RPC(status)) {
8615 status = NT_STATUS_NET_WRITE_FAULT;
8621 struct dcerpc_spoolss_AddPort_state {
8622 struct spoolss_AddPort orig;
8623 struct spoolss_AddPort tmp;
8624 TALLOC_CTX *out_mem_ctx;
8627 static void dcerpc_spoolss_AddPort_done(struct tevent_req *subreq);
8629 struct tevent_req *dcerpc_spoolss_AddPort_send(TALLOC_CTX *mem_ctx,
8630 struct tevent_context *ev,
8631 struct dcerpc_binding_handle *h,
8632 const char *_server_name /* [in] [unique,charset(UTF16)] */,
8633 uint32_t _unknown /* [in] */,
8634 const char *_monitor_name /* [in] [charset(UTF16)] */)
8636 struct tevent_req *req;
8637 struct dcerpc_spoolss_AddPort_state *state;
8638 struct tevent_req *subreq;
8640 req = tevent_req_create(mem_ctx, &state,
8641 struct dcerpc_spoolss_AddPort_state);
8645 state->out_mem_ctx = NULL;
8648 state->orig.in.server_name = _server_name;
8649 state->orig.in.unknown = _unknown;
8650 state->orig.in.monitor_name = _monitor_name;
8652 /* Out parameters */
8655 ZERO_STRUCT(state->orig.out.result);
8657 /* make a temporary copy, that we pass to the dispatch function */
8658 state->tmp = state->orig;
8660 subreq = dcerpc_spoolss_AddPort_r_send(state, ev, h, &state->tmp);
8661 if (tevent_req_nomem(subreq, req)) {
8662 return tevent_req_post(req, ev);
8664 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPort_done, req);
8668 static void dcerpc_spoolss_AddPort_done(struct tevent_req *subreq)
8670 struct tevent_req *req = tevent_req_callback_data(
8671 subreq, struct tevent_req);
8672 struct dcerpc_spoolss_AddPort_state *state = tevent_req_data(
8673 req, struct dcerpc_spoolss_AddPort_state);
8675 TALLOC_CTX *mem_ctx;
8677 if (state->out_mem_ctx) {
8678 mem_ctx = state->out_mem_ctx;
8683 status = dcerpc_spoolss_AddPort_r_recv(subreq, mem_ctx);
8684 TALLOC_FREE(subreq);
8685 if (!NT_STATUS_IS_OK(status)) {
8686 tevent_req_nterror(req, status);
8690 /* Copy out parameters */
8693 state->orig.out.result = state->tmp.out.result;
8695 /* Reset temporary structure */
8696 ZERO_STRUCT(state->tmp);
8698 tevent_req_done(req);
8701 NTSTATUS dcerpc_spoolss_AddPort_recv(struct tevent_req *req,
8702 TALLOC_CTX *mem_ctx,
8705 struct dcerpc_spoolss_AddPort_state *state = tevent_req_data(
8706 req, struct dcerpc_spoolss_AddPort_state);
8709 if (tevent_req_is_nterror(req, &status)) {
8710 tevent_req_received(req);
8714 /* Steal possible out parameters to the callers context */
8715 talloc_steal(mem_ctx, state->out_mem_ctx);
8718 *result = state->orig.out.result;
8720 tevent_req_received(req);
8721 return NT_STATUS_OK;
8724 NTSTATUS dcerpc_spoolss_AddPort(struct dcerpc_binding_handle *h,
8725 TALLOC_CTX *mem_ctx,
8726 const char *_server_name /* [in] [unique,charset(UTF16)] */,
8727 uint32_t _unknown /* [in] */,
8728 const char *_monitor_name /* [in] [charset(UTF16)] */,
8731 struct spoolss_AddPort r;
8735 r.in.server_name = _server_name;
8736 r.in.unknown = _unknown;
8737 r.in.monitor_name = _monitor_name;
8739 status = dcerpc_spoolss_AddPort_r(h, mem_ctx, &r);
8740 if (!NT_STATUS_IS_OK(status)) {
8744 /* Return variables */
8747 *result = r.out.result;
8749 return NT_STATUS_OK;
8752 struct dcerpc_spoolss_CreatePrinterIC_r_state {
8753 TALLOC_CTX *out_mem_ctx;
8756 static void dcerpc_spoolss_CreatePrinterIC_r_done(struct tevent_req *subreq);
8758 struct tevent_req *dcerpc_spoolss_CreatePrinterIC_r_send(TALLOC_CTX *mem_ctx,
8759 struct tevent_context *ev,
8760 struct dcerpc_binding_handle *h,
8761 struct spoolss_CreatePrinterIC *r)
8763 struct tevent_req *req;
8764 struct dcerpc_spoolss_CreatePrinterIC_r_state *state;
8765 struct tevent_req *subreq;
8767 req = tevent_req_create(mem_ctx, &state,
8768 struct dcerpc_spoolss_CreatePrinterIC_r_state);
8773 state->out_mem_ctx = talloc_new(state);
8774 if (tevent_req_nomem(state->out_mem_ctx, req)) {
8775 return tevent_req_post(req, ev);
8778 subreq = dcerpc_binding_handle_call_send(state, ev, h,
8779 NULL, &ndr_table_spoolss,
8780 NDR_SPOOLSS_CREATEPRINTERIC, state->out_mem_ctx, r);
8781 if (tevent_req_nomem(subreq, req)) {
8782 return tevent_req_post(req, ev);
8784 tevent_req_set_callback(subreq, dcerpc_spoolss_CreatePrinterIC_r_done, req);
8789 static void dcerpc_spoolss_CreatePrinterIC_r_done(struct tevent_req *subreq)
8791 struct tevent_req *req =
8792 tevent_req_callback_data(subreq,
8796 status = dcerpc_binding_handle_call_recv(subreq);
8797 if (!NT_STATUS_IS_OK(status)) {
8798 tevent_req_nterror(req, status);
8802 tevent_req_done(req);
8805 NTSTATUS dcerpc_spoolss_CreatePrinterIC_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
8807 struct dcerpc_spoolss_CreatePrinterIC_r_state *state =
8808 tevent_req_data(req,
8809 struct dcerpc_spoolss_CreatePrinterIC_r_state);
8812 if (tevent_req_is_nterror(req, &status)) {
8813 tevent_req_received(req);
8817 talloc_steal(mem_ctx, state->out_mem_ctx);
8819 tevent_req_received(req);
8820 return NT_STATUS_OK;
8823 NTSTATUS dcerpc_spoolss_CreatePrinterIC_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_CreatePrinterIC *r)
8827 status = dcerpc_binding_handle_call(h,
8828 NULL, &ndr_table_spoolss,
8829 NDR_SPOOLSS_CREATEPRINTERIC, mem_ctx, r);
8834 NTSTATUS dcerpc_spoolss_CreatePrinterIC_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_CreatePrinterIC *r)
8838 status = dcerpc_spoolss_CreatePrinterIC_r(p->binding_handle, mem_ctx, r);
8840 if (NT_STATUS_IS_RPC(status)) {
8841 status = NT_STATUS_NET_WRITE_FAULT;
8847 struct dcerpc_spoolss_CreatePrinterIC_state {
8848 struct spoolss_CreatePrinterIC orig;
8849 struct spoolss_CreatePrinterIC tmp;
8850 TALLOC_CTX *out_mem_ctx;
8853 static void dcerpc_spoolss_CreatePrinterIC_done(struct tevent_req *subreq);
8855 struct tevent_req *dcerpc_spoolss_CreatePrinterIC_send(TALLOC_CTX *mem_ctx,
8856 struct tevent_context *ev,
8857 struct dcerpc_binding_handle *h,
8858 struct policy_handle *_handle /* [in] [ref] */,
8859 struct policy_handle *_gdi_handle /* [out] [ref] */,
8860 struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */)
8862 struct tevent_req *req;
8863 struct dcerpc_spoolss_CreatePrinterIC_state *state;
8864 struct tevent_req *subreq;
8866 req = tevent_req_create(mem_ctx, &state,
8867 struct dcerpc_spoolss_CreatePrinterIC_state);
8871 state->out_mem_ctx = NULL;
8874 state->orig.in.handle = _handle;
8875 state->orig.in.devmode_ctr = _devmode_ctr;
8877 /* Out parameters */
8878 state->orig.out.gdi_handle = _gdi_handle;
8881 ZERO_STRUCT(state->orig.out.result);
8883 state->out_mem_ctx = talloc_named_const(state, 0,
8884 "dcerpc_spoolss_CreatePrinterIC_out_memory");
8885 if (tevent_req_nomem(state->out_mem_ctx, req)) {
8886 return tevent_req_post(req, ev);
8889 /* make a temporary copy, that we pass to the dispatch function */
8890 state->tmp = state->orig;
8892 subreq = dcerpc_spoolss_CreatePrinterIC_r_send(state, ev, h, &state->tmp);
8893 if (tevent_req_nomem(subreq, req)) {
8894 return tevent_req_post(req, ev);
8896 tevent_req_set_callback(subreq, dcerpc_spoolss_CreatePrinterIC_done, req);
8900 static void dcerpc_spoolss_CreatePrinterIC_done(struct tevent_req *subreq)
8902 struct tevent_req *req = tevent_req_callback_data(
8903 subreq, struct tevent_req);
8904 struct dcerpc_spoolss_CreatePrinterIC_state *state = tevent_req_data(
8905 req, struct dcerpc_spoolss_CreatePrinterIC_state);
8907 TALLOC_CTX *mem_ctx;
8909 if (state->out_mem_ctx) {
8910 mem_ctx = state->out_mem_ctx;
8915 status = dcerpc_spoolss_CreatePrinterIC_r_recv(subreq, mem_ctx);
8916 TALLOC_FREE(subreq);
8917 if (!NT_STATUS_IS_OK(status)) {
8918 tevent_req_nterror(req, status);
8922 /* Copy out parameters */
8923 *state->orig.out.gdi_handle = *state->tmp.out.gdi_handle;
8926 state->orig.out.result = state->tmp.out.result;
8928 /* Reset temporary structure */
8929 ZERO_STRUCT(state->tmp);
8931 tevent_req_done(req);
8934 NTSTATUS dcerpc_spoolss_CreatePrinterIC_recv(struct tevent_req *req,
8935 TALLOC_CTX *mem_ctx,
8938 struct dcerpc_spoolss_CreatePrinterIC_state *state = tevent_req_data(
8939 req, struct dcerpc_spoolss_CreatePrinterIC_state);
8942 if (tevent_req_is_nterror(req, &status)) {
8943 tevent_req_received(req);
8947 /* Steal possible out parameters to the callers context */
8948 talloc_steal(mem_ctx, state->out_mem_ctx);
8951 *result = state->orig.out.result;
8953 tevent_req_received(req);
8954 return NT_STATUS_OK;
8957 NTSTATUS dcerpc_spoolss_CreatePrinterIC(struct dcerpc_binding_handle *h,
8958 TALLOC_CTX *mem_ctx,
8959 struct policy_handle *_handle /* [in] [ref] */,
8960 struct policy_handle *_gdi_handle /* [out] [ref] */,
8961 struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
8964 struct spoolss_CreatePrinterIC r;
8968 r.in.handle = _handle;
8969 r.in.devmode_ctr = _devmode_ctr;
8971 status = dcerpc_spoolss_CreatePrinterIC_r(h, mem_ctx, &r);
8972 if (!NT_STATUS_IS_OK(status)) {
8976 /* Return variables */
8977 *_gdi_handle = *r.out.gdi_handle;
8980 *result = r.out.result;
8982 return NT_STATUS_OK;
8985 struct dcerpc_spoolss_DeletePrinterIC_r_state {
8986 TALLOC_CTX *out_mem_ctx;
8989 static void dcerpc_spoolss_DeletePrinterIC_r_done(struct tevent_req *subreq);
8991 struct tevent_req *dcerpc_spoolss_DeletePrinterIC_r_send(TALLOC_CTX *mem_ctx,
8992 struct tevent_context *ev,
8993 struct dcerpc_binding_handle *h,
8994 struct spoolss_DeletePrinterIC *r)
8996 struct tevent_req *req;
8997 struct dcerpc_spoolss_DeletePrinterIC_r_state *state;
8998 struct tevent_req *subreq;
9000 req = tevent_req_create(mem_ctx, &state,
9001 struct dcerpc_spoolss_DeletePrinterIC_r_state);
9006 state->out_mem_ctx = talloc_new(state);
9007 if (tevent_req_nomem(state->out_mem_ctx, req)) {
9008 return tevent_req_post(req, ev);
9011 subreq = dcerpc_binding_handle_call_send(state, ev, h,
9012 NULL, &ndr_table_spoolss,
9013 NDR_SPOOLSS_DELETEPRINTERIC, state->out_mem_ctx, r);
9014 if (tevent_req_nomem(subreq, req)) {
9015 return tevent_req_post(req, ev);
9017 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterIC_r_done, req);
9022 static void dcerpc_spoolss_DeletePrinterIC_r_done(struct tevent_req *subreq)
9024 struct tevent_req *req =
9025 tevent_req_callback_data(subreq,
9029 status = dcerpc_binding_handle_call_recv(subreq);
9030 if (!NT_STATUS_IS_OK(status)) {
9031 tevent_req_nterror(req, status);
9035 tevent_req_done(req);
9038 NTSTATUS dcerpc_spoolss_DeletePrinterIC_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
9040 struct dcerpc_spoolss_DeletePrinterIC_r_state *state =
9041 tevent_req_data(req,
9042 struct dcerpc_spoolss_DeletePrinterIC_r_state);
9045 if (tevent_req_is_nterror(req, &status)) {
9046 tevent_req_received(req);
9050 talloc_steal(mem_ctx, state->out_mem_ctx);
9052 tevent_req_received(req);
9053 return NT_STATUS_OK;
9056 NTSTATUS dcerpc_spoolss_DeletePrinterIC_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterIC *r)
9060 status = dcerpc_binding_handle_call(h,
9061 NULL, &ndr_table_spoolss,
9062 NDR_SPOOLSS_DELETEPRINTERIC, mem_ctx, r);
9067 NTSTATUS dcerpc_spoolss_DeletePrinterIC_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterIC *r)
9071 status = dcerpc_spoolss_DeletePrinterIC_r(p->binding_handle, mem_ctx, r);
9073 if (NT_STATUS_IS_RPC(status)) {
9074 status = NT_STATUS_NET_WRITE_FAULT;
9080 struct dcerpc_spoolss_DeletePrinterIC_state {
9081 struct spoolss_DeletePrinterIC orig;
9082 struct spoolss_DeletePrinterIC tmp;
9083 TALLOC_CTX *out_mem_ctx;
9086 static void dcerpc_spoolss_DeletePrinterIC_done(struct tevent_req *subreq);
9088 struct tevent_req *dcerpc_spoolss_DeletePrinterIC_send(TALLOC_CTX *mem_ctx,
9089 struct tevent_context *ev,
9090 struct dcerpc_binding_handle *h,
9091 struct policy_handle *_gdi_handle /* [in,out] [ref] */)
9093 struct tevent_req *req;
9094 struct dcerpc_spoolss_DeletePrinterIC_state *state;
9095 struct tevent_req *subreq;
9097 req = tevent_req_create(mem_ctx, &state,
9098 struct dcerpc_spoolss_DeletePrinterIC_state);
9102 state->out_mem_ctx = NULL;
9105 state->orig.in.gdi_handle = _gdi_handle;
9107 /* Out parameters */
9108 state->orig.out.gdi_handle = _gdi_handle;
9111 ZERO_STRUCT(state->orig.out.result);
9113 state->out_mem_ctx = talloc_named_const(state, 0,
9114 "dcerpc_spoolss_DeletePrinterIC_out_memory");
9115 if (tevent_req_nomem(state->out_mem_ctx, req)) {
9116 return tevent_req_post(req, ev);
9119 /* make a temporary copy, that we pass to the dispatch function */
9120 state->tmp = state->orig;
9122 subreq = dcerpc_spoolss_DeletePrinterIC_r_send(state, ev, h, &state->tmp);
9123 if (tevent_req_nomem(subreq, req)) {
9124 return tevent_req_post(req, ev);
9126 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterIC_done, req);
9130 static void dcerpc_spoolss_DeletePrinterIC_done(struct tevent_req *subreq)
9132 struct tevent_req *req = tevent_req_callback_data(
9133 subreq, struct tevent_req);
9134 struct dcerpc_spoolss_DeletePrinterIC_state *state = tevent_req_data(
9135 req, struct dcerpc_spoolss_DeletePrinterIC_state);
9137 TALLOC_CTX *mem_ctx;
9139 if (state->out_mem_ctx) {
9140 mem_ctx = state->out_mem_ctx;
9145 status = dcerpc_spoolss_DeletePrinterIC_r_recv(subreq, mem_ctx);
9146 TALLOC_FREE(subreq);
9147 if (!NT_STATUS_IS_OK(status)) {
9148 tevent_req_nterror(req, status);
9152 /* Copy out parameters */
9153 *state->orig.out.gdi_handle = *state->tmp.out.gdi_handle;
9156 state->orig.out.result = state->tmp.out.result;
9158 /* Reset temporary structure */
9159 ZERO_STRUCT(state->tmp);
9161 tevent_req_done(req);
9164 NTSTATUS dcerpc_spoolss_DeletePrinterIC_recv(struct tevent_req *req,
9165 TALLOC_CTX *mem_ctx,
9168 struct dcerpc_spoolss_DeletePrinterIC_state *state = tevent_req_data(
9169 req, struct dcerpc_spoolss_DeletePrinterIC_state);
9172 if (tevent_req_is_nterror(req, &status)) {
9173 tevent_req_received(req);
9177 /* Steal possible out parameters to the callers context */
9178 talloc_steal(mem_ctx, state->out_mem_ctx);
9181 *result = state->orig.out.result;
9183 tevent_req_received(req);
9184 return NT_STATUS_OK;
9187 NTSTATUS dcerpc_spoolss_DeletePrinterIC(struct dcerpc_binding_handle *h,
9188 TALLOC_CTX *mem_ctx,
9189 struct policy_handle *_gdi_handle /* [in,out] [ref] */,
9192 struct spoolss_DeletePrinterIC r;
9196 r.in.gdi_handle = _gdi_handle;
9198 status = dcerpc_spoolss_DeletePrinterIC_r(h, mem_ctx, &r);
9199 if (!NT_STATUS_IS_OK(status)) {
9203 /* Return variables */
9204 *_gdi_handle = *r.out.gdi_handle;
9207 *result = r.out.result;
9209 return NT_STATUS_OK;
9212 struct dcerpc_spoolss_EnumPrintProcDataTypes_r_state {
9213 TALLOC_CTX *out_mem_ctx;
9216 static void dcerpc_spoolss_EnumPrintProcDataTypes_r_done(struct tevent_req *subreq);
9218 struct tevent_req *dcerpc_spoolss_EnumPrintProcDataTypes_r_send(TALLOC_CTX *mem_ctx,
9219 struct tevent_context *ev,
9220 struct dcerpc_binding_handle *h,
9221 struct spoolss_EnumPrintProcDataTypes *r)
9223 struct tevent_req *req;
9224 struct dcerpc_spoolss_EnumPrintProcDataTypes_r_state *state;
9225 struct tevent_req *subreq;
9227 req = tevent_req_create(mem_ctx, &state,
9228 struct dcerpc_spoolss_EnumPrintProcDataTypes_r_state);
9233 state->out_mem_ctx = talloc_new(state);
9234 if (tevent_req_nomem(state->out_mem_ctx, req)) {
9235 return tevent_req_post(req, ev);
9238 subreq = dcerpc_binding_handle_call_send(state, ev, h,
9239 NULL, &ndr_table_spoolss,
9240 NDR_SPOOLSS_ENUMPRINTPROCDATATYPES, state->out_mem_ctx, r);
9241 if (tevent_req_nomem(subreq, req)) {
9242 return tevent_req_post(req, ev);
9244 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrintProcDataTypes_r_done, req);
9249 static void dcerpc_spoolss_EnumPrintProcDataTypes_r_done(struct tevent_req *subreq)
9251 struct tevent_req *req =
9252 tevent_req_callback_data(subreq,
9256 status = dcerpc_binding_handle_call_recv(subreq);
9257 if (!NT_STATUS_IS_OK(status)) {
9258 tevent_req_nterror(req, status);
9262 tevent_req_done(req);
9265 NTSTATUS dcerpc_spoolss_EnumPrintProcDataTypes_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
9267 struct dcerpc_spoolss_EnumPrintProcDataTypes_r_state *state =
9268 tevent_req_data(req,
9269 struct dcerpc_spoolss_EnumPrintProcDataTypes_r_state);
9272 if (tevent_req_is_nterror(req, &status)) {
9273 tevent_req_received(req);
9277 talloc_steal(mem_ctx, state->out_mem_ctx);
9279 tevent_req_received(req);
9280 return NT_STATUS_OK;
9283 NTSTATUS dcerpc_spoolss_EnumPrintProcDataTypes_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrintProcDataTypes *r)
9287 status = dcerpc_binding_handle_call(h,
9288 NULL, &ndr_table_spoolss,
9289 NDR_SPOOLSS_ENUMPRINTPROCDATATYPES, mem_ctx, r);
9294 NTSTATUS dcerpc_spoolss_EnumPrintProcDataTypes_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrintProcDataTypes *r)
9298 status = dcerpc_spoolss_EnumPrintProcDataTypes_r(p->binding_handle, mem_ctx, r);
9300 if (NT_STATUS_IS_RPC(status)) {
9301 status = NT_STATUS_NET_WRITE_FAULT;
9307 struct dcerpc_spoolss_EnumPrintProcDataTypes_state {
9308 struct spoolss_EnumPrintProcDataTypes orig;
9309 struct spoolss_EnumPrintProcDataTypes tmp;
9310 TALLOC_CTX *out_mem_ctx;
9313 static void dcerpc_spoolss_EnumPrintProcDataTypes_done(struct tevent_req *subreq);
9315 struct tevent_req *dcerpc_spoolss_EnumPrintProcDataTypes_send(TALLOC_CTX *mem_ctx,
9316 struct tevent_context *ev,
9317 struct dcerpc_binding_handle *h,
9318 const char *_servername /* [in] [unique,charset(UTF16)] */,
9319 const char *_print_processor_name /* [in] [unique,charset(UTF16)] */,
9320 uint32_t _level /* [in] */,
9321 DATA_BLOB *_buffer /* [in] [unique] */,
9322 uint32_t _offered /* [in] */,
9323 uint32_t *_count /* [out] [ref] */,
9324 union spoolss_PrintProcDataTypesInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
9325 uint32_t *_needed /* [out] [ref] */)
9327 struct tevent_req *req;
9328 struct dcerpc_spoolss_EnumPrintProcDataTypes_state *state;
9329 struct tevent_req *subreq;
9331 req = tevent_req_create(mem_ctx, &state,
9332 struct dcerpc_spoolss_EnumPrintProcDataTypes_state);
9336 state->out_mem_ctx = NULL;
9339 state->orig.in.servername = _servername;
9340 state->orig.in.print_processor_name = _print_processor_name;
9341 state->orig.in.level = _level;
9342 state->orig.in.buffer = _buffer;
9343 state->orig.in.offered = _offered;
9345 /* Out parameters */
9346 state->orig.out.count = _count;
9347 state->orig.out.info = _info;
9348 state->orig.out.needed = _needed;
9351 ZERO_STRUCT(state->orig.out.result);
9353 state->out_mem_ctx = talloc_named_const(state, 0,
9354 "dcerpc_spoolss_EnumPrintProcDataTypes_out_memory");
9355 if (tevent_req_nomem(state->out_mem_ctx, req)) {
9356 return tevent_req_post(req, ev);
9359 /* make a temporary copy, that we pass to the dispatch function */
9360 state->tmp = state->orig;
9362 subreq = dcerpc_spoolss_EnumPrintProcDataTypes_r_send(state, ev, h, &state->tmp);
9363 if (tevent_req_nomem(subreq, req)) {
9364 return tevent_req_post(req, ev);
9366 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrintProcDataTypes_done, req);
9370 static void dcerpc_spoolss_EnumPrintProcDataTypes_done(struct tevent_req *subreq)
9372 struct tevent_req *req = tevent_req_callback_data(
9373 subreq, struct tevent_req);
9374 struct dcerpc_spoolss_EnumPrintProcDataTypes_state *state = tevent_req_data(
9375 req, struct dcerpc_spoolss_EnumPrintProcDataTypes_state);
9377 TALLOC_CTX *mem_ctx;
9379 if (state->out_mem_ctx) {
9380 mem_ctx = state->out_mem_ctx;
9385 status = dcerpc_spoolss_EnumPrintProcDataTypes_r_recv(subreq, mem_ctx);
9386 TALLOC_FREE(subreq);
9387 if (!NT_STATUS_IS_OK(status)) {
9388 tevent_req_nterror(req, status);
9392 /* Copy out parameters */
9393 *state->orig.out.count = *state->tmp.out.count;
9394 *state->orig.out.info = *state->tmp.out.info;
9395 *state->orig.out.needed = *state->tmp.out.needed;
9398 state->orig.out.result = state->tmp.out.result;
9400 /* Reset temporary structure */
9401 ZERO_STRUCT(state->tmp);
9403 tevent_req_done(req);
9406 NTSTATUS dcerpc_spoolss_EnumPrintProcDataTypes_recv(struct tevent_req *req,
9407 TALLOC_CTX *mem_ctx,
9410 struct dcerpc_spoolss_EnumPrintProcDataTypes_state *state = tevent_req_data(
9411 req, struct dcerpc_spoolss_EnumPrintProcDataTypes_state);
9414 if (tevent_req_is_nterror(req, &status)) {
9415 tevent_req_received(req);
9419 /* Steal possible out parameters to the callers context */
9420 talloc_steal(mem_ctx, state->out_mem_ctx);
9423 *result = state->orig.out.result;
9425 tevent_req_received(req);
9426 return NT_STATUS_OK;
9429 NTSTATUS dcerpc_spoolss_EnumPrintProcDataTypes(struct dcerpc_binding_handle *h,
9430 TALLOC_CTX *mem_ctx,
9431 const char *_servername /* [in] [unique,charset(UTF16)] */,
9432 const char *_print_processor_name /* [in] [unique,charset(UTF16)] */,
9433 uint32_t _level /* [in] */,
9434 DATA_BLOB *_buffer /* [in] [unique] */,
9435 uint32_t _offered /* [in] */,
9436 uint32_t *_count /* [out] [ref] */,
9437 union spoolss_PrintProcDataTypesInfo **_info /* [out] [ref,switch_is(level),size_is(,*count)] */,
9438 uint32_t *_needed /* [out] [ref] */,
9441 struct spoolss_EnumPrintProcDataTypes r;
9445 r.in.servername = _servername;
9446 r.in.print_processor_name = _print_processor_name;
9447 r.in.level = _level;
9448 r.in.buffer = _buffer;
9449 r.in.offered = _offered;
9451 status = dcerpc_spoolss_EnumPrintProcDataTypes_r(h, mem_ctx, &r);
9452 if (!NT_STATUS_IS_OK(status)) {
9456 /* Return variables */
9457 *_count = *r.out.count;
9458 *_info = *r.out.info;
9459 *_needed = *r.out.needed;
9462 *result = r.out.result;
9464 return NT_STATUS_OK;
9467 struct dcerpc_spoolss_ResetPrinter_r_state {
9468 TALLOC_CTX *out_mem_ctx;
9471 static void dcerpc_spoolss_ResetPrinter_r_done(struct tevent_req *subreq);
9473 struct tevent_req *dcerpc_spoolss_ResetPrinter_r_send(TALLOC_CTX *mem_ctx,
9474 struct tevent_context *ev,
9475 struct dcerpc_binding_handle *h,
9476 struct spoolss_ResetPrinter *r)
9478 struct tevent_req *req;
9479 struct dcerpc_spoolss_ResetPrinter_r_state *state;
9480 struct tevent_req *subreq;
9482 req = tevent_req_create(mem_ctx, &state,
9483 struct dcerpc_spoolss_ResetPrinter_r_state);
9488 state->out_mem_ctx = NULL;
9489 subreq = dcerpc_binding_handle_call_send(state, ev, h,
9490 NULL, &ndr_table_spoolss,
9491 NDR_SPOOLSS_RESETPRINTER, state, r);
9492 if (tevent_req_nomem(subreq, req)) {
9493 return tevent_req_post(req, ev);
9495 tevent_req_set_callback(subreq, dcerpc_spoolss_ResetPrinter_r_done, req);
9500 static void dcerpc_spoolss_ResetPrinter_r_done(struct tevent_req *subreq)
9502 struct tevent_req *req =
9503 tevent_req_callback_data(subreq,
9507 status = dcerpc_binding_handle_call_recv(subreq);
9508 if (!NT_STATUS_IS_OK(status)) {
9509 tevent_req_nterror(req, status);
9513 tevent_req_done(req);
9516 NTSTATUS dcerpc_spoolss_ResetPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
9518 struct dcerpc_spoolss_ResetPrinter_r_state *state =
9519 tevent_req_data(req,
9520 struct dcerpc_spoolss_ResetPrinter_r_state);
9523 if (tevent_req_is_nterror(req, &status)) {
9524 tevent_req_received(req);
9528 talloc_steal(mem_ctx, state->out_mem_ctx);
9530 tevent_req_received(req);
9531 return NT_STATUS_OK;
9534 NTSTATUS dcerpc_spoolss_ResetPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ResetPrinter *r)
9538 status = dcerpc_binding_handle_call(h,
9539 NULL, &ndr_table_spoolss,
9540 NDR_SPOOLSS_RESETPRINTER, mem_ctx, r);
9545 NTSTATUS dcerpc_spoolss_ResetPrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_ResetPrinter *r)
9549 status = dcerpc_spoolss_ResetPrinter_r(p->binding_handle, mem_ctx, r);
9551 if (NT_STATUS_IS_RPC(status)) {
9552 status = NT_STATUS_NET_WRITE_FAULT;
9558 struct dcerpc_spoolss_ResetPrinter_state {
9559 struct spoolss_ResetPrinter orig;
9560 struct spoolss_ResetPrinter tmp;
9561 TALLOC_CTX *out_mem_ctx;
9564 static void dcerpc_spoolss_ResetPrinter_done(struct tevent_req *subreq);
9566 struct tevent_req *dcerpc_spoolss_ResetPrinter_send(TALLOC_CTX *mem_ctx,
9567 struct tevent_context *ev,
9568 struct dcerpc_binding_handle *h,
9569 struct policy_handle *_handle /* [in] [ref] */,
9570 const char *_data_type /* [in] [unique,charset(UTF16)] */,
9571 struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */)
9573 struct tevent_req *req;
9574 struct dcerpc_spoolss_ResetPrinter_state *state;
9575 struct tevent_req *subreq;
9577 req = tevent_req_create(mem_ctx, &state,
9578 struct dcerpc_spoolss_ResetPrinter_state);
9582 state->out_mem_ctx = NULL;
9585 state->orig.in.handle = _handle;
9586 state->orig.in.data_type = _data_type;
9587 state->orig.in.devmode_ctr = _devmode_ctr;
9589 /* Out parameters */
9592 ZERO_STRUCT(state->orig.out.result);
9594 /* make a temporary copy, that we pass to the dispatch function */
9595 state->tmp = state->orig;
9597 subreq = dcerpc_spoolss_ResetPrinter_r_send(state, ev, h, &state->tmp);
9598 if (tevent_req_nomem(subreq, req)) {
9599 return tevent_req_post(req, ev);
9601 tevent_req_set_callback(subreq, dcerpc_spoolss_ResetPrinter_done, req);
9605 static void dcerpc_spoolss_ResetPrinter_done(struct tevent_req *subreq)
9607 struct tevent_req *req = tevent_req_callback_data(
9608 subreq, struct tevent_req);
9609 struct dcerpc_spoolss_ResetPrinter_state *state = tevent_req_data(
9610 req, struct dcerpc_spoolss_ResetPrinter_state);
9612 TALLOC_CTX *mem_ctx;
9614 if (state->out_mem_ctx) {
9615 mem_ctx = state->out_mem_ctx;
9620 status = dcerpc_spoolss_ResetPrinter_r_recv(subreq, mem_ctx);
9621 TALLOC_FREE(subreq);
9622 if (!NT_STATUS_IS_OK(status)) {
9623 tevent_req_nterror(req, status);
9627 /* Copy out parameters */
9630 state->orig.out.result = state->tmp.out.result;
9632 /* Reset temporary structure */
9633 ZERO_STRUCT(state->tmp);
9635 tevent_req_done(req);
9638 NTSTATUS dcerpc_spoolss_ResetPrinter_recv(struct tevent_req *req,
9639 TALLOC_CTX *mem_ctx,
9642 struct dcerpc_spoolss_ResetPrinter_state *state = tevent_req_data(
9643 req, struct dcerpc_spoolss_ResetPrinter_state);
9646 if (tevent_req_is_nterror(req, &status)) {
9647 tevent_req_received(req);
9651 /* Steal possible out parameters to the callers context */
9652 talloc_steal(mem_ctx, state->out_mem_ctx);
9655 *result = state->orig.out.result;
9657 tevent_req_received(req);
9658 return NT_STATUS_OK;
9661 NTSTATUS dcerpc_spoolss_ResetPrinter(struct dcerpc_binding_handle *h,
9662 TALLOC_CTX *mem_ctx,
9663 struct policy_handle *_handle /* [in] [ref] */,
9664 const char *_data_type /* [in] [unique,charset(UTF16)] */,
9665 struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
9668 struct spoolss_ResetPrinter r;
9672 r.in.handle = _handle;
9673 r.in.data_type = _data_type;
9674 r.in.devmode_ctr = _devmode_ctr;
9676 status = dcerpc_spoolss_ResetPrinter_r(h, mem_ctx, &r);
9677 if (!NT_STATUS_IS_OK(status)) {
9681 /* Return variables */
9684 *result = r.out.result;
9686 return NT_STATUS_OK;
9689 struct dcerpc_spoolss_GetPrinterDriver2_r_state {
9690 TALLOC_CTX *out_mem_ctx;
9693 static void dcerpc_spoolss_GetPrinterDriver2_r_done(struct tevent_req *subreq);
9695 struct tevent_req *dcerpc_spoolss_GetPrinterDriver2_r_send(TALLOC_CTX *mem_ctx,
9696 struct tevent_context *ev,
9697 struct dcerpc_binding_handle *h,
9698 struct spoolss_GetPrinterDriver2 *r)
9700 struct tevent_req *req;
9701 struct dcerpc_spoolss_GetPrinterDriver2_r_state *state;
9702 struct tevent_req *subreq;
9704 req = tevent_req_create(mem_ctx, &state,
9705 struct dcerpc_spoolss_GetPrinterDriver2_r_state);
9710 state->out_mem_ctx = talloc_new(state);
9711 if (tevent_req_nomem(state->out_mem_ctx, req)) {
9712 return tevent_req_post(req, ev);
9715 subreq = dcerpc_binding_handle_call_send(state, ev, h,
9716 NULL, &ndr_table_spoolss,
9717 NDR_SPOOLSS_GETPRINTERDRIVER2, state->out_mem_ctx, r);
9718 if (tevent_req_nomem(subreq, req)) {
9719 return tevent_req_post(req, ev);
9721 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriver2_r_done, req);
9726 static void dcerpc_spoolss_GetPrinterDriver2_r_done(struct tevent_req *subreq)
9728 struct tevent_req *req =
9729 tevent_req_callback_data(subreq,
9733 status = dcerpc_binding_handle_call_recv(subreq);
9734 if (!NT_STATUS_IS_OK(status)) {
9735 tevent_req_nterror(req, status);
9739 tevent_req_done(req);
9742 NTSTATUS dcerpc_spoolss_GetPrinterDriver2_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
9744 struct dcerpc_spoolss_GetPrinterDriver2_r_state *state =
9745 tevent_req_data(req,
9746 struct dcerpc_spoolss_GetPrinterDriver2_r_state);
9749 if (tevent_req_is_nterror(req, &status)) {
9750 tevent_req_received(req);
9754 talloc_steal(mem_ctx, state->out_mem_ctx);
9756 tevent_req_received(req);
9757 return NT_STATUS_OK;
9760 NTSTATUS dcerpc_spoolss_GetPrinterDriver2_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDriver2 *r)
9764 status = dcerpc_binding_handle_call(h,
9765 NULL, &ndr_table_spoolss,
9766 NDR_SPOOLSS_GETPRINTERDRIVER2, mem_ctx, r);
9771 NTSTATUS dcerpc_spoolss_GetPrinterDriver2_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDriver2 *r)
9775 status = dcerpc_spoolss_GetPrinterDriver2_r(p->binding_handle, mem_ctx, r);
9777 if (NT_STATUS_IS_RPC(status)) {
9778 status = NT_STATUS_NET_WRITE_FAULT;
9784 struct dcerpc_spoolss_GetPrinterDriver2_state {
9785 struct spoolss_GetPrinterDriver2 orig;
9786 struct spoolss_GetPrinterDriver2 tmp;
9787 TALLOC_CTX *out_mem_ctx;
9790 static void dcerpc_spoolss_GetPrinterDriver2_done(struct tevent_req *subreq);
9792 struct tevent_req *dcerpc_spoolss_GetPrinterDriver2_send(TALLOC_CTX *mem_ctx,
9793 struct tevent_context *ev,
9794 struct dcerpc_binding_handle *h,
9795 struct policy_handle *_handle /* [in] [ref] */,
9796 const char *_architecture /* [in] [unique,charset(UTF16)] */,
9797 uint32_t _level /* [in] */,
9798 DATA_BLOB *_buffer /* [in] [unique] */,
9799 uint32_t _offered /* [in] */,
9800 uint32_t _client_major_version /* [in] */,
9801 uint32_t _client_minor_version /* [in] */,
9802 union spoolss_DriverInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
9803 uint32_t *_needed /* [out] [ref] */,
9804 uint32_t *_server_major_version /* [out] [ref] */,
9805 uint32_t *_server_minor_version /* [out] [ref] */)
9807 struct tevent_req *req;
9808 struct dcerpc_spoolss_GetPrinterDriver2_state *state;
9809 struct tevent_req *subreq;
9811 req = tevent_req_create(mem_ctx, &state,
9812 struct dcerpc_spoolss_GetPrinterDriver2_state);
9816 state->out_mem_ctx = NULL;
9819 state->orig.in.handle = _handle;
9820 state->orig.in.architecture = _architecture;
9821 state->orig.in.level = _level;
9822 state->orig.in.buffer = _buffer;
9823 state->orig.in.offered = _offered;
9824 state->orig.in.client_major_version = _client_major_version;
9825 state->orig.in.client_minor_version = _client_minor_version;
9827 /* Out parameters */
9828 state->orig.out.info = _info;
9829 state->orig.out.needed = _needed;
9830 state->orig.out.server_major_version = _server_major_version;
9831 state->orig.out.server_minor_version = _server_minor_version;
9834 ZERO_STRUCT(state->orig.out.result);
9836 state->out_mem_ctx = talloc_named_const(state, 0,
9837 "dcerpc_spoolss_GetPrinterDriver2_out_memory");
9838 if (tevent_req_nomem(state->out_mem_ctx, req)) {
9839 return tevent_req_post(req, ev);
9842 /* make a temporary copy, that we pass to the dispatch function */
9843 state->tmp = state->orig;
9845 subreq = dcerpc_spoolss_GetPrinterDriver2_r_send(state, ev, h, &state->tmp);
9846 if (tevent_req_nomem(subreq, req)) {
9847 return tevent_req_post(req, ev);
9849 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriver2_done, req);
9853 static void dcerpc_spoolss_GetPrinterDriver2_done(struct tevent_req *subreq)
9855 struct tevent_req *req = tevent_req_callback_data(
9856 subreq, struct tevent_req);
9857 struct dcerpc_spoolss_GetPrinterDriver2_state *state = tevent_req_data(
9858 req, struct dcerpc_spoolss_GetPrinterDriver2_state);
9860 TALLOC_CTX *mem_ctx;
9862 if (state->out_mem_ctx) {
9863 mem_ctx = state->out_mem_ctx;
9868 status = dcerpc_spoolss_GetPrinterDriver2_r_recv(subreq, mem_ctx);
9869 TALLOC_FREE(subreq);
9870 if (!NT_STATUS_IS_OK(status)) {
9871 tevent_req_nterror(req, status);
9875 /* Copy out parameters */
9876 if (state->orig.out.info && state->tmp.out.info) {
9877 *state->orig.out.info = *state->tmp.out.info;
9879 *state->orig.out.needed = *state->tmp.out.needed;
9880 *state->orig.out.server_major_version = *state->tmp.out.server_major_version;
9881 *state->orig.out.server_minor_version = *state->tmp.out.server_minor_version;
9884 state->orig.out.result = state->tmp.out.result;
9886 /* Reset temporary structure */
9887 ZERO_STRUCT(state->tmp);
9889 tevent_req_done(req);
9892 NTSTATUS dcerpc_spoolss_GetPrinterDriver2_recv(struct tevent_req *req,
9893 TALLOC_CTX *mem_ctx,
9896 struct dcerpc_spoolss_GetPrinterDriver2_state *state = tevent_req_data(
9897 req, struct dcerpc_spoolss_GetPrinterDriver2_state);
9900 if (tevent_req_is_nterror(req, &status)) {
9901 tevent_req_received(req);
9905 /* Steal possible out parameters to the callers context */
9906 talloc_steal(mem_ctx, state->out_mem_ctx);
9909 *result = state->orig.out.result;
9911 tevent_req_received(req);
9912 return NT_STATUS_OK;
9915 NTSTATUS dcerpc_spoolss_GetPrinterDriver2(struct dcerpc_binding_handle *h,
9916 TALLOC_CTX *mem_ctx,
9917 struct policy_handle *_handle /* [in] [ref] */,
9918 const char *_architecture /* [in] [unique,charset(UTF16)] */,
9919 uint32_t _level /* [in] */,
9920 DATA_BLOB *_buffer /* [in] [unique] */,
9921 uint32_t _offered /* [in] */,
9922 uint32_t _client_major_version /* [in] */,
9923 uint32_t _client_minor_version /* [in] */,
9924 union spoolss_DriverInfo *_info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
9925 uint32_t *_needed /* [out] [ref] */,
9926 uint32_t *_server_major_version /* [out] [ref] */,
9927 uint32_t *_server_minor_version /* [out] [ref] */,
9930 struct spoolss_GetPrinterDriver2 r;
9934 r.in.handle = _handle;
9935 r.in.architecture = _architecture;
9936 r.in.level = _level;
9937 r.in.buffer = _buffer;
9938 r.in.offered = _offered;
9939 r.in.client_major_version = _client_major_version;
9940 r.in.client_minor_version = _client_minor_version;
9942 status = dcerpc_spoolss_GetPrinterDriver2_r(h, mem_ctx, &r);
9943 if (!NT_STATUS_IS_OK(status)) {
9947 /* Return variables */
9948 if (_info && r.out.info) {
9949 *_info = *r.out.info;
9951 *_needed = *r.out.needed;
9952 *_server_major_version = *r.out.server_major_version;
9953 *_server_minor_version = *r.out.server_minor_version;
9956 *result = r.out.result;
9958 return NT_STATUS_OK;
9961 struct dcerpc_spoolss_FindClosePrinterNotify_r_state {
9962 TALLOC_CTX *out_mem_ctx;
9965 static void dcerpc_spoolss_FindClosePrinterNotify_r_done(struct tevent_req *subreq);
9967 struct tevent_req *dcerpc_spoolss_FindClosePrinterNotify_r_send(TALLOC_CTX *mem_ctx,
9968 struct tevent_context *ev,
9969 struct dcerpc_binding_handle *h,
9970 struct spoolss_FindClosePrinterNotify *r)
9972 struct tevent_req *req;
9973 struct dcerpc_spoolss_FindClosePrinterNotify_r_state *state;
9974 struct tevent_req *subreq;
9976 req = tevent_req_create(mem_ctx, &state,
9977 struct dcerpc_spoolss_FindClosePrinterNotify_r_state);
9982 state->out_mem_ctx = NULL;
9983 subreq = dcerpc_binding_handle_call_send(state, ev, h,
9984 NULL, &ndr_table_spoolss,
9985 NDR_SPOOLSS_FINDCLOSEPRINTERNOTIFY, state, r);
9986 if (tevent_req_nomem(subreq, req)) {
9987 return tevent_req_post(req, ev);
9989 tevent_req_set_callback(subreq, dcerpc_spoolss_FindClosePrinterNotify_r_done, req);
9994 static void dcerpc_spoolss_FindClosePrinterNotify_r_done(struct tevent_req *subreq)
9996 struct tevent_req *req =
9997 tevent_req_callback_data(subreq,
10001 status = dcerpc_binding_handle_call_recv(subreq);
10002 if (!NT_STATUS_IS_OK(status)) {
10003 tevent_req_nterror(req, status);
10007 tevent_req_done(req);
10010 NTSTATUS dcerpc_spoolss_FindClosePrinterNotify_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
10012 struct dcerpc_spoolss_FindClosePrinterNotify_r_state *state =
10013 tevent_req_data(req,
10014 struct dcerpc_spoolss_FindClosePrinterNotify_r_state);
10017 if (tevent_req_is_nterror(req, &status)) {
10018 tevent_req_received(req);
10022 talloc_steal(mem_ctx, state->out_mem_ctx);
10024 tevent_req_received(req);
10025 return NT_STATUS_OK;
10028 NTSTATUS dcerpc_spoolss_FindClosePrinterNotify_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_FindClosePrinterNotify *r)
10032 status = dcerpc_binding_handle_call(h,
10033 NULL, &ndr_table_spoolss,
10034 NDR_SPOOLSS_FINDCLOSEPRINTERNOTIFY, mem_ctx, r);
10039 NTSTATUS dcerpc_spoolss_FindClosePrinterNotify_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_FindClosePrinterNotify *r)
10043 status = dcerpc_spoolss_FindClosePrinterNotify_r(p->binding_handle, mem_ctx, r);
10045 if (NT_STATUS_IS_RPC(status)) {
10046 status = NT_STATUS_NET_WRITE_FAULT;
10052 struct dcerpc_spoolss_FindClosePrinterNotify_state {
10053 struct spoolss_FindClosePrinterNotify orig;
10054 struct spoolss_FindClosePrinterNotify tmp;
10055 TALLOC_CTX *out_mem_ctx;
10058 static void dcerpc_spoolss_FindClosePrinterNotify_done(struct tevent_req *subreq);
10060 struct tevent_req *dcerpc_spoolss_FindClosePrinterNotify_send(TALLOC_CTX *mem_ctx,
10061 struct tevent_context *ev,
10062 struct dcerpc_binding_handle *h,
10063 struct policy_handle *_handle /* [in] [ref] */)
10065 struct tevent_req *req;
10066 struct dcerpc_spoolss_FindClosePrinterNotify_state *state;
10067 struct tevent_req *subreq;
10069 req = tevent_req_create(mem_ctx, &state,
10070 struct dcerpc_spoolss_FindClosePrinterNotify_state);
10074 state->out_mem_ctx = NULL;
10076 /* In parameters */
10077 state->orig.in.handle = _handle;
10079 /* Out parameters */
10082 ZERO_STRUCT(state->orig.out.result);
10084 /* make a temporary copy, that we pass to the dispatch function */
10085 state->tmp = state->orig;
10087 subreq = dcerpc_spoolss_FindClosePrinterNotify_r_send(state, ev, h, &state->tmp);
10088 if (tevent_req_nomem(subreq, req)) {
10089 return tevent_req_post(req, ev);
10091 tevent_req_set_callback(subreq, dcerpc_spoolss_FindClosePrinterNotify_done, req);
10095 static void dcerpc_spoolss_FindClosePrinterNotify_done(struct tevent_req *subreq)
10097 struct tevent_req *req = tevent_req_callback_data(
10098 subreq, struct tevent_req);
10099 struct dcerpc_spoolss_FindClosePrinterNotify_state *state = tevent_req_data(
10100 req, struct dcerpc_spoolss_FindClosePrinterNotify_state);
10102 TALLOC_CTX *mem_ctx;
10104 if (state->out_mem_ctx) {
10105 mem_ctx = state->out_mem_ctx;
10110 status = dcerpc_spoolss_FindClosePrinterNotify_r_recv(subreq, mem_ctx);
10111 TALLOC_FREE(subreq);
10112 if (!NT_STATUS_IS_OK(status)) {
10113 tevent_req_nterror(req, status);
10117 /* Copy out parameters */
10120 state->orig.out.result = state->tmp.out.result;
10122 /* Reset temporary structure */
10123 ZERO_STRUCT(state->tmp);
10125 tevent_req_done(req);
10128 NTSTATUS dcerpc_spoolss_FindClosePrinterNotify_recv(struct tevent_req *req,
10129 TALLOC_CTX *mem_ctx,
10132 struct dcerpc_spoolss_FindClosePrinterNotify_state *state = tevent_req_data(
10133 req, struct dcerpc_spoolss_FindClosePrinterNotify_state);
10136 if (tevent_req_is_nterror(req, &status)) {
10137 tevent_req_received(req);
10141 /* Steal possible out parameters to the callers context */
10142 talloc_steal(mem_ctx, state->out_mem_ctx);
10144 /* Return result */
10145 *result = state->orig.out.result;
10147 tevent_req_received(req);
10148 return NT_STATUS_OK;
10151 NTSTATUS dcerpc_spoolss_FindClosePrinterNotify(struct dcerpc_binding_handle *h,
10152 TALLOC_CTX *mem_ctx,
10153 struct policy_handle *_handle /* [in] [ref] */,
10156 struct spoolss_FindClosePrinterNotify r;
10159 /* In parameters */
10160 r.in.handle = _handle;
10162 status = dcerpc_spoolss_FindClosePrinterNotify_r(h, mem_ctx, &r);
10163 if (!NT_STATUS_IS_OK(status)) {
10167 /* Return variables */
10169 /* Return result */
10170 *result = r.out.result;
10172 return NT_STATUS_OK;
10175 struct dcerpc_spoolss_ReplyOpenPrinter_r_state {
10176 TALLOC_CTX *out_mem_ctx;
10179 static void dcerpc_spoolss_ReplyOpenPrinter_r_done(struct tevent_req *subreq);
10181 struct tevent_req *dcerpc_spoolss_ReplyOpenPrinter_r_send(TALLOC_CTX *mem_ctx,
10182 struct tevent_context *ev,
10183 struct dcerpc_binding_handle *h,
10184 struct spoolss_ReplyOpenPrinter *r)
10186 struct tevent_req *req;
10187 struct dcerpc_spoolss_ReplyOpenPrinter_r_state *state;
10188 struct tevent_req *subreq;
10190 req = tevent_req_create(mem_ctx, &state,
10191 struct dcerpc_spoolss_ReplyOpenPrinter_r_state);
10196 state->out_mem_ctx = talloc_new(state);
10197 if (tevent_req_nomem(state->out_mem_ctx, req)) {
10198 return tevent_req_post(req, ev);
10201 subreq = dcerpc_binding_handle_call_send(state, ev, h,
10202 NULL, &ndr_table_spoolss,
10203 NDR_SPOOLSS_REPLYOPENPRINTER, state->out_mem_ctx, r);
10204 if (tevent_req_nomem(subreq, req)) {
10205 return tevent_req_post(req, ev);
10207 tevent_req_set_callback(subreq, dcerpc_spoolss_ReplyOpenPrinter_r_done, req);
10212 static void dcerpc_spoolss_ReplyOpenPrinter_r_done(struct tevent_req *subreq)
10214 struct tevent_req *req =
10215 tevent_req_callback_data(subreq,
10216 struct tevent_req);
10219 status = dcerpc_binding_handle_call_recv(subreq);
10220 if (!NT_STATUS_IS_OK(status)) {
10221 tevent_req_nterror(req, status);
10225 tevent_req_done(req);
10228 NTSTATUS dcerpc_spoolss_ReplyOpenPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
10230 struct dcerpc_spoolss_ReplyOpenPrinter_r_state *state =
10231 tevent_req_data(req,
10232 struct dcerpc_spoolss_ReplyOpenPrinter_r_state);
10235 if (tevent_req_is_nterror(req, &status)) {
10236 tevent_req_received(req);
10240 talloc_steal(mem_ctx, state->out_mem_ctx);
10242 tevent_req_received(req);
10243 return NT_STATUS_OK;
10246 NTSTATUS dcerpc_spoolss_ReplyOpenPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ReplyOpenPrinter *r)
10250 status = dcerpc_binding_handle_call(h,
10251 NULL, &ndr_table_spoolss,
10252 NDR_SPOOLSS_REPLYOPENPRINTER, mem_ctx, r);
10257 NTSTATUS dcerpc_spoolss_ReplyOpenPrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_ReplyOpenPrinter *r)
10261 status = dcerpc_spoolss_ReplyOpenPrinter_r(p->binding_handle, mem_ctx, r);
10263 if (NT_STATUS_IS_RPC(status)) {
10264 status = NT_STATUS_NET_WRITE_FAULT;
10270 struct dcerpc_spoolss_ReplyOpenPrinter_state {
10271 struct spoolss_ReplyOpenPrinter orig;
10272 struct spoolss_ReplyOpenPrinter tmp;
10273 TALLOC_CTX *out_mem_ctx;
10276 static void dcerpc_spoolss_ReplyOpenPrinter_done(struct tevent_req *subreq);
10278 struct tevent_req *dcerpc_spoolss_ReplyOpenPrinter_send(TALLOC_CTX *mem_ctx,
10279 struct tevent_context *ev,
10280 struct dcerpc_binding_handle *h,
10281 const char *_server_name /* [in] [charset(UTF16)] */,
10282 uint32_t _printer_local /* [in] */,
10283 enum winreg_Type _type /* [in] */,
10284 uint32_t _bufsize /* [in] [range(0,512)] */,
10285 uint8_t *_buffer /* [in] [unique,size_is(bufsize)] */,
10286 struct policy_handle *_handle /* [out] [ref] */)
10288 struct tevent_req *req;
10289 struct dcerpc_spoolss_ReplyOpenPrinter_state *state;
10290 struct tevent_req *subreq;
10292 req = tevent_req_create(mem_ctx, &state,
10293 struct dcerpc_spoolss_ReplyOpenPrinter_state);
10297 state->out_mem_ctx = NULL;
10299 /* In parameters */
10300 state->orig.in.server_name = _server_name;
10301 state->orig.in.printer_local = _printer_local;
10302 state->orig.in.type = _type;
10303 state->orig.in.bufsize = _bufsize;
10304 state->orig.in.buffer = _buffer;
10306 /* Out parameters */
10307 state->orig.out.handle = _handle;
10310 ZERO_STRUCT(state->orig.out.result);
10312 state->out_mem_ctx = talloc_named_const(state, 0,
10313 "dcerpc_spoolss_ReplyOpenPrinter_out_memory");
10314 if (tevent_req_nomem(state->out_mem_ctx, req)) {
10315 return tevent_req_post(req, ev);
10318 /* make a temporary copy, that we pass to the dispatch function */
10319 state->tmp = state->orig;
10321 subreq = dcerpc_spoolss_ReplyOpenPrinter_r_send(state, ev, h, &state->tmp);
10322 if (tevent_req_nomem(subreq, req)) {
10323 return tevent_req_post(req, ev);
10325 tevent_req_set_callback(subreq, dcerpc_spoolss_ReplyOpenPrinter_done, req);
10329 static void dcerpc_spoolss_ReplyOpenPrinter_done(struct tevent_req *subreq)
10331 struct tevent_req *req = tevent_req_callback_data(
10332 subreq, struct tevent_req);
10333 struct dcerpc_spoolss_ReplyOpenPrinter_state *state = tevent_req_data(
10334 req, struct dcerpc_spoolss_ReplyOpenPrinter_state);
10336 TALLOC_CTX *mem_ctx;
10338 if (state->out_mem_ctx) {
10339 mem_ctx = state->out_mem_ctx;
10344 status = dcerpc_spoolss_ReplyOpenPrinter_r_recv(subreq, mem_ctx);
10345 TALLOC_FREE(subreq);
10346 if (!NT_STATUS_IS_OK(status)) {
10347 tevent_req_nterror(req, status);
10351 /* Copy out parameters */
10352 *state->orig.out.handle = *state->tmp.out.handle;
10355 state->orig.out.result = state->tmp.out.result;
10357 /* Reset temporary structure */
10358 ZERO_STRUCT(state->tmp);
10360 tevent_req_done(req);
10363 NTSTATUS dcerpc_spoolss_ReplyOpenPrinter_recv(struct tevent_req *req,
10364 TALLOC_CTX *mem_ctx,
10367 struct dcerpc_spoolss_ReplyOpenPrinter_state *state = tevent_req_data(
10368 req, struct dcerpc_spoolss_ReplyOpenPrinter_state);
10371 if (tevent_req_is_nterror(req, &status)) {
10372 tevent_req_received(req);
10376 /* Steal possible out parameters to the callers context */
10377 talloc_steal(mem_ctx, state->out_mem_ctx);
10379 /* Return result */
10380 *result = state->orig.out.result;
10382 tevent_req_received(req);
10383 return NT_STATUS_OK;
10386 NTSTATUS dcerpc_spoolss_ReplyOpenPrinter(struct dcerpc_binding_handle *h,
10387 TALLOC_CTX *mem_ctx,
10388 const char *_server_name /* [in] [charset(UTF16)] */,
10389 uint32_t _printer_local /* [in] */,
10390 enum winreg_Type _type /* [in] */,
10391 uint32_t _bufsize /* [in] [range(0,512)] */,
10392 uint8_t *_buffer /* [in] [unique,size_is(bufsize)] */,
10393 struct policy_handle *_handle /* [out] [ref] */,
10396 struct spoolss_ReplyOpenPrinter r;
10399 /* In parameters */
10400 r.in.server_name = _server_name;
10401 r.in.printer_local = _printer_local;
10403 r.in.bufsize = _bufsize;
10404 r.in.buffer = _buffer;
10406 status = dcerpc_spoolss_ReplyOpenPrinter_r(h, mem_ctx, &r);
10407 if (!NT_STATUS_IS_OK(status)) {
10411 /* Return variables */
10412 *_handle = *r.out.handle;
10414 /* Return result */
10415 *result = r.out.result;
10417 return NT_STATUS_OK;
10420 struct dcerpc_spoolss_RouterReplyPrinter_r_state {
10421 TALLOC_CTX *out_mem_ctx;
10424 static void dcerpc_spoolss_RouterReplyPrinter_r_done(struct tevent_req *subreq);
10426 struct tevent_req *dcerpc_spoolss_RouterReplyPrinter_r_send(TALLOC_CTX *mem_ctx,
10427 struct tevent_context *ev,
10428 struct dcerpc_binding_handle *h,
10429 struct spoolss_RouterReplyPrinter *r)
10431 struct tevent_req *req;
10432 struct dcerpc_spoolss_RouterReplyPrinter_r_state *state;
10433 struct tevent_req *subreq;
10435 req = tevent_req_create(mem_ctx, &state,
10436 struct dcerpc_spoolss_RouterReplyPrinter_r_state);
10441 state->out_mem_ctx = NULL;
10442 subreq = dcerpc_binding_handle_call_send(state, ev, h,
10443 NULL, &ndr_table_spoolss,
10444 NDR_SPOOLSS_ROUTERREPLYPRINTER, state, r);
10445 if (tevent_req_nomem(subreq, req)) {
10446 return tevent_req_post(req, ev);
10448 tevent_req_set_callback(subreq, dcerpc_spoolss_RouterReplyPrinter_r_done, req);
10453 static void dcerpc_spoolss_RouterReplyPrinter_r_done(struct tevent_req *subreq)
10455 struct tevent_req *req =
10456 tevent_req_callback_data(subreq,
10457 struct tevent_req);
10460 status = dcerpc_binding_handle_call_recv(subreq);
10461 if (!NT_STATUS_IS_OK(status)) {
10462 tevent_req_nterror(req, status);
10466 tevent_req_done(req);
10469 NTSTATUS dcerpc_spoolss_RouterReplyPrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
10471 struct dcerpc_spoolss_RouterReplyPrinter_r_state *state =
10472 tevent_req_data(req,
10473 struct dcerpc_spoolss_RouterReplyPrinter_r_state);
10476 if (tevent_req_is_nterror(req, &status)) {
10477 tevent_req_received(req);
10481 talloc_steal(mem_ctx, state->out_mem_ctx);
10483 tevent_req_received(req);
10484 return NT_STATUS_OK;
10487 NTSTATUS dcerpc_spoolss_RouterReplyPrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_RouterReplyPrinter *r)
10491 status = dcerpc_binding_handle_call(h,
10492 NULL, &ndr_table_spoolss,
10493 NDR_SPOOLSS_ROUTERREPLYPRINTER, mem_ctx, r);
10498 NTSTATUS dcerpc_spoolss_RouterReplyPrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_RouterReplyPrinter *r)
10502 status = dcerpc_spoolss_RouterReplyPrinter_r(p->binding_handle, mem_ctx, r);
10504 if (NT_STATUS_IS_RPC(status)) {
10505 status = NT_STATUS_NET_WRITE_FAULT;
10511 struct dcerpc_spoolss_RouterReplyPrinter_state {
10512 struct spoolss_RouterReplyPrinter orig;
10513 struct spoolss_RouterReplyPrinter tmp;
10514 TALLOC_CTX *out_mem_ctx;
10517 static void dcerpc_spoolss_RouterReplyPrinter_done(struct tevent_req *subreq);
10519 struct tevent_req *dcerpc_spoolss_RouterReplyPrinter_send(TALLOC_CTX *mem_ctx,
10520 struct tevent_context *ev,
10521 struct dcerpc_binding_handle *h,
10522 struct policy_handle *_handle /* [in] [ref] */,
10523 uint32_t _flags /* [in] */,
10524 uint32_t _bufsize /* [in] [range(0,512)] */,
10525 uint8_t *_buffer /* [in] [unique,size_is(bufsize)] */)
10527 struct tevent_req *req;
10528 struct dcerpc_spoolss_RouterReplyPrinter_state *state;
10529 struct tevent_req *subreq;
10531 req = tevent_req_create(mem_ctx, &state,
10532 struct dcerpc_spoolss_RouterReplyPrinter_state);
10536 state->out_mem_ctx = NULL;
10538 /* In parameters */
10539 state->orig.in.handle = _handle;
10540 state->orig.in.flags = _flags;
10541 state->orig.in.bufsize = _bufsize;
10542 state->orig.in.buffer = _buffer;
10544 /* Out parameters */
10547 ZERO_STRUCT(state->orig.out.result);
10549 /* make a temporary copy, that we pass to the dispatch function */
10550 state->tmp = state->orig;
10552 subreq = dcerpc_spoolss_RouterReplyPrinter_r_send(state, ev, h, &state->tmp);
10553 if (tevent_req_nomem(subreq, req)) {
10554 return tevent_req_post(req, ev);
10556 tevent_req_set_callback(subreq, dcerpc_spoolss_RouterReplyPrinter_done, req);
10560 static void dcerpc_spoolss_RouterReplyPrinter_done(struct tevent_req *subreq)
10562 struct tevent_req *req = tevent_req_callback_data(
10563 subreq, struct tevent_req);
10564 struct dcerpc_spoolss_RouterReplyPrinter_state *state = tevent_req_data(
10565 req, struct dcerpc_spoolss_RouterReplyPrinter_state);
10567 TALLOC_CTX *mem_ctx;
10569 if (state->out_mem_ctx) {
10570 mem_ctx = state->out_mem_ctx;
10575 status = dcerpc_spoolss_RouterReplyPrinter_r_recv(subreq, mem_ctx);
10576 TALLOC_FREE(subreq);
10577 if (!NT_STATUS_IS_OK(status)) {
10578 tevent_req_nterror(req, status);
10582 /* Copy out parameters */
10585 state->orig.out.result = state->tmp.out.result;
10587 /* Reset temporary structure */
10588 ZERO_STRUCT(state->tmp);
10590 tevent_req_done(req);
10593 NTSTATUS dcerpc_spoolss_RouterReplyPrinter_recv(struct tevent_req *req,
10594 TALLOC_CTX *mem_ctx,
10597 struct dcerpc_spoolss_RouterReplyPrinter_state *state = tevent_req_data(
10598 req, struct dcerpc_spoolss_RouterReplyPrinter_state);
10601 if (tevent_req_is_nterror(req, &status)) {
10602 tevent_req_received(req);
10606 /* Steal possible out parameters to the callers context */
10607 talloc_steal(mem_ctx, state->out_mem_ctx);
10609 /* Return result */
10610 *result = state->orig.out.result;
10612 tevent_req_received(req);
10613 return NT_STATUS_OK;
10616 NTSTATUS dcerpc_spoolss_RouterReplyPrinter(struct dcerpc_binding_handle *h,
10617 TALLOC_CTX *mem_ctx,
10618 struct policy_handle *_handle /* [in] [ref] */,
10619 uint32_t _flags /* [in] */,
10620 uint32_t _bufsize /* [in] [range(0,512)] */,
10621 uint8_t *_buffer /* [in] [unique,size_is(bufsize)] */,
10624 struct spoolss_RouterReplyPrinter r;
10627 /* In parameters */
10628 r.in.handle = _handle;
10629 r.in.flags = _flags;
10630 r.in.bufsize = _bufsize;
10631 r.in.buffer = _buffer;
10633 status = dcerpc_spoolss_RouterReplyPrinter_r(h, mem_ctx, &r);
10634 if (!NT_STATUS_IS_OK(status)) {
10638 /* Return variables */
10640 /* Return result */
10641 *result = r.out.result;
10643 return NT_STATUS_OK;
10646 struct dcerpc_spoolss_ReplyClosePrinter_r_state {
10647 TALLOC_CTX *out_mem_ctx;
10650 static void dcerpc_spoolss_ReplyClosePrinter_r_done(struct tevent_req *subreq);
10652 struct tevent_req *dcerpc_spoolss_ReplyClosePrinter_r_send(TALLOC_CTX *mem_ctx,
10653 struct tevent_context *ev,
10654 struct dcerpc_binding_handle *h,
10655 struct spoolss_ReplyClosePrinter *r)
10657 struct tevent_req *req;
10658 struct dcerpc_spoolss_ReplyClosePrinter_r_state *state;
10659 struct tevent_req *subreq;
10661 req = tevent_req_create(mem_ctx, &state,
10662 struct dcerpc_spoolss_ReplyClosePrinter_r_state);
10667 state->out_mem_ctx = talloc_new(state);
10668 if (tevent_req_nomem(state->out_mem_ctx, req)) {
10669 return tevent_req_post(req, ev);
10672 subreq = dcerpc_binding_handle_call_send(state, ev, h,
10673 NULL, &ndr_table_spoolss,
10674 NDR_SPOOLSS_REPLYCLOSEPRINTER, state->out_mem_ctx, r);
10675 if (tevent_req_nomem(subreq, req)) {
10676 return tevent_req_post(req, ev);
10678 tevent_req_set_callback(subreq, dcerpc_spoolss_ReplyClosePrinter_r_done, req);
10683 static void dcerpc_spoolss_ReplyClosePrinter_r_done(struct tevent_req *subreq)
10685 struct tevent_req *req =
10686 tevent_req_callback_data(subreq,
10687 struct tevent_req);
10690 status = dcerpc_binding_handle_call_recv(subreq);
10691 if (!NT_STATUS_IS_OK(status)) {
10692 tevent_req_nterror(req, status);
10696 tevent_req_done(req);
10699 NTSTATUS dcerpc_spoolss_ReplyClosePrinter_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
10701 struct dcerpc_spoolss_ReplyClosePrinter_r_state *state =
10702 tevent_req_data(req,
10703 struct dcerpc_spoolss_ReplyClosePrinter_r_state);
10706 if (tevent_req_is_nterror(req, &status)) {
10707 tevent_req_received(req);
10711 talloc_steal(mem_ctx, state->out_mem_ctx);
10713 tevent_req_received(req);
10714 return NT_STATUS_OK;
10717 NTSTATUS dcerpc_spoolss_ReplyClosePrinter_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_ReplyClosePrinter *r)
10721 status = dcerpc_binding_handle_call(h,
10722 NULL, &ndr_table_spoolss,
10723 NDR_SPOOLSS_REPLYCLOSEPRINTER, mem_ctx, r);
10728 NTSTATUS dcerpc_spoolss_ReplyClosePrinter_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_ReplyClosePrinter *r)
10732 status = dcerpc_spoolss_ReplyClosePrinter_r(p->binding_handle, mem_ctx, r);
10734 if (NT_STATUS_IS_RPC(status)) {
10735 status = NT_STATUS_NET_WRITE_FAULT;
10741 struct dcerpc_spoolss_ReplyClosePrinter_state {
10742 struct spoolss_ReplyClosePrinter orig;
10743 struct spoolss_ReplyClosePrinter tmp;
10744 TALLOC_CTX *out_mem_ctx;
10747 static void dcerpc_spoolss_ReplyClosePrinter_done(struct tevent_req *subreq);
10749 struct tevent_req *dcerpc_spoolss_ReplyClosePrinter_send(TALLOC_CTX *mem_ctx,
10750 struct tevent_context *ev,
10751 struct dcerpc_binding_handle *h,
10752 struct policy_handle *_handle /* [in,out] [ref] */)
10754 struct tevent_req *req;
10755 struct dcerpc_spoolss_ReplyClosePrinter_state *state;
10756 struct tevent_req *subreq;
10758 req = tevent_req_create(mem_ctx, &state,
10759 struct dcerpc_spoolss_ReplyClosePrinter_state);
10763 state->out_mem_ctx = NULL;
10765 /* In parameters */
10766 state->orig.in.handle = _handle;
10768 /* Out parameters */
10769 state->orig.out.handle = _handle;
10772 ZERO_STRUCT(state->orig.out.result);
10774 state->out_mem_ctx = talloc_named_const(state, 0,
10775 "dcerpc_spoolss_ReplyClosePrinter_out_memory");
10776 if (tevent_req_nomem(state->out_mem_ctx, req)) {
10777 return tevent_req_post(req, ev);
10780 /* make a temporary copy, that we pass to the dispatch function */
10781 state->tmp = state->orig;
10783 subreq = dcerpc_spoolss_ReplyClosePrinter_r_send(state, ev, h, &state->tmp);
10784 if (tevent_req_nomem(subreq, req)) {
10785 return tevent_req_post(req, ev);
10787 tevent_req_set_callback(subreq, dcerpc_spoolss_ReplyClosePrinter_done, req);
10791 static void dcerpc_spoolss_ReplyClosePrinter_done(struct tevent_req *subreq)
10793 struct tevent_req *req = tevent_req_callback_data(
10794 subreq, struct tevent_req);
10795 struct dcerpc_spoolss_ReplyClosePrinter_state *state = tevent_req_data(
10796 req, struct dcerpc_spoolss_ReplyClosePrinter_state);
10798 TALLOC_CTX *mem_ctx;
10800 if (state->out_mem_ctx) {
10801 mem_ctx = state->out_mem_ctx;
10806 status = dcerpc_spoolss_ReplyClosePrinter_r_recv(subreq, mem_ctx);
10807 TALLOC_FREE(subreq);
10808 if (!NT_STATUS_IS_OK(status)) {
10809 tevent_req_nterror(req, status);
10813 /* Copy out parameters */
10814 *state->orig.out.handle = *state->tmp.out.handle;
10817 state->orig.out.result = state->tmp.out.result;
10819 /* Reset temporary structure */
10820 ZERO_STRUCT(state->tmp);
10822 tevent_req_done(req);
10825 NTSTATUS dcerpc_spoolss_ReplyClosePrinter_recv(struct tevent_req *req,
10826 TALLOC_CTX *mem_ctx,
10829 struct dcerpc_spoolss_ReplyClosePrinter_state *state = tevent_req_data(
10830 req, struct dcerpc_spoolss_ReplyClosePrinter_state);
10833 if (tevent_req_is_nterror(req, &status)) {
10834 tevent_req_received(req);
10838 /* Steal possible out parameters to the callers context */
10839 talloc_steal(mem_ctx, state->out_mem_ctx);
10841 /* Return result */
10842 *result = state->orig.out.result;
10844 tevent_req_received(req);
10845 return NT_STATUS_OK;
10848 NTSTATUS dcerpc_spoolss_ReplyClosePrinter(struct dcerpc_binding_handle *h,
10849 TALLOC_CTX *mem_ctx,
10850 struct policy_handle *_handle /* [in,out] [ref] */,
10853 struct spoolss_ReplyClosePrinter r;
10856 /* In parameters */
10857 r.in.handle = _handle;
10859 status = dcerpc_spoolss_ReplyClosePrinter_r(h, mem_ctx, &r);
10860 if (!NT_STATUS_IS_OK(status)) {
10864 /* Return variables */
10865 *_handle = *r.out.handle;
10867 /* Return result */
10868 *result = r.out.result;
10870 return NT_STATUS_OK;
10873 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_state {
10874 TALLOC_CTX *out_mem_ctx;
10877 static void dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_done(struct tevent_req *subreq);
10879 struct tevent_req *dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_send(TALLOC_CTX *mem_ctx,
10880 struct tevent_context *ev,
10881 struct dcerpc_binding_handle *h,
10882 struct spoolss_RemoteFindFirstPrinterChangeNotifyEx *r)
10884 struct tevent_req *req;
10885 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_state *state;
10886 struct tevent_req *subreq;
10888 req = tevent_req_create(mem_ctx, &state,
10889 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_state);
10894 state->out_mem_ctx = NULL;
10895 subreq = dcerpc_binding_handle_call_send(state, ev, h,
10896 NULL, &ndr_table_spoolss,
10897 NDR_SPOOLSS_REMOTEFINDFIRSTPRINTERCHANGENOTIFYEX, state, r);
10898 if (tevent_req_nomem(subreq, req)) {
10899 return tevent_req_post(req, ev);
10901 tevent_req_set_callback(subreq, dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_done, req);
10906 static void dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_done(struct tevent_req *subreq)
10908 struct tevent_req *req =
10909 tevent_req_callback_data(subreq,
10910 struct tevent_req);
10913 status = dcerpc_binding_handle_call_recv(subreq);
10914 if (!NT_STATUS_IS_OK(status)) {
10915 tevent_req_nterror(req, status);
10919 tevent_req_done(req);
10922 NTSTATUS dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
10924 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_state *state =
10925 tevent_req_data(req,
10926 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_state);
10929 if (tevent_req_is_nterror(req, &status)) {
10930 tevent_req_received(req);
10934 talloc_steal(mem_ctx, state->out_mem_ctx);
10936 tevent_req_received(req);
10937 return NT_STATUS_OK;
10940 NTSTATUS dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_RemoteFindFirstPrinterChangeNotifyEx *r)
10944 status = dcerpc_binding_handle_call(h,
10945 NULL, &ndr_table_spoolss,
10946 NDR_SPOOLSS_REMOTEFINDFIRSTPRINTERCHANGENOTIFYEX, mem_ctx, r);
10951 NTSTATUS dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_RemoteFindFirstPrinterChangeNotifyEx *r)
10955 status = dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r(p->binding_handle, mem_ctx, r);
10957 if (NT_STATUS_IS_RPC(status)) {
10958 status = NT_STATUS_NET_WRITE_FAULT;
10964 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state {
10965 struct spoolss_RemoteFindFirstPrinterChangeNotifyEx orig;
10966 struct spoolss_RemoteFindFirstPrinterChangeNotifyEx tmp;
10967 TALLOC_CTX *out_mem_ctx;
10970 static void dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_done(struct tevent_req *subreq);
10972 struct tevent_req *dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_send(TALLOC_CTX *mem_ctx,
10973 struct tevent_context *ev,
10974 struct dcerpc_binding_handle *h,
10975 struct policy_handle *_handle /* [in] [ref] */,
10976 uint32_t _flags /* [in] */,
10977 uint32_t _options /* [in] */,
10978 const char *_local_machine /* [in] [unique,charset(UTF16)] */,
10979 uint32_t _printer_local /* [in] */,
10980 struct spoolss_NotifyOption *_notify_options /* [in] [unique] */)
10982 struct tevent_req *req;
10983 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state *state;
10984 struct tevent_req *subreq;
10986 req = tevent_req_create(mem_ctx, &state,
10987 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state);
10991 state->out_mem_ctx = NULL;
10993 /* In parameters */
10994 state->orig.in.handle = _handle;
10995 state->orig.in.flags = _flags;
10996 state->orig.in.options = _options;
10997 state->orig.in.local_machine = _local_machine;
10998 state->orig.in.printer_local = _printer_local;
10999 state->orig.in.notify_options = _notify_options;
11001 /* Out parameters */
11004 ZERO_STRUCT(state->orig.out.result);
11006 /* make a temporary copy, that we pass to the dispatch function */
11007 state->tmp = state->orig;
11009 subreq = dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_send(state, ev, h, &state->tmp);
11010 if (tevent_req_nomem(subreq, req)) {
11011 return tevent_req_post(req, ev);
11013 tevent_req_set_callback(subreq, dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_done, req);
11017 static void dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_done(struct tevent_req *subreq)
11019 struct tevent_req *req = tevent_req_callback_data(
11020 subreq, struct tevent_req);
11021 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state *state = tevent_req_data(
11022 req, struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state);
11024 TALLOC_CTX *mem_ctx;
11026 if (state->out_mem_ctx) {
11027 mem_ctx = state->out_mem_ctx;
11032 status = dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r_recv(subreq, mem_ctx);
11033 TALLOC_FREE(subreq);
11034 if (!NT_STATUS_IS_OK(status)) {
11035 tevent_req_nterror(req, status);
11039 /* Copy out parameters */
11042 state->orig.out.result = state->tmp.out.result;
11044 /* Reset temporary structure */
11045 ZERO_STRUCT(state->tmp);
11047 tevent_req_done(req);
11050 NTSTATUS dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_recv(struct tevent_req *req,
11051 TALLOC_CTX *mem_ctx,
11054 struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state *state = tevent_req_data(
11055 req, struct dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state);
11058 if (tevent_req_is_nterror(req, &status)) {
11059 tevent_req_received(req);
11063 /* Steal possible out parameters to the callers context */
11064 talloc_steal(mem_ctx, state->out_mem_ctx);
11066 /* Return result */
11067 *result = state->orig.out.result;
11069 tevent_req_received(req);
11070 return NT_STATUS_OK;
11073 NTSTATUS dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx(struct dcerpc_binding_handle *h,
11074 TALLOC_CTX *mem_ctx,
11075 struct policy_handle *_handle /* [in] [ref] */,
11076 uint32_t _flags /* [in] */,
11077 uint32_t _options /* [in] */,
11078 const char *_local_machine /* [in] [unique,charset(UTF16)] */,
11079 uint32_t _printer_local /* [in] */,
11080 struct spoolss_NotifyOption *_notify_options /* [in] [unique] */,
11083 struct spoolss_RemoteFindFirstPrinterChangeNotifyEx r;
11086 /* In parameters */
11087 r.in.handle = _handle;
11088 r.in.flags = _flags;
11089 r.in.options = _options;
11090 r.in.local_machine = _local_machine;
11091 r.in.printer_local = _printer_local;
11092 r.in.notify_options = _notify_options;
11094 status = dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx_r(h, mem_ctx, &r);
11095 if (!NT_STATUS_IS_OK(status)) {
11099 /* Return variables */
11101 /* Return result */
11102 *result = r.out.result;
11104 return NT_STATUS_OK;
11107 struct dcerpc_spoolss_RouterReplyPrinterEx_r_state {
11108 TALLOC_CTX *out_mem_ctx;
11111 static void dcerpc_spoolss_RouterReplyPrinterEx_r_done(struct tevent_req *subreq);
11113 struct tevent_req *dcerpc_spoolss_RouterReplyPrinterEx_r_send(TALLOC_CTX *mem_ctx,
11114 struct tevent_context *ev,
11115 struct dcerpc_binding_handle *h,
11116 struct spoolss_RouterReplyPrinterEx *r)
11118 struct tevent_req *req;
11119 struct dcerpc_spoolss_RouterReplyPrinterEx_r_state *state;
11120 struct tevent_req *subreq;
11122 req = tevent_req_create(mem_ctx, &state,
11123 struct dcerpc_spoolss_RouterReplyPrinterEx_r_state);
11128 state->out_mem_ctx = talloc_new(state);
11129 if (tevent_req_nomem(state->out_mem_ctx, req)) {
11130 return tevent_req_post(req, ev);
11133 subreq = dcerpc_binding_handle_call_send(state, ev, h,
11134 NULL, &ndr_table_spoolss,
11135 NDR_SPOOLSS_ROUTERREPLYPRINTEREX, state->out_mem_ctx, r);
11136 if (tevent_req_nomem(subreq, req)) {
11137 return tevent_req_post(req, ev);
11139 tevent_req_set_callback(subreq, dcerpc_spoolss_RouterReplyPrinterEx_r_done, req);
11144 static void dcerpc_spoolss_RouterReplyPrinterEx_r_done(struct tevent_req *subreq)
11146 struct tevent_req *req =
11147 tevent_req_callback_data(subreq,
11148 struct tevent_req);
11151 status = dcerpc_binding_handle_call_recv(subreq);
11152 if (!NT_STATUS_IS_OK(status)) {
11153 tevent_req_nterror(req, status);
11157 tevent_req_done(req);
11160 NTSTATUS dcerpc_spoolss_RouterReplyPrinterEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
11162 struct dcerpc_spoolss_RouterReplyPrinterEx_r_state *state =
11163 tevent_req_data(req,
11164 struct dcerpc_spoolss_RouterReplyPrinterEx_r_state);
11167 if (tevent_req_is_nterror(req, &status)) {
11168 tevent_req_received(req);
11172 talloc_steal(mem_ctx, state->out_mem_ctx);
11174 tevent_req_received(req);
11175 return NT_STATUS_OK;
11178 NTSTATUS dcerpc_spoolss_RouterReplyPrinterEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_RouterReplyPrinterEx *r)
11182 status = dcerpc_binding_handle_call(h,
11183 NULL, &ndr_table_spoolss,
11184 NDR_SPOOLSS_ROUTERREPLYPRINTEREX, mem_ctx, r);
11189 NTSTATUS dcerpc_spoolss_RouterReplyPrinterEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_RouterReplyPrinterEx *r)
11193 status = dcerpc_spoolss_RouterReplyPrinterEx_r(p->binding_handle, mem_ctx, r);
11195 if (NT_STATUS_IS_RPC(status)) {
11196 status = NT_STATUS_NET_WRITE_FAULT;
11202 struct dcerpc_spoolss_RouterReplyPrinterEx_state {
11203 struct spoolss_RouterReplyPrinterEx orig;
11204 struct spoolss_RouterReplyPrinterEx tmp;
11205 TALLOC_CTX *out_mem_ctx;
11208 static void dcerpc_spoolss_RouterReplyPrinterEx_done(struct tevent_req *subreq);
11210 struct tevent_req *dcerpc_spoolss_RouterReplyPrinterEx_send(TALLOC_CTX *mem_ctx,
11211 struct tevent_context *ev,
11212 struct dcerpc_binding_handle *h,
11213 struct policy_handle *_handle /* [in] [ref] */,
11214 uint32_t _color /* [in] */,
11215 uint32_t _flags /* [in] */,
11216 uint32_t *_reply_result /* [out] [ref] */,
11217 uint32_t _reply_type /* [in] */,
11218 union spoolss_ReplyPrinterInfo _info /* [in] [switch_is(reply_type)] */)
11220 struct tevent_req *req;
11221 struct dcerpc_spoolss_RouterReplyPrinterEx_state *state;
11222 struct tevent_req *subreq;
11224 req = tevent_req_create(mem_ctx, &state,
11225 struct dcerpc_spoolss_RouterReplyPrinterEx_state);
11229 state->out_mem_ctx = NULL;
11231 /* In parameters */
11232 state->orig.in.handle = _handle;
11233 state->orig.in.color = _color;
11234 state->orig.in.flags = _flags;
11235 state->orig.in.reply_type = _reply_type;
11236 state->orig.in.info = _info;
11238 /* Out parameters */
11239 state->orig.out.reply_result = _reply_result;
11242 ZERO_STRUCT(state->orig.out.result);
11244 state->out_mem_ctx = talloc_named_const(state, 0,
11245 "dcerpc_spoolss_RouterReplyPrinterEx_out_memory");
11246 if (tevent_req_nomem(state->out_mem_ctx, req)) {
11247 return tevent_req_post(req, ev);
11250 /* make a temporary copy, that we pass to the dispatch function */
11251 state->tmp = state->orig;
11253 subreq = dcerpc_spoolss_RouterReplyPrinterEx_r_send(state, ev, h, &state->tmp);
11254 if (tevent_req_nomem(subreq, req)) {
11255 return tevent_req_post(req, ev);
11257 tevent_req_set_callback(subreq, dcerpc_spoolss_RouterReplyPrinterEx_done, req);
11261 static void dcerpc_spoolss_RouterReplyPrinterEx_done(struct tevent_req *subreq)
11263 struct tevent_req *req = tevent_req_callback_data(
11264 subreq, struct tevent_req);
11265 struct dcerpc_spoolss_RouterReplyPrinterEx_state *state = tevent_req_data(
11266 req, struct dcerpc_spoolss_RouterReplyPrinterEx_state);
11268 TALLOC_CTX *mem_ctx;
11270 if (state->out_mem_ctx) {
11271 mem_ctx = state->out_mem_ctx;
11276 status = dcerpc_spoolss_RouterReplyPrinterEx_r_recv(subreq, mem_ctx);
11277 TALLOC_FREE(subreq);
11278 if (!NT_STATUS_IS_OK(status)) {
11279 tevent_req_nterror(req, status);
11283 /* Copy out parameters */
11284 *state->orig.out.reply_result = *state->tmp.out.reply_result;
11287 state->orig.out.result = state->tmp.out.result;
11289 /* Reset temporary structure */
11290 ZERO_STRUCT(state->tmp);
11292 tevent_req_done(req);
11295 NTSTATUS dcerpc_spoolss_RouterReplyPrinterEx_recv(struct tevent_req *req,
11296 TALLOC_CTX *mem_ctx,
11299 struct dcerpc_spoolss_RouterReplyPrinterEx_state *state = tevent_req_data(
11300 req, struct dcerpc_spoolss_RouterReplyPrinterEx_state);
11303 if (tevent_req_is_nterror(req, &status)) {
11304 tevent_req_received(req);
11308 /* Steal possible out parameters to the callers context */
11309 talloc_steal(mem_ctx, state->out_mem_ctx);
11311 /* Return result */
11312 *result = state->orig.out.result;
11314 tevent_req_received(req);
11315 return NT_STATUS_OK;
11318 NTSTATUS dcerpc_spoolss_RouterReplyPrinterEx(struct dcerpc_binding_handle *h,
11319 TALLOC_CTX *mem_ctx,
11320 struct policy_handle *_handle /* [in] [ref] */,
11321 uint32_t _color /* [in] */,
11322 uint32_t _flags /* [in] */,
11323 uint32_t *_reply_result /* [out] [ref] */,
11324 uint32_t _reply_type /* [in] */,
11325 union spoolss_ReplyPrinterInfo _info /* [in] [switch_is(reply_type)] */,
11328 struct spoolss_RouterReplyPrinterEx r;
11331 /* In parameters */
11332 r.in.handle = _handle;
11333 r.in.color = _color;
11334 r.in.flags = _flags;
11335 r.in.reply_type = _reply_type;
11338 status = dcerpc_spoolss_RouterReplyPrinterEx_r(h, mem_ctx, &r);
11339 if (!NT_STATUS_IS_OK(status)) {
11343 /* Return variables */
11344 *_reply_result = *r.out.reply_result;
11346 /* Return result */
11347 *result = r.out.result;
11349 return NT_STATUS_OK;
11352 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_state {
11353 TALLOC_CTX *out_mem_ctx;
11356 static void dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_done(struct tevent_req *subreq);
11358 struct tevent_req *dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_send(TALLOC_CTX *mem_ctx,
11359 struct tevent_context *ev,
11360 struct dcerpc_binding_handle *h,
11361 struct spoolss_RouterRefreshPrinterChangeNotify *r)
11363 struct tevent_req *req;
11364 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_state *state;
11365 struct tevent_req *subreq;
11367 req = tevent_req_create(mem_ctx, &state,
11368 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_state);
11373 state->out_mem_ctx = talloc_new(state);
11374 if (tevent_req_nomem(state->out_mem_ctx, req)) {
11375 return tevent_req_post(req, ev);
11378 subreq = dcerpc_binding_handle_call_send(state, ev, h,
11379 NULL, &ndr_table_spoolss,
11380 NDR_SPOOLSS_ROUTERREFRESHPRINTERCHANGENOTIFY, state->out_mem_ctx, r);
11381 if (tevent_req_nomem(subreq, req)) {
11382 return tevent_req_post(req, ev);
11384 tevent_req_set_callback(subreq, dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_done, req);
11389 static void dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_done(struct tevent_req *subreq)
11391 struct tevent_req *req =
11392 tevent_req_callback_data(subreq,
11393 struct tevent_req);
11396 status = dcerpc_binding_handle_call_recv(subreq);
11397 if (!NT_STATUS_IS_OK(status)) {
11398 tevent_req_nterror(req, status);
11402 tevent_req_done(req);
11405 NTSTATUS dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
11407 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_state *state =
11408 tevent_req_data(req,
11409 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_state);
11412 if (tevent_req_is_nterror(req, &status)) {
11413 tevent_req_received(req);
11417 talloc_steal(mem_ctx, state->out_mem_ctx);
11419 tevent_req_received(req);
11420 return NT_STATUS_OK;
11423 NTSTATUS dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_RouterRefreshPrinterChangeNotify *r)
11427 status = dcerpc_binding_handle_call(h,
11428 NULL, &ndr_table_spoolss,
11429 NDR_SPOOLSS_ROUTERREFRESHPRINTERCHANGENOTIFY, mem_ctx, r);
11434 NTSTATUS dcerpc_spoolss_RouterRefreshPrinterChangeNotify_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_RouterRefreshPrinterChangeNotify *r)
11438 status = dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r(p->binding_handle, mem_ctx, r);
11440 if (NT_STATUS_IS_RPC(status)) {
11441 status = NT_STATUS_NET_WRITE_FAULT;
11447 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state {
11448 struct spoolss_RouterRefreshPrinterChangeNotify orig;
11449 struct spoolss_RouterRefreshPrinterChangeNotify tmp;
11450 TALLOC_CTX *out_mem_ctx;
11453 static void dcerpc_spoolss_RouterRefreshPrinterChangeNotify_done(struct tevent_req *subreq);
11455 struct tevent_req *dcerpc_spoolss_RouterRefreshPrinterChangeNotify_send(TALLOC_CTX *mem_ctx,
11456 struct tevent_context *ev,
11457 struct dcerpc_binding_handle *h,
11458 struct policy_handle *_handle /* [in] [ref] */,
11459 uint32_t _change_low /* [in] */,
11460 struct spoolss_NotifyOption *_options /* [in] [unique] */,
11461 struct spoolss_NotifyInfo **_info /* [out] [ref] */)
11463 struct tevent_req *req;
11464 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state *state;
11465 struct tevent_req *subreq;
11467 req = tevent_req_create(mem_ctx, &state,
11468 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state);
11472 state->out_mem_ctx = NULL;
11474 /* In parameters */
11475 state->orig.in.handle = _handle;
11476 state->orig.in.change_low = _change_low;
11477 state->orig.in.options = _options;
11479 /* Out parameters */
11480 state->orig.out.info = _info;
11483 ZERO_STRUCT(state->orig.out.result);
11485 state->out_mem_ctx = talloc_named_const(state, 0,
11486 "dcerpc_spoolss_RouterRefreshPrinterChangeNotify_out_memory");
11487 if (tevent_req_nomem(state->out_mem_ctx, req)) {
11488 return tevent_req_post(req, ev);
11491 /* make a temporary copy, that we pass to the dispatch function */
11492 state->tmp = state->orig;
11494 subreq = dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_send(state, ev, h, &state->tmp);
11495 if (tevent_req_nomem(subreq, req)) {
11496 return tevent_req_post(req, ev);
11498 tevent_req_set_callback(subreq, dcerpc_spoolss_RouterRefreshPrinterChangeNotify_done, req);
11502 static void dcerpc_spoolss_RouterRefreshPrinterChangeNotify_done(struct tevent_req *subreq)
11504 struct tevent_req *req = tevent_req_callback_data(
11505 subreq, struct tevent_req);
11506 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state *state = tevent_req_data(
11507 req, struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state);
11509 TALLOC_CTX *mem_ctx;
11511 if (state->out_mem_ctx) {
11512 mem_ctx = state->out_mem_ctx;
11517 status = dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r_recv(subreq, mem_ctx);
11518 TALLOC_FREE(subreq);
11519 if (!NT_STATUS_IS_OK(status)) {
11520 tevent_req_nterror(req, status);
11524 /* Copy out parameters */
11525 *state->orig.out.info = *state->tmp.out.info;
11528 state->orig.out.result = state->tmp.out.result;
11530 /* Reset temporary structure */
11531 ZERO_STRUCT(state->tmp);
11533 tevent_req_done(req);
11536 NTSTATUS dcerpc_spoolss_RouterRefreshPrinterChangeNotify_recv(struct tevent_req *req,
11537 TALLOC_CTX *mem_ctx,
11540 struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state *state = tevent_req_data(
11541 req, struct dcerpc_spoolss_RouterRefreshPrinterChangeNotify_state);
11544 if (tevent_req_is_nterror(req, &status)) {
11545 tevent_req_received(req);
11549 /* Steal possible out parameters to the callers context */
11550 talloc_steal(mem_ctx, state->out_mem_ctx);
11552 /* Return result */
11553 *result = state->orig.out.result;
11555 tevent_req_received(req);
11556 return NT_STATUS_OK;
11559 NTSTATUS dcerpc_spoolss_RouterRefreshPrinterChangeNotify(struct dcerpc_binding_handle *h,
11560 TALLOC_CTX *mem_ctx,
11561 struct policy_handle *_handle /* [in] [ref] */,
11562 uint32_t _change_low /* [in] */,
11563 struct spoolss_NotifyOption *_options /* [in] [unique] */,
11564 struct spoolss_NotifyInfo **_info /* [out] [ref] */,
11567 struct spoolss_RouterRefreshPrinterChangeNotify r;
11570 /* In parameters */
11571 r.in.handle = _handle;
11572 r.in.change_low = _change_low;
11573 r.in.options = _options;
11575 status = dcerpc_spoolss_RouterRefreshPrinterChangeNotify_r(h, mem_ctx, &r);
11576 if (!NT_STATUS_IS_OK(status)) {
11580 /* Return variables */
11581 *_info = *r.out.info;
11583 /* Return result */
11584 *result = r.out.result;
11586 return NT_STATUS_OK;
11589 struct dcerpc_spoolss_OpenPrinterEx_r_state {
11590 TALLOC_CTX *out_mem_ctx;
11593 static void dcerpc_spoolss_OpenPrinterEx_r_done(struct tevent_req *subreq);
11595 struct tevent_req *dcerpc_spoolss_OpenPrinterEx_r_send(TALLOC_CTX *mem_ctx,
11596 struct tevent_context *ev,
11597 struct dcerpc_binding_handle *h,
11598 struct spoolss_OpenPrinterEx *r)
11600 struct tevent_req *req;
11601 struct dcerpc_spoolss_OpenPrinterEx_r_state *state;
11602 struct tevent_req *subreq;
11604 req = tevent_req_create(mem_ctx, &state,
11605 struct dcerpc_spoolss_OpenPrinterEx_r_state);
11610 state->out_mem_ctx = talloc_new(state);
11611 if (tevent_req_nomem(state->out_mem_ctx, req)) {
11612 return tevent_req_post(req, ev);
11615 subreq = dcerpc_binding_handle_call_send(state, ev, h,
11616 NULL, &ndr_table_spoolss,
11617 NDR_SPOOLSS_OPENPRINTEREX, state->out_mem_ctx, r);
11618 if (tevent_req_nomem(subreq, req)) {
11619 return tevent_req_post(req, ev);
11621 tevent_req_set_callback(subreq, dcerpc_spoolss_OpenPrinterEx_r_done, req);
11626 static void dcerpc_spoolss_OpenPrinterEx_r_done(struct tevent_req *subreq)
11628 struct tevent_req *req =
11629 tevent_req_callback_data(subreq,
11630 struct tevent_req);
11633 status = dcerpc_binding_handle_call_recv(subreq);
11634 if (!NT_STATUS_IS_OK(status)) {
11635 tevent_req_nterror(req, status);
11639 tevent_req_done(req);
11642 NTSTATUS dcerpc_spoolss_OpenPrinterEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
11644 struct dcerpc_spoolss_OpenPrinterEx_r_state *state =
11645 tevent_req_data(req,
11646 struct dcerpc_spoolss_OpenPrinterEx_r_state);
11649 if (tevent_req_is_nterror(req, &status)) {
11650 tevent_req_received(req);
11654 talloc_steal(mem_ctx, state->out_mem_ctx);
11656 tevent_req_received(req);
11657 return NT_STATUS_OK;
11660 NTSTATUS dcerpc_spoolss_OpenPrinterEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_OpenPrinterEx *r)
11664 status = dcerpc_binding_handle_call(h,
11665 NULL, &ndr_table_spoolss,
11666 NDR_SPOOLSS_OPENPRINTEREX, mem_ctx, r);
11671 NTSTATUS dcerpc_spoolss_OpenPrinterEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_OpenPrinterEx *r)
11675 status = dcerpc_spoolss_OpenPrinterEx_r(p->binding_handle, mem_ctx, r);
11677 if (NT_STATUS_IS_RPC(status)) {
11678 status = NT_STATUS_NET_WRITE_FAULT;
11684 struct dcerpc_spoolss_OpenPrinterEx_state {
11685 struct spoolss_OpenPrinterEx orig;
11686 struct spoolss_OpenPrinterEx tmp;
11687 TALLOC_CTX *out_mem_ctx;
11690 static void dcerpc_spoolss_OpenPrinterEx_done(struct tevent_req *subreq);
11692 struct tevent_req *dcerpc_spoolss_OpenPrinterEx_send(TALLOC_CTX *mem_ctx,
11693 struct tevent_context *ev,
11694 struct dcerpc_binding_handle *h,
11695 const char *_printername /* [in] [unique,charset(UTF16)] */,
11696 const char *_datatype /* [in] [unique,charset(UTF16)] */,
11697 struct spoolss_DevmodeContainer _devmode_ctr /* [in] */,
11698 uint32_t _access_mask /* [in] */,
11699 uint32_t _level /* [in] */,
11700 union spoolss_UserLevel _userlevel /* [in] [switch_is(level)] */,
11701 struct policy_handle *_handle /* [out] [ref] */)
11703 struct tevent_req *req;
11704 struct dcerpc_spoolss_OpenPrinterEx_state *state;
11705 struct tevent_req *subreq;
11707 req = tevent_req_create(mem_ctx, &state,
11708 struct dcerpc_spoolss_OpenPrinterEx_state);
11712 state->out_mem_ctx = NULL;
11714 /* In parameters */
11715 state->orig.in.printername = _printername;
11716 state->orig.in.datatype = _datatype;
11717 state->orig.in.devmode_ctr = _devmode_ctr;
11718 state->orig.in.access_mask = _access_mask;
11719 state->orig.in.level = _level;
11720 state->orig.in.userlevel = _userlevel;
11722 /* Out parameters */
11723 state->orig.out.handle = _handle;
11726 ZERO_STRUCT(state->orig.out.result);
11728 state->out_mem_ctx = talloc_named_const(state, 0,
11729 "dcerpc_spoolss_OpenPrinterEx_out_memory");
11730 if (tevent_req_nomem(state->out_mem_ctx, req)) {
11731 return tevent_req_post(req, ev);
11734 /* make a temporary copy, that we pass to the dispatch function */
11735 state->tmp = state->orig;
11737 subreq = dcerpc_spoolss_OpenPrinterEx_r_send(state, ev, h, &state->tmp);
11738 if (tevent_req_nomem(subreq, req)) {
11739 return tevent_req_post(req, ev);
11741 tevent_req_set_callback(subreq, dcerpc_spoolss_OpenPrinterEx_done, req);
11745 static void dcerpc_spoolss_OpenPrinterEx_done(struct tevent_req *subreq)
11747 struct tevent_req *req = tevent_req_callback_data(
11748 subreq, struct tevent_req);
11749 struct dcerpc_spoolss_OpenPrinterEx_state *state = tevent_req_data(
11750 req, struct dcerpc_spoolss_OpenPrinterEx_state);
11752 TALLOC_CTX *mem_ctx;
11754 if (state->out_mem_ctx) {
11755 mem_ctx = state->out_mem_ctx;
11760 status = dcerpc_spoolss_OpenPrinterEx_r_recv(subreq, mem_ctx);
11761 TALLOC_FREE(subreq);
11762 if (!NT_STATUS_IS_OK(status)) {
11763 tevent_req_nterror(req, status);
11767 /* Copy out parameters */
11768 *state->orig.out.handle = *state->tmp.out.handle;
11771 state->orig.out.result = state->tmp.out.result;
11773 /* Reset temporary structure */
11774 ZERO_STRUCT(state->tmp);
11776 tevent_req_done(req);
11779 NTSTATUS dcerpc_spoolss_OpenPrinterEx_recv(struct tevent_req *req,
11780 TALLOC_CTX *mem_ctx,
11783 struct dcerpc_spoolss_OpenPrinterEx_state *state = tevent_req_data(
11784 req, struct dcerpc_spoolss_OpenPrinterEx_state);
11787 if (tevent_req_is_nterror(req, &status)) {
11788 tevent_req_received(req);
11792 /* Steal possible out parameters to the callers context */
11793 talloc_steal(mem_ctx, state->out_mem_ctx);
11795 /* Return result */
11796 *result = state->orig.out.result;
11798 tevent_req_received(req);
11799 return NT_STATUS_OK;
11802 NTSTATUS dcerpc_spoolss_OpenPrinterEx(struct dcerpc_binding_handle *h,
11803 TALLOC_CTX *mem_ctx,
11804 const char *_printername /* [in] [unique,charset(UTF16)] */,
11805 const char *_datatype /* [in] [unique,charset(UTF16)] */,
11806 struct spoolss_DevmodeContainer _devmode_ctr /* [in] */,
11807 uint32_t _access_mask /* [in] */,
11808 uint32_t _level /* [in] */,
11809 union spoolss_UserLevel _userlevel /* [in] [switch_is(level)] */,
11810 struct policy_handle *_handle /* [out] [ref] */,
11813 struct spoolss_OpenPrinterEx r;
11816 /* In parameters */
11817 r.in.printername = _printername;
11818 r.in.datatype = _datatype;
11819 r.in.devmode_ctr = _devmode_ctr;
11820 r.in.access_mask = _access_mask;
11821 r.in.level = _level;
11822 r.in.userlevel = _userlevel;
11824 status = dcerpc_spoolss_OpenPrinterEx_r(h, mem_ctx, &r);
11825 if (!NT_STATUS_IS_OK(status)) {
11829 /* Return variables */
11830 *_handle = *r.out.handle;
11832 /* Return result */
11833 *result = r.out.result;
11835 return NT_STATUS_OK;
11838 struct dcerpc_spoolss_AddPrinterEx_r_state {
11839 TALLOC_CTX *out_mem_ctx;
11842 static void dcerpc_spoolss_AddPrinterEx_r_done(struct tevent_req *subreq);
11844 struct tevent_req *dcerpc_spoolss_AddPrinterEx_r_send(TALLOC_CTX *mem_ctx,
11845 struct tevent_context *ev,
11846 struct dcerpc_binding_handle *h,
11847 struct spoolss_AddPrinterEx *r)
11849 struct tevent_req *req;
11850 struct dcerpc_spoolss_AddPrinterEx_r_state *state;
11851 struct tevent_req *subreq;
11853 req = tevent_req_create(mem_ctx, &state,
11854 struct dcerpc_spoolss_AddPrinterEx_r_state);
11859 state->out_mem_ctx = talloc_new(state);
11860 if (tevent_req_nomem(state->out_mem_ctx, req)) {
11861 return tevent_req_post(req, ev);
11864 subreq = dcerpc_binding_handle_call_send(state, ev, h,
11865 NULL, &ndr_table_spoolss,
11866 NDR_SPOOLSS_ADDPRINTEREX, state->out_mem_ctx, r);
11867 if (tevent_req_nomem(subreq, req)) {
11868 return tevent_req_post(req, ev);
11870 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinterEx_r_done, req);
11875 static void dcerpc_spoolss_AddPrinterEx_r_done(struct tevent_req *subreq)
11877 struct tevent_req *req =
11878 tevent_req_callback_data(subreq,
11879 struct tevent_req);
11882 status = dcerpc_binding_handle_call_recv(subreq);
11883 if (!NT_STATUS_IS_OK(status)) {
11884 tevent_req_nterror(req, status);
11888 tevent_req_done(req);
11891 NTSTATUS dcerpc_spoolss_AddPrinterEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
11893 struct dcerpc_spoolss_AddPrinterEx_r_state *state =
11894 tevent_req_data(req,
11895 struct dcerpc_spoolss_AddPrinterEx_r_state);
11898 if (tevent_req_is_nterror(req, &status)) {
11899 tevent_req_received(req);
11903 talloc_steal(mem_ctx, state->out_mem_ctx);
11905 tevent_req_received(req);
11906 return NT_STATUS_OK;
11909 NTSTATUS dcerpc_spoolss_AddPrinterEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPrinterEx *r)
11913 status = dcerpc_binding_handle_call(h,
11914 NULL, &ndr_table_spoolss,
11915 NDR_SPOOLSS_ADDPRINTEREX, mem_ctx, r);
11920 NTSTATUS dcerpc_spoolss_AddPrinterEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_AddPrinterEx *r)
11924 status = dcerpc_spoolss_AddPrinterEx_r(p->binding_handle, mem_ctx, r);
11926 if (NT_STATUS_IS_RPC(status)) {
11927 status = NT_STATUS_NET_WRITE_FAULT;
11933 struct dcerpc_spoolss_AddPrinterEx_state {
11934 struct spoolss_AddPrinterEx orig;
11935 struct spoolss_AddPrinterEx tmp;
11936 TALLOC_CTX *out_mem_ctx;
11939 static void dcerpc_spoolss_AddPrinterEx_done(struct tevent_req *subreq);
11941 struct tevent_req *dcerpc_spoolss_AddPrinterEx_send(TALLOC_CTX *mem_ctx,
11942 struct tevent_context *ev,
11943 struct dcerpc_binding_handle *h,
11944 const char *_server /* [in] [unique,charset(UTF16)] */,
11945 struct spoolss_SetPrinterInfoCtr *_info_ctr /* [in] [ref] */,
11946 struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
11947 struct sec_desc_buf *_secdesc_ctr /* [in] [ref] */,
11948 struct spoolss_UserLevelCtr *_userlevel_ctr /* [in] [ref] */,
11949 struct policy_handle *_handle /* [out] [ref] */)
11951 struct tevent_req *req;
11952 struct dcerpc_spoolss_AddPrinterEx_state *state;
11953 struct tevent_req *subreq;
11955 req = tevent_req_create(mem_ctx, &state,
11956 struct dcerpc_spoolss_AddPrinterEx_state);
11960 state->out_mem_ctx = NULL;
11962 /* In parameters */
11963 state->orig.in.server = _server;
11964 state->orig.in.info_ctr = _info_ctr;
11965 state->orig.in.devmode_ctr = _devmode_ctr;
11966 state->orig.in.secdesc_ctr = _secdesc_ctr;
11967 state->orig.in.userlevel_ctr = _userlevel_ctr;
11969 /* Out parameters */
11970 state->orig.out.handle = _handle;
11973 ZERO_STRUCT(state->orig.out.result);
11975 state->out_mem_ctx = talloc_named_const(state, 0,
11976 "dcerpc_spoolss_AddPrinterEx_out_memory");
11977 if (tevent_req_nomem(state->out_mem_ctx, req)) {
11978 return tevent_req_post(req, ev);
11981 /* make a temporary copy, that we pass to the dispatch function */
11982 state->tmp = state->orig;
11984 subreq = dcerpc_spoolss_AddPrinterEx_r_send(state, ev, h, &state->tmp);
11985 if (tevent_req_nomem(subreq, req)) {
11986 return tevent_req_post(req, ev);
11988 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinterEx_done, req);
11992 static void dcerpc_spoolss_AddPrinterEx_done(struct tevent_req *subreq)
11994 struct tevent_req *req = tevent_req_callback_data(
11995 subreq, struct tevent_req);
11996 struct dcerpc_spoolss_AddPrinterEx_state *state = tevent_req_data(
11997 req, struct dcerpc_spoolss_AddPrinterEx_state);
11999 TALLOC_CTX *mem_ctx;
12001 if (state->out_mem_ctx) {
12002 mem_ctx = state->out_mem_ctx;
12007 status = dcerpc_spoolss_AddPrinterEx_r_recv(subreq, mem_ctx);
12008 TALLOC_FREE(subreq);
12009 if (!NT_STATUS_IS_OK(status)) {
12010 tevent_req_nterror(req, status);
12014 /* Copy out parameters */
12015 *state->orig.out.handle = *state->tmp.out.handle;
12018 state->orig.out.result = state->tmp.out.result;
12020 /* Reset temporary structure */
12021 ZERO_STRUCT(state->tmp);
12023 tevent_req_done(req);
12026 NTSTATUS dcerpc_spoolss_AddPrinterEx_recv(struct tevent_req *req,
12027 TALLOC_CTX *mem_ctx,
12030 struct dcerpc_spoolss_AddPrinterEx_state *state = tevent_req_data(
12031 req, struct dcerpc_spoolss_AddPrinterEx_state);
12034 if (tevent_req_is_nterror(req, &status)) {
12035 tevent_req_received(req);
12039 /* Steal possible out parameters to the callers context */
12040 talloc_steal(mem_ctx, state->out_mem_ctx);
12042 /* Return result */
12043 *result = state->orig.out.result;
12045 tevent_req_received(req);
12046 return NT_STATUS_OK;
12049 NTSTATUS dcerpc_spoolss_AddPrinterEx(struct dcerpc_binding_handle *h,
12050 TALLOC_CTX *mem_ctx,
12051 const char *_server /* [in] [unique,charset(UTF16)] */,
12052 struct spoolss_SetPrinterInfoCtr *_info_ctr /* [in] [ref] */,
12053 struct spoolss_DevmodeContainer *_devmode_ctr /* [in] [ref] */,
12054 struct sec_desc_buf *_secdesc_ctr /* [in] [ref] */,
12055 struct spoolss_UserLevelCtr *_userlevel_ctr /* [in] [ref] */,
12056 struct policy_handle *_handle /* [out] [ref] */,
12059 struct spoolss_AddPrinterEx r;
12062 /* In parameters */
12063 r.in.server = _server;
12064 r.in.info_ctr = _info_ctr;
12065 r.in.devmode_ctr = _devmode_ctr;
12066 r.in.secdesc_ctr = _secdesc_ctr;
12067 r.in.userlevel_ctr = _userlevel_ctr;
12069 status = dcerpc_spoolss_AddPrinterEx_r(h, mem_ctx, &r);
12070 if (!NT_STATUS_IS_OK(status)) {
12074 /* Return variables */
12075 *_handle = *r.out.handle;
12077 /* Return result */
12078 *result = r.out.result;
12080 return NT_STATUS_OK;
12083 struct dcerpc_spoolss_EnumPrinterData_r_state {
12084 TALLOC_CTX *out_mem_ctx;
12087 static void dcerpc_spoolss_EnumPrinterData_r_done(struct tevent_req *subreq);
12089 struct tevent_req *dcerpc_spoolss_EnumPrinterData_r_send(TALLOC_CTX *mem_ctx,
12090 struct tevent_context *ev,
12091 struct dcerpc_binding_handle *h,
12092 struct spoolss_EnumPrinterData *r)
12094 struct tevent_req *req;
12095 struct dcerpc_spoolss_EnumPrinterData_r_state *state;
12096 struct tevent_req *subreq;
12098 req = tevent_req_create(mem_ctx, &state,
12099 struct dcerpc_spoolss_EnumPrinterData_r_state);
12104 state->out_mem_ctx = talloc_new(state);
12105 if (tevent_req_nomem(state->out_mem_ctx, req)) {
12106 return tevent_req_post(req, ev);
12109 subreq = dcerpc_binding_handle_call_send(state, ev, h,
12110 NULL, &ndr_table_spoolss,
12111 NDR_SPOOLSS_ENUMPRINTERDATA, state->out_mem_ctx, r);
12112 if (tevent_req_nomem(subreq, req)) {
12113 return tevent_req_post(req, ev);
12115 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterData_r_done, req);
12120 static void dcerpc_spoolss_EnumPrinterData_r_done(struct tevent_req *subreq)
12122 struct tevent_req *req =
12123 tevent_req_callback_data(subreq,
12124 struct tevent_req);
12127 status = dcerpc_binding_handle_call_recv(subreq);
12128 if (!NT_STATUS_IS_OK(status)) {
12129 tevent_req_nterror(req, status);
12133 tevent_req_done(req);
12136 NTSTATUS dcerpc_spoolss_EnumPrinterData_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
12138 struct dcerpc_spoolss_EnumPrinterData_r_state *state =
12139 tevent_req_data(req,
12140 struct dcerpc_spoolss_EnumPrinterData_r_state);
12143 if (tevent_req_is_nterror(req, &status)) {
12144 tevent_req_received(req);
12148 talloc_steal(mem_ctx, state->out_mem_ctx);
12150 tevent_req_received(req);
12151 return NT_STATUS_OK;
12154 NTSTATUS dcerpc_spoolss_EnumPrinterData_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterData *r)
12158 status = dcerpc_binding_handle_call(h,
12159 NULL, &ndr_table_spoolss,
12160 NDR_SPOOLSS_ENUMPRINTERDATA, mem_ctx, r);
12165 NTSTATUS dcerpc_spoolss_EnumPrinterData_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterData *r)
12169 status = dcerpc_spoolss_EnumPrinterData_r(p->binding_handle, mem_ctx, r);
12171 if (NT_STATUS_IS_RPC(status)) {
12172 status = NT_STATUS_NET_WRITE_FAULT;
12178 struct dcerpc_spoolss_EnumPrinterData_state {
12179 struct spoolss_EnumPrinterData orig;
12180 struct spoolss_EnumPrinterData tmp;
12181 TALLOC_CTX *out_mem_ctx;
12184 static void dcerpc_spoolss_EnumPrinterData_done(struct tevent_req *subreq);
12186 struct tevent_req *dcerpc_spoolss_EnumPrinterData_send(TALLOC_CTX *mem_ctx,
12187 struct tevent_context *ev,
12188 struct dcerpc_binding_handle *h,
12189 struct policy_handle *_handle /* [in] [ref] */,
12190 uint32_t _enum_index /* [in] */,
12191 const char *_value_name /* [out] [charset(UTF16),size_is(value_offered/2)] */,
12192 uint32_t _value_offered /* [in] */,
12193 uint32_t *_value_needed /* [out] [ref] */,
12194 enum winreg_Type *_type /* [out] [ref] */,
12195 uint8_t *_data /* [out] [ref,flag(LIBNDR_PRINT_ARRAY_HEX),size_is(data_offered)] */,
12196 uint32_t _data_offered /* [in] */,
12197 uint32_t *_data_needed /* [out] [ref] */)
12199 struct tevent_req *req;
12200 struct dcerpc_spoolss_EnumPrinterData_state *state;
12201 struct tevent_req *subreq;
12203 req = tevent_req_create(mem_ctx, &state,
12204 struct dcerpc_spoolss_EnumPrinterData_state);
12208 state->out_mem_ctx = NULL;
12210 /* In parameters */
12211 state->orig.in.handle = _handle;
12212 state->orig.in.enum_index = _enum_index;
12213 state->orig.in.value_offered = _value_offered;
12214 state->orig.in.data_offered = _data_offered;
12216 /* Out parameters */
12217 state->orig.out.value_name = _value_name;
12218 state->orig.out.value_needed = _value_needed;
12219 state->orig.out.type = _type;
12220 state->orig.out.data = _data;
12221 state->orig.out.data_needed = _data_needed;
12224 ZERO_STRUCT(state->orig.out.result);
12226 state->out_mem_ctx = talloc_named_const(state, 0,
12227 "dcerpc_spoolss_EnumPrinterData_out_memory");
12228 if (tevent_req_nomem(state->out_mem_ctx, req)) {
12229 return tevent_req_post(req, ev);
12232 /* make a temporary copy, that we pass to the dispatch function */
12233 state->tmp = state->orig;
12235 subreq = dcerpc_spoolss_EnumPrinterData_r_send(state, ev, h, &state->tmp);
12236 if (tevent_req_nomem(subreq, req)) {
12237 return tevent_req_post(req, ev);
12239 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterData_done, req);
12243 static void dcerpc_spoolss_EnumPrinterData_done(struct tevent_req *subreq)
12245 struct tevent_req *req = tevent_req_callback_data(
12246 subreq, struct tevent_req);
12247 struct dcerpc_spoolss_EnumPrinterData_state *state = tevent_req_data(
12248 req, struct dcerpc_spoolss_EnumPrinterData_state);
12250 TALLOC_CTX *mem_ctx;
12252 if (state->out_mem_ctx) {
12253 mem_ctx = state->out_mem_ctx;
12258 status = dcerpc_spoolss_EnumPrinterData_r_recv(subreq, mem_ctx);
12259 TALLOC_FREE(subreq);
12260 if (!NT_STATUS_IS_OK(status)) {
12261 tevent_req_nterror(req, status);
12265 /* Copy out parameters */
12266 memcpy(discard_const_p(uint8_t *, state->orig.out.value_name), state->tmp.out.value_name, (state->tmp.in.value_offered / 2) * sizeof(*state->orig.out.value_name));
12267 *state->orig.out.value_needed = *state->tmp.out.value_needed;
12268 *state->orig.out.type = *state->tmp.out.type;
12269 memcpy(state->orig.out.data, state->tmp.out.data, (state->tmp.in.data_offered) * sizeof(*state->orig.out.data));
12270 *state->orig.out.data_needed = *state->tmp.out.data_needed;
12273 state->orig.out.result = state->tmp.out.result;
12275 /* Reset temporary structure */
12276 ZERO_STRUCT(state->tmp);
12278 tevent_req_done(req);
12281 NTSTATUS dcerpc_spoolss_EnumPrinterData_recv(struct tevent_req *req,
12282 TALLOC_CTX *mem_ctx,
12285 struct dcerpc_spoolss_EnumPrinterData_state *state = tevent_req_data(
12286 req, struct dcerpc_spoolss_EnumPrinterData_state);
12289 if (tevent_req_is_nterror(req, &status)) {
12290 tevent_req_received(req);
12294 /* Steal possible out parameters to the callers context */
12295 talloc_steal(mem_ctx, state->out_mem_ctx);
12297 /* Return result */
12298 *result = state->orig.out.result;
12300 tevent_req_received(req);
12301 return NT_STATUS_OK;
12304 NTSTATUS dcerpc_spoolss_EnumPrinterData(struct dcerpc_binding_handle *h,
12305 TALLOC_CTX *mem_ctx,
12306 struct policy_handle *_handle /* [in] [ref] */,
12307 uint32_t _enum_index /* [in] */,
12308 const char *_value_name /* [out] [charset(UTF16),size_is(value_offered/2)] */,
12309 uint32_t _value_offered /* [in] */,
12310 uint32_t *_value_needed /* [out] [ref] */,
12311 enum winreg_Type *_type /* [out] [ref] */,
12312 uint8_t *_data /* [out] [ref,flag(LIBNDR_PRINT_ARRAY_HEX),size_is(data_offered)] */,
12313 uint32_t _data_offered /* [in] */,
12314 uint32_t *_data_needed /* [out] [ref] */,
12317 struct spoolss_EnumPrinterData r;
12320 /* In parameters */
12321 r.in.handle = _handle;
12322 r.in.enum_index = _enum_index;
12323 r.in.value_offered = _value_offered;
12324 r.in.data_offered = _data_offered;
12326 status = dcerpc_spoolss_EnumPrinterData_r(h, mem_ctx, &r);
12327 if (!NT_STATUS_IS_OK(status)) {
12331 /* Return variables */
12332 memcpy(discard_const_p(uint8_t *, _value_name), r.out.value_name, (r.in.value_offered / 2) * sizeof(*_value_name));
12333 *_value_needed = *r.out.value_needed;
12334 *_type = *r.out.type;
12335 memcpy(_data, r.out.data, (r.in.data_offered) * sizeof(*_data));
12336 *_data_needed = *r.out.data_needed;
12338 /* Return result */
12339 *result = r.out.result;
12341 return NT_STATUS_OK;
12344 struct dcerpc_spoolss_DeletePrinterData_r_state {
12345 TALLOC_CTX *out_mem_ctx;
12348 static void dcerpc_spoolss_DeletePrinterData_r_done(struct tevent_req *subreq);
12350 struct tevent_req *dcerpc_spoolss_DeletePrinterData_r_send(TALLOC_CTX *mem_ctx,
12351 struct tevent_context *ev,
12352 struct dcerpc_binding_handle *h,
12353 struct spoolss_DeletePrinterData *r)
12355 struct tevent_req *req;
12356 struct dcerpc_spoolss_DeletePrinterData_r_state *state;
12357 struct tevent_req *subreq;
12359 req = tevent_req_create(mem_ctx, &state,
12360 struct dcerpc_spoolss_DeletePrinterData_r_state);
12365 state->out_mem_ctx = NULL;
12366 subreq = dcerpc_binding_handle_call_send(state, ev, h,
12367 NULL, &ndr_table_spoolss,
12368 NDR_SPOOLSS_DELETEPRINTERDATA, state, r);
12369 if (tevent_req_nomem(subreq, req)) {
12370 return tevent_req_post(req, ev);
12372 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterData_r_done, req);
12377 static void dcerpc_spoolss_DeletePrinterData_r_done(struct tevent_req *subreq)
12379 struct tevent_req *req =
12380 tevent_req_callback_data(subreq,
12381 struct tevent_req);
12384 status = dcerpc_binding_handle_call_recv(subreq);
12385 if (!NT_STATUS_IS_OK(status)) {
12386 tevent_req_nterror(req, status);
12390 tevent_req_done(req);
12393 NTSTATUS dcerpc_spoolss_DeletePrinterData_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
12395 struct dcerpc_spoolss_DeletePrinterData_r_state *state =
12396 tevent_req_data(req,
12397 struct dcerpc_spoolss_DeletePrinterData_r_state);
12400 if (tevent_req_is_nterror(req, &status)) {
12401 tevent_req_received(req);
12405 talloc_steal(mem_ctx, state->out_mem_ctx);
12407 tevent_req_received(req);
12408 return NT_STATUS_OK;
12411 NTSTATUS dcerpc_spoolss_DeletePrinterData_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterData *r)
12415 status = dcerpc_binding_handle_call(h,
12416 NULL, &ndr_table_spoolss,
12417 NDR_SPOOLSS_DELETEPRINTERDATA, mem_ctx, r);
12422 NTSTATUS dcerpc_spoolss_DeletePrinterData_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterData *r)
12426 status = dcerpc_spoolss_DeletePrinterData_r(p->binding_handle, mem_ctx, r);
12428 if (NT_STATUS_IS_RPC(status)) {
12429 status = NT_STATUS_NET_WRITE_FAULT;
12435 struct dcerpc_spoolss_DeletePrinterData_state {
12436 struct spoolss_DeletePrinterData orig;
12437 struct spoolss_DeletePrinterData tmp;
12438 TALLOC_CTX *out_mem_ctx;
12441 static void dcerpc_spoolss_DeletePrinterData_done(struct tevent_req *subreq);
12443 struct tevent_req *dcerpc_spoolss_DeletePrinterData_send(TALLOC_CTX *mem_ctx,
12444 struct tevent_context *ev,
12445 struct dcerpc_binding_handle *h,
12446 struct policy_handle *_handle /* [in] [ref] */,
12447 const char *_value_name /* [in] [charset(UTF16)] */)
12449 struct tevent_req *req;
12450 struct dcerpc_spoolss_DeletePrinterData_state *state;
12451 struct tevent_req *subreq;
12453 req = tevent_req_create(mem_ctx, &state,
12454 struct dcerpc_spoolss_DeletePrinterData_state);
12458 state->out_mem_ctx = NULL;
12460 /* In parameters */
12461 state->orig.in.handle = _handle;
12462 state->orig.in.value_name = _value_name;
12464 /* Out parameters */
12467 ZERO_STRUCT(state->orig.out.result);
12469 /* make a temporary copy, that we pass to the dispatch function */
12470 state->tmp = state->orig;
12472 subreq = dcerpc_spoolss_DeletePrinterData_r_send(state, ev, h, &state->tmp);
12473 if (tevent_req_nomem(subreq, req)) {
12474 return tevent_req_post(req, ev);
12476 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterData_done, req);
12480 static void dcerpc_spoolss_DeletePrinterData_done(struct tevent_req *subreq)
12482 struct tevent_req *req = tevent_req_callback_data(
12483 subreq, struct tevent_req);
12484 struct dcerpc_spoolss_DeletePrinterData_state *state = tevent_req_data(
12485 req, struct dcerpc_spoolss_DeletePrinterData_state);
12487 TALLOC_CTX *mem_ctx;
12489 if (state->out_mem_ctx) {
12490 mem_ctx = state->out_mem_ctx;
12495 status = dcerpc_spoolss_DeletePrinterData_r_recv(subreq, mem_ctx);
12496 TALLOC_FREE(subreq);
12497 if (!NT_STATUS_IS_OK(status)) {
12498 tevent_req_nterror(req, status);
12502 /* Copy out parameters */
12505 state->orig.out.result = state->tmp.out.result;
12507 /* Reset temporary structure */
12508 ZERO_STRUCT(state->tmp);
12510 tevent_req_done(req);
12513 NTSTATUS dcerpc_spoolss_DeletePrinterData_recv(struct tevent_req *req,
12514 TALLOC_CTX *mem_ctx,
12517 struct dcerpc_spoolss_DeletePrinterData_state *state = tevent_req_data(
12518 req, struct dcerpc_spoolss_DeletePrinterData_state);
12521 if (tevent_req_is_nterror(req, &status)) {
12522 tevent_req_received(req);
12526 /* Steal possible out parameters to the callers context */
12527 talloc_steal(mem_ctx, state->out_mem_ctx);
12529 /* Return result */
12530 *result = state->orig.out.result;
12532 tevent_req_received(req);
12533 return NT_STATUS_OK;
12536 NTSTATUS dcerpc_spoolss_DeletePrinterData(struct dcerpc_binding_handle *h,
12537 TALLOC_CTX *mem_ctx,
12538 struct policy_handle *_handle /* [in] [ref] */,
12539 const char *_value_name /* [in] [charset(UTF16)] */,
12542 struct spoolss_DeletePrinterData r;
12545 /* In parameters */
12546 r.in.handle = _handle;
12547 r.in.value_name = _value_name;
12549 status = dcerpc_spoolss_DeletePrinterData_r(h, mem_ctx, &r);
12550 if (!NT_STATUS_IS_OK(status)) {
12554 /* Return variables */
12556 /* Return result */
12557 *result = r.out.result;
12559 return NT_STATUS_OK;
12562 struct dcerpc_spoolss_SetPrinterDataEx_r_state {
12563 TALLOC_CTX *out_mem_ctx;
12566 static void dcerpc_spoolss_SetPrinterDataEx_r_done(struct tevent_req *subreq);
12568 struct tevent_req *dcerpc_spoolss_SetPrinterDataEx_r_send(TALLOC_CTX *mem_ctx,
12569 struct tevent_context *ev,
12570 struct dcerpc_binding_handle *h,
12571 struct spoolss_SetPrinterDataEx *r)
12573 struct tevent_req *req;
12574 struct dcerpc_spoolss_SetPrinterDataEx_r_state *state;
12575 struct tevent_req *subreq;
12577 req = tevent_req_create(mem_ctx, &state,
12578 struct dcerpc_spoolss_SetPrinterDataEx_r_state);
12583 state->out_mem_ctx = NULL;
12584 subreq = dcerpc_binding_handle_call_send(state, ev, h,
12585 NULL, &ndr_table_spoolss,
12586 NDR_SPOOLSS_SETPRINTERDATAEX, state, r);
12587 if (tevent_req_nomem(subreq, req)) {
12588 return tevent_req_post(req, ev);
12590 tevent_req_set_callback(subreq, dcerpc_spoolss_SetPrinterDataEx_r_done, req);
12595 static void dcerpc_spoolss_SetPrinterDataEx_r_done(struct tevent_req *subreq)
12597 struct tevent_req *req =
12598 tevent_req_callback_data(subreq,
12599 struct tevent_req);
12602 status = dcerpc_binding_handle_call_recv(subreq);
12603 if (!NT_STATUS_IS_OK(status)) {
12604 tevent_req_nterror(req, status);
12608 tevent_req_done(req);
12611 NTSTATUS dcerpc_spoolss_SetPrinterDataEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
12613 struct dcerpc_spoolss_SetPrinterDataEx_r_state *state =
12614 tevent_req_data(req,
12615 struct dcerpc_spoolss_SetPrinterDataEx_r_state);
12618 if (tevent_req_is_nterror(req, &status)) {
12619 tevent_req_received(req);
12623 talloc_steal(mem_ctx, state->out_mem_ctx);
12625 tevent_req_received(req);
12626 return NT_STATUS_OK;
12629 NTSTATUS dcerpc_spoolss_SetPrinterDataEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_SetPrinterDataEx *r)
12633 status = dcerpc_binding_handle_call(h,
12634 NULL, &ndr_table_spoolss,
12635 NDR_SPOOLSS_SETPRINTERDATAEX, mem_ctx, r);
12640 NTSTATUS dcerpc_spoolss_SetPrinterDataEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_SetPrinterDataEx *r)
12644 status = dcerpc_spoolss_SetPrinterDataEx_r(p->binding_handle, mem_ctx, r);
12646 if (NT_STATUS_IS_RPC(status)) {
12647 status = NT_STATUS_NET_WRITE_FAULT;
12653 struct dcerpc_spoolss_SetPrinterDataEx_state {
12654 struct spoolss_SetPrinterDataEx orig;
12655 struct spoolss_SetPrinterDataEx tmp;
12656 TALLOC_CTX *out_mem_ctx;
12659 static void dcerpc_spoolss_SetPrinterDataEx_done(struct tevent_req *subreq);
12661 struct tevent_req *dcerpc_spoolss_SetPrinterDataEx_send(TALLOC_CTX *mem_ctx,
12662 struct tevent_context *ev,
12663 struct dcerpc_binding_handle *h,
12664 struct policy_handle *_handle /* [in] [ref] */,
12665 const char *_key_name /* [in] [charset(UTF16)] */,
12666 const char *_value_name /* [in] [charset(UTF16)] */,
12667 enum winreg_Type _type /* [in] */,
12668 uint8_t *_data /* [in] [ref,size_is(offered)] */,
12669 uint32_t _offered /* [in] */)
12671 struct tevent_req *req;
12672 struct dcerpc_spoolss_SetPrinterDataEx_state *state;
12673 struct tevent_req *subreq;
12675 req = tevent_req_create(mem_ctx, &state,
12676 struct dcerpc_spoolss_SetPrinterDataEx_state);
12680 state->out_mem_ctx = NULL;
12682 /* In parameters */
12683 state->orig.in.handle = _handle;
12684 state->orig.in.key_name = _key_name;
12685 state->orig.in.value_name = _value_name;
12686 state->orig.in.type = _type;
12687 state->orig.in.data = _data;
12688 state->orig.in.offered = _offered;
12690 /* Out parameters */
12693 ZERO_STRUCT(state->orig.out.result);
12695 /* make a temporary copy, that we pass to the dispatch function */
12696 state->tmp = state->orig;
12698 subreq = dcerpc_spoolss_SetPrinterDataEx_r_send(state, ev, h, &state->tmp);
12699 if (tevent_req_nomem(subreq, req)) {
12700 return tevent_req_post(req, ev);
12702 tevent_req_set_callback(subreq, dcerpc_spoolss_SetPrinterDataEx_done, req);
12706 static void dcerpc_spoolss_SetPrinterDataEx_done(struct tevent_req *subreq)
12708 struct tevent_req *req = tevent_req_callback_data(
12709 subreq, struct tevent_req);
12710 struct dcerpc_spoolss_SetPrinterDataEx_state *state = tevent_req_data(
12711 req, struct dcerpc_spoolss_SetPrinterDataEx_state);
12713 TALLOC_CTX *mem_ctx;
12715 if (state->out_mem_ctx) {
12716 mem_ctx = state->out_mem_ctx;
12721 status = dcerpc_spoolss_SetPrinterDataEx_r_recv(subreq, mem_ctx);
12722 TALLOC_FREE(subreq);
12723 if (!NT_STATUS_IS_OK(status)) {
12724 tevent_req_nterror(req, status);
12728 /* Copy out parameters */
12731 state->orig.out.result = state->tmp.out.result;
12733 /* Reset temporary structure */
12734 ZERO_STRUCT(state->tmp);
12736 tevent_req_done(req);
12739 NTSTATUS dcerpc_spoolss_SetPrinterDataEx_recv(struct tevent_req *req,
12740 TALLOC_CTX *mem_ctx,
12743 struct dcerpc_spoolss_SetPrinterDataEx_state *state = tevent_req_data(
12744 req, struct dcerpc_spoolss_SetPrinterDataEx_state);
12747 if (tevent_req_is_nterror(req, &status)) {
12748 tevent_req_received(req);
12752 /* Steal possible out parameters to the callers context */
12753 talloc_steal(mem_ctx, state->out_mem_ctx);
12755 /* Return result */
12756 *result = state->orig.out.result;
12758 tevent_req_received(req);
12759 return NT_STATUS_OK;
12762 NTSTATUS dcerpc_spoolss_SetPrinterDataEx(struct dcerpc_binding_handle *h,
12763 TALLOC_CTX *mem_ctx,
12764 struct policy_handle *_handle /* [in] [ref] */,
12765 const char *_key_name /* [in] [charset(UTF16)] */,
12766 const char *_value_name /* [in] [charset(UTF16)] */,
12767 enum winreg_Type _type /* [in] */,
12768 uint8_t *_data /* [in] [ref,size_is(offered)] */,
12769 uint32_t _offered /* [in] */,
12772 struct spoolss_SetPrinterDataEx r;
12775 /* In parameters */
12776 r.in.handle = _handle;
12777 r.in.key_name = _key_name;
12778 r.in.value_name = _value_name;
12781 r.in.offered = _offered;
12783 status = dcerpc_spoolss_SetPrinterDataEx_r(h, mem_ctx, &r);
12784 if (!NT_STATUS_IS_OK(status)) {
12788 /* Return variables */
12790 /* Return result */
12791 *result = r.out.result;
12793 return NT_STATUS_OK;
12796 struct dcerpc_spoolss_GetPrinterDataEx_r_state {
12797 TALLOC_CTX *out_mem_ctx;
12800 static void dcerpc_spoolss_GetPrinterDataEx_r_done(struct tevent_req *subreq);
12802 struct tevent_req *dcerpc_spoolss_GetPrinterDataEx_r_send(TALLOC_CTX *mem_ctx,
12803 struct tevent_context *ev,
12804 struct dcerpc_binding_handle *h,
12805 struct spoolss_GetPrinterDataEx *r)
12807 struct tevent_req *req;
12808 struct dcerpc_spoolss_GetPrinterDataEx_r_state *state;
12809 struct tevent_req *subreq;
12811 req = tevent_req_create(mem_ctx, &state,
12812 struct dcerpc_spoolss_GetPrinterDataEx_r_state);
12817 state->out_mem_ctx = talloc_new(state);
12818 if (tevent_req_nomem(state->out_mem_ctx, req)) {
12819 return tevent_req_post(req, ev);
12822 subreq = dcerpc_binding_handle_call_send(state, ev, h,
12823 NULL, &ndr_table_spoolss,
12824 NDR_SPOOLSS_GETPRINTERDATAEX, state->out_mem_ctx, r);
12825 if (tevent_req_nomem(subreq, req)) {
12826 return tevent_req_post(req, ev);
12828 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDataEx_r_done, req);
12833 static void dcerpc_spoolss_GetPrinterDataEx_r_done(struct tevent_req *subreq)
12835 struct tevent_req *req =
12836 tevent_req_callback_data(subreq,
12837 struct tevent_req);
12840 status = dcerpc_binding_handle_call_recv(subreq);
12841 if (!NT_STATUS_IS_OK(status)) {
12842 tevent_req_nterror(req, status);
12846 tevent_req_done(req);
12849 NTSTATUS dcerpc_spoolss_GetPrinterDataEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
12851 struct dcerpc_spoolss_GetPrinterDataEx_r_state *state =
12852 tevent_req_data(req,
12853 struct dcerpc_spoolss_GetPrinterDataEx_r_state);
12856 if (tevent_req_is_nterror(req, &status)) {
12857 tevent_req_received(req);
12861 talloc_steal(mem_ctx, state->out_mem_ctx);
12863 tevent_req_received(req);
12864 return NT_STATUS_OK;
12867 NTSTATUS dcerpc_spoolss_GetPrinterDataEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDataEx *r)
12871 status = dcerpc_binding_handle_call(h,
12872 NULL, &ndr_table_spoolss,
12873 NDR_SPOOLSS_GETPRINTERDATAEX, mem_ctx, r);
12878 NTSTATUS dcerpc_spoolss_GetPrinterDataEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDataEx *r)
12882 status = dcerpc_spoolss_GetPrinterDataEx_r(p->binding_handle, mem_ctx, r);
12884 if (NT_STATUS_IS_RPC(status)) {
12885 status = NT_STATUS_NET_WRITE_FAULT;
12891 struct dcerpc_spoolss_GetPrinterDataEx_state {
12892 struct spoolss_GetPrinterDataEx orig;
12893 struct spoolss_GetPrinterDataEx tmp;
12894 TALLOC_CTX *out_mem_ctx;
12897 static void dcerpc_spoolss_GetPrinterDataEx_done(struct tevent_req *subreq);
12899 struct tevent_req *dcerpc_spoolss_GetPrinterDataEx_send(TALLOC_CTX *mem_ctx,
12900 struct tevent_context *ev,
12901 struct dcerpc_binding_handle *h,
12902 struct policy_handle *_handle /* [in] [ref] */,
12903 const char *_key_name /* [in] [charset(UTF16)] */,
12904 const char *_value_name /* [in] [charset(UTF16)] */,
12905 enum winreg_Type *_type /* [out] [ref] */,
12906 uint8_t *_data /* [out] [ref,size_is(offered)] */,
12907 uint32_t _offered /* [in] */,
12908 uint32_t *_needed /* [out] [ref] */)
12910 struct tevent_req *req;
12911 struct dcerpc_spoolss_GetPrinterDataEx_state *state;
12912 struct tevent_req *subreq;
12914 req = tevent_req_create(mem_ctx, &state,
12915 struct dcerpc_spoolss_GetPrinterDataEx_state);
12919 state->out_mem_ctx = NULL;
12921 /* In parameters */
12922 state->orig.in.handle = _handle;
12923 state->orig.in.key_name = _key_name;
12924 state->orig.in.value_name = _value_name;
12925 state->orig.in.offered = _offered;
12927 /* Out parameters */
12928 state->orig.out.type = _type;
12929 state->orig.out.data = _data;
12930 state->orig.out.needed = _needed;
12933 ZERO_STRUCT(state->orig.out.result);
12935 state->out_mem_ctx = talloc_named_const(state, 0,
12936 "dcerpc_spoolss_GetPrinterDataEx_out_memory");
12937 if (tevent_req_nomem(state->out_mem_ctx, req)) {
12938 return tevent_req_post(req, ev);
12941 /* make a temporary copy, that we pass to the dispatch function */
12942 state->tmp = state->orig;
12944 subreq = dcerpc_spoolss_GetPrinterDataEx_r_send(state, ev, h, &state->tmp);
12945 if (tevent_req_nomem(subreq, req)) {
12946 return tevent_req_post(req, ev);
12948 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDataEx_done, req);
12952 static void dcerpc_spoolss_GetPrinterDataEx_done(struct tevent_req *subreq)
12954 struct tevent_req *req = tevent_req_callback_data(
12955 subreq, struct tevent_req);
12956 struct dcerpc_spoolss_GetPrinterDataEx_state *state = tevent_req_data(
12957 req, struct dcerpc_spoolss_GetPrinterDataEx_state);
12959 TALLOC_CTX *mem_ctx;
12961 if (state->out_mem_ctx) {
12962 mem_ctx = state->out_mem_ctx;
12967 status = dcerpc_spoolss_GetPrinterDataEx_r_recv(subreq, mem_ctx);
12968 TALLOC_FREE(subreq);
12969 if (!NT_STATUS_IS_OK(status)) {
12970 tevent_req_nterror(req, status);
12974 /* Copy out parameters */
12975 *state->orig.out.type = *state->tmp.out.type;
12976 memcpy(state->orig.out.data, state->tmp.out.data, (state->tmp.in.offered) * sizeof(*state->orig.out.data));
12977 *state->orig.out.needed = *state->tmp.out.needed;
12980 state->orig.out.result = state->tmp.out.result;
12982 /* Reset temporary structure */
12983 ZERO_STRUCT(state->tmp);
12985 tevent_req_done(req);
12988 NTSTATUS dcerpc_spoolss_GetPrinterDataEx_recv(struct tevent_req *req,
12989 TALLOC_CTX *mem_ctx,
12992 struct dcerpc_spoolss_GetPrinterDataEx_state *state = tevent_req_data(
12993 req, struct dcerpc_spoolss_GetPrinterDataEx_state);
12996 if (tevent_req_is_nterror(req, &status)) {
12997 tevent_req_received(req);
13001 /* Steal possible out parameters to the callers context */
13002 talloc_steal(mem_ctx, state->out_mem_ctx);
13004 /* Return result */
13005 *result = state->orig.out.result;
13007 tevent_req_received(req);
13008 return NT_STATUS_OK;
13011 NTSTATUS dcerpc_spoolss_GetPrinterDataEx(struct dcerpc_binding_handle *h,
13012 TALLOC_CTX *mem_ctx,
13013 struct policy_handle *_handle /* [in] [ref] */,
13014 const char *_key_name /* [in] [charset(UTF16)] */,
13015 const char *_value_name /* [in] [charset(UTF16)] */,
13016 enum winreg_Type *_type /* [out] [ref] */,
13017 uint8_t *_data /* [out] [ref,size_is(offered)] */,
13018 uint32_t _offered /* [in] */,
13019 uint32_t *_needed /* [out] [ref] */,
13022 struct spoolss_GetPrinterDataEx r;
13025 /* In parameters */
13026 r.in.handle = _handle;
13027 r.in.key_name = _key_name;
13028 r.in.value_name = _value_name;
13029 r.in.offered = _offered;
13031 status = dcerpc_spoolss_GetPrinterDataEx_r(h, mem_ctx, &r);
13032 if (!NT_STATUS_IS_OK(status)) {
13036 /* Return variables */
13037 *_type = *r.out.type;
13038 memcpy(_data, r.out.data, (r.in.offered) * sizeof(*_data));
13039 *_needed = *r.out.needed;
13041 /* Return result */
13042 *result = r.out.result;
13044 return NT_STATUS_OK;
13047 struct dcerpc_spoolss_EnumPrinterDataEx_r_state {
13048 TALLOC_CTX *out_mem_ctx;
13051 static void dcerpc_spoolss_EnumPrinterDataEx_r_done(struct tevent_req *subreq);
13053 struct tevent_req *dcerpc_spoolss_EnumPrinterDataEx_r_send(TALLOC_CTX *mem_ctx,
13054 struct tevent_context *ev,
13055 struct dcerpc_binding_handle *h,
13056 struct spoolss_EnumPrinterDataEx *r)
13058 struct tevent_req *req;
13059 struct dcerpc_spoolss_EnumPrinterDataEx_r_state *state;
13060 struct tevent_req *subreq;
13062 req = tevent_req_create(mem_ctx, &state,
13063 struct dcerpc_spoolss_EnumPrinterDataEx_r_state);
13068 state->out_mem_ctx = talloc_new(state);
13069 if (tevent_req_nomem(state->out_mem_ctx, req)) {
13070 return tevent_req_post(req, ev);
13073 subreq = dcerpc_binding_handle_call_send(state, ev, h,
13074 NULL, &ndr_table_spoolss,
13075 NDR_SPOOLSS_ENUMPRINTERDATAEX, state->out_mem_ctx, r);
13076 if (tevent_req_nomem(subreq, req)) {
13077 return tevent_req_post(req, ev);
13079 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterDataEx_r_done, req);
13084 static void dcerpc_spoolss_EnumPrinterDataEx_r_done(struct tevent_req *subreq)
13086 struct tevent_req *req =
13087 tevent_req_callback_data(subreq,
13088 struct tevent_req);
13091 status = dcerpc_binding_handle_call_recv(subreq);
13092 if (!NT_STATUS_IS_OK(status)) {
13093 tevent_req_nterror(req, status);
13097 tevent_req_done(req);
13100 NTSTATUS dcerpc_spoolss_EnumPrinterDataEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
13102 struct dcerpc_spoolss_EnumPrinterDataEx_r_state *state =
13103 tevent_req_data(req,
13104 struct dcerpc_spoolss_EnumPrinterDataEx_r_state);
13107 if (tevent_req_is_nterror(req, &status)) {
13108 tevent_req_received(req);
13112 talloc_steal(mem_ctx, state->out_mem_ctx);
13114 tevent_req_received(req);
13115 return NT_STATUS_OK;
13118 NTSTATUS dcerpc_spoolss_EnumPrinterDataEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterDataEx *r)
13122 status = dcerpc_binding_handle_call(h,
13123 NULL, &ndr_table_spoolss,
13124 NDR_SPOOLSS_ENUMPRINTERDATAEX, mem_ctx, r);
13129 NTSTATUS dcerpc_spoolss_EnumPrinterDataEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterDataEx *r)
13133 status = dcerpc_spoolss_EnumPrinterDataEx_r(p->binding_handle, mem_ctx, r);
13135 if (NT_STATUS_IS_RPC(status)) {
13136 status = NT_STATUS_NET_WRITE_FAULT;
13142 struct dcerpc_spoolss_EnumPrinterDataEx_state {
13143 struct spoolss_EnumPrinterDataEx orig;
13144 struct spoolss_EnumPrinterDataEx tmp;
13145 TALLOC_CTX *out_mem_ctx;
13148 static void dcerpc_spoolss_EnumPrinterDataEx_done(struct tevent_req *subreq);
13150 struct tevent_req *dcerpc_spoolss_EnumPrinterDataEx_send(TALLOC_CTX *mem_ctx,
13151 struct tevent_context *ev,
13152 struct dcerpc_binding_handle *h,
13153 struct policy_handle *_handle /* [in] [ref] */,
13154 const char *_key_name /* [in] [charset(UTF16)] */,
13155 uint32_t _offered /* [in] */,
13156 uint32_t *_count /* [out] [ref] */,
13157 struct spoolss_PrinterEnumValues **_info /* [out] [ref,size_is(,*count)] */,
13158 uint32_t *_needed /* [out] [ref] */)
13160 struct tevent_req *req;
13161 struct dcerpc_spoolss_EnumPrinterDataEx_state *state;
13162 struct tevent_req *subreq;
13164 req = tevent_req_create(mem_ctx, &state,
13165 struct dcerpc_spoolss_EnumPrinterDataEx_state);
13169 state->out_mem_ctx = NULL;
13171 /* In parameters */
13172 state->orig.in.handle = _handle;
13173 state->orig.in.key_name = _key_name;
13174 state->orig.in.offered = _offered;
13176 /* Out parameters */
13177 state->orig.out.count = _count;
13178 state->orig.out.info = _info;
13179 state->orig.out.needed = _needed;
13182 ZERO_STRUCT(state->orig.out.result);
13184 state->out_mem_ctx = talloc_named_const(state, 0,
13185 "dcerpc_spoolss_EnumPrinterDataEx_out_memory");
13186 if (tevent_req_nomem(state->out_mem_ctx, req)) {
13187 return tevent_req_post(req, ev);
13190 /* make a temporary copy, that we pass to the dispatch function */
13191 state->tmp = state->orig;
13193 subreq = dcerpc_spoolss_EnumPrinterDataEx_r_send(state, ev, h, &state->tmp);
13194 if (tevent_req_nomem(subreq, req)) {
13195 return tevent_req_post(req, ev);
13197 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterDataEx_done, req);
13201 static void dcerpc_spoolss_EnumPrinterDataEx_done(struct tevent_req *subreq)
13203 struct tevent_req *req = tevent_req_callback_data(
13204 subreq, struct tevent_req);
13205 struct dcerpc_spoolss_EnumPrinterDataEx_state *state = tevent_req_data(
13206 req, struct dcerpc_spoolss_EnumPrinterDataEx_state);
13208 TALLOC_CTX *mem_ctx;
13210 if (state->out_mem_ctx) {
13211 mem_ctx = state->out_mem_ctx;
13216 status = dcerpc_spoolss_EnumPrinterDataEx_r_recv(subreq, mem_ctx);
13217 TALLOC_FREE(subreq);
13218 if (!NT_STATUS_IS_OK(status)) {
13219 tevent_req_nterror(req, status);
13223 /* Copy out parameters */
13224 *state->orig.out.count = *state->tmp.out.count;
13225 *state->orig.out.info = *state->tmp.out.info;
13226 *state->orig.out.needed = *state->tmp.out.needed;
13229 state->orig.out.result = state->tmp.out.result;
13231 /* Reset temporary structure */
13232 ZERO_STRUCT(state->tmp);
13234 tevent_req_done(req);
13237 NTSTATUS dcerpc_spoolss_EnumPrinterDataEx_recv(struct tevent_req *req,
13238 TALLOC_CTX *mem_ctx,
13241 struct dcerpc_spoolss_EnumPrinterDataEx_state *state = tevent_req_data(
13242 req, struct dcerpc_spoolss_EnumPrinterDataEx_state);
13245 if (tevent_req_is_nterror(req, &status)) {
13246 tevent_req_received(req);
13250 /* Steal possible out parameters to the callers context */
13251 talloc_steal(mem_ctx, state->out_mem_ctx);
13253 /* Return result */
13254 *result = state->orig.out.result;
13256 tevent_req_received(req);
13257 return NT_STATUS_OK;
13260 NTSTATUS dcerpc_spoolss_EnumPrinterDataEx(struct dcerpc_binding_handle *h,
13261 TALLOC_CTX *mem_ctx,
13262 struct policy_handle *_handle /* [in] [ref] */,
13263 const char *_key_name /* [in] [charset(UTF16)] */,
13264 uint32_t _offered /* [in] */,
13265 uint32_t *_count /* [out] [ref] */,
13266 struct spoolss_PrinterEnumValues **_info /* [out] [ref,size_is(,*count)] */,
13267 uint32_t *_needed /* [out] [ref] */,
13270 struct spoolss_EnumPrinterDataEx r;
13273 /* In parameters */
13274 r.in.handle = _handle;
13275 r.in.key_name = _key_name;
13276 r.in.offered = _offered;
13278 status = dcerpc_spoolss_EnumPrinterDataEx_r(h, mem_ctx, &r);
13279 if (!NT_STATUS_IS_OK(status)) {
13283 /* Return variables */
13284 *_count = *r.out.count;
13285 *_info = *r.out.info;
13286 *_needed = *r.out.needed;
13288 /* Return result */
13289 *result = r.out.result;
13291 return NT_STATUS_OK;
13294 struct dcerpc_spoolss_EnumPrinterKey_r_state {
13295 TALLOC_CTX *out_mem_ctx;
13298 static void dcerpc_spoolss_EnumPrinterKey_r_done(struct tevent_req *subreq);
13300 struct tevent_req *dcerpc_spoolss_EnumPrinterKey_r_send(TALLOC_CTX *mem_ctx,
13301 struct tevent_context *ev,
13302 struct dcerpc_binding_handle *h,
13303 struct spoolss_EnumPrinterKey *r)
13305 struct tevent_req *req;
13306 struct dcerpc_spoolss_EnumPrinterKey_r_state *state;
13307 struct tevent_req *subreq;
13309 req = tevent_req_create(mem_ctx, &state,
13310 struct dcerpc_spoolss_EnumPrinterKey_r_state);
13315 state->out_mem_ctx = talloc_new(state);
13316 if (tevent_req_nomem(state->out_mem_ctx, req)) {
13317 return tevent_req_post(req, ev);
13320 subreq = dcerpc_binding_handle_call_send(state, ev, h,
13321 NULL, &ndr_table_spoolss,
13322 NDR_SPOOLSS_ENUMPRINTERKEY, state->out_mem_ctx, r);
13323 if (tevent_req_nomem(subreq, req)) {
13324 return tevent_req_post(req, ev);
13326 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterKey_r_done, req);
13331 static void dcerpc_spoolss_EnumPrinterKey_r_done(struct tevent_req *subreq)
13333 struct tevent_req *req =
13334 tevent_req_callback_data(subreq,
13335 struct tevent_req);
13338 status = dcerpc_binding_handle_call_recv(subreq);
13339 if (!NT_STATUS_IS_OK(status)) {
13340 tevent_req_nterror(req, status);
13344 tevent_req_done(req);
13347 NTSTATUS dcerpc_spoolss_EnumPrinterKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
13349 struct dcerpc_spoolss_EnumPrinterKey_r_state *state =
13350 tevent_req_data(req,
13351 struct dcerpc_spoolss_EnumPrinterKey_r_state);
13354 if (tevent_req_is_nterror(req, &status)) {
13355 tevent_req_received(req);
13359 talloc_steal(mem_ctx, state->out_mem_ctx);
13361 tevent_req_received(req);
13362 return NT_STATUS_OK;
13365 NTSTATUS dcerpc_spoolss_EnumPrinterKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterKey *r)
13369 status = dcerpc_binding_handle_call(h,
13370 NULL, &ndr_table_spoolss,
13371 NDR_SPOOLSS_ENUMPRINTERKEY, mem_ctx, r);
13376 NTSTATUS dcerpc_spoolss_EnumPrinterKey_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_EnumPrinterKey *r)
13380 status = dcerpc_spoolss_EnumPrinterKey_r(p->binding_handle, mem_ctx, r);
13382 if (NT_STATUS_IS_RPC(status)) {
13383 status = NT_STATUS_NET_WRITE_FAULT;
13389 struct dcerpc_spoolss_EnumPrinterKey_state {
13390 struct spoolss_EnumPrinterKey orig;
13391 struct spoolss_EnumPrinterKey tmp;
13392 TALLOC_CTX *out_mem_ctx;
13395 static void dcerpc_spoolss_EnumPrinterKey_done(struct tevent_req *subreq);
13397 struct tevent_req *dcerpc_spoolss_EnumPrinterKey_send(TALLOC_CTX *mem_ctx,
13398 struct tevent_context *ev,
13399 struct dcerpc_binding_handle *h,
13400 struct policy_handle *_handle /* [in] [ref] */,
13401 const char *_key_name /* [in] [charset(UTF16)] */,
13402 uint32_t *__ndr_size /* [out] [ref] */,
13403 union spoolss_KeyNames *_key_buffer /* [out] [subcontext_size(*_ndr_size*2),ref,subcontext(0),switch_is(*_ndr_size)] */,
13404 uint32_t _offered /* [in] */,
13405 uint32_t *_needed /* [out] [ref] */)
13407 struct tevent_req *req;
13408 struct dcerpc_spoolss_EnumPrinterKey_state *state;
13409 struct tevent_req *subreq;
13411 req = tevent_req_create(mem_ctx, &state,
13412 struct dcerpc_spoolss_EnumPrinterKey_state);
13416 state->out_mem_ctx = NULL;
13418 /* In parameters */
13419 state->orig.in.handle = _handle;
13420 state->orig.in.key_name = _key_name;
13421 state->orig.in.offered = _offered;
13423 /* Out parameters */
13424 state->orig.out._ndr_size = __ndr_size;
13425 state->orig.out.key_buffer = _key_buffer;
13426 state->orig.out.needed = _needed;
13429 ZERO_STRUCT(state->orig.out.result);
13431 state->out_mem_ctx = talloc_named_const(state, 0,
13432 "dcerpc_spoolss_EnumPrinterKey_out_memory");
13433 if (tevent_req_nomem(state->out_mem_ctx, req)) {
13434 return tevent_req_post(req, ev);
13437 /* make a temporary copy, that we pass to the dispatch function */
13438 state->tmp = state->orig;
13440 subreq = dcerpc_spoolss_EnumPrinterKey_r_send(state, ev, h, &state->tmp);
13441 if (tevent_req_nomem(subreq, req)) {
13442 return tevent_req_post(req, ev);
13444 tevent_req_set_callback(subreq, dcerpc_spoolss_EnumPrinterKey_done, req);
13448 static void dcerpc_spoolss_EnumPrinterKey_done(struct tevent_req *subreq)
13450 struct tevent_req *req = tevent_req_callback_data(
13451 subreq, struct tevent_req);
13452 struct dcerpc_spoolss_EnumPrinterKey_state *state = tevent_req_data(
13453 req, struct dcerpc_spoolss_EnumPrinterKey_state);
13455 TALLOC_CTX *mem_ctx;
13457 if (state->out_mem_ctx) {
13458 mem_ctx = state->out_mem_ctx;
13463 status = dcerpc_spoolss_EnumPrinterKey_r_recv(subreq, mem_ctx);
13464 TALLOC_FREE(subreq);
13465 if (!NT_STATUS_IS_OK(status)) {
13466 tevent_req_nterror(req, status);
13470 /* Copy out parameters */
13471 *state->orig.out._ndr_size = *state->tmp.out._ndr_size;
13472 *state->orig.out.key_buffer = *state->tmp.out.key_buffer;
13473 *state->orig.out.needed = *state->tmp.out.needed;
13476 state->orig.out.result = state->tmp.out.result;
13478 /* Reset temporary structure */
13479 ZERO_STRUCT(state->tmp);
13481 tevent_req_done(req);
13484 NTSTATUS dcerpc_spoolss_EnumPrinterKey_recv(struct tevent_req *req,
13485 TALLOC_CTX *mem_ctx,
13488 struct dcerpc_spoolss_EnumPrinterKey_state *state = tevent_req_data(
13489 req, struct dcerpc_spoolss_EnumPrinterKey_state);
13492 if (tevent_req_is_nterror(req, &status)) {
13493 tevent_req_received(req);
13497 /* Steal possible out parameters to the callers context */
13498 talloc_steal(mem_ctx, state->out_mem_ctx);
13500 /* Return result */
13501 *result = state->orig.out.result;
13503 tevent_req_received(req);
13504 return NT_STATUS_OK;
13507 NTSTATUS dcerpc_spoolss_EnumPrinterKey(struct dcerpc_binding_handle *h,
13508 TALLOC_CTX *mem_ctx,
13509 struct policy_handle *_handle /* [in] [ref] */,
13510 const char *_key_name /* [in] [charset(UTF16)] */,
13511 uint32_t *__ndr_size /* [out] [ref] */,
13512 union spoolss_KeyNames *_key_buffer /* [out] [subcontext_size(*_ndr_size*2),ref,subcontext(0),switch_is(*_ndr_size)] */,
13513 uint32_t _offered /* [in] */,
13514 uint32_t *_needed /* [out] [ref] */,
13517 struct spoolss_EnumPrinterKey r;
13520 /* In parameters */
13521 r.in.handle = _handle;
13522 r.in.key_name = _key_name;
13523 r.in.offered = _offered;
13525 status = dcerpc_spoolss_EnumPrinterKey_r(h, mem_ctx, &r);
13526 if (!NT_STATUS_IS_OK(status)) {
13530 /* Return variables */
13531 *__ndr_size = *r.out._ndr_size;
13532 *_key_buffer = *r.out.key_buffer;
13533 *_needed = *r.out.needed;
13535 /* Return result */
13536 *result = r.out.result;
13538 return NT_STATUS_OK;
13541 struct dcerpc_spoolss_DeletePrinterDataEx_r_state {
13542 TALLOC_CTX *out_mem_ctx;
13545 static void dcerpc_spoolss_DeletePrinterDataEx_r_done(struct tevent_req *subreq);
13547 struct tevent_req *dcerpc_spoolss_DeletePrinterDataEx_r_send(TALLOC_CTX *mem_ctx,
13548 struct tevent_context *ev,
13549 struct dcerpc_binding_handle *h,
13550 struct spoolss_DeletePrinterDataEx *r)
13552 struct tevent_req *req;
13553 struct dcerpc_spoolss_DeletePrinterDataEx_r_state *state;
13554 struct tevent_req *subreq;
13556 req = tevent_req_create(mem_ctx, &state,
13557 struct dcerpc_spoolss_DeletePrinterDataEx_r_state);
13562 state->out_mem_ctx = NULL;
13563 subreq = dcerpc_binding_handle_call_send(state, ev, h,
13564 NULL, &ndr_table_spoolss,
13565 NDR_SPOOLSS_DELETEPRINTERDATAEX, state, r);
13566 if (tevent_req_nomem(subreq, req)) {
13567 return tevent_req_post(req, ev);
13569 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterDataEx_r_done, req);
13574 static void dcerpc_spoolss_DeletePrinterDataEx_r_done(struct tevent_req *subreq)
13576 struct tevent_req *req =
13577 tevent_req_callback_data(subreq,
13578 struct tevent_req);
13581 status = dcerpc_binding_handle_call_recv(subreq);
13582 if (!NT_STATUS_IS_OK(status)) {
13583 tevent_req_nterror(req, status);
13587 tevent_req_done(req);
13590 NTSTATUS dcerpc_spoolss_DeletePrinterDataEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
13592 struct dcerpc_spoolss_DeletePrinterDataEx_r_state *state =
13593 tevent_req_data(req,
13594 struct dcerpc_spoolss_DeletePrinterDataEx_r_state);
13597 if (tevent_req_is_nterror(req, &status)) {
13598 tevent_req_received(req);
13602 talloc_steal(mem_ctx, state->out_mem_ctx);
13604 tevent_req_received(req);
13605 return NT_STATUS_OK;
13608 NTSTATUS dcerpc_spoolss_DeletePrinterDataEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterDataEx *r)
13612 status = dcerpc_binding_handle_call(h,
13613 NULL, &ndr_table_spoolss,
13614 NDR_SPOOLSS_DELETEPRINTERDATAEX, mem_ctx, r);
13619 NTSTATUS dcerpc_spoolss_DeletePrinterDataEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterDataEx *r)
13623 status = dcerpc_spoolss_DeletePrinterDataEx_r(p->binding_handle, mem_ctx, r);
13625 if (NT_STATUS_IS_RPC(status)) {
13626 status = NT_STATUS_NET_WRITE_FAULT;
13632 struct dcerpc_spoolss_DeletePrinterDataEx_state {
13633 struct spoolss_DeletePrinterDataEx orig;
13634 struct spoolss_DeletePrinterDataEx tmp;
13635 TALLOC_CTX *out_mem_ctx;
13638 static void dcerpc_spoolss_DeletePrinterDataEx_done(struct tevent_req *subreq);
13640 struct tevent_req *dcerpc_spoolss_DeletePrinterDataEx_send(TALLOC_CTX *mem_ctx,
13641 struct tevent_context *ev,
13642 struct dcerpc_binding_handle *h,
13643 struct policy_handle *_handle /* [in] [ref] */,
13644 const char *_key_name /* [in] [charset(UTF16)] */,
13645 const char *_value_name /* [in] [charset(UTF16)] */)
13647 struct tevent_req *req;
13648 struct dcerpc_spoolss_DeletePrinterDataEx_state *state;
13649 struct tevent_req *subreq;
13651 req = tevent_req_create(mem_ctx, &state,
13652 struct dcerpc_spoolss_DeletePrinterDataEx_state);
13656 state->out_mem_ctx = NULL;
13658 /* In parameters */
13659 state->orig.in.handle = _handle;
13660 state->orig.in.key_name = _key_name;
13661 state->orig.in.value_name = _value_name;
13663 /* Out parameters */
13666 ZERO_STRUCT(state->orig.out.result);
13668 /* make a temporary copy, that we pass to the dispatch function */
13669 state->tmp = state->orig;
13671 subreq = dcerpc_spoolss_DeletePrinterDataEx_r_send(state, ev, h, &state->tmp);
13672 if (tevent_req_nomem(subreq, req)) {
13673 return tevent_req_post(req, ev);
13675 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterDataEx_done, req);
13679 static void dcerpc_spoolss_DeletePrinterDataEx_done(struct tevent_req *subreq)
13681 struct tevent_req *req = tevent_req_callback_data(
13682 subreq, struct tevent_req);
13683 struct dcerpc_spoolss_DeletePrinterDataEx_state *state = tevent_req_data(
13684 req, struct dcerpc_spoolss_DeletePrinterDataEx_state);
13686 TALLOC_CTX *mem_ctx;
13688 if (state->out_mem_ctx) {
13689 mem_ctx = state->out_mem_ctx;
13694 status = dcerpc_spoolss_DeletePrinterDataEx_r_recv(subreq, mem_ctx);
13695 TALLOC_FREE(subreq);
13696 if (!NT_STATUS_IS_OK(status)) {
13697 tevent_req_nterror(req, status);
13701 /* Copy out parameters */
13704 state->orig.out.result = state->tmp.out.result;
13706 /* Reset temporary structure */
13707 ZERO_STRUCT(state->tmp);
13709 tevent_req_done(req);
13712 NTSTATUS dcerpc_spoolss_DeletePrinterDataEx_recv(struct tevent_req *req,
13713 TALLOC_CTX *mem_ctx,
13716 struct dcerpc_spoolss_DeletePrinterDataEx_state *state = tevent_req_data(
13717 req, struct dcerpc_spoolss_DeletePrinterDataEx_state);
13720 if (tevent_req_is_nterror(req, &status)) {
13721 tevent_req_received(req);
13725 /* Steal possible out parameters to the callers context */
13726 talloc_steal(mem_ctx, state->out_mem_ctx);
13728 /* Return result */
13729 *result = state->orig.out.result;
13731 tevent_req_received(req);
13732 return NT_STATUS_OK;
13735 NTSTATUS dcerpc_spoolss_DeletePrinterDataEx(struct dcerpc_binding_handle *h,
13736 TALLOC_CTX *mem_ctx,
13737 struct policy_handle *_handle /* [in] [ref] */,
13738 const char *_key_name /* [in] [charset(UTF16)] */,
13739 const char *_value_name /* [in] [charset(UTF16)] */,
13742 struct spoolss_DeletePrinterDataEx r;
13745 /* In parameters */
13746 r.in.handle = _handle;
13747 r.in.key_name = _key_name;
13748 r.in.value_name = _value_name;
13750 status = dcerpc_spoolss_DeletePrinterDataEx_r(h, mem_ctx, &r);
13751 if (!NT_STATUS_IS_OK(status)) {
13755 /* Return variables */
13757 /* Return result */
13758 *result = r.out.result;
13760 return NT_STATUS_OK;
13763 struct dcerpc_spoolss_DeletePrinterKey_r_state {
13764 TALLOC_CTX *out_mem_ctx;
13767 static void dcerpc_spoolss_DeletePrinterKey_r_done(struct tevent_req *subreq);
13769 struct tevent_req *dcerpc_spoolss_DeletePrinterKey_r_send(TALLOC_CTX *mem_ctx,
13770 struct tevent_context *ev,
13771 struct dcerpc_binding_handle *h,
13772 struct spoolss_DeletePrinterKey *r)
13774 struct tevent_req *req;
13775 struct dcerpc_spoolss_DeletePrinterKey_r_state *state;
13776 struct tevent_req *subreq;
13778 req = tevent_req_create(mem_ctx, &state,
13779 struct dcerpc_spoolss_DeletePrinterKey_r_state);
13784 state->out_mem_ctx = NULL;
13785 subreq = dcerpc_binding_handle_call_send(state, ev, h,
13786 NULL, &ndr_table_spoolss,
13787 NDR_SPOOLSS_DELETEPRINTERKEY, state, r);
13788 if (tevent_req_nomem(subreq, req)) {
13789 return tevent_req_post(req, ev);
13791 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterKey_r_done, req);
13796 static void dcerpc_spoolss_DeletePrinterKey_r_done(struct tevent_req *subreq)
13798 struct tevent_req *req =
13799 tevent_req_callback_data(subreq,
13800 struct tevent_req);
13803 status = dcerpc_binding_handle_call_recv(subreq);
13804 if (!NT_STATUS_IS_OK(status)) {
13805 tevent_req_nterror(req, status);
13809 tevent_req_done(req);
13812 NTSTATUS dcerpc_spoolss_DeletePrinterKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
13814 struct dcerpc_spoolss_DeletePrinterKey_r_state *state =
13815 tevent_req_data(req,
13816 struct dcerpc_spoolss_DeletePrinterKey_r_state);
13819 if (tevent_req_is_nterror(req, &status)) {
13820 tevent_req_received(req);
13824 talloc_steal(mem_ctx, state->out_mem_ctx);
13826 tevent_req_received(req);
13827 return NT_STATUS_OK;
13830 NTSTATUS dcerpc_spoolss_DeletePrinterKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterKey *r)
13834 status = dcerpc_binding_handle_call(h,
13835 NULL, &ndr_table_spoolss,
13836 NDR_SPOOLSS_DELETEPRINTERKEY, mem_ctx, r);
13841 NTSTATUS dcerpc_spoolss_DeletePrinterKey_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterKey *r)
13845 status = dcerpc_spoolss_DeletePrinterKey_r(p->binding_handle, mem_ctx, r);
13847 if (NT_STATUS_IS_RPC(status)) {
13848 status = NT_STATUS_NET_WRITE_FAULT;
13854 struct dcerpc_spoolss_DeletePrinterKey_state {
13855 struct spoolss_DeletePrinterKey orig;
13856 struct spoolss_DeletePrinterKey tmp;
13857 TALLOC_CTX *out_mem_ctx;
13860 static void dcerpc_spoolss_DeletePrinterKey_done(struct tevent_req *subreq);
13862 struct tevent_req *dcerpc_spoolss_DeletePrinterKey_send(TALLOC_CTX *mem_ctx,
13863 struct tevent_context *ev,
13864 struct dcerpc_binding_handle *h,
13865 struct policy_handle *_handle /* [in] [ref] */,
13866 const char *_key_name /* [in] [charset(UTF16)] */)
13868 struct tevent_req *req;
13869 struct dcerpc_spoolss_DeletePrinterKey_state *state;
13870 struct tevent_req *subreq;
13872 req = tevent_req_create(mem_ctx, &state,
13873 struct dcerpc_spoolss_DeletePrinterKey_state);
13877 state->out_mem_ctx = NULL;
13879 /* In parameters */
13880 state->orig.in.handle = _handle;
13881 state->orig.in.key_name = _key_name;
13883 /* Out parameters */
13886 ZERO_STRUCT(state->orig.out.result);
13888 /* make a temporary copy, that we pass to the dispatch function */
13889 state->tmp = state->orig;
13891 subreq = dcerpc_spoolss_DeletePrinterKey_r_send(state, ev, h, &state->tmp);
13892 if (tevent_req_nomem(subreq, req)) {
13893 return tevent_req_post(req, ev);
13895 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterKey_done, req);
13899 static void dcerpc_spoolss_DeletePrinterKey_done(struct tevent_req *subreq)
13901 struct tevent_req *req = tevent_req_callback_data(
13902 subreq, struct tevent_req);
13903 struct dcerpc_spoolss_DeletePrinterKey_state *state = tevent_req_data(
13904 req, struct dcerpc_spoolss_DeletePrinterKey_state);
13906 TALLOC_CTX *mem_ctx;
13908 if (state->out_mem_ctx) {
13909 mem_ctx = state->out_mem_ctx;
13914 status = dcerpc_spoolss_DeletePrinterKey_r_recv(subreq, mem_ctx);
13915 TALLOC_FREE(subreq);
13916 if (!NT_STATUS_IS_OK(status)) {
13917 tevent_req_nterror(req, status);
13921 /* Copy out parameters */
13924 state->orig.out.result = state->tmp.out.result;
13926 /* Reset temporary structure */
13927 ZERO_STRUCT(state->tmp);
13929 tevent_req_done(req);
13932 NTSTATUS dcerpc_spoolss_DeletePrinterKey_recv(struct tevent_req *req,
13933 TALLOC_CTX *mem_ctx,
13936 struct dcerpc_spoolss_DeletePrinterKey_state *state = tevent_req_data(
13937 req, struct dcerpc_spoolss_DeletePrinterKey_state);
13940 if (tevent_req_is_nterror(req, &status)) {
13941 tevent_req_received(req);
13945 /* Steal possible out parameters to the callers context */
13946 talloc_steal(mem_ctx, state->out_mem_ctx);
13948 /* Return result */
13949 *result = state->orig.out.result;
13951 tevent_req_received(req);
13952 return NT_STATUS_OK;
13955 NTSTATUS dcerpc_spoolss_DeletePrinterKey(struct dcerpc_binding_handle *h,
13956 TALLOC_CTX *mem_ctx,
13957 struct policy_handle *_handle /* [in] [ref] */,
13958 const char *_key_name /* [in] [charset(UTF16)] */,
13961 struct spoolss_DeletePrinterKey r;
13964 /* In parameters */
13965 r.in.handle = _handle;
13966 r.in.key_name = _key_name;
13968 status = dcerpc_spoolss_DeletePrinterKey_r(h, mem_ctx, &r);
13969 if (!NT_STATUS_IS_OK(status)) {
13973 /* Return variables */
13975 /* Return result */
13976 *result = r.out.result;
13978 return NT_STATUS_OK;
13981 struct dcerpc_spoolss_DeletePrinterDriverEx_r_state {
13982 TALLOC_CTX *out_mem_ctx;
13985 static void dcerpc_spoolss_DeletePrinterDriverEx_r_done(struct tevent_req *subreq);
13987 struct tevent_req *dcerpc_spoolss_DeletePrinterDriverEx_r_send(TALLOC_CTX *mem_ctx,
13988 struct tevent_context *ev,
13989 struct dcerpc_binding_handle *h,
13990 struct spoolss_DeletePrinterDriverEx *r)
13992 struct tevent_req *req;
13993 struct dcerpc_spoolss_DeletePrinterDriverEx_r_state *state;
13994 struct tevent_req *subreq;
13996 req = tevent_req_create(mem_ctx, &state,
13997 struct dcerpc_spoolss_DeletePrinterDriverEx_r_state);
14002 state->out_mem_ctx = NULL;
14003 subreq = dcerpc_binding_handle_call_send(state, ev, h,
14004 NULL, &ndr_table_spoolss,
14005 NDR_SPOOLSS_DELETEPRINTERDRIVEREX, state, r);
14006 if (tevent_req_nomem(subreq, req)) {
14007 return tevent_req_post(req, ev);
14009 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterDriverEx_r_done, req);
14014 static void dcerpc_spoolss_DeletePrinterDriverEx_r_done(struct tevent_req *subreq)
14016 struct tevent_req *req =
14017 tevent_req_callback_data(subreq,
14018 struct tevent_req);
14021 status = dcerpc_binding_handle_call_recv(subreq);
14022 if (!NT_STATUS_IS_OK(status)) {
14023 tevent_req_nterror(req, status);
14027 tevent_req_done(req);
14030 NTSTATUS dcerpc_spoolss_DeletePrinterDriverEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
14032 struct dcerpc_spoolss_DeletePrinterDriverEx_r_state *state =
14033 tevent_req_data(req,
14034 struct dcerpc_spoolss_DeletePrinterDriverEx_r_state);
14037 if (tevent_req_is_nterror(req, &status)) {
14038 tevent_req_received(req);
14042 talloc_steal(mem_ctx, state->out_mem_ctx);
14044 tevent_req_received(req);
14045 return NT_STATUS_OK;
14048 NTSTATUS dcerpc_spoolss_DeletePrinterDriverEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterDriverEx *r)
14052 status = dcerpc_binding_handle_call(h,
14053 NULL, &ndr_table_spoolss,
14054 NDR_SPOOLSS_DELETEPRINTERDRIVEREX, mem_ctx, r);
14059 NTSTATUS dcerpc_spoolss_DeletePrinterDriverEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_DeletePrinterDriverEx *r)
14063 status = dcerpc_spoolss_DeletePrinterDriverEx_r(p->binding_handle, mem_ctx, r);
14065 if (NT_STATUS_IS_RPC(status)) {
14066 status = NT_STATUS_NET_WRITE_FAULT;
14072 struct dcerpc_spoolss_DeletePrinterDriverEx_state {
14073 struct spoolss_DeletePrinterDriverEx orig;
14074 struct spoolss_DeletePrinterDriverEx tmp;
14075 TALLOC_CTX *out_mem_ctx;
14078 static void dcerpc_spoolss_DeletePrinterDriverEx_done(struct tevent_req *subreq);
14080 struct tevent_req *dcerpc_spoolss_DeletePrinterDriverEx_send(TALLOC_CTX *mem_ctx,
14081 struct tevent_context *ev,
14082 struct dcerpc_binding_handle *h,
14083 const char *_server /* [in] [unique,charset(UTF16)] */,
14084 const char *_architecture /* [in] [charset(UTF16)] */,
14085 const char *_driver /* [in] [charset(UTF16)] */,
14086 uint32_t _delete_flags /* [in] */,
14087 uint32_t _version /* [in] */)
14089 struct tevent_req *req;
14090 struct dcerpc_spoolss_DeletePrinterDriverEx_state *state;
14091 struct tevent_req *subreq;
14093 req = tevent_req_create(mem_ctx, &state,
14094 struct dcerpc_spoolss_DeletePrinterDriverEx_state);
14098 state->out_mem_ctx = NULL;
14100 /* In parameters */
14101 state->orig.in.server = _server;
14102 state->orig.in.architecture = _architecture;
14103 state->orig.in.driver = _driver;
14104 state->orig.in.delete_flags = _delete_flags;
14105 state->orig.in.version = _version;
14107 /* Out parameters */
14110 ZERO_STRUCT(state->orig.out.result);
14112 /* make a temporary copy, that we pass to the dispatch function */
14113 state->tmp = state->orig;
14115 subreq = dcerpc_spoolss_DeletePrinterDriverEx_r_send(state, ev, h, &state->tmp);
14116 if (tevent_req_nomem(subreq, req)) {
14117 return tevent_req_post(req, ev);
14119 tevent_req_set_callback(subreq, dcerpc_spoolss_DeletePrinterDriverEx_done, req);
14123 static void dcerpc_spoolss_DeletePrinterDriverEx_done(struct tevent_req *subreq)
14125 struct tevent_req *req = tevent_req_callback_data(
14126 subreq, struct tevent_req);
14127 struct dcerpc_spoolss_DeletePrinterDriverEx_state *state = tevent_req_data(
14128 req, struct dcerpc_spoolss_DeletePrinterDriverEx_state);
14130 TALLOC_CTX *mem_ctx;
14132 if (state->out_mem_ctx) {
14133 mem_ctx = state->out_mem_ctx;
14138 status = dcerpc_spoolss_DeletePrinterDriverEx_r_recv(subreq, mem_ctx);
14139 TALLOC_FREE(subreq);
14140 if (!NT_STATUS_IS_OK(status)) {
14141 tevent_req_nterror(req, status);
14145 /* Copy out parameters */
14148 state->orig.out.result = state->tmp.out.result;
14150 /* Reset temporary structure */
14151 ZERO_STRUCT(state->tmp);
14153 tevent_req_done(req);
14156 NTSTATUS dcerpc_spoolss_DeletePrinterDriverEx_recv(struct tevent_req *req,
14157 TALLOC_CTX *mem_ctx,
14160 struct dcerpc_spoolss_DeletePrinterDriverEx_state *state = tevent_req_data(
14161 req, struct dcerpc_spoolss_DeletePrinterDriverEx_state);
14164 if (tevent_req_is_nterror(req, &status)) {
14165 tevent_req_received(req);
14169 /* Steal possible out parameters to the callers context */
14170 talloc_steal(mem_ctx, state->out_mem_ctx);
14172 /* Return result */
14173 *result = state->orig.out.result;
14175 tevent_req_received(req);
14176 return NT_STATUS_OK;
14179 NTSTATUS dcerpc_spoolss_DeletePrinterDriverEx(struct dcerpc_binding_handle *h,
14180 TALLOC_CTX *mem_ctx,
14181 const char *_server /* [in] [unique,charset(UTF16)] */,
14182 const char *_architecture /* [in] [charset(UTF16)] */,
14183 const char *_driver /* [in] [charset(UTF16)] */,
14184 uint32_t _delete_flags /* [in] */,
14185 uint32_t _version /* [in] */,
14188 struct spoolss_DeletePrinterDriverEx r;
14191 /* In parameters */
14192 r.in.server = _server;
14193 r.in.architecture = _architecture;
14194 r.in.driver = _driver;
14195 r.in.delete_flags = _delete_flags;
14196 r.in.version = _version;
14198 status = dcerpc_spoolss_DeletePrinterDriverEx_r(h, mem_ctx, &r);
14199 if (!NT_STATUS_IS_OK(status)) {
14203 /* Return variables */
14205 /* Return result */
14206 *result = r.out.result;
14208 return NT_STATUS_OK;
14211 struct dcerpc_spoolss_XcvData_r_state {
14212 TALLOC_CTX *out_mem_ctx;
14215 static void dcerpc_spoolss_XcvData_r_done(struct tevent_req *subreq);
14217 struct tevent_req *dcerpc_spoolss_XcvData_r_send(TALLOC_CTX *mem_ctx,
14218 struct tevent_context *ev,
14219 struct dcerpc_binding_handle *h,
14220 struct spoolss_XcvData *r)
14222 struct tevent_req *req;
14223 struct dcerpc_spoolss_XcvData_r_state *state;
14224 struct tevent_req *subreq;
14226 req = tevent_req_create(mem_ctx, &state,
14227 struct dcerpc_spoolss_XcvData_r_state);
14232 state->out_mem_ctx = talloc_new(state);
14233 if (tevent_req_nomem(state->out_mem_ctx, req)) {
14234 return tevent_req_post(req, ev);
14237 subreq = dcerpc_binding_handle_call_send(state, ev, h,
14238 NULL, &ndr_table_spoolss,
14239 NDR_SPOOLSS_XCVDATA, state->out_mem_ctx, r);
14240 if (tevent_req_nomem(subreq, req)) {
14241 return tevent_req_post(req, ev);
14243 tevent_req_set_callback(subreq, dcerpc_spoolss_XcvData_r_done, req);
14248 static void dcerpc_spoolss_XcvData_r_done(struct tevent_req *subreq)
14250 struct tevent_req *req =
14251 tevent_req_callback_data(subreq,
14252 struct tevent_req);
14255 status = dcerpc_binding_handle_call_recv(subreq);
14256 if (!NT_STATUS_IS_OK(status)) {
14257 tevent_req_nterror(req, status);
14261 tevent_req_done(req);
14264 NTSTATUS dcerpc_spoolss_XcvData_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
14266 struct dcerpc_spoolss_XcvData_r_state *state =
14267 tevent_req_data(req,
14268 struct dcerpc_spoolss_XcvData_r_state);
14271 if (tevent_req_is_nterror(req, &status)) {
14272 tevent_req_received(req);
14276 talloc_steal(mem_ctx, state->out_mem_ctx);
14278 tevent_req_received(req);
14279 return NT_STATUS_OK;
14282 NTSTATUS dcerpc_spoolss_XcvData_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_XcvData *r)
14286 status = dcerpc_binding_handle_call(h,
14287 NULL, &ndr_table_spoolss,
14288 NDR_SPOOLSS_XCVDATA, mem_ctx, r);
14293 NTSTATUS dcerpc_spoolss_XcvData_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_XcvData *r)
14297 status = dcerpc_spoolss_XcvData_r(p->binding_handle, mem_ctx, r);
14299 if (NT_STATUS_IS_RPC(status)) {
14300 status = NT_STATUS_NET_WRITE_FAULT;
14306 struct dcerpc_spoolss_XcvData_state {
14307 struct spoolss_XcvData orig;
14308 struct spoolss_XcvData tmp;
14309 TALLOC_CTX *out_mem_ctx;
14312 static void dcerpc_spoolss_XcvData_done(struct tevent_req *subreq);
14314 struct tevent_req *dcerpc_spoolss_XcvData_send(TALLOC_CTX *mem_ctx,
14315 struct tevent_context *ev,
14316 struct dcerpc_binding_handle *h,
14317 struct policy_handle *_handle /* [in] [ref] */,
14318 const char *_function_name /* [in] [charset(UTF16)] */,
14319 DATA_BLOB _in_data /* [in] */,
14320 uint32_t __in_data_length /* [in] [value(r->in.in_data.length)] */,
14321 uint8_t *_out_data /* [out] [ref,size_is(out_data_size)] */,
14322 uint32_t _out_data_size /* [in] */,
14323 uint32_t *_needed /* [out] [ref] */,
14324 uint32_t *_status_code /* [in,out] [ref] */)
14326 struct tevent_req *req;
14327 struct dcerpc_spoolss_XcvData_state *state;
14328 struct tevent_req *subreq;
14330 req = tevent_req_create(mem_ctx, &state,
14331 struct dcerpc_spoolss_XcvData_state);
14335 state->out_mem_ctx = NULL;
14337 /* In parameters */
14338 state->orig.in.handle = _handle;
14339 state->orig.in.function_name = _function_name;
14340 state->orig.in.in_data = _in_data;
14341 state->orig.in._in_data_length = __in_data_length;
14342 state->orig.in.out_data_size = _out_data_size;
14343 state->orig.in.status_code = _status_code;
14345 /* Out parameters */
14346 state->orig.out.out_data = _out_data;
14347 state->orig.out.needed = _needed;
14348 state->orig.out.status_code = _status_code;
14351 ZERO_STRUCT(state->orig.out.result);
14353 state->out_mem_ctx = talloc_named_const(state, 0,
14354 "dcerpc_spoolss_XcvData_out_memory");
14355 if (tevent_req_nomem(state->out_mem_ctx, req)) {
14356 return tevent_req_post(req, ev);
14359 /* make a temporary copy, that we pass to the dispatch function */
14360 state->tmp = state->orig;
14362 subreq = dcerpc_spoolss_XcvData_r_send(state, ev, h, &state->tmp);
14363 if (tevent_req_nomem(subreq, req)) {
14364 return tevent_req_post(req, ev);
14366 tevent_req_set_callback(subreq, dcerpc_spoolss_XcvData_done, req);
14370 static void dcerpc_spoolss_XcvData_done(struct tevent_req *subreq)
14372 struct tevent_req *req = tevent_req_callback_data(
14373 subreq, struct tevent_req);
14374 struct dcerpc_spoolss_XcvData_state *state = tevent_req_data(
14375 req, struct dcerpc_spoolss_XcvData_state);
14377 TALLOC_CTX *mem_ctx;
14379 if (state->out_mem_ctx) {
14380 mem_ctx = state->out_mem_ctx;
14385 status = dcerpc_spoolss_XcvData_r_recv(subreq, mem_ctx);
14386 TALLOC_FREE(subreq);
14387 if (!NT_STATUS_IS_OK(status)) {
14388 tevent_req_nterror(req, status);
14392 /* Copy out parameters */
14393 memcpy(state->orig.out.out_data, state->tmp.out.out_data, (state->tmp.in.out_data_size) * sizeof(*state->orig.out.out_data));
14394 *state->orig.out.needed = *state->tmp.out.needed;
14395 *state->orig.out.status_code = *state->tmp.out.status_code;
14398 state->orig.out.result = state->tmp.out.result;
14400 /* Reset temporary structure */
14401 ZERO_STRUCT(state->tmp);
14403 tevent_req_done(req);
14406 NTSTATUS dcerpc_spoolss_XcvData_recv(struct tevent_req *req,
14407 TALLOC_CTX *mem_ctx,
14410 struct dcerpc_spoolss_XcvData_state *state = tevent_req_data(
14411 req, struct dcerpc_spoolss_XcvData_state);
14414 if (tevent_req_is_nterror(req, &status)) {
14415 tevent_req_received(req);
14419 /* Steal possible out parameters to the callers context */
14420 talloc_steal(mem_ctx, state->out_mem_ctx);
14422 /* Return result */
14423 *result = state->orig.out.result;
14425 tevent_req_received(req);
14426 return NT_STATUS_OK;
14429 NTSTATUS dcerpc_spoolss_XcvData(struct dcerpc_binding_handle *h,
14430 TALLOC_CTX *mem_ctx,
14431 struct policy_handle *_handle /* [in] [ref] */,
14432 const char *_function_name /* [in] [charset(UTF16)] */,
14433 DATA_BLOB _in_data /* [in] */,
14434 uint32_t __in_data_length /* [in] [value(r->in.in_data.length)] */,
14435 uint8_t *_out_data /* [out] [ref,size_is(out_data_size)] */,
14436 uint32_t _out_data_size /* [in] */,
14437 uint32_t *_needed /* [out] [ref] */,
14438 uint32_t *_status_code /* [in,out] [ref] */,
14441 struct spoolss_XcvData r;
14444 /* In parameters */
14445 r.in.handle = _handle;
14446 r.in.function_name = _function_name;
14447 r.in.in_data = _in_data;
14448 r.in._in_data_length = __in_data_length;
14449 r.in.out_data_size = _out_data_size;
14450 r.in.status_code = _status_code;
14452 status = dcerpc_spoolss_XcvData_r(h, mem_ctx, &r);
14453 if (!NT_STATUS_IS_OK(status)) {
14457 /* Return variables */
14458 memcpy(_out_data, r.out.out_data, (r.in.out_data_size) * sizeof(*_out_data));
14459 *_needed = *r.out.needed;
14460 *_status_code = *r.out.status_code;
14462 /* Return result */
14463 *result = r.out.result;
14465 return NT_STATUS_OK;
14468 struct dcerpc_spoolss_AddPrinterDriverEx_r_state {
14469 TALLOC_CTX *out_mem_ctx;
14472 static void dcerpc_spoolss_AddPrinterDriverEx_r_done(struct tevent_req *subreq);
14474 struct tevent_req *dcerpc_spoolss_AddPrinterDriverEx_r_send(TALLOC_CTX *mem_ctx,
14475 struct tevent_context *ev,
14476 struct dcerpc_binding_handle *h,
14477 struct spoolss_AddPrinterDriverEx *r)
14479 struct tevent_req *req;
14480 struct dcerpc_spoolss_AddPrinterDriverEx_r_state *state;
14481 struct tevent_req *subreq;
14483 req = tevent_req_create(mem_ctx, &state,
14484 struct dcerpc_spoolss_AddPrinterDriverEx_r_state);
14489 state->out_mem_ctx = NULL;
14490 subreq = dcerpc_binding_handle_call_send(state, ev, h,
14491 NULL, &ndr_table_spoolss,
14492 NDR_SPOOLSS_ADDPRINTERDRIVEREX, state, r);
14493 if (tevent_req_nomem(subreq, req)) {
14494 return tevent_req_post(req, ev);
14496 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinterDriverEx_r_done, req);
14501 static void dcerpc_spoolss_AddPrinterDriverEx_r_done(struct tevent_req *subreq)
14503 struct tevent_req *req =
14504 tevent_req_callback_data(subreq,
14505 struct tevent_req);
14508 status = dcerpc_binding_handle_call_recv(subreq);
14509 if (!NT_STATUS_IS_OK(status)) {
14510 tevent_req_nterror(req, status);
14514 tevent_req_done(req);
14517 NTSTATUS dcerpc_spoolss_AddPrinterDriverEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
14519 struct dcerpc_spoolss_AddPrinterDriverEx_r_state *state =
14520 tevent_req_data(req,
14521 struct dcerpc_spoolss_AddPrinterDriverEx_r_state);
14524 if (tevent_req_is_nterror(req, &status)) {
14525 tevent_req_received(req);
14529 talloc_steal(mem_ctx, state->out_mem_ctx);
14531 tevent_req_received(req);
14532 return NT_STATUS_OK;
14535 NTSTATUS dcerpc_spoolss_AddPrinterDriverEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_AddPrinterDriverEx *r)
14539 status = dcerpc_binding_handle_call(h,
14540 NULL, &ndr_table_spoolss,
14541 NDR_SPOOLSS_ADDPRINTERDRIVEREX, mem_ctx, r);
14546 NTSTATUS dcerpc_spoolss_AddPrinterDriverEx_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_AddPrinterDriverEx *r)
14550 status = dcerpc_spoolss_AddPrinterDriverEx_r(p->binding_handle, mem_ctx, r);
14552 if (NT_STATUS_IS_RPC(status)) {
14553 status = NT_STATUS_NET_WRITE_FAULT;
14559 struct dcerpc_spoolss_AddPrinterDriverEx_state {
14560 struct spoolss_AddPrinterDriverEx orig;
14561 struct spoolss_AddPrinterDriverEx tmp;
14562 TALLOC_CTX *out_mem_ctx;
14565 static void dcerpc_spoolss_AddPrinterDriverEx_done(struct tevent_req *subreq);
14567 struct tevent_req *dcerpc_spoolss_AddPrinterDriverEx_send(TALLOC_CTX *mem_ctx,
14568 struct tevent_context *ev,
14569 struct dcerpc_binding_handle *h,
14570 const char *_servername /* [in] [unique,charset(UTF16)] */,
14571 struct spoolss_AddDriverInfoCtr *_info_ctr /* [in] [ref] */,
14572 uint32_t _flags /* [in] */)
14574 struct tevent_req *req;
14575 struct dcerpc_spoolss_AddPrinterDriverEx_state *state;
14576 struct tevent_req *subreq;
14578 req = tevent_req_create(mem_ctx, &state,
14579 struct dcerpc_spoolss_AddPrinterDriverEx_state);
14583 state->out_mem_ctx = NULL;
14585 /* In parameters */
14586 state->orig.in.servername = _servername;
14587 state->orig.in.info_ctr = _info_ctr;
14588 state->orig.in.flags = _flags;
14590 /* Out parameters */
14593 ZERO_STRUCT(state->orig.out.result);
14595 /* make a temporary copy, that we pass to the dispatch function */
14596 state->tmp = state->orig;
14598 subreq = dcerpc_spoolss_AddPrinterDriverEx_r_send(state, ev, h, &state->tmp);
14599 if (tevent_req_nomem(subreq, req)) {
14600 return tevent_req_post(req, ev);
14602 tevent_req_set_callback(subreq, dcerpc_spoolss_AddPrinterDriverEx_done, req);
14606 static void dcerpc_spoolss_AddPrinterDriverEx_done(struct tevent_req *subreq)
14608 struct tevent_req *req = tevent_req_callback_data(
14609 subreq, struct tevent_req);
14610 struct dcerpc_spoolss_AddPrinterDriverEx_state *state = tevent_req_data(
14611 req, struct dcerpc_spoolss_AddPrinterDriverEx_state);
14613 TALLOC_CTX *mem_ctx;
14615 if (state->out_mem_ctx) {
14616 mem_ctx = state->out_mem_ctx;
14621 status = dcerpc_spoolss_AddPrinterDriverEx_r_recv(subreq, mem_ctx);
14622 TALLOC_FREE(subreq);
14623 if (!NT_STATUS_IS_OK(status)) {
14624 tevent_req_nterror(req, status);
14628 /* Copy out parameters */
14631 state->orig.out.result = state->tmp.out.result;
14633 /* Reset temporary structure */
14634 ZERO_STRUCT(state->tmp);
14636 tevent_req_done(req);
14639 NTSTATUS dcerpc_spoolss_AddPrinterDriverEx_recv(struct tevent_req *req,
14640 TALLOC_CTX *mem_ctx,
14643 struct dcerpc_spoolss_AddPrinterDriverEx_state *state = tevent_req_data(
14644 req, struct dcerpc_spoolss_AddPrinterDriverEx_state);
14647 if (tevent_req_is_nterror(req, &status)) {
14648 tevent_req_received(req);
14652 /* Steal possible out parameters to the callers context */
14653 talloc_steal(mem_ctx, state->out_mem_ctx);
14655 /* Return result */
14656 *result = state->orig.out.result;
14658 tevent_req_received(req);
14659 return NT_STATUS_OK;
14662 NTSTATUS dcerpc_spoolss_AddPrinterDriverEx(struct dcerpc_binding_handle *h,
14663 TALLOC_CTX *mem_ctx,
14664 const char *_servername /* [in] [unique,charset(UTF16)] */,
14665 struct spoolss_AddDriverInfoCtr *_info_ctr /* [in] [ref] */,
14666 uint32_t _flags /* [in] */,
14669 struct spoolss_AddPrinterDriverEx r;
14672 /* In parameters */
14673 r.in.servername = _servername;
14674 r.in.info_ctr = _info_ctr;
14675 r.in.flags = _flags;
14677 status = dcerpc_spoolss_AddPrinterDriverEx_r(h, mem_ctx, &r);
14678 if (!NT_STATUS_IS_OK(status)) {
14682 /* Return variables */
14684 /* Return result */
14685 *result = r.out.result;
14687 return NT_STATUS_OK;
14690 struct dcerpc_spoolss_GetCorePrinterDrivers_r_state {
14691 TALLOC_CTX *out_mem_ctx;
14694 static void dcerpc_spoolss_GetCorePrinterDrivers_r_done(struct tevent_req *subreq);
14696 struct tevent_req *dcerpc_spoolss_GetCorePrinterDrivers_r_send(TALLOC_CTX *mem_ctx,
14697 struct tevent_context *ev,
14698 struct dcerpc_binding_handle *h,
14699 struct spoolss_GetCorePrinterDrivers *r)
14701 struct tevent_req *req;
14702 struct dcerpc_spoolss_GetCorePrinterDrivers_r_state *state;
14703 struct tevent_req *subreq;
14705 req = tevent_req_create(mem_ctx, &state,
14706 struct dcerpc_spoolss_GetCorePrinterDrivers_r_state);
14711 state->out_mem_ctx = talloc_new(state);
14712 if (tevent_req_nomem(state->out_mem_ctx, req)) {
14713 return tevent_req_post(req, ev);
14716 subreq = dcerpc_binding_handle_call_send(state, ev, h,
14717 NULL, &ndr_table_spoolss,
14718 NDR_SPOOLSS_GETCOREPRINTERDRIVERS, state->out_mem_ctx, r);
14719 if (tevent_req_nomem(subreq, req)) {
14720 return tevent_req_post(req, ev);
14722 tevent_req_set_callback(subreq, dcerpc_spoolss_GetCorePrinterDrivers_r_done, req);
14727 static void dcerpc_spoolss_GetCorePrinterDrivers_r_done(struct tevent_req *subreq)
14729 struct tevent_req *req =
14730 tevent_req_callback_data(subreq,
14731 struct tevent_req);
14734 status = dcerpc_binding_handle_call_recv(subreq);
14735 if (!NT_STATUS_IS_OK(status)) {
14736 tevent_req_nterror(req, status);
14740 tevent_req_done(req);
14743 NTSTATUS dcerpc_spoolss_GetCorePrinterDrivers_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
14745 struct dcerpc_spoolss_GetCorePrinterDrivers_r_state *state =
14746 tevent_req_data(req,
14747 struct dcerpc_spoolss_GetCorePrinterDrivers_r_state);
14750 if (tevent_req_is_nterror(req, &status)) {
14751 tevent_req_received(req);
14755 talloc_steal(mem_ctx, state->out_mem_ctx);
14757 tevent_req_received(req);
14758 return NT_STATUS_OK;
14761 NTSTATUS dcerpc_spoolss_GetCorePrinterDrivers_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetCorePrinterDrivers *r)
14765 status = dcerpc_binding_handle_call(h,
14766 NULL, &ndr_table_spoolss,
14767 NDR_SPOOLSS_GETCOREPRINTERDRIVERS, mem_ctx, r);
14772 NTSTATUS dcerpc_spoolss_GetCorePrinterDrivers_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetCorePrinterDrivers *r)
14776 status = dcerpc_spoolss_GetCorePrinterDrivers_r(p->binding_handle, mem_ctx, r);
14778 if (NT_STATUS_IS_RPC(status)) {
14779 status = NT_STATUS_NET_WRITE_FAULT;
14785 struct dcerpc_spoolss_GetCorePrinterDrivers_state {
14786 struct spoolss_GetCorePrinterDrivers orig;
14787 struct spoolss_GetCorePrinterDrivers tmp;
14788 TALLOC_CTX *out_mem_ctx;
14791 static void dcerpc_spoolss_GetCorePrinterDrivers_done(struct tevent_req *subreq);
14793 struct tevent_req *dcerpc_spoolss_GetCorePrinterDrivers_send(TALLOC_CTX *mem_ctx,
14794 struct tevent_context *ev,
14795 struct dcerpc_binding_handle *h,
14796 const char *_servername /* [in] [unique,charset(UTF16)] */,
14797 const char *_architecture /* [in] [ref,charset(UTF16)] */,
14798 uint32_t _core_driver_size /* [in] */,
14799 const char *_core_driver_dependencies /* [in] [ref,charset(UTF16),size_is(core_driver_size)] */,
14800 uint32_t _core_printer_driver_count /* [in] */,
14801 struct spoolss_CorePrinterDriver *_core_printer_drivers /* [out] [ref,size_is(core_printer_driver_count)] */)
14803 struct tevent_req *req;
14804 struct dcerpc_spoolss_GetCorePrinterDrivers_state *state;
14805 struct tevent_req *subreq;
14807 req = tevent_req_create(mem_ctx, &state,
14808 struct dcerpc_spoolss_GetCorePrinterDrivers_state);
14812 state->out_mem_ctx = NULL;
14814 /* In parameters */
14815 state->orig.in.servername = _servername;
14816 state->orig.in.architecture = _architecture;
14817 state->orig.in.core_driver_size = _core_driver_size;
14818 state->orig.in.core_driver_dependencies = _core_driver_dependencies;
14819 state->orig.in.core_printer_driver_count = _core_printer_driver_count;
14821 /* Out parameters */
14822 state->orig.out.core_printer_drivers = _core_printer_drivers;
14825 ZERO_STRUCT(state->orig.out.result);
14827 state->out_mem_ctx = talloc_named_const(state, 0,
14828 "dcerpc_spoolss_GetCorePrinterDrivers_out_memory");
14829 if (tevent_req_nomem(state->out_mem_ctx, req)) {
14830 return tevent_req_post(req, ev);
14833 /* make a temporary copy, that we pass to the dispatch function */
14834 state->tmp = state->orig;
14836 subreq = dcerpc_spoolss_GetCorePrinterDrivers_r_send(state, ev, h, &state->tmp);
14837 if (tevent_req_nomem(subreq, req)) {
14838 return tevent_req_post(req, ev);
14840 tevent_req_set_callback(subreq, dcerpc_spoolss_GetCorePrinterDrivers_done, req);
14844 static void dcerpc_spoolss_GetCorePrinterDrivers_done(struct tevent_req *subreq)
14846 struct tevent_req *req = tevent_req_callback_data(
14847 subreq, struct tevent_req);
14848 struct dcerpc_spoolss_GetCorePrinterDrivers_state *state = tevent_req_data(
14849 req, struct dcerpc_spoolss_GetCorePrinterDrivers_state);
14851 TALLOC_CTX *mem_ctx;
14853 if (state->out_mem_ctx) {
14854 mem_ctx = state->out_mem_ctx;
14859 status = dcerpc_spoolss_GetCorePrinterDrivers_r_recv(subreq, mem_ctx);
14860 TALLOC_FREE(subreq);
14861 if (!NT_STATUS_IS_OK(status)) {
14862 tevent_req_nterror(req, status);
14866 /* Copy out parameters */
14867 memcpy(state->orig.out.core_printer_drivers, state->tmp.out.core_printer_drivers, (state->tmp.in.core_printer_driver_count) * sizeof(*state->orig.out.core_printer_drivers));
14870 state->orig.out.result = state->tmp.out.result;
14872 /* Reset temporary structure */
14873 ZERO_STRUCT(state->tmp);
14875 tevent_req_done(req);
14878 NTSTATUS dcerpc_spoolss_GetCorePrinterDrivers_recv(struct tevent_req *req,
14879 TALLOC_CTX *mem_ctx,
14882 struct dcerpc_spoolss_GetCorePrinterDrivers_state *state = tevent_req_data(
14883 req, struct dcerpc_spoolss_GetCorePrinterDrivers_state);
14886 if (tevent_req_is_nterror(req, &status)) {
14887 tevent_req_received(req);
14891 /* Steal possible out parameters to the callers context */
14892 talloc_steal(mem_ctx, state->out_mem_ctx);
14894 /* Return result */
14895 *result = state->orig.out.result;
14897 tevent_req_received(req);
14898 return NT_STATUS_OK;
14901 NTSTATUS dcerpc_spoolss_GetCorePrinterDrivers(struct dcerpc_binding_handle *h,
14902 TALLOC_CTX *mem_ctx,
14903 const char *_servername /* [in] [unique,charset(UTF16)] */,
14904 const char *_architecture /* [in] [ref,charset(UTF16)] */,
14905 uint32_t _core_driver_size /* [in] */,
14906 const char *_core_driver_dependencies /* [in] [ref,charset(UTF16),size_is(core_driver_size)] */,
14907 uint32_t _core_printer_driver_count /* [in] */,
14908 struct spoolss_CorePrinterDriver *_core_printer_drivers /* [out] [ref,size_is(core_printer_driver_count)] */,
14911 struct spoolss_GetCorePrinterDrivers r;
14914 /* In parameters */
14915 r.in.servername = _servername;
14916 r.in.architecture = _architecture;
14917 r.in.core_driver_size = _core_driver_size;
14918 r.in.core_driver_dependencies = _core_driver_dependencies;
14919 r.in.core_printer_driver_count = _core_printer_driver_count;
14921 status = dcerpc_spoolss_GetCorePrinterDrivers_r(h, mem_ctx, &r);
14922 if (!NT_STATUS_IS_OK(status)) {
14926 /* Return variables */
14927 memcpy(_core_printer_drivers, r.out.core_printer_drivers, (r.in.core_printer_driver_count) * sizeof(*_core_printer_drivers));
14929 /* Return result */
14930 *result = r.out.result;
14932 return NT_STATUS_OK;
14935 struct dcerpc_spoolss_GetPrinterDriverPackagePath_r_state {
14936 TALLOC_CTX *out_mem_ctx;
14939 static void dcerpc_spoolss_GetPrinterDriverPackagePath_r_done(struct tevent_req *subreq);
14941 struct tevent_req *dcerpc_spoolss_GetPrinterDriverPackagePath_r_send(TALLOC_CTX *mem_ctx,
14942 struct tevent_context *ev,
14943 struct dcerpc_binding_handle *h,
14944 struct spoolss_GetPrinterDriverPackagePath *r)
14946 struct tevent_req *req;
14947 struct dcerpc_spoolss_GetPrinterDriverPackagePath_r_state *state;
14948 struct tevent_req *subreq;
14950 req = tevent_req_create(mem_ctx, &state,
14951 struct dcerpc_spoolss_GetPrinterDriverPackagePath_r_state);
14956 state->out_mem_ctx = talloc_new(state);
14957 if (tevent_req_nomem(state->out_mem_ctx, req)) {
14958 return tevent_req_post(req, ev);
14961 subreq = dcerpc_binding_handle_call_send(state, ev, h,
14962 NULL, &ndr_table_spoolss,
14963 NDR_SPOOLSS_GETPRINTERDRIVERPACKAGEPATH, state->out_mem_ctx, r);
14964 if (tevent_req_nomem(subreq, req)) {
14965 return tevent_req_post(req, ev);
14967 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriverPackagePath_r_done, req);
14972 static void dcerpc_spoolss_GetPrinterDriverPackagePath_r_done(struct tevent_req *subreq)
14974 struct tevent_req *req =
14975 tevent_req_callback_data(subreq,
14976 struct tevent_req);
14979 status = dcerpc_binding_handle_call_recv(subreq);
14980 if (!NT_STATUS_IS_OK(status)) {
14981 tevent_req_nterror(req, status);
14985 tevent_req_done(req);
14988 NTSTATUS dcerpc_spoolss_GetPrinterDriverPackagePath_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
14990 struct dcerpc_spoolss_GetPrinterDriverPackagePath_r_state *state =
14991 tevent_req_data(req,
14992 struct dcerpc_spoolss_GetPrinterDriverPackagePath_r_state);
14995 if (tevent_req_is_nterror(req, &status)) {
14996 tevent_req_received(req);
15000 talloc_steal(mem_ctx, state->out_mem_ctx);
15002 tevent_req_received(req);
15003 return NT_STATUS_OK;
15006 NTSTATUS dcerpc_spoolss_GetPrinterDriverPackagePath_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDriverPackagePath *r)
15010 status = dcerpc_binding_handle_call(h,
15011 NULL, &ndr_table_spoolss,
15012 NDR_SPOOLSS_GETPRINTERDRIVERPACKAGEPATH, mem_ctx, r);
15017 NTSTATUS dcerpc_spoolss_GetPrinterDriverPackagePath_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct spoolss_GetPrinterDriverPackagePath *r)
15021 status = dcerpc_spoolss_GetPrinterDriverPackagePath_r(p->binding_handle, mem_ctx, r);
15023 if (NT_STATUS_IS_RPC(status)) {
15024 status = NT_STATUS_NET_WRITE_FAULT;
15030 struct dcerpc_spoolss_GetPrinterDriverPackagePath_state {
15031 struct spoolss_GetPrinterDriverPackagePath orig;
15032 struct spoolss_GetPrinterDriverPackagePath tmp;
15033 TALLOC_CTX *out_mem_ctx;
15036 static void dcerpc_spoolss_GetPrinterDriverPackagePath_done(struct tevent_req *subreq);
15038 struct tevent_req *dcerpc_spoolss_GetPrinterDriverPackagePath_send(TALLOC_CTX *mem_ctx,
15039 struct tevent_context *ev,
15040 struct dcerpc_binding_handle *h,
15041 const char *_servername /* [in] [unique,charset(UTF16)] */,
15042 const char *_architecture /* [in] [ref,charset(UTF16)] */,
15043 const char *_language /* [in] [unique,charset(UTF16)] */,
15044 const char *_package_id /* [in] [ref,charset(UTF16)] */,
15045 const char *_driver_package_cab /* [in,out] [unique,charset(UTF16),size_is(driver_package_cab_size)] */,
15046 uint32_t _driver_package_cab_size /* [in] */,
15047 uint32_t *_required /* [out] [ref] */)
15049 struct tevent_req *req;
15050 struct dcerpc_spoolss_GetPrinterDriverPackagePath_state *state;
15051 struct tevent_req *subreq;
15053 req = tevent_req_create(mem_ctx, &state,
15054 struct dcerpc_spoolss_GetPrinterDriverPackagePath_state);
15058 state->out_mem_ctx = NULL;
15060 /* In parameters */
15061 state->orig.in.servername = _servername;
15062 state->orig.in.architecture = _architecture;
15063 state->orig.in.language = _language;
15064 state->orig.in.package_id = _package_id;
15065 state->orig.in.driver_package_cab = _driver_package_cab;
15066 state->orig.in.driver_package_cab_size = _driver_package_cab_size;
15068 /* Out parameters */
15069 state->orig.out.driver_package_cab = _driver_package_cab;
15070 state->orig.out.required = _required;
15073 ZERO_STRUCT(state->orig.out.result);
15075 state->out_mem_ctx = talloc_named_const(state, 0,
15076 "dcerpc_spoolss_GetPrinterDriverPackagePath_out_memory");
15077 if (tevent_req_nomem(state->out_mem_ctx, req)) {
15078 return tevent_req_post(req, ev);
15081 /* make a temporary copy, that we pass to the dispatch function */
15082 state->tmp = state->orig;
15084 subreq = dcerpc_spoolss_GetPrinterDriverPackagePath_r_send(state, ev, h, &state->tmp);
15085 if (tevent_req_nomem(subreq, req)) {
15086 return tevent_req_post(req, ev);
15088 tevent_req_set_callback(subreq, dcerpc_spoolss_GetPrinterDriverPackagePath_done, req);
15092 static void dcerpc_spoolss_GetPrinterDriverPackagePath_done(struct tevent_req *subreq)
15094 struct tevent_req *req = tevent_req_callback_data(
15095 subreq, struct tevent_req);
15096 struct dcerpc_spoolss_GetPrinterDriverPackagePath_state *state = tevent_req_data(
15097 req, struct dcerpc_spoolss_GetPrinterDriverPackagePath_state);
15099 TALLOC_CTX *mem_ctx;
15101 if (state->out_mem_ctx) {
15102 mem_ctx = state->out_mem_ctx;
15107 status = dcerpc_spoolss_GetPrinterDriverPackagePath_r_recv(subreq, mem_ctx);
15108 TALLOC_FREE(subreq);
15109 if (!NT_STATUS_IS_OK(status)) {
15110 tevent_req_nterror(req, status);
15114 /* Copy out parameters */
15115 if (state->orig.out.driver_package_cab && state->tmp.out.driver_package_cab) {
15116 memcpy(discard_const_p(uint8_t *, state->orig.out.driver_package_cab), state->tmp.out.driver_package_cab, (state->tmp.in.driver_package_cab_size) * sizeof(*state->orig.out.driver_package_cab));
15118 *state->orig.out.required = *state->tmp.out.required;
15121 state->orig.out.result = state->tmp.out.result;
15123 /* Reset temporary structure */
15124 ZERO_STRUCT(state->tmp);
15126 tevent_req_done(req);
15129 NTSTATUS dcerpc_spoolss_GetPrinterDriverPackagePath_recv(struct tevent_req *req,
15130 TALLOC_CTX *mem_ctx,
15133 struct dcerpc_spoolss_GetPrinterDriverPackagePath_state *state = tevent_req_data(
15134 req, struct dcerpc_spoolss_GetPrinterDriverPackagePath_state);
15137 if (tevent_req_is_nterror(req, &status)) {
15138 tevent_req_received(req);
15142 /* Steal possible out parameters to the callers context */
15143 talloc_steal(mem_ctx, state->out_mem_ctx);
15145 /* Return result */
15146 *result = state->orig.out.result;
15148 tevent_req_received(req);
15149 return NT_STATUS_OK;
15152 NTSTATUS dcerpc_spoolss_GetPrinterDriverPackagePath(struct dcerpc_binding_handle *h,
15153 TALLOC_CTX *mem_ctx,
15154 const char *_servername /* [in] [unique,charset(UTF16)] */,
15155 const char *_architecture /* [in] [ref,charset(UTF16)] */,
15156 const char *_language /* [in] [unique,charset(UTF16)] */,
15157 const char *_package_id /* [in] [ref,charset(UTF16)] */,
15158 const char *_driver_package_cab /* [in,out] [unique,charset(UTF16),size_is(driver_package_cab_size)] */,
15159 uint32_t _driver_package_cab_size /* [in] */,
15160 uint32_t *_required /* [out] [ref] */,
15163 struct spoolss_GetPrinterDriverPackagePath r;
15166 /* In parameters */
15167 r.in.servername = _servername;
15168 r.in.architecture = _architecture;
15169 r.in.language = _language;
15170 r.in.package_id = _package_id;
15171 r.in.driver_package_cab = _driver_package_cab;
15172 r.in.driver_package_cab_size = _driver_package_cab_size;
15174 status = dcerpc_spoolss_GetPrinterDriverPackagePath_r(h, mem_ctx, &r);
15175 if (!NT_STATUS_IS_OK(status)) {
15179 /* Return variables */
15180 if (_driver_package_cab && r.out.driver_package_cab) {
15181 memcpy(discard_const_p(uint8_t *, _driver_package_cab), r.out.driver_package_cab, (r.in.driver_package_cab_size) * sizeof(*_driver_package_cab));
15183 *_required = *r.out.required;
15185 /* Return result */
15186 *result = r.out.result;
15188 return NT_STATUS_OK;