3 #include "lib/util/tevent_ntstatus.h"
4 #include "librpc/rpc/dcerpc_connection.h"
5 #include "bin/default/librpc/gen_ndr/s3compat_svcctl.h"
7 struct _s3_compat_svcctl_CloseServiceHandle_state {
8 struct tevent_context *ev;
9 struct dcerpc_call_handle *call;
10 struct svcctl_CloseServiceHandle *r;
13 static struct tevent_req *_s3_compat_svcctl_CloseServiceHandle_send(TALLOC_CTX *mem_ctx,
14 struct tevent_context *ev,
15 struct dcerpc_call_handle *call,
16 struct svcctl_CloseServiceHandle *r)
18 struct tevent_req *req;
19 struct _s3_compat_svcctl_CloseServiceHandle_state *state;
20 struct pipes_struct *p;
22 req = tevent_req_create(mem_ctx, &state,
23 struct _s3_compat_svcctl_CloseServiceHandle_state);
31 p = dcerpc_call_handle_get_pipes_struct(call);
33 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
34 return tevent_req_post(req, ev);
38 r->out.handle = r->in.handle;
39 r->out.result = _svcctl_CloseServiceHandle(p, r);
42 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
43 tevent_req_nterror(req, status);
44 return tevent_req_post(req, ev);
48 return tevent_req_post(req, ev);
51 static NTSTATUS _s3_compat_svcctl_CloseServiceHandle_recv(struct tevent_req *req)
53 return tevent_req_simple_recv_ntstatus(req);
56 struct _s3_compat_svcctl_ControlService_state {
57 struct tevent_context *ev;
58 struct dcerpc_call_handle *call;
59 struct svcctl_ControlService *r;
62 static struct tevent_req *_s3_compat_svcctl_ControlService_send(TALLOC_CTX *mem_ctx,
63 struct tevent_context *ev,
64 struct dcerpc_call_handle *call,
65 struct svcctl_ControlService *r)
67 struct tevent_req *req;
68 struct _s3_compat_svcctl_ControlService_state *state;
69 struct pipes_struct *p;
71 req = tevent_req_create(mem_ctx, &state,
72 struct _s3_compat_svcctl_ControlService_state);
80 p = dcerpc_call_handle_get_pipes_struct(call);
82 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
83 return tevent_req_post(req, ev);
87 r->out.service_status = talloc_zero(r, struct SERVICE_STATUS);
88 if (tevent_req_nomem(r->out.service_status, req)) {
89 return tevent_req_post(req, ev);
92 r->out.result = _svcctl_ControlService(p, r);
95 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
96 tevent_req_nterror(req, status);
97 return tevent_req_post(req, ev);
100 tevent_req_done(req);
101 return tevent_req_post(req, ev);
104 static NTSTATUS _s3_compat_svcctl_ControlService_recv(struct tevent_req *req)
106 return tevent_req_simple_recv_ntstatus(req);
109 struct _s3_compat_svcctl_DeleteService_state {
110 struct tevent_context *ev;
111 struct dcerpc_call_handle *call;
112 struct svcctl_DeleteService *r;
115 static struct tevent_req *_s3_compat_svcctl_DeleteService_send(TALLOC_CTX *mem_ctx,
116 struct tevent_context *ev,
117 struct dcerpc_call_handle *call,
118 struct svcctl_DeleteService *r)
120 struct tevent_req *req;
121 struct _s3_compat_svcctl_DeleteService_state *state;
122 struct pipes_struct *p;
124 req = tevent_req_create(mem_ctx, &state,
125 struct _s3_compat_svcctl_DeleteService_state);
133 p = dcerpc_call_handle_get_pipes_struct(call);
135 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
136 return tevent_req_post(req, ev);
139 r->out.result = _svcctl_DeleteService(p, r);
141 if (p->fault_state) {
142 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
143 tevent_req_nterror(req, status);
144 return tevent_req_post(req, ev);
147 tevent_req_done(req);
148 return tevent_req_post(req, ev);
151 static NTSTATUS _s3_compat_svcctl_DeleteService_recv(struct tevent_req *req)
153 return tevent_req_simple_recv_ntstatus(req);
156 struct _s3_compat_svcctl_LockServiceDatabase_state {
157 struct tevent_context *ev;
158 struct dcerpc_call_handle *call;
159 struct svcctl_LockServiceDatabase *r;
162 static struct tevent_req *_s3_compat_svcctl_LockServiceDatabase_send(TALLOC_CTX *mem_ctx,
163 struct tevent_context *ev,
164 struct dcerpc_call_handle *call,
165 struct svcctl_LockServiceDatabase *r)
167 struct tevent_req *req;
168 struct _s3_compat_svcctl_LockServiceDatabase_state *state;
169 struct pipes_struct *p;
171 req = tevent_req_create(mem_ctx, &state,
172 struct _s3_compat_svcctl_LockServiceDatabase_state);
180 p = dcerpc_call_handle_get_pipes_struct(call);
182 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
183 return tevent_req_post(req, ev);
187 r->out.lock = talloc_zero(r, struct policy_handle);
188 if (tevent_req_nomem(r->out.lock, req)) {
189 return tevent_req_post(req, ev);
192 r->out.result = _svcctl_LockServiceDatabase(p, r);
194 if (p->fault_state) {
195 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
196 tevent_req_nterror(req, status);
197 return tevent_req_post(req, ev);
200 tevent_req_done(req);
201 return tevent_req_post(req, ev);
204 static NTSTATUS _s3_compat_svcctl_LockServiceDatabase_recv(struct tevent_req *req)
206 return tevent_req_simple_recv_ntstatus(req);
209 struct _s3_compat_svcctl_QueryServiceObjectSecurity_state {
210 struct tevent_context *ev;
211 struct dcerpc_call_handle *call;
212 struct svcctl_QueryServiceObjectSecurity *r;
215 static struct tevent_req *_s3_compat_svcctl_QueryServiceObjectSecurity_send(TALLOC_CTX *mem_ctx,
216 struct tevent_context *ev,
217 struct dcerpc_call_handle *call,
218 struct svcctl_QueryServiceObjectSecurity *r)
220 struct tevent_req *req;
221 struct _s3_compat_svcctl_QueryServiceObjectSecurity_state *state;
222 struct pipes_struct *p;
224 req = tevent_req_create(mem_ctx, &state,
225 struct _s3_compat_svcctl_QueryServiceObjectSecurity_state);
233 p = dcerpc_call_handle_get_pipes_struct(call);
235 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
236 return tevent_req_post(req, ev);
240 r->out.buffer = talloc_zero_array(r, uint8_t, r->in.offered);
241 if (tevent_req_nomem(r->out.buffer, req)) {
242 return tevent_req_post(req, ev);
245 r->out.needed = talloc_zero(r, uint32_t);
246 if (tevent_req_nomem(r->out.needed, req)) {
247 return tevent_req_post(req, ev);
250 r->out.result = _svcctl_QueryServiceObjectSecurity(p, r);
252 if (p->fault_state) {
253 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
254 tevent_req_nterror(req, status);
255 return tevent_req_post(req, ev);
258 tevent_req_done(req);
259 return tevent_req_post(req, ev);
262 static NTSTATUS _s3_compat_svcctl_QueryServiceObjectSecurity_recv(struct tevent_req *req)
264 return tevent_req_simple_recv_ntstatus(req);
267 struct _s3_compat_svcctl_SetServiceObjectSecurity_state {
268 struct tevent_context *ev;
269 struct dcerpc_call_handle *call;
270 struct svcctl_SetServiceObjectSecurity *r;
273 static struct tevent_req *_s3_compat_svcctl_SetServiceObjectSecurity_send(TALLOC_CTX *mem_ctx,
274 struct tevent_context *ev,
275 struct dcerpc_call_handle *call,
276 struct svcctl_SetServiceObjectSecurity *r)
278 struct tevent_req *req;
279 struct _s3_compat_svcctl_SetServiceObjectSecurity_state *state;
280 struct pipes_struct *p;
282 req = tevent_req_create(mem_ctx, &state,
283 struct _s3_compat_svcctl_SetServiceObjectSecurity_state);
291 p = dcerpc_call_handle_get_pipes_struct(call);
293 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
294 return tevent_req_post(req, ev);
297 r->out.result = _svcctl_SetServiceObjectSecurity(p, r);
299 if (p->fault_state) {
300 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
301 tevent_req_nterror(req, status);
302 return tevent_req_post(req, ev);
305 tevent_req_done(req);
306 return tevent_req_post(req, ev);
309 static NTSTATUS _s3_compat_svcctl_SetServiceObjectSecurity_recv(struct tevent_req *req)
311 return tevent_req_simple_recv_ntstatus(req);
314 struct _s3_compat_svcctl_QueryServiceStatus_state {
315 struct tevent_context *ev;
316 struct dcerpc_call_handle *call;
317 struct svcctl_QueryServiceStatus *r;
320 static struct tevent_req *_s3_compat_svcctl_QueryServiceStatus_send(TALLOC_CTX *mem_ctx,
321 struct tevent_context *ev,
322 struct dcerpc_call_handle *call,
323 struct svcctl_QueryServiceStatus *r)
325 struct tevent_req *req;
326 struct _s3_compat_svcctl_QueryServiceStatus_state *state;
327 struct pipes_struct *p;
329 req = tevent_req_create(mem_ctx, &state,
330 struct _s3_compat_svcctl_QueryServiceStatus_state);
338 p = dcerpc_call_handle_get_pipes_struct(call);
340 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
341 return tevent_req_post(req, ev);
345 r->out.service_status = talloc_zero(r, struct SERVICE_STATUS);
346 if (tevent_req_nomem(r->out.service_status, req)) {
347 return tevent_req_post(req, ev);
350 r->out.result = _svcctl_QueryServiceStatus(p, r);
352 if (p->fault_state) {
353 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
354 tevent_req_nterror(req, status);
355 return tevent_req_post(req, ev);
358 tevent_req_done(req);
359 return tevent_req_post(req, ev);
362 static NTSTATUS _s3_compat_svcctl_QueryServiceStatus_recv(struct tevent_req *req)
364 return tevent_req_simple_recv_ntstatus(req);
367 struct _s3_compat_svcctl_SetServiceStatus_state {
368 struct tevent_context *ev;
369 struct dcerpc_call_handle *call;
370 struct svcctl_SetServiceStatus *r;
373 static struct tevent_req *_s3_compat_svcctl_SetServiceStatus_send(TALLOC_CTX *mem_ctx,
374 struct tevent_context *ev,
375 struct dcerpc_call_handle *call,
376 struct svcctl_SetServiceStatus *r)
378 struct tevent_req *req;
379 struct _s3_compat_svcctl_SetServiceStatus_state *state;
380 struct pipes_struct *p;
382 req = tevent_req_create(mem_ctx, &state,
383 struct _s3_compat_svcctl_SetServiceStatus_state);
391 p = dcerpc_call_handle_get_pipes_struct(call);
393 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
394 return tevent_req_post(req, ev);
397 r->out.result = _svcctl_SetServiceStatus(p, r);
399 if (p->fault_state) {
400 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
401 tevent_req_nterror(req, status);
402 return tevent_req_post(req, ev);
405 tevent_req_done(req);
406 return tevent_req_post(req, ev);
409 static NTSTATUS _s3_compat_svcctl_SetServiceStatus_recv(struct tevent_req *req)
411 return tevent_req_simple_recv_ntstatus(req);
414 struct _s3_compat_svcctl_UnlockServiceDatabase_state {
415 struct tevent_context *ev;
416 struct dcerpc_call_handle *call;
417 struct svcctl_UnlockServiceDatabase *r;
420 static struct tevent_req *_s3_compat_svcctl_UnlockServiceDatabase_send(TALLOC_CTX *mem_ctx,
421 struct tevent_context *ev,
422 struct dcerpc_call_handle *call,
423 struct svcctl_UnlockServiceDatabase *r)
425 struct tevent_req *req;
426 struct _s3_compat_svcctl_UnlockServiceDatabase_state *state;
427 struct pipes_struct *p;
429 req = tevent_req_create(mem_ctx, &state,
430 struct _s3_compat_svcctl_UnlockServiceDatabase_state);
438 p = dcerpc_call_handle_get_pipes_struct(call);
440 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
441 return tevent_req_post(req, ev);
445 r->out.lock = r->in.lock;
446 r->out.result = _svcctl_UnlockServiceDatabase(p, r);
448 if (p->fault_state) {
449 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
450 tevent_req_nterror(req, status);
451 return tevent_req_post(req, ev);
454 tevent_req_done(req);
455 return tevent_req_post(req, ev);
458 static NTSTATUS _s3_compat_svcctl_UnlockServiceDatabase_recv(struct tevent_req *req)
460 return tevent_req_simple_recv_ntstatus(req);
463 struct _s3_compat_svcctl_NotifyBootConfigStatus_state {
464 struct tevent_context *ev;
465 struct dcerpc_call_handle *call;
466 struct svcctl_NotifyBootConfigStatus *r;
469 static struct tevent_req *_s3_compat_svcctl_NotifyBootConfigStatus_send(TALLOC_CTX *mem_ctx,
470 struct tevent_context *ev,
471 struct dcerpc_call_handle *call,
472 struct svcctl_NotifyBootConfigStatus *r)
474 struct tevent_req *req;
475 struct _s3_compat_svcctl_NotifyBootConfigStatus_state *state;
476 struct pipes_struct *p;
478 req = tevent_req_create(mem_ctx, &state,
479 struct _s3_compat_svcctl_NotifyBootConfigStatus_state);
487 p = dcerpc_call_handle_get_pipes_struct(call);
489 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
490 return tevent_req_post(req, ev);
493 r->out.result = _svcctl_NotifyBootConfigStatus(p, r);
495 if (p->fault_state) {
496 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
497 tevent_req_nterror(req, status);
498 return tevent_req_post(req, ev);
501 tevent_req_done(req);
502 return tevent_req_post(req, ev);
505 static NTSTATUS _s3_compat_svcctl_NotifyBootConfigStatus_recv(struct tevent_req *req)
507 return tevent_req_simple_recv_ntstatus(req);
510 struct _s3_compat_svcctl_SCSetServiceBitsW_state {
511 struct tevent_context *ev;
512 struct dcerpc_call_handle *call;
513 struct svcctl_SCSetServiceBitsW *r;
516 static struct tevent_req *_s3_compat_svcctl_SCSetServiceBitsW_send(TALLOC_CTX *mem_ctx,
517 struct tevent_context *ev,
518 struct dcerpc_call_handle *call,
519 struct svcctl_SCSetServiceBitsW *r)
521 struct tevent_req *req;
522 struct _s3_compat_svcctl_SCSetServiceBitsW_state *state;
523 struct pipes_struct *p;
525 req = tevent_req_create(mem_ctx, &state,
526 struct _s3_compat_svcctl_SCSetServiceBitsW_state);
534 p = dcerpc_call_handle_get_pipes_struct(call);
536 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
537 return tevent_req_post(req, ev);
540 r->out.result = _svcctl_SCSetServiceBitsW(p, r);
542 if (p->fault_state) {
543 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
544 tevent_req_nterror(req, status);
545 return tevent_req_post(req, ev);
548 tevent_req_done(req);
549 return tevent_req_post(req, ev);
552 static NTSTATUS _s3_compat_svcctl_SCSetServiceBitsW_recv(struct tevent_req *req)
554 return tevent_req_simple_recv_ntstatus(req);
557 struct _s3_compat_svcctl_ChangeServiceConfigW_state {
558 struct tevent_context *ev;
559 struct dcerpc_call_handle *call;
560 struct svcctl_ChangeServiceConfigW *r;
563 static struct tevent_req *_s3_compat_svcctl_ChangeServiceConfigW_send(TALLOC_CTX *mem_ctx,
564 struct tevent_context *ev,
565 struct dcerpc_call_handle *call,
566 struct svcctl_ChangeServiceConfigW *r)
568 struct tevent_req *req;
569 struct _s3_compat_svcctl_ChangeServiceConfigW_state *state;
570 struct pipes_struct *p;
572 req = tevent_req_create(mem_ctx, &state,
573 struct _s3_compat_svcctl_ChangeServiceConfigW_state);
581 p = dcerpc_call_handle_get_pipes_struct(call);
583 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
584 return tevent_req_post(req, ev);
588 r->out.tag_id = talloc_zero(r, uint32_t);
589 if (tevent_req_nomem(r->out.tag_id, req)) {
590 return tevent_req_post(req, ev);
593 r->out.result = _svcctl_ChangeServiceConfigW(p, r);
595 if (p->fault_state) {
596 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
597 tevent_req_nterror(req, status);
598 return tevent_req_post(req, ev);
601 tevent_req_done(req);
602 return tevent_req_post(req, ev);
605 static NTSTATUS _s3_compat_svcctl_ChangeServiceConfigW_recv(struct tevent_req *req)
607 return tevent_req_simple_recv_ntstatus(req);
610 struct _s3_compat_svcctl_CreateServiceW_state {
611 struct tevent_context *ev;
612 struct dcerpc_call_handle *call;
613 struct svcctl_CreateServiceW *r;
616 static struct tevent_req *_s3_compat_svcctl_CreateServiceW_send(TALLOC_CTX *mem_ctx,
617 struct tevent_context *ev,
618 struct dcerpc_call_handle *call,
619 struct svcctl_CreateServiceW *r)
621 struct tevent_req *req;
622 struct _s3_compat_svcctl_CreateServiceW_state *state;
623 struct pipes_struct *p;
625 req = tevent_req_create(mem_ctx, &state,
626 struct _s3_compat_svcctl_CreateServiceW_state);
634 p = dcerpc_call_handle_get_pipes_struct(call);
636 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
637 return tevent_req_post(req, ev);
641 r->out.TagId = r->in.TagId;
642 r->out.handle = talloc_zero(r, struct policy_handle);
643 if (tevent_req_nomem(r->out.handle, req)) {
644 return tevent_req_post(req, ev);
647 r->out.result = _svcctl_CreateServiceW(p, r);
649 if (p->fault_state) {
650 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
651 tevent_req_nterror(req, status);
652 return tevent_req_post(req, ev);
655 tevent_req_done(req);
656 return tevent_req_post(req, ev);
659 static NTSTATUS _s3_compat_svcctl_CreateServiceW_recv(struct tevent_req *req)
661 return tevent_req_simple_recv_ntstatus(req);
664 struct _s3_compat_svcctl_EnumDependentServicesW_state {
665 struct tevent_context *ev;
666 struct dcerpc_call_handle *call;
667 struct svcctl_EnumDependentServicesW *r;
670 static struct tevent_req *_s3_compat_svcctl_EnumDependentServicesW_send(TALLOC_CTX *mem_ctx,
671 struct tevent_context *ev,
672 struct dcerpc_call_handle *call,
673 struct svcctl_EnumDependentServicesW *r)
675 struct tevent_req *req;
676 struct _s3_compat_svcctl_EnumDependentServicesW_state *state;
677 struct pipes_struct *p;
679 req = tevent_req_create(mem_ctx, &state,
680 struct _s3_compat_svcctl_EnumDependentServicesW_state);
688 p = dcerpc_call_handle_get_pipes_struct(call);
690 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
691 return tevent_req_post(req, ev);
695 r->out.service_status = talloc_zero_array(r, uint8_t, r->in.offered);
696 if (tevent_req_nomem(r->out.service_status, req)) {
697 return tevent_req_post(req, ev);
700 r->out.needed = talloc_zero(r, uint32_t);
701 if (tevent_req_nomem(r->out.needed, req)) {
702 return tevent_req_post(req, ev);
705 r->out.services_returned = talloc_zero(r, uint32_t);
706 if (tevent_req_nomem(r->out.services_returned, req)) {
707 return tevent_req_post(req, ev);
710 r->out.result = _svcctl_EnumDependentServicesW(p, r);
712 if (p->fault_state) {
713 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
714 tevent_req_nterror(req, status);
715 return tevent_req_post(req, ev);
718 tevent_req_done(req);
719 return tevent_req_post(req, ev);
722 static NTSTATUS _s3_compat_svcctl_EnumDependentServicesW_recv(struct tevent_req *req)
724 return tevent_req_simple_recv_ntstatus(req);
727 struct _s3_compat_svcctl_EnumServicesStatusW_state {
728 struct tevent_context *ev;
729 struct dcerpc_call_handle *call;
730 struct svcctl_EnumServicesStatusW *r;
733 static struct tevent_req *_s3_compat_svcctl_EnumServicesStatusW_send(TALLOC_CTX *mem_ctx,
734 struct tevent_context *ev,
735 struct dcerpc_call_handle *call,
736 struct svcctl_EnumServicesStatusW *r)
738 struct tevent_req *req;
739 struct _s3_compat_svcctl_EnumServicesStatusW_state *state;
740 struct pipes_struct *p;
742 req = tevent_req_create(mem_ctx, &state,
743 struct _s3_compat_svcctl_EnumServicesStatusW_state);
751 p = dcerpc_call_handle_get_pipes_struct(call);
753 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
754 return tevent_req_post(req, ev);
758 r->out.resume_handle = r->in.resume_handle;
759 r->out.service = talloc_zero_array(r, uint8_t, r->in.offered);
760 if (tevent_req_nomem(r->out.service, req)) {
761 return tevent_req_post(req, ev);
764 r->out.needed = talloc_zero(r, uint32_t);
765 if (tevent_req_nomem(r->out.needed, req)) {
766 return tevent_req_post(req, ev);
769 r->out.services_returned = talloc_zero(r, uint32_t);
770 if (tevent_req_nomem(r->out.services_returned, req)) {
771 return tevent_req_post(req, ev);
774 r->out.result = _svcctl_EnumServicesStatusW(p, r);
776 if (p->fault_state) {
777 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
778 tevent_req_nterror(req, status);
779 return tevent_req_post(req, ev);
782 tevent_req_done(req);
783 return tevent_req_post(req, ev);
786 static NTSTATUS _s3_compat_svcctl_EnumServicesStatusW_recv(struct tevent_req *req)
788 return tevent_req_simple_recv_ntstatus(req);
791 struct _s3_compat_svcctl_OpenSCManagerW_state {
792 struct tevent_context *ev;
793 struct dcerpc_call_handle *call;
794 struct svcctl_OpenSCManagerW *r;
797 static struct tevent_req *_s3_compat_svcctl_OpenSCManagerW_send(TALLOC_CTX *mem_ctx,
798 struct tevent_context *ev,
799 struct dcerpc_call_handle *call,
800 struct svcctl_OpenSCManagerW *r)
802 struct tevent_req *req;
803 struct _s3_compat_svcctl_OpenSCManagerW_state *state;
804 struct pipes_struct *p;
806 req = tevent_req_create(mem_ctx, &state,
807 struct _s3_compat_svcctl_OpenSCManagerW_state);
815 p = dcerpc_call_handle_get_pipes_struct(call);
817 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
818 return tevent_req_post(req, ev);
822 r->out.handle = talloc_zero(r, struct policy_handle);
823 if (tevent_req_nomem(r->out.handle, req)) {
824 return tevent_req_post(req, ev);
827 r->out.result = _svcctl_OpenSCManagerW(p, r);
829 if (p->fault_state) {
830 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
831 tevent_req_nterror(req, status);
832 return tevent_req_post(req, ev);
835 tevent_req_done(req);
836 return tevent_req_post(req, ev);
839 static NTSTATUS _s3_compat_svcctl_OpenSCManagerW_recv(struct tevent_req *req)
841 return tevent_req_simple_recv_ntstatus(req);
844 struct _s3_compat_svcctl_OpenServiceW_state {
845 struct tevent_context *ev;
846 struct dcerpc_call_handle *call;
847 struct svcctl_OpenServiceW *r;
850 static struct tevent_req *_s3_compat_svcctl_OpenServiceW_send(TALLOC_CTX *mem_ctx,
851 struct tevent_context *ev,
852 struct dcerpc_call_handle *call,
853 struct svcctl_OpenServiceW *r)
855 struct tevent_req *req;
856 struct _s3_compat_svcctl_OpenServiceW_state *state;
857 struct pipes_struct *p;
859 req = tevent_req_create(mem_ctx, &state,
860 struct _s3_compat_svcctl_OpenServiceW_state);
868 p = dcerpc_call_handle_get_pipes_struct(call);
870 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
871 return tevent_req_post(req, ev);
875 r->out.handle = talloc_zero(r, struct policy_handle);
876 if (tevent_req_nomem(r->out.handle, req)) {
877 return tevent_req_post(req, ev);
880 r->out.result = _svcctl_OpenServiceW(p, r);
882 if (p->fault_state) {
883 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
884 tevent_req_nterror(req, status);
885 return tevent_req_post(req, ev);
888 tevent_req_done(req);
889 return tevent_req_post(req, ev);
892 static NTSTATUS _s3_compat_svcctl_OpenServiceW_recv(struct tevent_req *req)
894 return tevent_req_simple_recv_ntstatus(req);
897 struct _s3_compat_svcctl_QueryServiceConfigW_state {
898 struct tevent_context *ev;
899 struct dcerpc_call_handle *call;
900 struct svcctl_QueryServiceConfigW *r;
903 static struct tevent_req *_s3_compat_svcctl_QueryServiceConfigW_send(TALLOC_CTX *mem_ctx,
904 struct tevent_context *ev,
905 struct dcerpc_call_handle *call,
906 struct svcctl_QueryServiceConfigW *r)
908 struct tevent_req *req;
909 struct _s3_compat_svcctl_QueryServiceConfigW_state *state;
910 struct pipes_struct *p;
912 req = tevent_req_create(mem_ctx, &state,
913 struct _s3_compat_svcctl_QueryServiceConfigW_state);
921 p = dcerpc_call_handle_get_pipes_struct(call);
923 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
924 return tevent_req_post(req, ev);
928 r->out.query = talloc_zero(r, struct QUERY_SERVICE_CONFIG);
929 if (tevent_req_nomem(r->out.query, req)) {
930 return tevent_req_post(req, ev);
933 r->out.needed = talloc_zero(r, uint32_t);
934 if (tevent_req_nomem(r->out.needed, req)) {
935 return tevent_req_post(req, ev);
938 r->out.result = _svcctl_QueryServiceConfigW(p, r);
940 if (p->fault_state) {
941 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
942 tevent_req_nterror(req, status);
943 return tevent_req_post(req, ev);
946 tevent_req_done(req);
947 return tevent_req_post(req, ev);
950 static NTSTATUS _s3_compat_svcctl_QueryServiceConfigW_recv(struct tevent_req *req)
952 return tevent_req_simple_recv_ntstatus(req);
955 struct _s3_compat_svcctl_QueryServiceLockStatusW_state {
956 struct tevent_context *ev;
957 struct dcerpc_call_handle *call;
958 struct svcctl_QueryServiceLockStatusW *r;
961 static struct tevent_req *_s3_compat_svcctl_QueryServiceLockStatusW_send(TALLOC_CTX *mem_ctx,
962 struct tevent_context *ev,
963 struct dcerpc_call_handle *call,
964 struct svcctl_QueryServiceLockStatusW *r)
966 struct tevent_req *req;
967 struct _s3_compat_svcctl_QueryServiceLockStatusW_state *state;
968 struct pipes_struct *p;
970 req = tevent_req_create(mem_ctx, &state,
971 struct _s3_compat_svcctl_QueryServiceLockStatusW_state);
979 p = dcerpc_call_handle_get_pipes_struct(call);
981 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
982 return tevent_req_post(req, ev);
986 r->out.lock_status = talloc_zero(r, struct SERVICE_LOCK_STATUS);
987 if (tevent_req_nomem(r->out.lock_status, req)) {
988 return tevent_req_post(req, ev);
991 r->out.needed = talloc_zero(r, uint32_t);
992 if (tevent_req_nomem(r->out.needed, req)) {
993 return tevent_req_post(req, ev);
996 r->out.result = _svcctl_QueryServiceLockStatusW(p, r);
998 if (p->fault_state) {
999 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1000 tevent_req_nterror(req, status);
1001 return tevent_req_post(req, ev);
1004 tevent_req_done(req);
1005 return tevent_req_post(req, ev);
1008 static NTSTATUS _s3_compat_svcctl_QueryServiceLockStatusW_recv(struct tevent_req *req)
1010 return tevent_req_simple_recv_ntstatus(req);
1013 struct _s3_compat_svcctl_StartServiceW_state {
1014 struct tevent_context *ev;
1015 struct dcerpc_call_handle *call;
1016 struct svcctl_StartServiceW *r;
1019 static struct tevent_req *_s3_compat_svcctl_StartServiceW_send(TALLOC_CTX *mem_ctx,
1020 struct tevent_context *ev,
1021 struct dcerpc_call_handle *call,
1022 struct svcctl_StartServiceW *r)
1024 struct tevent_req *req;
1025 struct _s3_compat_svcctl_StartServiceW_state *state;
1026 struct pipes_struct *p;
1028 req = tevent_req_create(mem_ctx, &state,
1029 struct _s3_compat_svcctl_StartServiceW_state);
1037 p = dcerpc_call_handle_get_pipes_struct(call);
1039 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1040 return tevent_req_post(req, ev);
1043 r->out.result = _svcctl_StartServiceW(p, r);
1045 if (p->fault_state) {
1046 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1047 tevent_req_nterror(req, status);
1048 return tevent_req_post(req, ev);
1051 tevent_req_done(req);
1052 return tevent_req_post(req, ev);
1055 static NTSTATUS _s3_compat_svcctl_StartServiceW_recv(struct tevent_req *req)
1057 return tevent_req_simple_recv_ntstatus(req);
1060 struct _s3_compat_svcctl_GetServiceDisplayNameW_state {
1061 struct tevent_context *ev;
1062 struct dcerpc_call_handle *call;
1063 struct svcctl_GetServiceDisplayNameW *r;
1066 static struct tevent_req *_s3_compat_svcctl_GetServiceDisplayNameW_send(TALLOC_CTX *mem_ctx,
1067 struct tevent_context *ev,
1068 struct dcerpc_call_handle *call,
1069 struct svcctl_GetServiceDisplayNameW *r)
1071 struct tevent_req *req;
1072 struct _s3_compat_svcctl_GetServiceDisplayNameW_state *state;
1073 struct pipes_struct *p;
1075 req = tevent_req_create(mem_ctx, &state,
1076 struct _s3_compat_svcctl_GetServiceDisplayNameW_state);
1084 p = dcerpc_call_handle_get_pipes_struct(call);
1086 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1087 return tevent_req_post(req, ev);
1090 ZERO_STRUCT(r->out);
1091 r->out.display_name_length = r->in.display_name_length;
1092 r->out.display_name = talloc_zero(r, const char *);
1093 if (tevent_req_nomem(r->out.display_name, req)) {
1094 return tevent_req_post(req, ev);
1097 r->out.result = _svcctl_GetServiceDisplayNameW(p, r);
1099 if (p->fault_state) {
1100 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1101 tevent_req_nterror(req, status);
1102 return tevent_req_post(req, ev);
1105 tevent_req_done(req);
1106 return tevent_req_post(req, ev);
1109 static NTSTATUS _s3_compat_svcctl_GetServiceDisplayNameW_recv(struct tevent_req *req)
1111 return tevent_req_simple_recv_ntstatus(req);
1114 struct _s3_compat_svcctl_GetServiceKeyNameW_state {
1115 struct tevent_context *ev;
1116 struct dcerpc_call_handle *call;
1117 struct svcctl_GetServiceKeyNameW *r;
1120 static struct tevent_req *_s3_compat_svcctl_GetServiceKeyNameW_send(TALLOC_CTX *mem_ctx,
1121 struct tevent_context *ev,
1122 struct dcerpc_call_handle *call,
1123 struct svcctl_GetServiceKeyNameW *r)
1125 struct tevent_req *req;
1126 struct _s3_compat_svcctl_GetServiceKeyNameW_state *state;
1127 struct pipes_struct *p;
1129 req = tevent_req_create(mem_ctx, &state,
1130 struct _s3_compat_svcctl_GetServiceKeyNameW_state);
1138 p = dcerpc_call_handle_get_pipes_struct(call);
1140 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1141 return tevent_req_post(req, ev);
1144 ZERO_STRUCT(r->out);
1145 r->out.display_name_length = r->in.display_name_length;
1146 r->out.key_name = talloc_zero(r, const char *);
1147 if (tevent_req_nomem(r->out.key_name, req)) {
1148 return tevent_req_post(req, ev);
1151 r->out.result = _svcctl_GetServiceKeyNameW(p, r);
1153 if (p->fault_state) {
1154 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1155 tevent_req_nterror(req, status);
1156 return tevent_req_post(req, ev);
1159 tevent_req_done(req);
1160 return tevent_req_post(req, ev);
1163 static NTSTATUS _s3_compat_svcctl_GetServiceKeyNameW_recv(struct tevent_req *req)
1165 return tevent_req_simple_recv_ntstatus(req);
1168 struct _s3_compat_svcctl_SCSetServiceBitsA_state {
1169 struct tevent_context *ev;
1170 struct dcerpc_call_handle *call;
1171 struct svcctl_SCSetServiceBitsA *r;
1174 static struct tevent_req *_s3_compat_svcctl_SCSetServiceBitsA_send(TALLOC_CTX *mem_ctx,
1175 struct tevent_context *ev,
1176 struct dcerpc_call_handle *call,
1177 struct svcctl_SCSetServiceBitsA *r)
1179 struct tevent_req *req;
1180 struct _s3_compat_svcctl_SCSetServiceBitsA_state *state;
1181 struct pipes_struct *p;
1183 req = tevent_req_create(mem_ctx, &state,
1184 struct _s3_compat_svcctl_SCSetServiceBitsA_state);
1192 p = dcerpc_call_handle_get_pipes_struct(call);
1194 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1195 return tevent_req_post(req, ev);
1198 r->out.result = _svcctl_SCSetServiceBitsA(p, r);
1200 if (p->fault_state) {
1201 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1202 tevent_req_nterror(req, status);
1203 return tevent_req_post(req, ev);
1206 tevent_req_done(req);
1207 return tevent_req_post(req, ev);
1210 static NTSTATUS _s3_compat_svcctl_SCSetServiceBitsA_recv(struct tevent_req *req)
1212 return tevent_req_simple_recv_ntstatus(req);
1215 struct _s3_compat_svcctl_ChangeServiceConfigA_state {
1216 struct tevent_context *ev;
1217 struct dcerpc_call_handle *call;
1218 struct svcctl_ChangeServiceConfigA *r;
1221 static struct tevent_req *_s3_compat_svcctl_ChangeServiceConfigA_send(TALLOC_CTX *mem_ctx,
1222 struct tevent_context *ev,
1223 struct dcerpc_call_handle *call,
1224 struct svcctl_ChangeServiceConfigA *r)
1226 struct tevent_req *req;
1227 struct _s3_compat_svcctl_ChangeServiceConfigA_state *state;
1228 struct pipes_struct *p;
1230 req = tevent_req_create(mem_ctx, &state,
1231 struct _s3_compat_svcctl_ChangeServiceConfigA_state);
1239 p = dcerpc_call_handle_get_pipes_struct(call);
1241 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1242 return tevent_req_post(req, ev);
1245 ZERO_STRUCT(r->out);
1246 r->out.tag_id = talloc_zero(r, uint32_t);
1247 if (tevent_req_nomem(r->out.tag_id, req)) {
1248 return tevent_req_post(req, ev);
1251 r->out.result = _svcctl_ChangeServiceConfigA(p, r);
1253 if (p->fault_state) {
1254 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1255 tevent_req_nterror(req, status);
1256 return tevent_req_post(req, ev);
1259 tevent_req_done(req);
1260 return tevent_req_post(req, ev);
1263 static NTSTATUS _s3_compat_svcctl_ChangeServiceConfigA_recv(struct tevent_req *req)
1265 return tevent_req_simple_recv_ntstatus(req);
1268 struct _s3_compat_svcctl_CreateServiceA_state {
1269 struct tevent_context *ev;
1270 struct dcerpc_call_handle *call;
1271 struct svcctl_CreateServiceA *r;
1274 static struct tevent_req *_s3_compat_svcctl_CreateServiceA_send(TALLOC_CTX *mem_ctx,
1275 struct tevent_context *ev,
1276 struct dcerpc_call_handle *call,
1277 struct svcctl_CreateServiceA *r)
1279 struct tevent_req *req;
1280 struct _s3_compat_svcctl_CreateServiceA_state *state;
1281 struct pipes_struct *p;
1283 req = tevent_req_create(mem_ctx, &state,
1284 struct _s3_compat_svcctl_CreateServiceA_state);
1292 p = dcerpc_call_handle_get_pipes_struct(call);
1294 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1295 return tevent_req_post(req, ev);
1298 ZERO_STRUCT(r->out);
1299 r->out.TagId = talloc_zero(r, uint32_t);
1300 if (tevent_req_nomem(r->out.TagId, req)) {
1301 return tevent_req_post(req, ev);
1304 r->out.result = _svcctl_CreateServiceA(p, r);
1306 if (p->fault_state) {
1307 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1308 tevent_req_nterror(req, status);
1309 return tevent_req_post(req, ev);
1312 tevent_req_done(req);
1313 return tevent_req_post(req, ev);
1316 static NTSTATUS _s3_compat_svcctl_CreateServiceA_recv(struct tevent_req *req)
1318 return tevent_req_simple_recv_ntstatus(req);
1321 struct _s3_compat_svcctl_EnumDependentServicesA_state {
1322 struct tevent_context *ev;
1323 struct dcerpc_call_handle *call;
1324 struct svcctl_EnumDependentServicesA *r;
1327 static struct tevent_req *_s3_compat_svcctl_EnumDependentServicesA_send(TALLOC_CTX *mem_ctx,
1328 struct tevent_context *ev,
1329 struct dcerpc_call_handle *call,
1330 struct svcctl_EnumDependentServicesA *r)
1332 struct tevent_req *req;
1333 struct _s3_compat_svcctl_EnumDependentServicesA_state *state;
1334 struct pipes_struct *p;
1336 req = tevent_req_create(mem_ctx, &state,
1337 struct _s3_compat_svcctl_EnumDependentServicesA_state);
1345 p = dcerpc_call_handle_get_pipes_struct(call);
1347 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1348 return tevent_req_post(req, ev);
1351 ZERO_STRUCT(r->out);
1352 r->out.service_status = talloc_zero(r, struct ENUM_SERVICE_STATUSA);
1353 if (tevent_req_nomem(r->out.service_status, req)) {
1354 return tevent_req_post(req, ev);
1357 r->out.needed = talloc_zero(r, uint32_t);
1358 if (tevent_req_nomem(r->out.needed, req)) {
1359 return tevent_req_post(req, ev);
1362 r->out.services_returned = talloc_zero(r, uint32_t);
1363 if (tevent_req_nomem(r->out.services_returned, req)) {
1364 return tevent_req_post(req, ev);
1367 r->out.result = _svcctl_EnumDependentServicesA(p, r);
1369 if (p->fault_state) {
1370 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1371 tevent_req_nterror(req, status);
1372 return tevent_req_post(req, ev);
1375 tevent_req_done(req);
1376 return tevent_req_post(req, ev);
1379 static NTSTATUS _s3_compat_svcctl_EnumDependentServicesA_recv(struct tevent_req *req)
1381 return tevent_req_simple_recv_ntstatus(req);
1384 struct _s3_compat_svcctl_EnumServicesStatusA_state {
1385 struct tevent_context *ev;
1386 struct dcerpc_call_handle *call;
1387 struct svcctl_EnumServicesStatusA *r;
1390 static struct tevent_req *_s3_compat_svcctl_EnumServicesStatusA_send(TALLOC_CTX *mem_ctx,
1391 struct tevent_context *ev,
1392 struct dcerpc_call_handle *call,
1393 struct svcctl_EnumServicesStatusA *r)
1395 struct tevent_req *req;
1396 struct _s3_compat_svcctl_EnumServicesStatusA_state *state;
1397 struct pipes_struct *p;
1399 req = tevent_req_create(mem_ctx, &state,
1400 struct _s3_compat_svcctl_EnumServicesStatusA_state);
1408 p = dcerpc_call_handle_get_pipes_struct(call);
1410 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1411 return tevent_req_post(req, ev);
1414 ZERO_STRUCT(r->out);
1415 r->out.resume_handle = r->in.resume_handle;
1416 r->out.service = talloc_zero_array(r, uint8_t, r->in.offered);
1417 if (tevent_req_nomem(r->out.service, req)) {
1418 return tevent_req_post(req, ev);
1421 r->out.needed = talloc_zero(r, uint32_t);
1422 if (tevent_req_nomem(r->out.needed, req)) {
1423 return tevent_req_post(req, ev);
1426 r->out.services_returned = talloc_zero(r, uint32_t);
1427 if (tevent_req_nomem(r->out.services_returned, req)) {
1428 return tevent_req_post(req, ev);
1431 r->out.result = _svcctl_EnumServicesStatusA(p, r);
1433 if (p->fault_state) {
1434 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1435 tevent_req_nterror(req, status);
1436 return tevent_req_post(req, ev);
1439 tevent_req_done(req);
1440 return tevent_req_post(req, ev);
1443 static NTSTATUS _s3_compat_svcctl_EnumServicesStatusA_recv(struct tevent_req *req)
1445 return tevent_req_simple_recv_ntstatus(req);
1448 struct _s3_compat_svcctl_OpenSCManagerA_state {
1449 struct tevent_context *ev;
1450 struct dcerpc_call_handle *call;
1451 struct svcctl_OpenSCManagerA *r;
1454 static struct tevent_req *_s3_compat_svcctl_OpenSCManagerA_send(TALLOC_CTX *mem_ctx,
1455 struct tevent_context *ev,
1456 struct dcerpc_call_handle *call,
1457 struct svcctl_OpenSCManagerA *r)
1459 struct tevent_req *req;
1460 struct _s3_compat_svcctl_OpenSCManagerA_state *state;
1461 struct pipes_struct *p;
1463 req = tevent_req_create(mem_ctx, &state,
1464 struct _s3_compat_svcctl_OpenSCManagerA_state);
1472 p = dcerpc_call_handle_get_pipes_struct(call);
1474 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1475 return tevent_req_post(req, ev);
1478 ZERO_STRUCT(r->out);
1479 r->out.handle = talloc_zero(r, struct policy_handle);
1480 if (tevent_req_nomem(r->out.handle, req)) {
1481 return tevent_req_post(req, ev);
1484 r->out.result = _svcctl_OpenSCManagerA(p, r);
1486 if (p->fault_state) {
1487 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1488 tevent_req_nterror(req, status);
1489 return tevent_req_post(req, ev);
1492 tevent_req_done(req);
1493 return tevent_req_post(req, ev);
1496 static NTSTATUS _s3_compat_svcctl_OpenSCManagerA_recv(struct tevent_req *req)
1498 return tevent_req_simple_recv_ntstatus(req);
1501 struct _s3_compat_svcctl_OpenServiceA_state {
1502 struct tevent_context *ev;
1503 struct dcerpc_call_handle *call;
1504 struct svcctl_OpenServiceA *r;
1507 static struct tevent_req *_s3_compat_svcctl_OpenServiceA_send(TALLOC_CTX *mem_ctx,
1508 struct tevent_context *ev,
1509 struct dcerpc_call_handle *call,
1510 struct svcctl_OpenServiceA *r)
1512 struct tevent_req *req;
1513 struct _s3_compat_svcctl_OpenServiceA_state *state;
1514 struct pipes_struct *p;
1516 req = tevent_req_create(mem_ctx, &state,
1517 struct _s3_compat_svcctl_OpenServiceA_state);
1525 p = dcerpc_call_handle_get_pipes_struct(call);
1527 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1528 return tevent_req_post(req, ev);
1531 ZERO_STRUCT(r->out);
1532 r->out.handle = talloc_zero(r, struct policy_handle);
1533 if (tevent_req_nomem(r->out.handle, req)) {
1534 return tevent_req_post(req, ev);
1537 r->out.result = _svcctl_OpenServiceA(p, r);
1539 if (p->fault_state) {
1540 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1541 tevent_req_nterror(req, status);
1542 return tevent_req_post(req, ev);
1545 tevent_req_done(req);
1546 return tevent_req_post(req, ev);
1549 static NTSTATUS _s3_compat_svcctl_OpenServiceA_recv(struct tevent_req *req)
1551 return tevent_req_simple_recv_ntstatus(req);
1554 struct _s3_compat_svcctl_QueryServiceConfigA_state {
1555 struct tevent_context *ev;
1556 struct dcerpc_call_handle *call;
1557 struct svcctl_QueryServiceConfigA *r;
1560 static struct tevent_req *_s3_compat_svcctl_QueryServiceConfigA_send(TALLOC_CTX *mem_ctx,
1561 struct tevent_context *ev,
1562 struct dcerpc_call_handle *call,
1563 struct svcctl_QueryServiceConfigA *r)
1565 struct tevent_req *req;
1566 struct _s3_compat_svcctl_QueryServiceConfigA_state *state;
1567 struct pipes_struct *p;
1569 req = tevent_req_create(mem_ctx, &state,
1570 struct _s3_compat_svcctl_QueryServiceConfigA_state);
1578 p = dcerpc_call_handle_get_pipes_struct(call);
1580 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1581 return tevent_req_post(req, ev);
1584 ZERO_STRUCT(r->out);
1585 r->out.query = talloc_zero_array(r, uint8_t, r->in.offered);
1586 if (tevent_req_nomem(r->out.query, req)) {
1587 return tevent_req_post(req, ev);
1590 r->out.needed = talloc_zero(r, uint32_t);
1591 if (tevent_req_nomem(r->out.needed, req)) {
1592 return tevent_req_post(req, ev);
1595 r->out.result = _svcctl_QueryServiceConfigA(p, r);
1597 if (p->fault_state) {
1598 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1599 tevent_req_nterror(req, status);
1600 return tevent_req_post(req, ev);
1603 tevent_req_done(req);
1604 return tevent_req_post(req, ev);
1607 static NTSTATUS _s3_compat_svcctl_QueryServiceConfigA_recv(struct tevent_req *req)
1609 return tevent_req_simple_recv_ntstatus(req);
1612 struct _s3_compat_svcctl_QueryServiceLockStatusA_state {
1613 struct tevent_context *ev;
1614 struct dcerpc_call_handle *call;
1615 struct svcctl_QueryServiceLockStatusA *r;
1618 static struct tevent_req *_s3_compat_svcctl_QueryServiceLockStatusA_send(TALLOC_CTX *mem_ctx,
1619 struct tevent_context *ev,
1620 struct dcerpc_call_handle *call,
1621 struct svcctl_QueryServiceLockStatusA *r)
1623 struct tevent_req *req;
1624 struct _s3_compat_svcctl_QueryServiceLockStatusA_state *state;
1625 struct pipes_struct *p;
1627 req = tevent_req_create(mem_ctx, &state,
1628 struct _s3_compat_svcctl_QueryServiceLockStatusA_state);
1636 p = dcerpc_call_handle_get_pipes_struct(call);
1638 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1639 return tevent_req_post(req, ev);
1642 ZERO_STRUCT(r->out);
1643 r->out.lock_status = talloc_zero(r, struct SERVICE_LOCK_STATUS);
1644 if (tevent_req_nomem(r->out.lock_status, req)) {
1645 return tevent_req_post(req, ev);
1648 r->out.needed = talloc_zero(r, uint32_t);
1649 if (tevent_req_nomem(r->out.needed, req)) {
1650 return tevent_req_post(req, ev);
1653 r->out.result = _svcctl_QueryServiceLockStatusA(p, r);
1655 if (p->fault_state) {
1656 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1657 tevent_req_nterror(req, status);
1658 return tevent_req_post(req, ev);
1661 tevent_req_done(req);
1662 return tevent_req_post(req, ev);
1665 static NTSTATUS _s3_compat_svcctl_QueryServiceLockStatusA_recv(struct tevent_req *req)
1667 return tevent_req_simple_recv_ntstatus(req);
1670 struct _s3_compat_svcctl_StartServiceA_state {
1671 struct tevent_context *ev;
1672 struct dcerpc_call_handle *call;
1673 struct svcctl_StartServiceA *r;
1676 static struct tevent_req *_s3_compat_svcctl_StartServiceA_send(TALLOC_CTX *mem_ctx,
1677 struct tevent_context *ev,
1678 struct dcerpc_call_handle *call,
1679 struct svcctl_StartServiceA *r)
1681 struct tevent_req *req;
1682 struct _s3_compat_svcctl_StartServiceA_state *state;
1683 struct pipes_struct *p;
1685 req = tevent_req_create(mem_ctx, &state,
1686 struct _s3_compat_svcctl_StartServiceA_state);
1694 p = dcerpc_call_handle_get_pipes_struct(call);
1696 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1697 return tevent_req_post(req, ev);
1700 r->out.result = _svcctl_StartServiceA(p, r);
1702 if (p->fault_state) {
1703 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1704 tevent_req_nterror(req, status);
1705 return tevent_req_post(req, ev);
1708 tevent_req_done(req);
1709 return tevent_req_post(req, ev);
1712 static NTSTATUS _s3_compat_svcctl_StartServiceA_recv(struct tevent_req *req)
1714 return tevent_req_simple_recv_ntstatus(req);
1717 struct _s3_compat_svcctl_GetServiceDisplayNameA_state {
1718 struct tevent_context *ev;
1719 struct dcerpc_call_handle *call;
1720 struct svcctl_GetServiceDisplayNameA *r;
1723 static struct tevent_req *_s3_compat_svcctl_GetServiceDisplayNameA_send(TALLOC_CTX *mem_ctx,
1724 struct tevent_context *ev,
1725 struct dcerpc_call_handle *call,
1726 struct svcctl_GetServiceDisplayNameA *r)
1728 struct tevent_req *req;
1729 struct _s3_compat_svcctl_GetServiceDisplayNameA_state *state;
1730 struct pipes_struct *p;
1732 req = tevent_req_create(mem_ctx, &state,
1733 struct _s3_compat_svcctl_GetServiceDisplayNameA_state);
1741 p = dcerpc_call_handle_get_pipes_struct(call);
1743 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1744 return tevent_req_post(req, ev);
1747 ZERO_STRUCT(r->out);
1748 r->out.display_name_length = r->in.display_name_length;
1749 r->out.display_name = talloc_zero(r, const char *);
1750 if (tevent_req_nomem(r->out.display_name, req)) {
1751 return tevent_req_post(req, ev);
1754 r->out.result = _svcctl_GetServiceDisplayNameA(p, r);
1756 if (p->fault_state) {
1757 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1758 tevent_req_nterror(req, status);
1759 return tevent_req_post(req, ev);
1762 tevent_req_done(req);
1763 return tevent_req_post(req, ev);
1766 static NTSTATUS _s3_compat_svcctl_GetServiceDisplayNameA_recv(struct tevent_req *req)
1768 return tevent_req_simple_recv_ntstatus(req);
1771 struct _s3_compat_svcctl_GetServiceKeyNameA_state {
1772 struct tevent_context *ev;
1773 struct dcerpc_call_handle *call;
1774 struct svcctl_GetServiceKeyNameA *r;
1777 static struct tevent_req *_s3_compat_svcctl_GetServiceKeyNameA_send(TALLOC_CTX *mem_ctx,
1778 struct tevent_context *ev,
1779 struct dcerpc_call_handle *call,
1780 struct svcctl_GetServiceKeyNameA *r)
1782 struct tevent_req *req;
1783 struct _s3_compat_svcctl_GetServiceKeyNameA_state *state;
1784 struct pipes_struct *p;
1786 req = tevent_req_create(mem_ctx, &state,
1787 struct _s3_compat_svcctl_GetServiceKeyNameA_state);
1795 p = dcerpc_call_handle_get_pipes_struct(call);
1797 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1798 return tevent_req_post(req, ev);
1801 ZERO_STRUCT(r->out);
1802 r->out.display_name_length = r->in.display_name_length;
1803 r->out.key_name = talloc_zero(r, const char *);
1804 if (tevent_req_nomem(r->out.key_name, req)) {
1805 return tevent_req_post(req, ev);
1808 r->out.result = _svcctl_GetServiceKeyNameA(p, r);
1810 if (p->fault_state) {
1811 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1812 tevent_req_nterror(req, status);
1813 return tevent_req_post(req, ev);
1816 tevent_req_done(req);
1817 return tevent_req_post(req, ev);
1820 static NTSTATUS _s3_compat_svcctl_GetServiceKeyNameA_recv(struct tevent_req *req)
1822 return tevent_req_simple_recv_ntstatus(req);
1825 struct _s3_compat_svcctl_GetCurrentGroupeStateW_state {
1826 struct tevent_context *ev;
1827 struct dcerpc_call_handle *call;
1828 struct svcctl_GetCurrentGroupeStateW *r;
1831 static struct tevent_req *_s3_compat_svcctl_GetCurrentGroupeStateW_send(TALLOC_CTX *mem_ctx,
1832 struct tevent_context *ev,
1833 struct dcerpc_call_handle *call,
1834 struct svcctl_GetCurrentGroupeStateW *r)
1836 struct tevent_req *req;
1837 struct _s3_compat_svcctl_GetCurrentGroupeStateW_state *state;
1838 struct pipes_struct *p;
1840 req = tevent_req_create(mem_ctx, &state,
1841 struct _s3_compat_svcctl_GetCurrentGroupeStateW_state);
1849 p = dcerpc_call_handle_get_pipes_struct(call);
1851 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1852 return tevent_req_post(req, ev);
1855 r->out.result = _svcctl_GetCurrentGroupeStateW(p, r);
1857 if (p->fault_state) {
1858 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1859 tevent_req_nterror(req, status);
1860 return tevent_req_post(req, ev);
1863 tevent_req_done(req);
1864 return tevent_req_post(req, ev);
1867 static NTSTATUS _s3_compat_svcctl_GetCurrentGroupeStateW_recv(struct tevent_req *req)
1869 return tevent_req_simple_recv_ntstatus(req);
1872 struct _s3_compat_svcctl_EnumServiceGroupW_state {
1873 struct tevent_context *ev;
1874 struct dcerpc_call_handle *call;
1875 struct svcctl_EnumServiceGroupW *r;
1878 static struct tevent_req *_s3_compat_svcctl_EnumServiceGroupW_send(TALLOC_CTX *mem_ctx,
1879 struct tevent_context *ev,
1880 struct dcerpc_call_handle *call,
1881 struct svcctl_EnumServiceGroupW *r)
1883 struct tevent_req *req;
1884 struct _s3_compat_svcctl_EnumServiceGroupW_state *state;
1885 struct pipes_struct *p;
1887 req = tevent_req_create(mem_ctx, &state,
1888 struct _s3_compat_svcctl_EnumServiceGroupW_state);
1896 p = dcerpc_call_handle_get_pipes_struct(call);
1898 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1899 return tevent_req_post(req, ev);
1902 r->out.result = _svcctl_EnumServiceGroupW(p, r);
1904 if (p->fault_state) {
1905 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1906 tevent_req_nterror(req, status);
1907 return tevent_req_post(req, ev);
1910 tevent_req_done(req);
1911 return tevent_req_post(req, ev);
1914 static NTSTATUS _s3_compat_svcctl_EnumServiceGroupW_recv(struct tevent_req *req)
1916 return tevent_req_simple_recv_ntstatus(req);
1919 struct _s3_compat_svcctl_ChangeServiceConfig2A_state {
1920 struct tevent_context *ev;
1921 struct dcerpc_call_handle *call;
1922 struct svcctl_ChangeServiceConfig2A *r;
1925 static struct tevent_req *_s3_compat_svcctl_ChangeServiceConfig2A_send(TALLOC_CTX *mem_ctx,
1926 struct tevent_context *ev,
1927 struct dcerpc_call_handle *call,
1928 struct svcctl_ChangeServiceConfig2A *r)
1930 struct tevent_req *req;
1931 struct _s3_compat_svcctl_ChangeServiceConfig2A_state *state;
1932 struct pipes_struct *p;
1934 req = tevent_req_create(mem_ctx, &state,
1935 struct _s3_compat_svcctl_ChangeServiceConfig2A_state);
1943 p = dcerpc_call_handle_get_pipes_struct(call);
1945 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1946 return tevent_req_post(req, ev);
1949 r->out.result = _svcctl_ChangeServiceConfig2A(p, r);
1951 if (p->fault_state) {
1952 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
1953 tevent_req_nterror(req, status);
1954 return tevent_req_post(req, ev);
1957 tevent_req_done(req);
1958 return tevent_req_post(req, ev);
1961 static NTSTATUS _s3_compat_svcctl_ChangeServiceConfig2A_recv(struct tevent_req *req)
1963 return tevent_req_simple_recv_ntstatus(req);
1966 struct _s3_compat_svcctl_ChangeServiceConfig2W_state {
1967 struct tevent_context *ev;
1968 struct dcerpc_call_handle *call;
1969 struct svcctl_ChangeServiceConfig2W *r;
1972 static struct tevent_req *_s3_compat_svcctl_ChangeServiceConfig2W_send(TALLOC_CTX *mem_ctx,
1973 struct tevent_context *ev,
1974 struct dcerpc_call_handle *call,
1975 struct svcctl_ChangeServiceConfig2W *r)
1977 struct tevent_req *req;
1978 struct _s3_compat_svcctl_ChangeServiceConfig2W_state *state;
1979 struct pipes_struct *p;
1981 req = tevent_req_create(mem_ctx, &state,
1982 struct _s3_compat_svcctl_ChangeServiceConfig2W_state);
1990 p = dcerpc_call_handle_get_pipes_struct(call);
1992 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
1993 return tevent_req_post(req, ev);
1996 r->out.result = _svcctl_ChangeServiceConfig2W(p, r);
1998 if (p->fault_state) {
1999 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
2000 tevent_req_nterror(req, status);
2001 return tevent_req_post(req, ev);
2004 tevent_req_done(req);
2005 return tevent_req_post(req, ev);
2008 static NTSTATUS _s3_compat_svcctl_ChangeServiceConfig2W_recv(struct tevent_req *req)
2010 return tevent_req_simple_recv_ntstatus(req);
2013 struct _s3_compat_svcctl_QueryServiceConfig2A_state {
2014 struct tevent_context *ev;
2015 struct dcerpc_call_handle *call;
2016 struct svcctl_QueryServiceConfig2A *r;
2019 static struct tevent_req *_s3_compat_svcctl_QueryServiceConfig2A_send(TALLOC_CTX *mem_ctx,
2020 struct tevent_context *ev,
2021 struct dcerpc_call_handle *call,
2022 struct svcctl_QueryServiceConfig2A *r)
2024 struct tevent_req *req;
2025 struct _s3_compat_svcctl_QueryServiceConfig2A_state *state;
2026 struct pipes_struct *p;
2028 req = tevent_req_create(mem_ctx, &state,
2029 struct _s3_compat_svcctl_QueryServiceConfig2A_state);
2037 p = dcerpc_call_handle_get_pipes_struct(call);
2039 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
2040 return tevent_req_post(req, ev);
2043 ZERO_STRUCT(r->out);
2044 r->out.buffer = talloc_zero_array(r, uint8_t, r->in.offered);
2045 if (tevent_req_nomem(r->out.buffer, req)) {
2046 return tevent_req_post(req, ev);
2049 r->out.needed = talloc_zero(r, uint32_t);
2050 if (tevent_req_nomem(r->out.needed, req)) {
2051 return tevent_req_post(req, ev);
2054 r->out.result = _svcctl_QueryServiceConfig2A(p, r);
2056 if (p->fault_state) {
2057 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
2058 tevent_req_nterror(req, status);
2059 return tevent_req_post(req, ev);
2062 tevent_req_done(req);
2063 return tevent_req_post(req, ev);
2066 static NTSTATUS _s3_compat_svcctl_QueryServiceConfig2A_recv(struct tevent_req *req)
2068 return tevent_req_simple_recv_ntstatus(req);
2071 struct _s3_compat_svcctl_QueryServiceConfig2W_state {
2072 struct tevent_context *ev;
2073 struct dcerpc_call_handle *call;
2074 struct svcctl_QueryServiceConfig2W *r;
2077 static struct tevent_req *_s3_compat_svcctl_QueryServiceConfig2W_send(TALLOC_CTX *mem_ctx,
2078 struct tevent_context *ev,
2079 struct dcerpc_call_handle *call,
2080 struct svcctl_QueryServiceConfig2W *r)
2082 struct tevent_req *req;
2083 struct _s3_compat_svcctl_QueryServiceConfig2W_state *state;
2084 struct pipes_struct *p;
2086 req = tevent_req_create(mem_ctx, &state,
2087 struct _s3_compat_svcctl_QueryServiceConfig2W_state);
2095 p = dcerpc_call_handle_get_pipes_struct(call);
2097 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
2098 return tevent_req_post(req, ev);
2101 ZERO_STRUCT(r->out);
2102 r->out.buffer = talloc_zero_array(r, uint8_t, r->in.offered);
2103 if (tevent_req_nomem(r->out.buffer, req)) {
2104 return tevent_req_post(req, ev);
2107 r->out.needed = talloc_zero(r, uint32_t);
2108 if (tevent_req_nomem(r->out.needed, req)) {
2109 return tevent_req_post(req, ev);
2112 r->out.result = _svcctl_QueryServiceConfig2W(p, r);
2114 if (p->fault_state) {
2115 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
2116 tevent_req_nterror(req, status);
2117 return tevent_req_post(req, ev);
2120 tevent_req_done(req);
2121 return tevent_req_post(req, ev);
2124 static NTSTATUS _s3_compat_svcctl_QueryServiceConfig2W_recv(struct tevent_req *req)
2126 return tevent_req_simple_recv_ntstatus(req);
2129 struct _s3_compat_svcctl_QueryServiceStatusEx_state {
2130 struct tevent_context *ev;
2131 struct dcerpc_call_handle *call;
2132 struct svcctl_QueryServiceStatusEx *r;
2135 static struct tevent_req *_s3_compat_svcctl_QueryServiceStatusEx_send(TALLOC_CTX *mem_ctx,
2136 struct tevent_context *ev,
2137 struct dcerpc_call_handle *call,
2138 struct svcctl_QueryServiceStatusEx *r)
2140 struct tevent_req *req;
2141 struct _s3_compat_svcctl_QueryServiceStatusEx_state *state;
2142 struct pipes_struct *p;
2144 req = tevent_req_create(mem_ctx, &state,
2145 struct _s3_compat_svcctl_QueryServiceStatusEx_state);
2153 p = dcerpc_call_handle_get_pipes_struct(call);
2155 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
2156 return tevent_req_post(req, ev);
2159 ZERO_STRUCT(r->out);
2160 r->out.buffer = talloc_zero_array(r, uint8_t, r->in.offered);
2161 if (tevent_req_nomem(r->out.buffer, req)) {
2162 return tevent_req_post(req, ev);
2165 r->out.needed = talloc_zero(r, uint32_t);
2166 if (tevent_req_nomem(r->out.needed, req)) {
2167 return tevent_req_post(req, ev);
2170 r->out.result = _svcctl_QueryServiceStatusEx(p, r);
2172 if (p->fault_state) {
2173 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
2174 tevent_req_nterror(req, status);
2175 return tevent_req_post(req, ev);
2178 tevent_req_done(req);
2179 return tevent_req_post(req, ev);
2182 static NTSTATUS _s3_compat_svcctl_QueryServiceStatusEx_recv(struct tevent_req *req)
2184 return tevent_req_simple_recv_ntstatus(req);
2187 struct _s3_compat_EnumServicesStatusExA_state {
2188 struct tevent_context *ev;
2189 struct dcerpc_call_handle *call;
2190 struct EnumServicesStatusExA *r;
2193 static struct tevent_req *_s3_compat_EnumServicesStatusExA_send(TALLOC_CTX *mem_ctx,
2194 struct tevent_context *ev,
2195 struct dcerpc_call_handle *call,
2196 struct EnumServicesStatusExA *r)
2198 struct tevent_req *req;
2199 struct _s3_compat_EnumServicesStatusExA_state *state;
2200 struct pipes_struct *p;
2202 req = tevent_req_create(mem_ctx, &state,
2203 struct _s3_compat_EnumServicesStatusExA_state);
2211 p = dcerpc_call_handle_get_pipes_struct(call);
2213 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
2214 return tevent_req_post(req, ev);
2217 ZERO_STRUCT(r->out);
2218 r->out.resume_handle = r->in.resume_handle;
2219 r->out.services = talloc_zero_array(r, uint8_t, r->in.offered);
2220 if (tevent_req_nomem(r->out.services, req)) {
2221 return tevent_req_post(req, ev);
2224 r->out.needed = talloc_zero(r, uint32_t);
2225 if (tevent_req_nomem(r->out.needed, req)) {
2226 return tevent_req_post(req, ev);
2229 r->out.service_returned = talloc_zero(r, uint32_t);
2230 if (tevent_req_nomem(r->out.service_returned, req)) {
2231 return tevent_req_post(req, ev);
2234 r->out.group_name = talloc_zero(r, const char *);
2235 if (tevent_req_nomem(r->out.group_name, req)) {
2236 return tevent_req_post(req, ev);
2239 r->out.result = _EnumServicesStatusExA(p, r);
2241 if (p->fault_state) {
2242 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
2243 tevent_req_nterror(req, status);
2244 return tevent_req_post(req, ev);
2247 tevent_req_done(req);
2248 return tevent_req_post(req, ev);
2251 static NTSTATUS _s3_compat_EnumServicesStatusExA_recv(struct tevent_req *req)
2253 return tevent_req_simple_recv_ntstatus(req);
2256 struct _s3_compat_EnumServicesStatusExW_state {
2257 struct tevent_context *ev;
2258 struct dcerpc_call_handle *call;
2259 struct EnumServicesStatusExW *r;
2262 static struct tevent_req *_s3_compat_EnumServicesStatusExW_send(TALLOC_CTX *mem_ctx,
2263 struct tevent_context *ev,
2264 struct dcerpc_call_handle *call,
2265 struct EnumServicesStatusExW *r)
2267 struct tevent_req *req;
2268 struct _s3_compat_EnumServicesStatusExW_state *state;
2269 struct pipes_struct *p;
2271 req = tevent_req_create(mem_ctx, &state,
2272 struct _s3_compat_EnumServicesStatusExW_state);
2280 p = dcerpc_call_handle_get_pipes_struct(call);
2282 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
2283 return tevent_req_post(req, ev);
2286 ZERO_STRUCT(r->out);
2287 r->out.resume_handle = r->in.resume_handle;
2288 r->out.services = talloc_zero_array(r, uint8_t, r->in.offered);
2289 if (tevent_req_nomem(r->out.services, req)) {
2290 return tevent_req_post(req, ev);
2293 r->out.needed = talloc_zero(r, uint32_t);
2294 if (tevent_req_nomem(r->out.needed, req)) {
2295 return tevent_req_post(req, ev);
2298 r->out.service_returned = talloc_zero(r, uint32_t);
2299 if (tevent_req_nomem(r->out.service_returned, req)) {
2300 return tevent_req_post(req, ev);
2303 r->out.result = _EnumServicesStatusExW(p, r);
2305 if (p->fault_state) {
2306 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
2307 tevent_req_nterror(req, status);
2308 return tevent_req_post(req, ev);
2311 tevent_req_done(req);
2312 return tevent_req_post(req, ev);
2315 static NTSTATUS _s3_compat_EnumServicesStatusExW_recv(struct tevent_req *req)
2317 return tevent_req_simple_recv_ntstatus(req);
2320 struct _s3_compat_svcctl_SCSendTSMessage_state {
2321 struct tevent_context *ev;
2322 struct dcerpc_call_handle *call;
2323 struct svcctl_SCSendTSMessage *r;
2326 static struct tevent_req *_s3_compat_svcctl_SCSendTSMessage_send(TALLOC_CTX *mem_ctx,
2327 struct tevent_context *ev,
2328 struct dcerpc_call_handle *call,
2329 struct svcctl_SCSendTSMessage *r)
2331 struct tevent_req *req;
2332 struct _s3_compat_svcctl_SCSendTSMessage_state *state;
2333 struct pipes_struct *p;
2335 req = tevent_req_create(mem_ctx, &state,
2336 struct _s3_compat_svcctl_SCSendTSMessage_state);
2344 p = dcerpc_call_handle_get_pipes_struct(call);
2346 tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
2347 return tevent_req_post(req, ev);
2350 r->out.result = _svcctl_SCSendTSMessage(p, r);
2352 if (p->fault_state) {
2353 NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
2354 tevent_req_nterror(req, status);
2355 return tevent_req_post(req, ev);
2358 tevent_req_done(req);
2359 return tevent_req_post(req, ev);
2362 static NTSTATUS _s3_compat_svcctl_SCSendTSMessage_recv(struct tevent_req *req)
2364 return tevent_req_simple_recv_ntstatus(req);
2368 static const struct dcerpc_call_entry_point_fns _s3_compat_svcctl_fns[] = {
2370 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2371 _s3_compat_svcctl_CloseServiceHandle_send,
2372 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2373 _s3_compat_svcctl_CloseServiceHandle_recv,
2376 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2377 _s3_compat_svcctl_ControlService_send,
2378 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2379 _s3_compat_svcctl_ControlService_recv,
2382 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2383 _s3_compat_svcctl_DeleteService_send,
2384 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2385 _s3_compat_svcctl_DeleteService_recv,
2388 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2389 _s3_compat_svcctl_LockServiceDatabase_send,
2390 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2391 _s3_compat_svcctl_LockServiceDatabase_recv,
2394 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2395 _s3_compat_svcctl_QueryServiceObjectSecurity_send,
2396 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2397 _s3_compat_svcctl_QueryServiceObjectSecurity_recv,
2400 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2401 _s3_compat_svcctl_SetServiceObjectSecurity_send,
2402 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2403 _s3_compat_svcctl_SetServiceObjectSecurity_recv,
2406 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2407 _s3_compat_svcctl_QueryServiceStatus_send,
2408 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2409 _s3_compat_svcctl_QueryServiceStatus_recv,
2412 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2413 _s3_compat_svcctl_SetServiceStatus_send,
2414 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2415 _s3_compat_svcctl_SetServiceStatus_recv,
2418 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2419 _s3_compat_svcctl_UnlockServiceDatabase_send,
2420 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2421 _s3_compat_svcctl_UnlockServiceDatabase_recv,
2424 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2425 _s3_compat_svcctl_NotifyBootConfigStatus_send,
2426 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2427 _s3_compat_svcctl_NotifyBootConfigStatus_recv,
2430 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2431 _s3_compat_svcctl_SCSetServiceBitsW_send,
2432 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2433 _s3_compat_svcctl_SCSetServiceBitsW_recv,
2436 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2437 _s3_compat_svcctl_ChangeServiceConfigW_send,
2438 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2439 _s3_compat_svcctl_ChangeServiceConfigW_recv,
2442 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2443 _s3_compat_svcctl_CreateServiceW_send,
2444 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2445 _s3_compat_svcctl_CreateServiceW_recv,
2448 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2449 _s3_compat_svcctl_EnumDependentServicesW_send,
2450 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2451 _s3_compat_svcctl_EnumDependentServicesW_recv,
2454 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2455 _s3_compat_svcctl_EnumServicesStatusW_send,
2456 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2457 _s3_compat_svcctl_EnumServicesStatusW_recv,
2460 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2461 _s3_compat_svcctl_OpenSCManagerW_send,
2462 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2463 _s3_compat_svcctl_OpenSCManagerW_recv,
2466 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2467 _s3_compat_svcctl_OpenServiceW_send,
2468 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2469 _s3_compat_svcctl_OpenServiceW_recv,
2472 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2473 _s3_compat_svcctl_QueryServiceConfigW_send,
2474 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2475 _s3_compat_svcctl_QueryServiceConfigW_recv,
2478 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2479 _s3_compat_svcctl_QueryServiceLockStatusW_send,
2480 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2481 _s3_compat_svcctl_QueryServiceLockStatusW_recv,
2484 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2485 _s3_compat_svcctl_StartServiceW_send,
2486 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2487 _s3_compat_svcctl_StartServiceW_recv,
2490 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2491 _s3_compat_svcctl_GetServiceDisplayNameW_send,
2492 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2493 _s3_compat_svcctl_GetServiceDisplayNameW_recv,
2496 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2497 _s3_compat_svcctl_GetServiceKeyNameW_send,
2498 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2499 _s3_compat_svcctl_GetServiceKeyNameW_recv,
2502 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2503 _s3_compat_svcctl_SCSetServiceBitsA_send,
2504 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2505 _s3_compat_svcctl_SCSetServiceBitsA_recv,
2508 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2509 _s3_compat_svcctl_ChangeServiceConfigA_send,
2510 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2511 _s3_compat_svcctl_ChangeServiceConfigA_recv,
2514 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2515 _s3_compat_svcctl_CreateServiceA_send,
2516 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2517 _s3_compat_svcctl_CreateServiceA_recv,
2520 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2521 _s3_compat_svcctl_EnumDependentServicesA_send,
2522 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2523 _s3_compat_svcctl_EnumDependentServicesA_recv,
2526 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2527 _s3_compat_svcctl_EnumServicesStatusA_send,
2528 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2529 _s3_compat_svcctl_EnumServicesStatusA_recv,
2532 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2533 _s3_compat_svcctl_OpenSCManagerA_send,
2534 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2535 _s3_compat_svcctl_OpenSCManagerA_recv,
2538 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2539 _s3_compat_svcctl_OpenServiceA_send,
2540 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2541 _s3_compat_svcctl_OpenServiceA_recv,
2544 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2545 _s3_compat_svcctl_QueryServiceConfigA_send,
2546 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2547 _s3_compat_svcctl_QueryServiceConfigA_recv,
2550 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2551 _s3_compat_svcctl_QueryServiceLockStatusA_send,
2552 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2553 _s3_compat_svcctl_QueryServiceLockStatusA_recv,
2556 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2557 _s3_compat_svcctl_StartServiceA_send,
2558 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2559 _s3_compat_svcctl_StartServiceA_recv,
2562 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2563 _s3_compat_svcctl_GetServiceDisplayNameA_send,
2564 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2565 _s3_compat_svcctl_GetServiceDisplayNameA_recv,
2568 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2569 _s3_compat_svcctl_GetServiceKeyNameA_send,
2570 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2571 _s3_compat_svcctl_GetServiceKeyNameA_recv,
2574 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2575 _s3_compat_svcctl_GetCurrentGroupeStateW_send,
2576 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2577 _s3_compat_svcctl_GetCurrentGroupeStateW_recv,
2580 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2581 _s3_compat_svcctl_EnumServiceGroupW_send,
2582 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2583 _s3_compat_svcctl_EnumServiceGroupW_recv,
2586 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2587 _s3_compat_svcctl_ChangeServiceConfig2A_send,
2588 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2589 _s3_compat_svcctl_ChangeServiceConfig2A_recv,
2592 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2593 _s3_compat_svcctl_ChangeServiceConfig2W_send,
2594 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2595 _s3_compat_svcctl_ChangeServiceConfig2W_recv,
2598 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2599 _s3_compat_svcctl_QueryServiceConfig2A_send,
2600 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2601 _s3_compat_svcctl_QueryServiceConfig2A_recv,
2604 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2605 _s3_compat_svcctl_QueryServiceConfig2W_send,
2606 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2607 _s3_compat_svcctl_QueryServiceConfig2W_recv,
2610 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2611 _s3_compat_svcctl_QueryServiceStatusEx_send,
2612 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2613 _s3_compat_svcctl_QueryServiceStatusEx_recv,
2616 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2617 _s3_compat_EnumServicesStatusExA_send,
2618 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2619 _s3_compat_EnumServicesStatusExA_recv,
2622 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2623 _s3_compat_EnumServicesStatusExW_send,
2624 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2625 _s3_compat_EnumServicesStatusExW_recv,
2628 .send_fn = (dcerpc_call_entry_point_send_fn_t)
2629 _s3_compat_svcctl_SCSendTSMessage_send,
2630 .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
2631 _s3_compat_svcctl_SCSendTSMessage_recv,
2639 static const struct dcerpc_call_entry_point_vector _s3_compat_svcctl_epv[] = {
2641 .name = "_s3_compat_svcctl",
2642 .table = &ndr_table_svcctl,
2644 .fns = _s3_compat_svcctl_fns,
2648 NTSTATUS dcerpc_server_setup_s3compat_svcctl(struct dcerpc_server *server)
2650 return NT_STATUS_NOT_IMPLEMENTED;