2 * Unix SMB/CIFS implementation.
3 * server auto-generated by pidl. DO NOT MODIFY!
7 #include "librpc/gen_ndr/srv_svcctl.h"
9 static bool api_svcctl_CloseServiceHandle(pipes_struct *p)
11 const struct ndr_interface_call *call;
12 struct ndr_pull *pull;
13 struct ndr_push *push;
14 enum ndr_err_code ndr_err;
16 struct svcctl_CloseServiceHandle *r;
18 call = &ndr_table_svcctl.calls[NDR_SVCCTL_CLOSESERVICEHANDLE];
20 r = talloc(NULL, struct svcctl_CloseServiceHandle);
25 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
30 pull = ndr_pull_init_blob(&blob, r);
36 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
37 ndr_err = call->ndr_pull(pull, NDR_IN, r);
38 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
44 NDR_PRINT_IN_DEBUG(svcctl_CloseServiceHandle, r);
47 r->out.handle = r->in.handle;
48 r->out.result = _svcctl_CloseServiceHandle(p, r);
50 if (p->rng_fault_state) {
52 /* Return True here, srv_pipe_hnd.c will take care */
57 NDR_PRINT_OUT_DEBUG(svcctl_CloseServiceHandle, r);
59 push = ndr_push_init_ctx(r);
65 ndr_err = call->ndr_push(push, NDR_OUT, r);
66 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
71 blob = ndr_push_blob(push);
72 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
82 static bool api_svcctl_ControlService(pipes_struct *p)
84 const struct ndr_interface_call *call;
85 struct ndr_pull *pull;
86 struct ndr_push *push;
87 enum ndr_err_code ndr_err;
89 struct svcctl_ControlService *r;
91 call = &ndr_table_svcctl.calls[NDR_SVCCTL_CONTROLSERVICE];
93 r = talloc(NULL, struct svcctl_ControlService);
98 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
103 pull = ndr_pull_init_blob(&blob, r);
109 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
110 ndr_err = call->ndr_pull(pull, NDR_IN, r);
111 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
116 if (DEBUGLEVEL >= 10)
117 NDR_PRINT_IN_DEBUG(svcctl_ControlService, r);
120 r->out.service_status = talloc_zero(r, struct SERVICE_STATUS);
121 if (r->out.service_status == NULL) {
126 r->out.result = _svcctl_ControlService(p, r);
128 if (p->rng_fault_state) {
130 /* Return True here, srv_pipe_hnd.c will take care */
134 if (DEBUGLEVEL >= 10)
135 NDR_PRINT_OUT_DEBUG(svcctl_ControlService, r);
137 push = ndr_push_init_ctx(r);
143 ndr_err = call->ndr_push(push, NDR_OUT, r);
144 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
149 blob = ndr_push_blob(push);
150 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
160 static bool api_svcctl_DeleteService(pipes_struct *p)
162 const struct ndr_interface_call *call;
163 struct ndr_pull *pull;
164 struct ndr_push *push;
165 enum ndr_err_code ndr_err;
167 struct svcctl_DeleteService *r;
169 call = &ndr_table_svcctl.calls[NDR_SVCCTL_DELETESERVICE];
171 r = talloc(NULL, struct svcctl_DeleteService);
176 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
181 pull = ndr_pull_init_blob(&blob, r);
187 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
188 ndr_err = call->ndr_pull(pull, NDR_IN, r);
189 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
194 if (DEBUGLEVEL >= 10)
195 NDR_PRINT_IN_DEBUG(svcctl_DeleteService, r);
197 r->out.result = _svcctl_DeleteService(p, r);
199 if (p->rng_fault_state) {
201 /* Return True here, srv_pipe_hnd.c will take care */
205 if (DEBUGLEVEL >= 10)
206 NDR_PRINT_OUT_DEBUG(svcctl_DeleteService, r);
208 push = ndr_push_init_ctx(r);
214 ndr_err = call->ndr_push(push, NDR_OUT, r);
215 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
220 blob = ndr_push_blob(push);
221 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
231 static bool api_svcctl_LockServiceDatabase(pipes_struct *p)
233 const struct ndr_interface_call *call;
234 struct ndr_pull *pull;
235 struct ndr_push *push;
236 enum ndr_err_code ndr_err;
238 struct svcctl_LockServiceDatabase *r;
240 call = &ndr_table_svcctl.calls[NDR_SVCCTL_LOCKSERVICEDATABASE];
242 r = talloc(NULL, struct svcctl_LockServiceDatabase);
247 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
252 pull = ndr_pull_init_blob(&blob, r);
258 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
259 ndr_err = call->ndr_pull(pull, NDR_IN, r);
260 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
265 if (DEBUGLEVEL >= 10)
266 NDR_PRINT_IN_DEBUG(svcctl_LockServiceDatabase, r);
269 r->out.lock = talloc_zero(r, struct policy_handle);
270 if (r->out.lock == NULL) {
275 r->out.result = _svcctl_LockServiceDatabase(p, r);
277 if (p->rng_fault_state) {
279 /* Return True here, srv_pipe_hnd.c will take care */
283 if (DEBUGLEVEL >= 10)
284 NDR_PRINT_OUT_DEBUG(svcctl_LockServiceDatabase, r);
286 push = ndr_push_init_ctx(r);
292 ndr_err = call->ndr_push(push, NDR_OUT, r);
293 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
298 blob = ndr_push_blob(push);
299 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
309 static bool api_svcctl_QueryServiceObjectSecurity(pipes_struct *p)
311 const struct ndr_interface_call *call;
312 struct ndr_pull *pull;
313 struct ndr_push *push;
314 enum ndr_err_code ndr_err;
316 struct svcctl_QueryServiceObjectSecurity *r;
318 call = &ndr_table_svcctl.calls[NDR_SVCCTL_QUERYSERVICEOBJECTSECURITY];
320 r = talloc(NULL, struct svcctl_QueryServiceObjectSecurity);
325 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
330 pull = ndr_pull_init_blob(&blob, r);
336 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
337 ndr_err = call->ndr_pull(pull, NDR_IN, r);
338 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
343 if (DEBUGLEVEL >= 10)
344 NDR_PRINT_IN_DEBUG(svcctl_QueryServiceObjectSecurity, r);
346 r->out.result = _svcctl_QueryServiceObjectSecurity(p, r);
348 if (p->rng_fault_state) {
350 /* Return True here, srv_pipe_hnd.c will take care */
354 if (DEBUGLEVEL >= 10)
355 NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceObjectSecurity, r);
357 push = ndr_push_init_ctx(r);
363 ndr_err = call->ndr_push(push, NDR_OUT, r);
364 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
369 blob = ndr_push_blob(push);
370 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
380 static bool api_svcctl_SetServiceObjectSecurity(pipes_struct *p)
382 const struct ndr_interface_call *call;
383 struct ndr_pull *pull;
384 struct ndr_push *push;
385 enum ndr_err_code ndr_err;
387 struct svcctl_SetServiceObjectSecurity *r;
389 call = &ndr_table_svcctl.calls[NDR_SVCCTL_SETSERVICEOBJECTSECURITY];
391 r = talloc(NULL, struct svcctl_SetServiceObjectSecurity);
396 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
401 pull = ndr_pull_init_blob(&blob, r);
407 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
408 ndr_err = call->ndr_pull(pull, NDR_IN, r);
409 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
414 if (DEBUGLEVEL >= 10)
415 NDR_PRINT_IN_DEBUG(svcctl_SetServiceObjectSecurity, r);
417 r->out.result = _svcctl_SetServiceObjectSecurity(p, r);
419 if (p->rng_fault_state) {
421 /* Return True here, srv_pipe_hnd.c will take care */
425 if (DEBUGLEVEL >= 10)
426 NDR_PRINT_OUT_DEBUG(svcctl_SetServiceObjectSecurity, r);
428 push = ndr_push_init_ctx(r);
434 ndr_err = call->ndr_push(push, NDR_OUT, r);
435 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
440 blob = ndr_push_blob(push);
441 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
451 static bool api_svcctl_QueryServiceStatus(pipes_struct *p)
453 const struct ndr_interface_call *call;
454 struct ndr_pull *pull;
455 struct ndr_push *push;
456 enum ndr_err_code ndr_err;
458 struct svcctl_QueryServiceStatus *r;
460 call = &ndr_table_svcctl.calls[NDR_SVCCTL_QUERYSERVICESTATUS];
462 r = talloc(NULL, struct svcctl_QueryServiceStatus);
467 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
472 pull = ndr_pull_init_blob(&blob, r);
478 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
479 ndr_err = call->ndr_pull(pull, NDR_IN, r);
480 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
485 if (DEBUGLEVEL >= 10)
486 NDR_PRINT_IN_DEBUG(svcctl_QueryServiceStatus, r);
489 r->out.service_status = talloc_zero(r, struct SERVICE_STATUS);
490 if (r->out.service_status == NULL) {
495 r->out.result = _svcctl_QueryServiceStatus(p, r);
497 if (p->rng_fault_state) {
499 /* Return True here, srv_pipe_hnd.c will take care */
503 if (DEBUGLEVEL >= 10)
504 NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceStatus, r);
506 push = ndr_push_init_ctx(r);
512 ndr_err = call->ndr_push(push, NDR_OUT, r);
513 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
518 blob = ndr_push_blob(push);
519 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
529 static bool api_svcctl_SetServiceStatus(pipes_struct *p)
531 const struct ndr_interface_call *call;
532 struct ndr_pull *pull;
533 struct ndr_push *push;
534 enum ndr_err_code ndr_err;
536 struct svcctl_SetServiceStatus *r;
538 call = &ndr_table_svcctl.calls[NDR_SVCCTL_SETSERVICESTATUS];
540 r = talloc(NULL, struct svcctl_SetServiceStatus);
545 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
550 pull = ndr_pull_init_blob(&blob, r);
556 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
557 ndr_err = call->ndr_pull(pull, NDR_IN, r);
558 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
563 if (DEBUGLEVEL >= 10)
564 NDR_PRINT_IN_DEBUG(svcctl_SetServiceStatus, r);
566 r->out.result = _svcctl_SetServiceStatus(p, r);
568 if (p->rng_fault_state) {
570 /* Return True here, srv_pipe_hnd.c will take care */
574 if (DEBUGLEVEL >= 10)
575 NDR_PRINT_OUT_DEBUG(svcctl_SetServiceStatus, r);
577 push = ndr_push_init_ctx(r);
583 ndr_err = call->ndr_push(push, NDR_OUT, r);
584 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
589 blob = ndr_push_blob(push);
590 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
600 static bool api_svcctl_UnlockServiceDatabase(pipes_struct *p)
602 const struct ndr_interface_call *call;
603 struct ndr_pull *pull;
604 struct ndr_push *push;
605 enum ndr_err_code ndr_err;
607 struct svcctl_UnlockServiceDatabase *r;
609 call = &ndr_table_svcctl.calls[NDR_SVCCTL_UNLOCKSERVICEDATABASE];
611 r = talloc(NULL, struct svcctl_UnlockServiceDatabase);
616 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
621 pull = ndr_pull_init_blob(&blob, r);
627 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
628 ndr_err = call->ndr_pull(pull, NDR_IN, r);
629 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
634 if (DEBUGLEVEL >= 10)
635 NDR_PRINT_IN_DEBUG(svcctl_UnlockServiceDatabase, r);
638 r->out.lock = r->in.lock;
639 r->out.result = _svcctl_UnlockServiceDatabase(p, r);
641 if (p->rng_fault_state) {
643 /* Return True here, srv_pipe_hnd.c will take care */
647 if (DEBUGLEVEL >= 10)
648 NDR_PRINT_OUT_DEBUG(svcctl_UnlockServiceDatabase, r);
650 push = ndr_push_init_ctx(r);
656 ndr_err = call->ndr_push(push, NDR_OUT, r);
657 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
662 blob = ndr_push_blob(push);
663 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
673 static bool api_svcctl_NotifyBootConfigStatus(pipes_struct *p)
675 const struct ndr_interface_call *call;
676 struct ndr_pull *pull;
677 struct ndr_push *push;
678 enum ndr_err_code ndr_err;
680 struct svcctl_NotifyBootConfigStatus *r;
682 call = &ndr_table_svcctl.calls[NDR_SVCCTL_NOTIFYBOOTCONFIGSTATUS];
684 r = talloc(NULL, struct svcctl_NotifyBootConfigStatus);
689 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
694 pull = ndr_pull_init_blob(&blob, r);
700 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
701 ndr_err = call->ndr_pull(pull, NDR_IN, r);
702 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
707 if (DEBUGLEVEL >= 10)
708 NDR_PRINT_IN_DEBUG(svcctl_NotifyBootConfigStatus, r);
710 r->out.result = _svcctl_NotifyBootConfigStatus(p, r);
712 if (p->rng_fault_state) {
714 /* Return True here, srv_pipe_hnd.c will take care */
718 if (DEBUGLEVEL >= 10)
719 NDR_PRINT_OUT_DEBUG(svcctl_NotifyBootConfigStatus, r);
721 push = ndr_push_init_ctx(r);
727 ndr_err = call->ndr_push(push, NDR_OUT, r);
728 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
733 blob = ndr_push_blob(push);
734 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
744 static bool api_svcctl_SCSetServiceBitsW(pipes_struct *p)
746 const struct ndr_interface_call *call;
747 struct ndr_pull *pull;
748 struct ndr_push *push;
749 enum ndr_err_code ndr_err;
751 struct svcctl_SCSetServiceBitsW *r;
753 call = &ndr_table_svcctl.calls[NDR_SVCCTL_SCSETSERVICEBITSW];
755 r = talloc(NULL, struct svcctl_SCSetServiceBitsW);
760 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
765 pull = ndr_pull_init_blob(&blob, r);
771 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
772 ndr_err = call->ndr_pull(pull, NDR_IN, r);
773 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
778 if (DEBUGLEVEL >= 10)
779 NDR_PRINT_IN_DEBUG(svcctl_SCSetServiceBitsW, r);
781 r->out.result = _svcctl_SCSetServiceBitsW(p, r);
783 if (p->rng_fault_state) {
785 /* Return True here, srv_pipe_hnd.c will take care */
789 if (DEBUGLEVEL >= 10)
790 NDR_PRINT_OUT_DEBUG(svcctl_SCSetServiceBitsW, r);
792 push = ndr_push_init_ctx(r);
798 ndr_err = call->ndr_push(push, NDR_OUT, r);
799 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
804 blob = ndr_push_blob(push);
805 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
815 static bool api_svcctl_ChangeServiceConfigW(pipes_struct *p)
817 const struct ndr_interface_call *call;
818 struct ndr_pull *pull;
819 struct ndr_push *push;
820 enum ndr_err_code ndr_err;
822 struct svcctl_ChangeServiceConfigW *r;
824 call = &ndr_table_svcctl.calls[NDR_SVCCTL_CHANGESERVICECONFIGW];
826 r = talloc(NULL, struct svcctl_ChangeServiceConfigW);
831 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
836 pull = ndr_pull_init_blob(&blob, r);
842 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
843 ndr_err = call->ndr_pull(pull, NDR_IN, r);
844 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
849 if (DEBUGLEVEL >= 10)
850 NDR_PRINT_IN_DEBUG(svcctl_ChangeServiceConfigW, r);
853 r->out.tag_id = talloc_zero(r, uint32_t);
854 if (r->out.tag_id == NULL) {
859 r->out.result = _svcctl_ChangeServiceConfigW(p, r);
861 if (p->rng_fault_state) {
863 /* Return True here, srv_pipe_hnd.c will take care */
867 if (DEBUGLEVEL >= 10)
868 NDR_PRINT_OUT_DEBUG(svcctl_ChangeServiceConfigW, r);
870 push = ndr_push_init_ctx(r);
876 ndr_err = call->ndr_push(push, NDR_OUT, r);
877 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
882 blob = ndr_push_blob(push);
883 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
893 static bool api_svcctl_CreateServiceW(pipes_struct *p)
895 const struct ndr_interface_call *call;
896 struct ndr_pull *pull;
897 struct ndr_push *push;
898 enum ndr_err_code ndr_err;
900 struct svcctl_CreateServiceW *r;
902 call = &ndr_table_svcctl.calls[NDR_SVCCTL_CREATESERVICEW];
904 r = talloc(NULL, struct svcctl_CreateServiceW);
909 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
914 pull = ndr_pull_init_blob(&blob, r);
920 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
921 ndr_err = call->ndr_pull(pull, NDR_IN, r);
922 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
927 if (DEBUGLEVEL >= 10)
928 NDR_PRINT_IN_DEBUG(svcctl_CreateServiceW, r);
931 r->out.TagId = r->in.TagId;
932 r->out.handle = talloc_zero(r, struct policy_handle);
933 if (r->out.handle == NULL) {
938 r->out.result = _svcctl_CreateServiceW(p, r);
940 if (p->rng_fault_state) {
942 /* Return True here, srv_pipe_hnd.c will take care */
946 if (DEBUGLEVEL >= 10)
947 NDR_PRINT_OUT_DEBUG(svcctl_CreateServiceW, r);
949 push = ndr_push_init_ctx(r);
955 ndr_err = call->ndr_push(push, NDR_OUT, r);
956 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
961 blob = ndr_push_blob(push);
962 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
972 static bool api_svcctl_EnumDependentServicesW(pipes_struct *p)
974 const struct ndr_interface_call *call;
975 struct ndr_pull *pull;
976 struct ndr_push *push;
977 enum ndr_err_code ndr_err;
979 struct svcctl_EnumDependentServicesW *r;
981 call = &ndr_table_svcctl.calls[NDR_SVCCTL_ENUMDEPENDENTSERVICESW];
983 r = talloc(NULL, struct svcctl_EnumDependentServicesW);
988 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
993 pull = ndr_pull_init_blob(&blob, r);
999 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1000 ndr_err = call->ndr_pull(pull, NDR_IN, r);
1001 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1006 if (DEBUGLEVEL >= 10)
1007 NDR_PRINT_IN_DEBUG(svcctl_EnumDependentServicesW, r);
1009 ZERO_STRUCT(r->out);
1010 r->out.service_status = talloc_zero(r, struct ENUM_SERVICE_STATUS);
1011 if (r->out.service_status == NULL) {
1016 r->out.bytes_needed = talloc_zero(r, uint32_t);
1017 if (r->out.bytes_needed == NULL) {
1022 r->out.services_returned = talloc_zero(r, uint32_t);
1023 if (r->out.services_returned == NULL) {
1028 r->out.result = _svcctl_EnumDependentServicesW(p, r);
1030 if (p->rng_fault_state) {
1032 /* Return True here, srv_pipe_hnd.c will take care */
1036 if (DEBUGLEVEL >= 10)
1037 NDR_PRINT_OUT_DEBUG(svcctl_EnumDependentServicesW, r);
1039 push = ndr_push_init_ctx(r);
1045 ndr_err = call->ndr_push(push, NDR_OUT, r);
1046 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1051 blob = ndr_push_blob(push);
1052 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
1062 static bool api_svcctl_EnumServicesStatusW(pipes_struct *p)
1064 const struct ndr_interface_call *call;
1065 struct ndr_pull *pull;
1066 struct ndr_push *push;
1067 enum ndr_err_code ndr_err;
1069 struct svcctl_EnumServicesStatusW *r;
1071 call = &ndr_table_svcctl.calls[NDR_SVCCTL_ENUMSERVICESSTATUSW];
1073 r = talloc(NULL, struct svcctl_EnumServicesStatusW);
1078 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1083 pull = ndr_pull_init_blob(&blob, r);
1089 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1090 ndr_err = call->ndr_pull(pull, NDR_IN, r);
1091 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1096 if (DEBUGLEVEL >= 10)
1097 NDR_PRINT_IN_DEBUG(svcctl_EnumServicesStatusW, r);
1099 ZERO_STRUCT(r->out);
1100 r->out.service = talloc_zero_array(r, uint8_t, r->in.buf_size);
1101 if (r->out.service == NULL) {
1106 r->out.bytes_needed = talloc_zero(r, uint32_t);
1107 if (r->out.bytes_needed == NULL) {
1112 r->out.services_returned = talloc_zero(r, uint32_t);
1113 if (r->out.services_returned == NULL) {
1118 r->out.resume_handle = r->in.resume_handle;
1119 r->out.result = _svcctl_EnumServicesStatusW(p, r);
1121 if (p->rng_fault_state) {
1123 /* Return True here, srv_pipe_hnd.c will take care */
1127 if (DEBUGLEVEL >= 10)
1128 NDR_PRINT_OUT_DEBUG(svcctl_EnumServicesStatusW, r);
1130 push = ndr_push_init_ctx(r);
1136 ndr_err = call->ndr_push(push, NDR_OUT, r);
1137 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1142 blob = ndr_push_blob(push);
1143 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
1153 static bool api_svcctl_OpenSCManagerW(pipes_struct *p)
1155 const struct ndr_interface_call *call;
1156 struct ndr_pull *pull;
1157 struct ndr_push *push;
1158 enum ndr_err_code ndr_err;
1160 struct svcctl_OpenSCManagerW *r;
1162 call = &ndr_table_svcctl.calls[NDR_SVCCTL_OPENSCMANAGERW];
1164 r = talloc(NULL, struct svcctl_OpenSCManagerW);
1169 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1174 pull = ndr_pull_init_blob(&blob, r);
1180 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1181 ndr_err = call->ndr_pull(pull, NDR_IN, r);
1182 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1187 if (DEBUGLEVEL >= 10)
1188 NDR_PRINT_IN_DEBUG(svcctl_OpenSCManagerW, r);
1190 ZERO_STRUCT(r->out);
1191 r->out.handle = talloc_zero(r, struct policy_handle);
1192 if (r->out.handle == NULL) {
1197 r->out.result = _svcctl_OpenSCManagerW(p, r);
1199 if (p->rng_fault_state) {
1201 /* Return True here, srv_pipe_hnd.c will take care */
1205 if (DEBUGLEVEL >= 10)
1206 NDR_PRINT_OUT_DEBUG(svcctl_OpenSCManagerW, r);
1208 push = ndr_push_init_ctx(r);
1214 ndr_err = call->ndr_push(push, NDR_OUT, r);
1215 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1220 blob = ndr_push_blob(push);
1221 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
1231 static bool api_svcctl_OpenServiceW(pipes_struct *p)
1233 const struct ndr_interface_call *call;
1234 struct ndr_pull *pull;
1235 struct ndr_push *push;
1236 enum ndr_err_code ndr_err;
1238 struct svcctl_OpenServiceW *r;
1240 call = &ndr_table_svcctl.calls[NDR_SVCCTL_OPENSERVICEW];
1242 r = talloc(NULL, struct svcctl_OpenServiceW);
1247 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1252 pull = ndr_pull_init_blob(&blob, r);
1258 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1259 ndr_err = call->ndr_pull(pull, NDR_IN, r);
1260 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1265 if (DEBUGLEVEL >= 10)
1266 NDR_PRINT_IN_DEBUG(svcctl_OpenServiceW, r);
1268 ZERO_STRUCT(r->out);
1269 r->out.handle = talloc_zero(r, struct policy_handle);
1270 if (r->out.handle == NULL) {
1275 r->out.result = _svcctl_OpenServiceW(p, r);
1277 if (p->rng_fault_state) {
1279 /* Return True here, srv_pipe_hnd.c will take care */
1283 if (DEBUGLEVEL >= 10)
1284 NDR_PRINT_OUT_DEBUG(svcctl_OpenServiceW, r);
1286 push = ndr_push_init_ctx(r);
1292 ndr_err = call->ndr_push(push, NDR_OUT, r);
1293 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1298 blob = ndr_push_blob(push);
1299 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
1309 static bool api_svcctl_QueryServiceConfigW(pipes_struct *p)
1311 const struct ndr_interface_call *call;
1312 struct ndr_pull *pull;
1313 struct ndr_push *push;
1314 enum ndr_err_code ndr_err;
1316 struct svcctl_QueryServiceConfigW *r;
1318 call = &ndr_table_svcctl.calls[NDR_SVCCTL_QUERYSERVICECONFIGW];
1320 r = talloc(NULL, struct svcctl_QueryServiceConfigW);
1325 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1330 pull = ndr_pull_init_blob(&blob, r);
1336 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1337 ndr_err = call->ndr_pull(pull, NDR_IN, r);
1338 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1343 if (DEBUGLEVEL >= 10)
1344 NDR_PRINT_IN_DEBUG(svcctl_QueryServiceConfigW, r);
1346 ZERO_STRUCT(r->out);
1347 r->out.query = talloc_zero_array(r, uint8_t, r->in.buf_size);
1348 if (r->out.query == NULL) {
1353 r->out.bytes_needed = talloc_zero(r, uint32_t);
1354 if (r->out.bytes_needed == NULL) {
1359 r->out.result = _svcctl_QueryServiceConfigW(p, r);
1361 if (p->rng_fault_state) {
1363 /* Return True here, srv_pipe_hnd.c will take care */
1367 if (DEBUGLEVEL >= 10)
1368 NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceConfigW, r);
1370 push = ndr_push_init_ctx(r);
1376 ndr_err = call->ndr_push(push, NDR_OUT, r);
1377 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1382 blob = ndr_push_blob(push);
1383 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
1393 static bool api_svcctl_QueryServiceLockStatusW(pipes_struct *p)
1395 const struct ndr_interface_call *call;
1396 struct ndr_pull *pull;
1397 struct ndr_push *push;
1398 enum ndr_err_code ndr_err;
1400 struct svcctl_QueryServiceLockStatusW *r;
1402 call = &ndr_table_svcctl.calls[NDR_SVCCTL_QUERYSERVICELOCKSTATUSW];
1404 r = talloc(NULL, struct svcctl_QueryServiceLockStatusW);
1409 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1414 pull = ndr_pull_init_blob(&blob, r);
1420 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1421 ndr_err = call->ndr_pull(pull, NDR_IN, r);
1422 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1427 if (DEBUGLEVEL >= 10)
1428 NDR_PRINT_IN_DEBUG(svcctl_QueryServiceLockStatusW, r);
1430 ZERO_STRUCT(r->out);
1431 r->out.lock_status = talloc_zero(r, struct SERVICE_LOCK_STATUS);
1432 if (r->out.lock_status == NULL) {
1437 r->out.required_buf_size = talloc_zero(r, uint32_t);
1438 if (r->out.required_buf_size == NULL) {
1443 r->out.result = _svcctl_QueryServiceLockStatusW(p, r);
1445 if (p->rng_fault_state) {
1447 /* Return True here, srv_pipe_hnd.c will take care */
1451 if (DEBUGLEVEL >= 10)
1452 NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceLockStatusW, r);
1454 push = ndr_push_init_ctx(r);
1460 ndr_err = call->ndr_push(push, NDR_OUT, r);
1461 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1466 blob = ndr_push_blob(push);
1467 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
1477 static bool api_svcctl_StartServiceW(pipes_struct *p)
1479 const struct ndr_interface_call *call;
1480 struct ndr_pull *pull;
1481 struct ndr_push *push;
1482 enum ndr_err_code ndr_err;
1484 struct svcctl_StartServiceW *r;
1486 call = &ndr_table_svcctl.calls[NDR_SVCCTL_STARTSERVICEW];
1488 r = talloc(NULL, struct svcctl_StartServiceW);
1493 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1498 pull = ndr_pull_init_blob(&blob, r);
1504 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1505 ndr_err = call->ndr_pull(pull, NDR_IN, r);
1506 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1511 if (DEBUGLEVEL >= 10)
1512 NDR_PRINT_IN_DEBUG(svcctl_StartServiceW, r);
1514 r->out.result = _svcctl_StartServiceW(p, r);
1516 if (p->rng_fault_state) {
1518 /* Return True here, srv_pipe_hnd.c will take care */
1522 if (DEBUGLEVEL >= 10)
1523 NDR_PRINT_OUT_DEBUG(svcctl_StartServiceW, r);
1525 push = ndr_push_init_ctx(r);
1531 ndr_err = call->ndr_push(push, NDR_OUT, r);
1532 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1537 blob = ndr_push_blob(push);
1538 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
1548 static bool api_svcctl_GetServiceDisplayNameW(pipes_struct *p)
1550 const struct ndr_interface_call *call;
1551 struct ndr_pull *pull;
1552 struct ndr_push *push;
1553 enum ndr_err_code ndr_err;
1555 struct svcctl_GetServiceDisplayNameW *r;
1557 call = &ndr_table_svcctl.calls[NDR_SVCCTL_GETSERVICEDISPLAYNAMEW];
1559 r = talloc(NULL, struct svcctl_GetServiceDisplayNameW);
1564 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1569 pull = ndr_pull_init_blob(&blob, r);
1575 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1576 ndr_err = call->ndr_pull(pull, NDR_IN, r);
1577 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1582 if (DEBUGLEVEL >= 10)
1583 NDR_PRINT_IN_DEBUG(svcctl_GetServiceDisplayNameW, r);
1585 ZERO_STRUCT(r->out);
1586 r->out.display_name = talloc_zero(r, const char *);
1587 if (r->out.display_name == NULL) {
1592 r->out.display_name_length = r->in.display_name_length;
1593 r->out.result = _svcctl_GetServiceDisplayNameW(p, r);
1595 if (p->rng_fault_state) {
1597 /* Return True here, srv_pipe_hnd.c will take care */
1601 if (DEBUGLEVEL >= 10)
1602 NDR_PRINT_OUT_DEBUG(svcctl_GetServiceDisplayNameW, r);
1604 push = ndr_push_init_ctx(r);
1610 ndr_err = call->ndr_push(push, NDR_OUT, r);
1611 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1616 blob = ndr_push_blob(push);
1617 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
1627 static bool api_svcctl_GetServiceKeyNameW(pipes_struct *p)
1629 const struct ndr_interface_call *call;
1630 struct ndr_pull *pull;
1631 struct ndr_push *push;
1632 enum ndr_err_code ndr_err;
1634 struct svcctl_GetServiceKeyNameW *r;
1636 call = &ndr_table_svcctl.calls[NDR_SVCCTL_GETSERVICEKEYNAMEW];
1638 r = talloc(NULL, struct svcctl_GetServiceKeyNameW);
1643 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1648 pull = ndr_pull_init_blob(&blob, r);
1654 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1655 ndr_err = call->ndr_pull(pull, NDR_IN, r);
1656 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1661 if (DEBUGLEVEL >= 10)
1662 NDR_PRINT_IN_DEBUG(svcctl_GetServiceKeyNameW, r);
1664 ZERO_STRUCT(r->out);
1665 r->out.key_name = talloc_zero(r, const char *);
1666 if (r->out.key_name == NULL) {
1671 r->out.display_name_length = r->in.display_name_length;
1672 r->out.result = _svcctl_GetServiceKeyNameW(p, r);
1674 if (p->rng_fault_state) {
1676 /* Return True here, srv_pipe_hnd.c will take care */
1680 if (DEBUGLEVEL >= 10)
1681 NDR_PRINT_OUT_DEBUG(svcctl_GetServiceKeyNameW, r);
1683 push = ndr_push_init_ctx(r);
1689 ndr_err = call->ndr_push(push, NDR_OUT, r);
1690 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1695 blob = ndr_push_blob(push);
1696 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
1706 static bool api_svcctl_SCSetServiceBitsA(pipes_struct *p)
1708 const struct ndr_interface_call *call;
1709 struct ndr_pull *pull;
1710 struct ndr_push *push;
1711 enum ndr_err_code ndr_err;
1713 struct svcctl_SCSetServiceBitsA *r;
1715 call = &ndr_table_svcctl.calls[NDR_SVCCTL_SCSETSERVICEBITSA];
1717 r = talloc(NULL, struct svcctl_SCSetServiceBitsA);
1722 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1727 pull = ndr_pull_init_blob(&blob, r);
1733 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1734 ndr_err = call->ndr_pull(pull, NDR_IN, r);
1735 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1740 if (DEBUGLEVEL >= 10)
1741 NDR_PRINT_IN_DEBUG(svcctl_SCSetServiceBitsA, r);
1743 r->out.result = _svcctl_SCSetServiceBitsA(p, r);
1745 if (p->rng_fault_state) {
1747 /* Return True here, srv_pipe_hnd.c will take care */
1751 if (DEBUGLEVEL >= 10)
1752 NDR_PRINT_OUT_DEBUG(svcctl_SCSetServiceBitsA, r);
1754 push = ndr_push_init_ctx(r);
1760 ndr_err = call->ndr_push(push, NDR_OUT, r);
1761 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1766 blob = ndr_push_blob(push);
1767 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
1777 static bool api_svcctl_ChangeServiceConfigA(pipes_struct *p)
1779 const struct ndr_interface_call *call;
1780 struct ndr_pull *pull;
1781 struct ndr_push *push;
1782 enum ndr_err_code ndr_err;
1784 struct svcctl_ChangeServiceConfigA *r;
1786 call = &ndr_table_svcctl.calls[NDR_SVCCTL_CHANGESERVICECONFIGA];
1788 r = talloc(NULL, struct svcctl_ChangeServiceConfigA);
1793 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1798 pull = ndr_pull_init_blob(&blob, r);
1804 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1805 ndr_err = call->ndr_pull(pull, NDR_IN, r);
1806 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1811 if (DEBUGLEVEL >= 10)
1812 NDR_PRINT_IN_DEBUG(svcctl_ChangeServiceConfigA, r);
1814 ZERO_STRUCT(r->out);
1815 r->out.tag_id = talloc_zero(r, uint32_t);
1816 if (r->out.tag_id == NULL) {
1821 r->out.result = _svcctl_ChangeServiceConfigA(p, r);
1823 if (p->rng_fault_state) {
1825 /* Return True here, srv_pipe_hnd.c will take care */
1829 if (DEBUGLEVEL >= 10)
1830 NDR_PRINT_OUT_DEBUG(svcctl_ChangeServiceConfigA, r);
1832 push = ndr_push_init_ctx(r);
1838 ndr_err = call->ndr_push(push, NDR_OUT, r);
1839 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1844 blob = ndr_push_blob(push);
1845 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
1855 static bool api_svcctl_CreateServiceA(pipes_struct *p)
1857 const struct ndr_interface_call *call;
1858 struct ndr_pull *pull;
1859 struct ndr_push *push;
1860 enum ndr_err_code ndr_err;
1862 struct svcctl_CreateServiceA *r;
1864 call = &ndr_table_svcctl.calls[NDR_SVCCTL_CREATESERVICEA];
1866 r = talloc(NULL, struct svcctl_CreateServiceA);
1871 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1876 pull = ndr_pull_init_blob(&blob, r);
1882 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1883 ndr_err = call->ndr_pull(pull, NDR_IN, r);
1884 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1889 if (DEBUGLEVEL >= 10)
1890 NDR_PRINT_IN_DEBUG(svcctl_CreateServiceA, r);
1892 ZERO_STRUCT(r->out);
1893 r->out.TagId = talloc_zero(r, uint32_t);
1894 if (r->out.TagId == NULL) {
1899 r->out.result = _svcctl_CreateServiceA(p, r);
1901 if (p->rng_fault_state) {
1903 /* Return True here, srv_pipe_hnd.c will take care */
1907 if (DEBUGLEVEL >= 10)
1908 NDR_PRINT_OUT_DEBUG(svcctl_CreateServiceA, r);
1910 push = ndr_push_init_ctx(r);
1916 ndr_err = call->ndr_push(push, NDR_OUT, r);
1917 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1922 blob = ndr_push_blob(push);
1923 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
1933 static bool api_svcctl_EnumDependentServicesA(pipes_struct *p)
1935 const struct ndr_interface_call *call;
1936 struct ndr_pull *pull;
1937 struct ndr_push *push;
1938 enum ndr_err_code ndr_err;
1940 struct svcctl_EnumDependentServicesA *r;
1942 call = &ndr_table_svcctl.calls[NDR_SVCCTL_ENUMDEPENDENTSERVICESA];
1944 r = talloc(NULL, struct svcctl_EnumDependentServicesA);
1949 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1954 pull = ndr_pull_init_blob(&blob, r);
1960 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1961 ndr_err = call->ndr_pull(pull, NDR_IN, r);
1962 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1967 if (DEBUGLEVEL >= 10)
1968 NDR_PRINT_IN_DEBUG(svcctl_EnumDependentServicesA, r);
1970 ZERO_STRUCT(r->out);
1971 r->out.service_status = talloc_zero(r, struct ENUM_SERVICE_STATUS);
1972 if (r->out.service_status == NULL) {
1977 r->out.bytes_needed = talloc_zero(r, uint32_t);
1978 if (r->out.bytes_needed == NULL) {
1983 r->out.services_returned = talloc_zero(r, uint32_t);
1984 if (r->out.services_returned == NULL) {
1989 r->out.result = _svcctl_EnumDependentServicesA(p, r);
1991 if (p->rng_fault_state) {
1993 /* Return True here, srv_pipe_hnd.c will take care */
1997 if (DEBUGLEVEL >= 10)
1998 NDR_PRINT_OUT_DEBUG(svcctl_EnumDependentServicesA, r);
2000 push = ndr_push_init_ctx(r);
2006 ndr_err = call->ndr_push(push, NDR_OUT, r);
2007 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2012 blob = ndr_push_blob(push);
2013 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
2023 static bool api_svcctl_EnumServicesStatusA(pipes_struct *p)
2025 const struct ndr_interface_call *call;
2026 struct ndr_pull *pull;
2027 struct ndr_push *push;
2028 enum ndr_err_code ndr_err;
2030 struct svcctl_EnumServicesStatusA *r;
2032 call = &ndr_table_svcctl.calls[NDR_SVCCTL_ENUMSERVICESSTATUSA];
2034 r = talloc(NULL, struct svcctl_EnumServicesStatusA);
2039 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2044 pull = ndr_pull_init_blob(&blob, r);
2050 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2051 ndr_err = call->ndr_pull(pull, NDR_IN, r);
2052 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2057 if (DEBUGLEVEL >= 10)
2058 NDR_PRINT_IN_DEBUG(svcctl_EnumServicesStatusA, r);
2060 ZERO_STRUCT(r->out);
2061 r->out.service = talloc_zero_array(r, uint8_t, r->in.buf_size);
2062 if (r->out.service == NULL) {
2067 r->out.bytes_needed = talloc_zero(r, uint32_t);
2068 if (r->out.bytes_needed == NULL) {
2073 r->out.services_returned = talloc_zero(r, uint32_t);
2074 if (r->out.services_returned == NULL) {
2079 r->out.resume_handle = r->in.resume_handle;
2080 r->out.result = _svcctl_EnumServicesStatusA(p, r);
2082 if (p->rng_fault_state) {
2084 /* Return True here, srv_pipe_hnd.c will take care */
2088 if (DEBUGLEVEL >= 10)
2089 NDR_PRINT_OUT_DEBUG(svcctl_EnumServicesStatusA, r);
2091 push = ndr_push_init_ctx(r);
2097 ndr_err = call->ndr_push(push, NDR_OUT, r);
2098 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2103 blob = ndr_push_blob(push);
2104 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
2114 static bool api_svcctl_OpenSCManagerA(pipes_struct *p)
2116 const struct ndr_interface_call *call;
2117 struct ndr_pull *pull;
2118 struct ndr_push *push;
2119 enum ndr_err_code ndr_err;
2121 struct svcctl_OpenSCManagerA *r;
2123 call = &ndr_table_svcctl.calls[NDR_SVCCTL_OPENSCMANAGERA];
2125 r = talloc(NULL, struct svcctl_OpenSCManagerA);
2130 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2135 pull = ndr_pull_init_blob(&blob, r);
2141 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2142 ndr_err = call->ndr_pull(pull, NDR_IN, r);
2143 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2148 if (DEBUGLEVEL >= 10)
2149 NDR_PRINT_IN_DEBUG(svcctl_OpenSCManagerA, r);
2151 ZERO_STRUCT(r->out);
2152 r->out.handle = talloc_zero(r, struct policy_handle);
2153 if (r->out.handle == NULL) {
2158 r->out.result = _svcctl_OpenSCManagerA(p, r);
2160 if (p->rng_fault_state) {
2162 /* Return True here, srv_pipe_hnd.c will take care */
2166 if (DEBUGLEVEL >= 10)
2167 NDR_PRINT_OUT_DEBUG(svcctl_OpenSCManagerA, r);
2169 push = ndr_push_init_ctx(r);
2175 ndr_err = call->ndr_push(push, NDR_OUT, r);
2176 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2181 blob = ndr_push_blob(push);
2182 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
2192 static bool api_svcctl_OpenServiceA(pipes_struct *p)
2194 const struct ndr_interface_call *call;
2195 struct ndr_pull *pull;
2196 struct ndr_push *push;
2197 enum ndr_err_code ndr_err;
2199 struct svcctl_OpenServiceA *r;
2201 call = &ndr_table_svcctl.calls[NDR_SVCCTL_OPENSERVICEA];
2203 r = talloc(NULL, struct svcctl_OpenServiceA);
2208 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2213 pull = ndr_pull_init_blob(&blob, r);
2219 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2220 ndr_err = call->ndr_pull(pull, NDR_IN, r);
2221 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2226 if (DEBUGLEVEL >= 10)
2227 NDR_PRINT_IN_DEBUG(svcctl_OpenServiceA, r);
2229 r->out.result = _svcctl_OpenServiceA(p, r);
2231 if (p->rng_fault_state) {
2233 /* Return True here, srv_pipe_hnd.c will take care */
2237 if (DEBUGLEVEL >= 10)
2238 NDR_PRINT_OUT_DEBUG(svcctl_OpenServiceA, r);
2240 push = ndr_push_init_ctx(r);
2246 ndr_err = call->ndr_push(push, NDR_OUT, r);
2247 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2252 blob = ndr_push_blob(push);
2253 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
2263 static bool api_svcctl_QueryServiceConfigA(pipes_struct *p)
2265 const struct ndr_interface_call *call;
2266 struct ndr_pull *pull;
2267 struct ndr_push *push;
2268 enum ndr_err_code ndr_err;
2270 struct svcctl_QueryServiceConfigA *r;
2272 call = &ndr_table_svcctl.calls[NDR_SVCCTL_QUERYSERVICECONFIGA];
2274 r = talloc(NULL, struct svcctl_QueryServiceConfigA);
2279 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2284 pull = ndr_pull_init_blob(&blob, r);
2290 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2291 ndr_err = call->ndr_pull(pull, NDR_IN, r);
2292 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2297 if (DEBUGLEVEL >= 10)
2298 NDR_PRINT_IN_DEBUG(svcctl_QueryServiceConfigA, r);
2300 ZERO_STRUCT(r->out);
2301 r->out.query = talloc_zero_array(r, uint8_t, r->in.buf_size);
2302 if (r->out.query == NULL) {
2307 r->out.bytes_needed = talloc_zero(r, uint32_t);
2308 if (r->out.bytes_needed == NULL) {
2313 r->out.result = _svcctl_QueryServiceConfigA(p, r);
2315 if (p->rng_fault_state) {
2317 /* Return True here, srv_pipe_hnd.c will take care */
2321 if (DEBUGLEVEL >= 10)
2322 NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceConfigA, r);
2324 push = ndr_push_init_ctx(r);
2330 ndr_err = call->ndr_push(push, NDR_OUT, r);
2331 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2336 blob = ndr_push_blob(push);
2337 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
2347 static bool api_svcctl_QueryServiceLockStatusA(pipes_struct *p)
2349 const struct ndr_interface_call *call;
2350 struct ndr_pull *pull;
2351 struct ndr_push *push;
2352 enum ndr_err_code ndr_err;
2354 struct svcctl_QueryServiceLockStatusA *r;
2356 call = &ndr_table_svcctl.calls[NDR_SVCCTL_QUERYSERVICELOCKSTATUSA];
2358 r = talloc(NULL, struct svcctl_QueryServiceLockStatusA);
2363 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2368 pull = ndr_pull_init_blob(&blob, r);
2374 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2375 ndr_err = call->ndr_pull(pull, NDR_IN, r);
2376 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2381 if (DEBUGLEVEL >= 10)
2382 NDR_PRINT_IN_DEBUG(svcctl_QueryServiceLockStatusA, r);
2384 ZERO_STRUCT(r->out);
2385 r->out.lock_status = talloc_zero(r, struct SERVICE_LOCK_STATUS);
2386 if (r->out.lock_status == NULL) {
2391 r->out.required_buf_size = talloc_zero(r, uint32_t);
2392 if (r->out.required_buf_size == NULL) {
2397 r->out.result = _svcctl_QueryServiceLockStatusA(p, r);
2399 if (p->rng_fault_state) {
2401 /* Return True here, srv_pipe_hnd.c will take care */
2405 if (DEBUGLEVEL >= 10)
2406 NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceLockStatusA, r);
2408 push = ndr_push_init_ctx(r);
2414 ndr_err = call->ndr_push(push, NDR_OUT, r);
2415 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2420 blob = ndr_push_blob(push);
2421 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
2431 static bool api_svcctl_StartServiceA(pipes_struct *p)
2433 const struct ndr_interface_call *call;
2434 struct ndr_pull *pull;
2435 struct ndr_push *push;
2436 enum ndr_err_code ndr_err;
2438 struct svcctl_StartServiceA *r;
2440 call = &ndr_table_svcctl.calls[NDR_SVCCTL_STARTSERVICEA];
2442 r = talloc(NULL, struct svcctl_StartServiceA);
2447 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2452 pull = ndr_pull_init_blob(&blob, r);
2458 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2459 ndr_err = call->ndr_pull(pull, NDR_IN, r);
2460 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2465 if (DEBUGLEVEL >= 10)
2466 NDR_PRINT_IN_DEBUG(svcctl_StartServiceA, r);
2468 r->out.result = _svcctl_StartServiceA(p, r);
2470 if (p->rng_fault_state) {
2472 /* Return True here, srv_pipe_hnd.c will take care */
2476 if (DEBUGLEVEL >= 10)
2477 NDR_PRINT_OUT_DEBUG(svcctl_StartServiceA, r);
2479 push = ndr_push_init_ctx(r);
2485 ndr_err = call->ndr_push(push, NDR_OUT, r);
2486 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2491 blob = ndr_push_blob(push);
2492 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
2502 static bool api_svcctl_GetServiceDisplayNameA(pipes_struct *p)
2504 const struct ndr_interface_call *call;
2505 struct ndr_pull *pull;
2506 struct ndr_push *push;
2507 enum ndr_err_code ndr_err;
2509 struct svcctl_GetServiceDisplayNameA *r;
2511 call = &ndr_table_svcctl.calls[NDR_SVCCTL_GETSERVICEDISPLAYNAMEA];
2513 r = talloc(NULL, struct svcctl_GetServiceDisplayNameA);
2518 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2523 pull = ndr_pull_init_blob(&blob, r);
2529 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2530 ndr_err = call->ndr_pull(pull, NDR_IN, r);
2531 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2536 if (DEBUGLEVEL >= 10)
2537 NDR_PRINT_IN_DEBUG(svcctl_GetServiceDisplayNameA, r);
2539 ZERO_STRUCT(r->out);
2540 r->out.display_name = talloc_zero(r, const char *);
2541 if (r->out.display_name == NULL) {
2546 r->out.display_name_length = r->in.display_name_length;
2547 r->out.result = _svcctl_GetServiceDisplayNameA(p, r);
2549 if (p->rng_fault_state) {
2551 /* Return True here, srv_pipe_hnd.c will take care */
2555 if (DEBUGLEVEL >= 10)
2556 NDR_PRINT_OUT_DEBUG(svcctl_GetServiceDisplayNameA, r);
2558 push = ndr_push_init_ctx(r);
2564 ndr_err = call->ndr_push(push, NDR_OUT, r);
2565 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2570 blob = ndr_push_blob(push);
2571 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
2581 static bool api_svcctl_GetServiceKeyNameA(pipes_struct *p)
2583 const struct ndr_interface_call *call;
2584 struct ndr_pull *pull;
2585 struct ndr_push *push;
2586 enum ndr_err_code ndr_err;
2588 struct svcctl_GetServiceKeyNameA *r;
2590 call = &ndr_table_svcctl.calls[NDR_SVCCTL_GETSERVICEKEYNAMEA];
2592 r = talloc(NULL, struct svcctl_GetServiceKeyNameA);
2597 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2602 pull = ndr_pull_init_blob(&blob, r);
2608 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2609 ndr_err = call->ndr_pull(pull, NDR_IN, r);
2610 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2615 if (DEBUGLEVEL >= 10)
2616 NDR_PRINT_IN_DEBUG(svcctl_GetServiceKeyNameA, r);
2618 ZERO_STRUCT(r->out);
2619 r->out.key_name = talloc_zero(r, const char *);
2620 if (r->out.key_name == NULL) {
2625 r->out.display_name_length = r->in.display_name_length;
2626 r->out.result = _svcctl_GetServiceKeyNameA(p, r);
2628 if (p->rng_fault_state) {
2630 /* Return True here, srv_pipe_hnd.c will take care */
2634 if (DEBUGLEVEL >= 10)
2635 NDR_PRINT_OUT_DEBUG(svcctl_GetServiceKeyNameA, r);
2637 push = ndr_push_init_ctx(r);
2643 ndr_err = call->ndr_push(push, NDR_OUT, r);
2644 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2649 blob = ndr_push_blob(push);
2650 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
2660 static bool api_svcctl_GetCurrentGroupeStateW(pipes_struct *p)
2662 const struct ndr_interface_call *call;
2663 struct ndr_pull *pull;
2664 struct ndr_push *push;
2665 enum ndr_err_code ndr_err;
2667 struct svcctl_GetCurrentGroupeStateW *r;
2669 call = &ndr_table_svcctl.calls[NDR_SVCCTL_GETCURRENTGROUPESTATEW];
2671 r = talloc(NULL, struct svcctl_GetCurrentGroupeStateW);
2676 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2681 pull = ndr_pull_init_blob(&blob, r);
2687 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2688 ndr_err = call->ndr_pull(pull, NDR_IN, r);
2689 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2694 if (DEBUGLEVEL >= 10)
2695 NDR_PRINT_IN_DEBUG(svcctl_GetCurrentGroupeStateW, r);
2697 r->out.result = _svcctl_GetCurrentGroupeStateW(p, r);
2699 if (p->rng_fault_state) {
2701 /* Return True here, srv_pipe_hnd.c will take care */
2705 if (DEBUGLEVEL >= 10)
2706 NDR_PRINT_OUT_DEBUG(svcctl_GetCurrentGroupeStateW, r);
2708 push = ndr_push_init_ctx(r);
2714 ndr_err = call->ndr_push(push, NDR_OUT, r);
2715 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2720 blob = ndr_push_blob(push);
2721 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
2731 static bool api_svcctl_EnumServiceGroupW(pipes_struct *p)
2733 const struct ndr_interface_call *call;
2734 struct ndr_pull *pull;
2735 struct ndr_push *push;
2736 enum ndr_err_code ndr_err;
2738 struct svcctl_EnumServiceGroupW *r;
2740 call = &ndr_table_svcctl.calls[NDR_SVCCTL_ENUMSERVICEGROUPW];
2742 r = talloc(NULL, struct svcctl_EnumServiceGroupW);
2747 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2752 pull = ndr_pull_init_blob(&blob, r);
2758 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2759 ndr_err = call->ndr_pull(pull, NDR_IN, r);
2760 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2765 if (DEBUGLEVEL >= 10)
2766 NDR_PRINT_IN_DEBUG(svcctl_EnumServiceGroupW, r);
2768 r->out.result = _svcctl_EnumServiceGroupW(p, r);
2770 if (p->rng_fault_state) {
2772 /* Return True here, srv_pipe_hnd.c will take care */
2776 if (DEBUGLEVEL >= 10)
2777 NDR_PRINT_OUT_DEBUG(svcctl_EnumServiceGroupW, r);
2779 push = ndr_push_init_ctx(r);
2785 ndr_err = call->ndr_push(push, NDR_OUT, r);
2786 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2791 blob = ndr_push_blob(push);
2792 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
2802 static bool api_svcctl_ChangeServiceConfig2A(pipes_struct *p)
2804 const struct ndr_interface_call *call;
2805 struct ndr_pull *pull;
2806 struct ndr_push *push;
2807 enum ndr_err_code ndr_err;
2809 struct svcctl_ChangeServiceConfig2A *r;
2811 call = &ndr_table_svcctl.calls[NDR_SVCCTL_CHANGESERVICECONFIG2A];
2813 r = talloc(NULL, struct svcctl_ChangeServiceConfig2A);
2818 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2823 pull = ndr_pull_init_blob(&blob, r);
2829 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2830 ndr_err = call->ndr_pull(pull, NDR_IN, r);
2831 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2836 if (DEBUGLEVEL >= 10)
2837 NDR_PRINT_IN_DEBUG(svcctl_ChangeServiceConfig2A, r);
2839 r->out.result = _svcctl_ChangeServiceConfig2A(p, r);
2841 if (p->rng_fault_state) {
2843 /* Return True here, srv_pipe_hnd.c will take care */
2847 if (DEBUGLEVEL >= 10)
2848 NDR_PRINT_OUT_DEBUG(svcctl_ChangeServiceConfig2A, r);
2850 push = ndr_push_init_ctx(r);
2856 ndr_err = call->ndr_push(push, NDR_OUT, r);
2857 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2862 blob = ndr_push_blob(push);
2863 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
2873 static bool api_svcctl_ChangeServiceConfig2W(pipes_struct *p)
2875 const struct ndr_interface_call *call;
2876 struct ndr_pull *pull;
2877 struct ndr_push *push;
2878 enum ndr_err_code ndr_err;
2880 struct svcctl_ChangeServiceConfig2W *r;
2882 call = &ndr_table_svcctl.calls[NDR_SVCCTL_CHANGESERVICECONFIG2W];
2884 r = talloc(NULL, struct svcctl_ChangeServiceConfig2W);
2889 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2894 pull = ndr_pull_init_blob(&blob, r);
2900 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2901 ndr_err = call->ndr_pull(pull, NDR_IN, r);
2902 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2907 if (DEBUGLEVEL >= 10)
2908 NDR_PRINT_IN_DEBUG(svcctl_ChangeServiceConfig2W, r);
2910 r->out.result = _svcctl_ChangeServiceConfig2W(p, r);
2912 if (p->rng_fault_state) {
2914 /* Return True here, srv_pipe_hnd.c will take care */
2918 if (DEBUGLEVEL >= 10)
2919 NDR_PRINT_OUT_DEBUG(svcctl_ChangeServiceConfig2W, r);
2921 push = ndr_push_init_ctx(r);
2927 ndr_err = call->ndr_push(push, NDR_OUT, r);
2928 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2933 blob = ndr_push_blob(push);
2934 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
2944 static bool api_svcctl_QueryServiceConfig2A(pipes_struct *p)
2946 const struct ndr_interface_call *call;
2947 struct ndr_pull *pull;
2948 struct ndr_push *push;
2949 enum ndr_err_code ndr_err;
2951 struct svcctl_QueryServiceConfig2A *r;
2953 call = &ndr_table_svcctl.calls[NDR_SVCCTL_QUERYSERVICECONFIG2A];
2955 r = talloc(NULL, struct svcctl_QueryServiceConfig2A);
2960 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2965 pull = ndr_pull_init_blob(&blob, r);
2971 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2972 ndr_err = call->ndr_pull(pull, NDR_IN, r);
2973 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2978 if (DEBUGLEVEL >= 10)
2979 NDR_PRINT_IN_DEBUG(svcctl_QueryServiceConfig2A, r);
2981 ZERO_STRUCT(r->out);
2982 r->out.buffer = talloc_zero_array(r, uint8_t, r->in.buf_size);
2983 if (r->out.buffer == NULL) {
2988 r->out.bytes_needed = talloc_zero(r, uint32_t);
2989 if (r->out.bytes_needed == NULL) {
2994 r->out.result = _svcctl_QueryServiceConfig2A(p, r);
2996 if (p->rng_fault_state) {
2998 /* Return True here, srv_pipe_hnd.c will take care */
3002 if (DEBUGLEVEL >= 10)
3003 NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceConfig2A, r);
3005 push = ndr_push_init_ctx(r);
3011 ndr_err = call->ndr_push(push, NDR_OUT, r);
3012 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
3017 blob = ndr_push_blob(push);
3018 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
3028 static bool api_svcctl_QueryServiceConfig2W(pipes_struct *p)
3030 const struct ndr_interface_call *call;
3031 struct ndr_pull *pull;
3032 struct ndr_push *push;
3033 enum ndr_err_code ndr_err;
3035 struct svcctl_QueryServiceConfig2W *r;
3037 call = &ndr_table_svcctl.calls[NDR_SVCCTL_QUERYSERVICECONFIG2W];
3039 r = talloc(NULL, struct svcctl_QueryServiceConfig2W);
3044 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
3049 pull = ndr_pull_init_blob(&blob, r);
3055 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
3056 ndr_err = call->ndr_pull(pull, NDR_IN, r);
3057 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
3062 if (DEBUGLEVEL >= 10)
3063 NDR_PRINT_IN_DEBUG(svcctl_QueryServiceConfig2W, r);
3065 ZERO_STRUCT(r->out);
3066 r->out.buffer = talloc_zero_array(r, uint8_t, r->in.buf_size);
3067 if (r->out.buffer == NULL) {
3072 r->out.bytes_needed = talloc_zero(r, uint32_t);
3073 if (r->out.bytes_needed == NULL) {
3078 r->out.result = _svcctl_QueryServiceConfig2W(p, r);
3080 if (p->rng_fault_state) {
3082 /* Return True here, srv_pipe_hnd.c will take care */
3086 if (DEBUGLEVEL >= 10)
3087 NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceConfig2W, r);
3089 push = ndr_push_init_ctx(r);
3095 ndr_err = call->ndr_push(push, NDR_OUT, r);
3096 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
3101 blob = ndr_push_blob(push);
3102 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
3112 static bool api_svcctl_QueryServiceStatusEx(pipes_struct *p)
3114 const struct ndr_interface_call *call;
3115 struct ndr_pull *pull;
3116 struct ndr_push *push;
3117 enum ndr_err_code ndr_err;
3119 struct svcctl_QueryServiceStatusEx *r;
3121 call = &ndr_table_svcctl.calls[NDR_SVCCTL_QUERYSERVICESTATUSEX];
3123 r = talloc(NULL, struct svcctl_QueryServiceStatusEx);
3128 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
3133 pull = ndr_pull_init_blob(&blob, r);
3139 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
3140 ndr_err = call->ndr_pull(pull, NDR_IN, r);
3141 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
3146 if (DEBUGLEVEL >= 10)
3147 NDR_PRINT_IN_DEBUG(svcctl_QueryServiceStatusEx, r);
3149 ZERO_STRUCT(r->out);
3150 r->out.buffer = talloc_zero_array(r, uint8_t, r->in.buf_size);
3151 if (r->out.buffer == NULL) {
3156 r->out.bytes_needed = talloc_zero(r, uint32_t);
3157 if (r->out.bytes_needed == NULL) {
3162 r->out.result = _svcctl_QueryServiceStatusEx(p, r);
3164 if (p->rng_fault_state) {
3166 /* Return True here, srv_pipe_hnd.c will take care */
3170 if (DEBUGLEVEL >= 10)
3171 NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceStatusEx, r);
3173 push = ndr_push_init_ctx(r);
3179 ndr_err = call->ndr_push(push, NDR_OUT, r);
3180 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
3185 blob = ndr_push_blob(push);
3186 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
3196 static bool api_EnumServicesStatusExA(pipes_struct *p)
3198 const struct ndr_interface_call *call;
3199 struct ndr_pull *pull;
3200 struct ndr_push *push;
3201 enum ndr_err_code ndr_err;
3203 struct EnumServicesStatusExA *r;
3205 call = &ndr_table_svcctl.calls[NDR_ENUMSERVICESSTATUSEXA];
3207 r = talloc(NULL, struct EnumServicesStatusExA);
3212 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
3217 pull = ndr_pull_init_blob(&blob, r);
3223 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
3224 ndr_err = call->ndr_pull(pull, NDR_IN, r);
3225 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
3230 if (DEBUGLEVEL >= 10)
3231 NDR_PRINT_IN_DEBUG(EnumServicesStatusExA, r);
3233 ZERO_STRUCT(r->out);
3234 r->out.services = talloc_zero_array(r, uint8_t, r->in.buf_size);
3235 if (r->out.services == NULL) {
3240 r->out.bytes_needed = talloc_zero(r, uint32_t);
3241 if (r->out.bytes_needed == NULL) {
3246 r->out.service_returned = talloc_zero(r, uint32_t);
3247 if (r->out.service_returned == NULL) {
3252 r->out.resume_handle = r->in.resume_handle;
3253 r->out.group_name = talloc_zero(r, const char *);
3254 if (r->out.group_name == NULL) {
3259 r->out.result = _EnumServicesStatusExA(p, r);
3261 if (p->rng_fault_state) {
3263 /* Return True here, srv_pipe_hnd.c will take care */
3267 if (DEBUGLEVEL >= 10)
3268 NDR_PRINT_OUT_DEBUG(EnumServicesStatusExA, r);
3270 push = ndr_push_init_ctx(r);
3276 ndr_err = call->ndr_push(push, NDR_OUT, r);
3277 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
3282 blob = ndr_push_blob(push);
3283 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
3293 static bool api_EnumServicesStatusExW(pipes_struct *p)
3295 const struct ndr_interface_call *call;
3296 struct ndr_pull *pull;
3297 struct ndr_push *push;
3298 enum ndr_err_code ndr_err;
3300 struct EnumServicesStatusExW *r;
3302 call = &ndr_table_svcctl.calls[NDR_ENUMSERVICESSTATUSEXW];
3304 r = talloc(NULL, struct EnumServicesStatusExW);
3309 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
3314 pull = ndr_pull_init_blob(&blob, r);
3320 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
3321 ndr_err = call->ndr_pull(pull, NDR_IN, r);
3322 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
3327 if (DEBUGLEVEL >= 10)
3328 NDR_PRINT_IN_DEBUG(EnumServicesStatusExW, r);
3330 ZERO_STRUCT(r->out);
3331 r->out.services = talloc_zero_array(r, uint8_t, r->in.buf_size);
3332 if (r->out.services == NULL) {
3337 r->out.bytes_needed = talloc_zero(r, uint32_t);
3338 if (r->out.bytes_needed == NULL) {
3343 r->out.service_returned = talloc_zero(r, uint32_t);
3344 if (r->out.service_returned == NULL) {
3349 r->out.resume_handle = r->in.resume_handle;
3350 r->out.group_name = talloc_zero(r, const char *);
3351 if (r->out.group_name == NULL) {
3356 r->out.result = _EnumServicesStatusExW(p, r);
3358 if (p->rng_fault_state) {
3360 /* Return True here, srv_pipe_hnd.c will take care */
3364 if (DEBUGLEVEL >= 10)
3365 NDR_PRINT_OUT_DEBUG(EnumServicesStatusExW, r);
3367 push = ndr_push_init_ctx(r);
3373 ndr_err = call->ndr_push(push, NDR_OUT, r);
3374 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
3379 blob = ndr_push_blob(push);
3380 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
3390 static bool api_svcctl_SCSendTSMessage(pipes_struct *p)
3392 const struct ndr_interface_call *call;
3393 struct ndr_pull *pull;
3394 struct ndr_push *push;
3395 enum ndr_err_code ndr_err;
3397 struct svcctl_SCSendTSMessage *r;
3399 call = &ndr_table_svcctl.calls[NDR_SVCCTL_SCSENDTSMESSAGE];
3401 r = talloc(NULL, struct svcctl_SCSendTSMessage);
3406 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
3411 pull = ndr_pull_init_blob(&blob, r);
3417 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
3418 ndr_err = call->ndr_pull(pull, NDR_IN, r);
3419 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
3424 if (DEBUGLEVEL >= 10)
3425 NDR_PRINT_IN_DEBUG(svcctl_SCSendTSMessage, r);
3427 r->out.result = _svcctl_SCSendTSMessage(p, r);
3429 if (p->rng_fault_state) {
3431 /* Return True here, srv_pipe_hnd.c will take care */
3435 if (DEBUGLEVEL >= 10)
3436 NDR_PRINT_OUT_DEBUG(svcctl_SCSendTSMessage, r);
3438 push = ndr_push_init_ctx(r);
3444 ndr_err = call->ndr_push(push, NDR_OUT, r);
3445 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
3450 blob = ndr_push_blob(push);
3451 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32)blob.length)) {
3463 static struct api_struct api_svcctl_cmds[] =
3465 {"SVCCTL_CLOSESERVICEHANDLE", NDR_SVCCTL_CLOSESERVICEHANDLE, api_svcctl_CloseServiceHandle},
3466 {"SVCCTL_CONTROLSERVICE", NDR_SVCCTL_CONTROLSERVICE, api_svcctl_ControlService},
3467 {"SVCCTL_DELETESERVICE", NDR_SVCCTL_DELETESERVICE, api_svcctl_DeleteService},
3468 {"SVCCTL_LOCKSERVICEDATABASE", NDR_SVCCTL_LOCKSERVICEDATABASE, api_svcctl_LockServiceDatabase},
3469 {"SVCCTL_QUERYSERVICEOBJECTSECURITY", NDR_SVCCTL_QUERYSERVICEOBJECTSECURITY, api_svcctl_QueryServiceObjectSecurity},
3470 {"SVCCTL_SETSERVICEOBJECTSECURITY", NDR_SVCCTL_SETSERVICEOBJECTSECURITY, api_svcctl_SetServiceObjectSecurity},
3471 {"SVCCTL_QUERYSERVICESTATUS", NDR_SVCCTL_QUERYSERVICESTATUS, api_svcctl_QueryServiceStatus},
3472 {"SVCCTL_SETSERVICESTATUS", NDR_SVCCTL_SETSERVICESTATUS, api_svcctl_SetServiceStatus},
3473 {"SVCCTL_UNLOCKSERVICEDATABASE", NDR_SVCCTL_UNLOCKSERVICEDATABASE, api_svcctl_UnlockServiceDatabase},
3474 {"SVCCTL_NOTIFYBOOTCONFIGSTATUS", NDR_SVCCTL_NOTIFYBOOTCONFIGSTATUS, api_svcctl_NotifyBootConfigStatus},
3475 {"SVCCTL_SCSETSERVICEBITSW", NDR_SVCCTL_SCSETSERVICEBITSW, api_svcctl_SCSetServiceBitsW},
3476 {"SVCCTL_CHANGESERVICECONFIGW", NDR_SVCCTL_CHANGESERVICECONFIGW, api_svcctl_ChangeServiceConfigW},
3477 {"SVCCTL_CREATESERVICEW", NDR_SVCCTL_CREATESERVICEW, api_svcctl_CreateServiceW},
3478 {"SVCCTL_ENUMDEPENDENTSERVICESW", NDR_SVCCTL_ENUMDEPENDENTSERVICESW, api_svcctl_EnumDependentServicesW},
3479 {"SVCCTL_ENUMSERVICESSTATUSW", NDR_SVCCTL_ENUMSERVICESSTATUSW, api_svcctl_EnumServicesStatusW},
3480 {"SVCCTL_OPENSCMANAGERW", NDR_SVCCTL_OPENSCMANAGERW, api_svcctl_OpenSCManagerW},
3481 {"SVCCTL_OPENSERVICEW", NDR_SVCCTL_OPENSERVICEW, api_svcctl_OpenServiceW},
3482 {"SVCCTL_QUERYSERVICECONFIGW", NDR_SVCCTL_QUERYSERVICECONFIGW, api_svcctl_QueryServiceConfigW},
3483 {"SVCCTL_QUERYSERVICELOCKSTATUSW", NDR_SVCCTL_QUERYSERVICELOCKSTATUSW, api_svcctl_QueryServiceLockStatusW},
3484 {"SVCCTL_STARTSERVICEW", NDR_SVCCTL_STARTSERVICEW, api_svcctl_StartServiceW},
3485 {"SVCCTL_GETSERVICEDISPLAYNAMEW", NDR_SVCCTL_GETSERVICEDISPLAYNAMEW, api_svcctl_GetServiceDisplayNameW},
3486 {"SVCCTL_GETSERVICEKEYNAMEW", NDR_SVCCTL_GETSERVICEKEYNAMEW, api_svcctl_GetServiceKeyNameW},
3487 {"SVCCTL_SCSETSERVICEBITSA", NDR_SVCCTL_SCSETSERVICEBITSA, api_svcctl_SCSetServiceBitsA},
3488 {"SVCCTL_CHANGESERVICECONFIGA", NDR_SVCCTL_CHANGESERVICECONFIGA, api_svcctl_ChangeServiceConfigA},
3489 {"SVCCTL_CREATESERVICEA", NDR_SVCCTL_CREATESERVICEA, api_svcctl_CreateServiceA},
3490 {"SVCCTL_ENUMDEPENDENTSERVICESA", NDR_SVCCTL_ENUMDEPENDENTSERVICESA, api_svcctl_EnumDependentServicesA},
3491 {"SVCCTL_ENUMSERVICESSTATUSA", NDR_SVCCTL_ENUMSERVICESSTATUSA, api_svcctl_EnumServicesStatusA},
3492 {"SVCCTL_OPENSCMANAGERA", NDR_SVCCTL_OPENSCMANAGERA, api_svcctl_OpenSCManagerA},
3493 {"SVCCTL_OPENSERVICEA", NDR_SVCCTL_OPENSERVICEA, api_svcctl_OpenServiceA},
3494 {"SVCCTL_QUERYSERVICECONFIGA", NDR_SVCCTL_QUERYSERVICECONFIGA, api_svcctl_QueryServiceConfigA},
3495 {"SVCCTL_QUERYSERVICELOCKSTATUSA", NDR_SVCCTL_QUERYSERVICELOCKSTATUSA, api_svcctl_QueryServiceLockStatusA},
3496 {"SVCCTL_STARTSERVICEA", NDR_SVCCTL_STARTSERVICEA, api_svcctl_StartServiceA},
3497 {"SVCCTL_GETSERVICEDISPLAYNAMEA", NDR_SVCCTL_GETSERVICEDISPLAYNAMEA, api_svcctl_GetServiceDisplayNameA},
3498 {"SVCCTL_GETSERVICEKEYNAMEA", NDR_SVCCTL_GETSERVICEKEYNAMEA, api_svcctl_GetServiceKeyNameA},
3499 {"SVCCTL_GETCURRENTGROUPESTATEW", NDR_SVCCTL_GETCURRENTGROUPESTATEW, api_svcctl_GetCurrentGroupeStateW},
3500 {"SVCCTL_ENUMSERVICEGROUPW", NDR_SVCCTL_ENUMSERVICEGROUPW, api_svcctl_EnumServiceGroupW},
3501 {"SVCCTL_CHANGESERVICECONFIG2A", NDR_SVCCTL_CHANGESERVICECONFIG2A, api_svcctl_ChangeServiceConfig2A},
3502 {"SVCCTL_CHANGESERVICECONFIG2W", NDR_SVCCTL_CHANGESERVICECONFIG2W, api_svcctl_ChangeServiceConfig2W},
3503 {"SVCCTL_QUERYSERVICECONFIG2A", NDR_SVCCTL_QUERYSERVICECONFIG2A, api_svcctl_QueryServiceConfig2A},
3504 {"SVCCTL_QUERYSERVICECONFIG2W", NDR_SVCCTL_QUERYSERVICECONFIG2W, api_svcctl_QueryServiceConfig2W},
3505 {"SVCCTL_QUERYSERVICESTATUSEX", NDR_SVCCTL_QUERYSERVICESTATUSEX, api_svcctl_QueryServiceStatusEx},
3506 {"ENUMSERVICESSTATUSEXA", NDR_ENUMSERVICESSTATUSEXA, api_EnumServicesStatusExA},
3507 {"ENUMSERVICESSTATUSEXW", NDR_ENUMSERVICESSTATUSEXW, api_EnumServicesStatusExW},
3508 {"SVCCTL_SCSENDTSMESSAGE", NDR_SVCCTL_SCSENDTSMESSAGE, api_svcctl_SCSendTSMessage},
3511 void svcctl_get_pipe_fns(struct api_struct **fns, int *n_fns)
3513 *fns = api_svcctl_cmds;
3514 *n_fns = sizeof(api_svcctl_cmds) / sizeof(struct api_struct);
3517 NTSTATUS rpc_svcctl_init(void)
3519 return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "svcctl", "svcctl", api_svcctl_cmds, sizeof(api_svcctl_cmds) / sizeof(struct api_struct));