2 * Unix SMB/CIFS implementation.
3 * client auto-generated by pidl. DO NOT MODIFY!
7 #include "../librpc/gen_ndr/cli_winreg.h"
9 struct rpccli_winreg_OpenHKCR_state {
10 struct winreg_OpenHKCR orig;
11 struct winreg_OpenHKCR tmp;
12 TALLOC_CTX *out_mem_ctx;
13 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
16 static void rpccli_winreg_OpenHKCR_done(struct tevent_req *subreq);
18 struct tevent_req *rpccli_winreg_OpenHKCR_send(TALLOC_CTX *mem_ctx,
19 struct tevent_context *ev,
20 struct rpc_pipe_client *cli,
21 uint16_t *_system_name /* [in] [unique] */,
22 uint32_t _access_mask /* [in] */,
23 struct policy_handle *_handle /* [out] [ref] */)
25 struct tevent_req *req;
26 struct rpccli_winreg_OpenHKCR_state *state;
27 struct tevent_req *subreq;
29 req = tevent_req_create(mem_ctx, &state,
30 struct rpccli_winreg_OpenHKCR_state);
34 state->out_mem_ctx = NULL;
35 state->dispatch_recv = cli->dispatch_recv;
38 state->orig.in.system_name = _system_name;
39 state->orig.in.access_mask = _access_mask;
42 state->orig.out.handle = _handle;
45 ZERO_STRUCT(state->orig.out.result);
47 state->out_mem_ctx = talloc_named_const(state, 0,
48 "rpccli_winreg_OpenHKCR_out_memory");
49 if (tevent_req_nomem(state->out_mem_ctx, req)) {
50 return tevent_req_post(req, ev);
53 /* make a temporary copy, that we pass to the dispatch function */
54 state->tmp = state->orig;
56 subreq = cli->dispatch_send(state, ev, cli,
60 if (tevent_req_nomem(subreq, req)) {
61 return tevent_req_post(req, ev);
63 tevent_req_set_callback(subreq, rpccli_winreg_OpenHKCR_done, req);
67 static void rpccli_winreg_OpenHKCR_done(struct tevent_req *subreq)
69 struct tevent_req *req = tevent_req_callback_data(
70 subreq, struct tevent_req);
71 struct rpccli_winreg_OpenHKCR_state *state = tevent_req_data(
72 req, struct rpccli_winreg_OpenHKCR_state);
76 if (state->out_mem_ctx) {
77 mem_ctx = state->out_mem_ctx;
82 status = state->dispatch_recv(subreq, mem_ctx);
84 if (!NT_STATUS_IS_OK(status)) {
85 tevent_req_nterror(req, status);
89 /* Copy out parameters */
90 *state->orig.out.handle = *state->tmp.out.handle;
93 state->orig.out.result = state->tmp.out.result;
95 /* Reset temporary structure */
96 ZERO_STRUCT(state->tmp);
101 NTSTATUS rpccli_winreg_OpenHKCR_recv(struct tevent_req *req,
105 struct rpccli_winreg_OpenHKCR_state *state = tevent_req_data(
106 req, struct rpccli_winreg_OpenHKCR_state);
109 if (tevent_req_is_nterror(req, &status)) {
110 tevent_req_received(req);
114 /* Steal possbile out parameters to the callers context */
115 talloc_steal(mem_ctx, state->out_mem_ctx);
118 *result = state->orig.out.result;
120 tevent_req_received(req);
124 NTSTATUS rpccli_winreg_OpenHKCR(struct rpc_pipe_client *cli,
126 uint16_t *system_name /* [in] [unique] */,
127 uint32_t access_mask /* [in] */,
128 struct policy_handle *handle /* [out] [ref] */,
131 struct winreg_OpenHKCR r;
135 r.in.system_name = system_name;
136 r.in.access_mask = access_mask;
138 status = cli->dispatch(cli,
144 if (!NT_STATUS_IS_OK(status)) {
148 if (NT_STATUS_IS_ERR(status)) {
152 /* Return variables */
153 *handle = *r.out.handle;
157 *werror = r.out.result;
160 return werror_to_ntstatus(r.out.result);
163 struct rpccli_winreg_OpenHKCU_state {
164 struct winreg_OpenHKCU orig;
165 struct winreg_OpenHKCU tmp;
166 TALLOC_CTX *out_mem_ctx;
167 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
170 static void rpccli_winreg_OpenHKCU_done(struct tevent_req *subreq);
172 struct tevent_req *rpccli_winreg_OpenHKCU_send(TALLOC_CTX *mem_ctx,
173 struct tevent_context *ev,
174 struct rpc_pipe_client *cli,
175 uint16_t *_system_name /* [in] [unique] */,
176 uint32_t _access_mask /* [in] */,
177 struct policy_handle *_handle /* [out] [ref] */)
179 struct tevent_req *req;
180 struct rpccli_winreg_OpenHKCU_state *state;
181 struct tevent_req *subreq;
183 req = tevent_req_create(mem_ctx, &state,
184 struct rpccli_winreg_OpenHKCU_state);
188 state->out_mem_ctx = NULL;
189 state->dispatch_recv = cli->dispatch_recv;
192 state->orig.in.system_name = _system_name;
193 state->orig.in.access_mask = _access_mask;
196 state->orig.out.handle = _handle;
199 ZERO_STRUCT(state->orig.out.result);
201 state->out_mem_ctx = talloc_named_const(state, 0,
202 "rpccli_winreg_OpenHKCU_out_memory");
203 if (tevent_req_nomem(state->out_mem_ctx, req)) {
204 return tevent_req_post(req, ev);
207 /* make a temporary copy, that we pass to the dispatch function */
208 state->tmp = state->orig;
210 subreq = cli->dispatch_send(state, ev, cli,
214 if (tevent_req_nomem(subreq, req)) {
215 return tevent_req_post(req, ev);
217 tevent_req_set_callback(subreq, rpccli_winreg_OpenHKCU_done, req);
221 static void rpccli_winreg_OpenHKCU_done(struct tevent_req *subreq)
223 struct tevent_req *req = tevent_req_callback_data(
224 subreq, struct tevent_req);
225 struct rpccli_winreg_OpenHKCU_state *state = tevent_req_data(
226 req, struct rpccli_winreg_OpenHKCU_state);
230 if (state->out_mem_ctx) {
231 mem_ctx = state->out_mem_ctx;
236 status = state->dispatch_recv(subreq, mem_ctx);
238 if (!NT_STATUS_IS_OK(status)) {
239 tevent_req_nterror(req, status);
243 /* Copy out parameters */
244 *state->orig.out.handle = *state->tmp.out.handle;
247 state->orig.out.result = state->tmp.out.result;
249 /* Reset temporary structure */
250 ZERO_STRUCT(state->tmp);
252 tevent_req_done(req);
255 NTSTATUS rpccli_winreg_OpenHKCU_recv(struct tevent_req *req,
259 struct rpccli_winreg_OpenHKCU_state *state = tevent_req_data(
260 req, struct rpccli_winreg_OpenHKCU_state);
263 if (tevent_req_is_nterror(req, &status)) {
264 tevent_req_received(req);
268 /* Steal possbile out parameters to the callers context */
269 talloc_steal(mem_ctx, state->out_mem_ctx);
272 *result = state->orig.out.result;
274 tevent_req_received(req);
278 NTSTATUS rpccli_winreg_OpenHKCU(struct rpc_pipe_client *cli,
280 uint16_t *system_name /* [in] [unique] */,
281 uint32_t access_mask /* [in] */,
282 struct policy_handle *handle /* [out] [ref] */,
285 struct winreg_OpenHKCU r;
289 r.in.system_name = system_name;
290 r.in.access_mask = access_mask;
292 status = cli->dispatch(cli,
298 if (!NT_STATUS_IS_OK(status)) {
302 if (NT_STATUS_IS_ERR(status)) {
306 /* Return variables */
307 *handle = *r.out.handle;
311 *werror = r.out.result;
314 return werror_to_ntstatus(r.out.result);
317 struct rpccli_winreg_OpenHKLM_state {
318 struct winreg_OpenHKLM orig;
319 struct winreg_OpenHKLM tmp;
320 TALLOC_CTX *out_mem_ctx;
321 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
324 static void rpccli_winreg_OpenHKLM_done(struct tevent_req *subreq);
326 struct tevent_req *rpccli_winreg_OpenHKLM_send(TALLOC_CTX *mem_ctx,
327 struct tevent_context *ev,
328 struct rpc_pipe_client *cli,
329 uint16_t *_system_name /* [in] [unique] */,
330 uint32_t _access_mask /* [in] */,
331 struct policy_handle *_handle /* [out] [ref] */)
333 struct tevent_req *req;
334 struct rpccli_winreg_OpenHKLM_state *state;
335 struct tevent_req *subreq;
337 req = tevent_req_create(mem_ctx, &state,
338 struct rpccli_winreg_OpenHKLM_state);
342 state->out_mem_ctx = NULL;
343 state->dispatch_recv = cli->dispatch_recv;
346 state->orig.in.system_name = _system_name;
347 state->orig.in.access_mask = _access_mask;
350 state->orig.out.handle = _handle;
353 ZERO_STRUCT(state->orig.out.result);
355 state->out_mem_ctx = talloc_named_const(state, 0,
356 "rpccli_winreg_OpenHKLM_out_memory");
357 if (tevent_req_nomem(state->out_mem_ctx, req)) {
358 return tevent_req_post(req, ev);
361 /* make a temporary copy, that we pass to the dispatch function */
362 state->tmp = state->orig;
364 subreq = cli->dispatch_send(state, ev, cli,
368 if (tevent_req_nomem(subreq, req)) {
369 return tevent_req_post(req, ev);
371 tevent_req_set_callback(subreq, rpccli_winreg_OpenHKLM_done, req);
375 static void rpccli_winreg_OpenHKLM_done(struct tevent_req *subreq)
377 struct tevent_req *req = tevent_req_callback_data(
378 subreq, struct tevent_req);
379 struct rpccli_winreg_OpenHKLM_state *state = tevent_req_data(
380 req, struct rpccli_winreg_OpenHKLM_state);
384 if (state->out_mem_ctx) {
385 mem_ctx = state->out_mem_ctx;
390 status = state->dispatch_recv(subreq, mem_ctx);
392 if (!NT_STATUS_IS_OK(status)) {
393 tevent_req_nterror(req, status);
397 /* Copy out parameters */
398 *state->orig.out.handle = *state->tmp.out.handle;
401 state->orig.out.result = state->tmp.out.result;
403 /* Reset temporary structure */
404 ZERO_STRUCT(state->tmp);
406 tevent_req_done(req);
409 NTSTATUS rpccli_winreg_OpenHKLM_recv(struct tevent_req *req,
413 struct rpccli_winreg_OpenHKLM_state *state = tevent_req_data(
414 req, struct rpccli_winreg_OpenHKLM_state);
417 if (tevent_req_is_nterror(req, &status)) {
418 tevent_req_received(req);
422 /* Steal possbile out parameters to the callers context */
423 talloc_steal(mem_ctx, state->out_mem_ctx);
426 *result = state->orig.out.result;
428 tevent_req_received(req);
432 NTSTATUS rpccli_winreg_OpenHKLM(struct rpc_pipe_client *cli,
434 uint16_t *system_name /* [in] [unique] */,
435 uint32_t access_mask /* [in] */,
436 struct policy_handle *handle /* [out] [ref] */,
439 struct winreg_OpenHKLM r;
443 r.in.system_name = system_name;
444 r.in.access_mask = access_mask;
446 status = cli->dispatch(cli,
452 if (!NT_STATUS_IS_OK(status)) {
456 if (NT_STATUS_IS_ERR(status)) {
460 /* Return variables */
461 *handle = *r.out.handle;
465 *werror = r.out.result;
468 return werror_to_ntstatus(r.out.result);
471 struct rpccli_winreg_OpenHKPD_state {
472 struct winreg_OpenHKPD orig;
473 struct winreg_OpenHKPD tmp;
474 TALLOC_CTX *out_mem_ctx;
475 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
478 static void rpccli_winreg_OpenHKPD_done(struct tevent_req *subreq);
480 struct tevent_req *rpccli_winreg_OpenHKPD_send(TALLOC_CTX *mem_ctx,
481 struct tevent_context *ev,
482 struct rpc_pipe_client *cli,
483 uint16_t *_system_name /* [in] [unique] */,
484 uint32_t _access_mask /* [in] */,
485 struct policy_handle *_handle /* [out] [ref] */)
487 struct tevent_req *req;
488 struct rpccli_winreg_OpenHKPD_state *state;
489 struct tevent_req *subreq;
491 req = tevent_req_create(mem_ctx, &state,
492 struct rpccli_winreg_OpenHKPD_state);
496 state->out_mem_ctx = NULL;
497 state->dispatch_recv = cli->dispatch_recv;
500 state->orig.in.system_name = _system_name;
501 state->orig.in.access_mask = _access_mask;
504 state->orig.out.handle = _handle;
507 ZERO_STRUCT(state->orig.out.result);
509 state->out_mem_ctx = talloc_named_const(state, 0,
510 "rpccli_winreg_OpenHKPD_out_memory");
511 if (tevent_req_nomem(state->out_mem_ctx, req)) {
512 return tevent_req_post(req, ev);
515 /* make a temporary copy, that we pass to the dispatch function */
516 state->tmp = state->orig;
518 subreq = cli->dispatch_send(state, ev, cli,
522 if (tevent_req_nomem(subreq, req)) {
523 return tevent_req_post(req, ev);
525 tevent_req_set_callback(subreq, rpccli_winreg_OpenHKPD_done, req);
529 static void rpccli_winreg_OpenHKPD_done(struct tevent_req *subreq)
531 struct tevent_req *req = tevent_req_callback_data(
532 subreq, struct tevent_req);
533 struct rpccli_winreg_OpenHKPD_state *state = tevent_req_data(
534 req, struct rpccli_winreg_OpenHKPD_state);
538 if (state->out_mem_ctx) {
539 mem_ctx = state->out_mem_ctx;
544 status = state->dispatch_recv(subreq, mem_ctx);
546 if (!NT_STATUS_IS_OK(status)) {
547 tevent_req_nterror(req, status);
551 /* Copy out parameters */
552 *state->orig.out.handle = *state->tmp.out.handle;
555 state->orig.out.result = state->tmp.out.result;
557 /* Reset temporary structure */
558 ZERO_STRUCT(state->tmp);
560 tevent_req_done(req);
563 NTSTATUS rpccli_winreg_OpenHKPD_recv(struct tevent_req *req,
567 struct rpccli_winreg_OpenHKPD_state *state = tevent_req_data(
568 req, struct rpccli_winreg_OpenHKPD_state);
571 if (tevent_req_is_nterror(req, &status)) {
572 tevent_req_received(req);
576 /* Steal possbile out parameters to the callers context */
577 talloc_steal(mem_ctx, state->out_mem_ctx);
580 *result = state->orig.out.result;
582 tevent_req_received(req);
586 NTSTATUS rpccli_winreg_OpenHKPD(struct rpc_pipe_client *cli,
588 uint16_t *system_name /* [in] [unique] */,
589 uint32_t access_mask /* [in] */,
590 struct policy_handle *handle /* [out] [ref] */,
593 struct winreg_OpenHKPD r;
597 r.in.system_name = system_name;
598 r.in.access_mask = access_mask;
600 status = cli->dispatch(cli,
606 if (!NT_STATUS_IS_OK(status)) {
610 if (NT_STATUS_IS_ERR(status)) {
614 /* Return variables */
615 *handle = *r.out.handle;
619 *werror = r.out.result;
622 return werror_to_ntstatus(r.out.result);
625 struct rpccli_winreg_OpenHKU_state {
626 struct winreg_OpenHKU orig;
627 struct winreg_OpenHKU tmp;
628 TALLOC_CTX *out_mem_ctx;
629 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
632 static void rpccli_winreg_OpenHKU_done(struct tevent_req *subreq);
634 struct tevent_req *rpccli_winreg_OpenHKU_send(TALLOC_CTX *mem_ctx,
635 struct tevent_context *ev,
636 struct rpc_pipe_client *cli,
637 uint16_t *_system_name /* [in] [unique] */,
638 uint32_t _access_mask /* [in] */,
639 struct policy_handle *_handle /* [out] [ref] */)
641 struct tevent_req *req;
642 struct rpccli_winreg_OpenHKU_state *state;
643 struct tevent_req *subreq;
645 req = tevent_req_create(mem_ctx, &state,
646 struct rpccli_winreg_OpenHKU_state);
650 state->out_mem_ctx = NULL;
651 state->dispatch_recv = cli->dispatch_recv;
654 state->orig.in.system_name = _system_name;
655 state->orig.in.access_mask = _access_mask;
658 state->orig.out.handle = _handle;
661 ZERO_STRUCT(state->orig.out.result);
663 state->out_mem_ctx = talloc_named_const(state, 0,
664 "rpccli_winreg_OpenHKU_out_memory");
665 if (tevent_req_nomem(state->out_mem_ctx, req)) {
666 return tevent_req_post(req, ev);
669 /* make a temporary copy, that we pass to the dispatch function */
670 state->tmp = state->orig;
672 subreq = cli->dispatch_send(state, ev, cli,
676 if (tevent_req_nomem(subreq, req)) {
677 return tevent_req_post(req, ev);
679 tevent_req_set_callback(subreq, rpccli_winreg_OpenHKU_done, req);
683 static void rpccli_winreg_OpenHKU_done(struct tevent_req *subreq)
685 struct tevent_req *req = tevent_req_callback_data(
686 subreq, struct tevent_req);
687 struct rpccli_winreg_OpenHKU_state *state = tevent_req_data(
688 req, struct rpccli_winreg_OpenHKU_state);
692 if (state->out_mem_ctx) {
693 mem_ctx = state->out_mem_ctx;
698 status = state->dispatch_recv(subreq, mem_ctx);
700 if (!NT_STATUS_IS_OK(status)) {
701 tevent_req_nterror(req, status);
705 /* Copy out parameters */
706 *state->orig.out.handle = *state->tmp.out.handle;
709 state->orig.out.result = state->tmp.out.result;
711 /* Reset temporary structure */
712 ZERO_STRUCT(state->tmp);
714 tevent_req_done(req);
717 NTSTATUS rpccli_winreg_OpenHKU_recv(struct tevent_req *req,
721 struct rpccli_winreg_OpenHKU_state *state = tevent_req_data(
722 req, struct rpccli_winreg_OpenHKU_state);
725 if (tevent_req_is_nterror(req, &status)) {
726 tevent_req_received(req);
730 /* Steal possbile out parameters to the callers context */
731 talloc_steal(mem_ctx, state->out_mem_ctx);
734 *result = state->orig.out.result;
736 tevent_req_received(req);
740 NTSTATUS rpccli_winreg_OpenHKU(struct rpc_pipe_client *cli,
742 uint16_t *system_name /* [in] [unique] */,
743 uint32_t access_mask /* [in] */,
744 struct policy_handle *handle /* [out] [ref] */,
747 struct winreg_OpenHKU r;
751 r.in.system_name = system_name;
752 r.in.access_mask = access_mask;
754 status = cli->dispatch(cli,
760 if (!NT_STATUS_IS_OK(status)) {
764 if (NT_STATUS_IS_ERR(status)) {
768 /* Return variables */
769 *handle = *r.out.handle;
773 *werror = r.out.result;
776 return werror_to_ntstatus(r.out.result);
779 struct rpccli_winreg_CloseKey_state {
780 struct winreg_CloseKey orig;
781 struct winreg_CloseKey tmp;
782 TALLOC_CTX *out_mem_ctx;
783 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
786 static void rpccli_winreg_CloseKey_done(struct tevent_req *subreq);
788 struct tevent_req *rpccli_winreg_CloseKey_send(TALLOC_CTX *mem_ctx,
789 struct tevent_context *ev,
790 struct rpc_pipe_client *cli,
791 struct policy_handle *_handle /* [in,out] [ref] */)
793 struct tevent_req *req;
794 struct rpccli_winreg_CloseKey_state *state;
795 struct tevent_req *subreq;
797 req = tevent_req_create(mem_ctx, &state,
798 struct rpccli_winreg_CloseKey_state);
802 state->out_mem_ctx = NULL;
803 state->dispatch_recv = cli->dispatch_recv;
806 state->orig.in.handle = _handle;
809 state->orig.out.handle = _handle;
812 ZERO_STRUCT(state->orig.out.result);
814 state->out_mem_ctx = talloc_named_const(state, 0,
815 "rpccli_winreg_CloseKey_out_memory");
816 if (tevent_req_nomem(state->out_mem_ctx, req)) {
817 return tevent_req_post(req, ev);
820 /* make a temporary copy, that we pass to the dispatch function */
821 state->tmp = state->orig;
823 subreq = cli->dispatch_send(state, ev, cli,
827 if (tevent_req_nomem(subreq, req)) {
828 return tevent_req_post(req, ev);
830 tevent_req_set_callback(subreq, rpccli_winreg_CloseKey_done, req);
834 static void rpccli_winreg_CloseKey_done(struct tevent_req *subreq)
836 struct tevent_req *req = tevent_req_callback_data(
837 subreq, struct tevent_req);
838 struct rpccli_winreg_CloseKey_state *state = tevent_req_data(
839 req, struct rpccli_winreg_CloseKey_state);
843 if (state->out_mem_ctx) {
844 mem_ctx = state->out_mem_ctx;
849 status = state->dispatch_recv(subreq, mem_ctx);
851 if (!NT_STATUS_IS_OK(status)) {
852 tevent_req_nterror(req, status);
856 /* Copy out parameters */
857 *state->orig.out.handle = *state->tmp.out.handle;
860 state->orig.out.result = state->tmp.out.result;
862 /* Reset temporary structure */
863 ZERO_STRUCT(state->tmp);
865 tevent_req_done(req);
868 NTSTATUS rpccli_winreg_CloseKey_recv(struct tevent_req *req,
872 struct rpccli_winreg_CloseKey_state *state = tevent_req_data(
873 req, struct rpccli_winreg_CloseKey_state);
876 if (tevent_req_is_nterror(req, &status)) {
877 tevent_req_received(req);
881 /* Steal possbile out parameters to the callers context */
882 talloc_steal(mem_ctx, state->out_mem_ctx);
885 *result = state->orig.out.result;
887 tevent_req_received(req);
891 NTSTATUS rpccli_winreg_CloseKey(struct rpc_pipe_client *cli,
893 struct policy_handle *handle /* [in,out] [ref] */,
896 struct winreg_CloseKey r;
900 r.in.handle = handle;
902 status = cli->dispatch(cli,
908 if (!NT_STATUS_IS_OK(status)) {
912 if (NT_STATUS_IS_ERR(status)) {
916 /* Return variables */
917 *handle = *r.out.handle;
921 *werror = r.out.result;
924 return werror_to_ntstatus(r.out.result);
927 struct rpccli_winreg_CreateKey_state {
928 struct winreg_CreateKey orig;
929 struct winreg_CreateKey tmp;
930 TALLOC_CTX *out_mem_ctx;
931 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
934 static void rpccli_winreg_CreateKey_done(struct tevent_req *subreq);
936 struct tevent_req *rpccli_winreg_CreateKey_send(TALLOC_CTX *mem_ctx,
937 struct tevent_context *ev,
938 struct rpc_pipe_client *cli,
939 struct policy_handle *_handle /* [in] [ref] */,
940 struct winreg_String _name /* [in] */,
941 struct winreg_String _keyclass /* [in] */,
942 uint32_t _options /* [in] */,
943 uint32_t _access_mask /* [in] */,
944 struct winreg_SecBuf *_secdesc /* [in] [unique] */,
945 struct policy_handle *_new_handle /* [out] [ref] */,
946 enum winreg_CreateAction *_action_taken /* [in,out] [unique] */)
948 struct tevent_req *req;
949 struct rpccli_winreg_CreateKey_state *state;
950 struct tevent_req *subreq;
952 req = tevent_req_create(mem_ctx, &state,
953 struct rpccli_winreg_CreateKey_state);
957 state->out_mem_ctx = NULL;
958 state->dispatch_recv = cli->dispatch_recv;
961 state->orig.in.handle = _handle;
962 state->orig.in.name = _name;
963 state->orig.in.keyclass = _keyclass;
964 state->orig.in.options = _options;
965 state->orig.in.access_mask = _access_mask;
966 state->orig.in.secdesc = _secdesc;
967 state->orig.in.action_taken = _action_taken;
970 state->orig.out.new_handle = _new_handle;
971 state->orig.out.action_taken = _action_taken;
974 ZERO_STRUCT(state->orig.out.result);
976 state->out_mem_ctx = talloc_named_const(state, 0,
977 "rpccli_winreg_CreateKey_out_memory");
978 if (tevent_req_nomem(state->out_mem_ctx, req)) {
979 return tevent_req_post(req, ev);
982 /* make a temporary copy, that we pass to the dispatch function */
983 state->tmp = state->orig;
985 subreq = cli->dispatch_send(state, ev, cli,
987 NDR_WINREG_CREATEKEY,
989 if (tevent_req_nomem(subreq, req)) {
990 return tevent_req_post(req, ev);
992 tevent_req_set_callback(subreq, rpccli_winreg_CreateKey_done, req);
996 static void rpccli_winreg_CreateKey_done(struct tevent_req *subreq)
998 struct tevent_req *req = tevent_req_callback_data(
999 subreq, struct tevent_req);
1000 struct rpccli_winreg_CreateKey_state *state = tevent_req_data(
1001 req, struct rpccli_winreg_CreateKey_state);
1003 TALLOC_CTX *mem_ctx;
1005 if (state->out_mem_ctx) {
1006 mem_ctx = state->out_mem_ctx;
1011 status = state->dispatch_recv(subreq, mem_ctx);
1012 TALLOC_FREE(subreq);
1013 if (!NT_STATUS_IS_OK(status)) {
1014 tevent_req_nterror(req, status);
1018 /* Copy out parameters */
1019 *state->orig.out.new_handle = *state->tmp.out.new_handle;
1020 if (state->orig.out.action_taken && state->tmp.out.action_taken) {
1021 *state->orig.out.action_taken = *state->tmp.out.action_taken;
1025 state->orig.out.result = state->tmp.out.result;
1027 /* Reset temporary structure */
1028 ZERO_STRUCT(state->tmp);
1030 tevent_req_done(req);
1033 NTSTATUS rpccli_winreg_CreateKey_recv(struct tevent_req *req,
1034 TALLOC_CTX *mem_ctx,
1037 struct rpccli_winreg_CreateKey_state *state = tevent_req_data(
1038 req, struct rpccli_winreg_CreateKey_state);
1041 if (tevent_req_is_nterror(req, &status)) {
1042 tevent_req_received(req);
1046 /* Steal possbile out parameters to the callers context */
1047 talloc_steal(mem_ctx, state->out_mem_ctx);
1050 *result = state->orig.out.result;
1052 tevent_req_received(req);
1053 return NT_STATUS_OK;
1056 NTSTATUS rpccli_winreg_CreateKey(struct rpc_pipe_client *cli,
1057 TALLOC_CTX *mem_ctx,
1058 struct policy_handle *handle /* [in] [ref] */,
1059 struct winreg_String name /* [in] */,
1060 struct winreg_String keyclass /* [in] */,
1061 uint32_t options /* [in] */,
1062 uint32_t access_mask /* [in] */,
1063 struct winreg_SecBuf *secdesc /* [in] [unique] */,
1064 struct policy_handle *new_handle /* [out] [ref] */,
1065 enum winreg_CreateAction *action_taken /* [in,out] [unique] */,
1068 struct winreg_CreateKey r;
1072 r.in.handle = handle;
1074 r.in.keyclass = keyclass;
1075 r.in.options = options;
1076 r.in.access_mask = access_mask;
1077 r.in.secdesc = secdesc;
1078 r.in.action_taken = action_taken;
1080 status = cli->dispatch(cli,
1083 NDR_WINREG_CREATEKEY,
1086 if (!NT_STATUS_IS_OK(status)) {
1090 if (NT_STATUS_IS_ERR(status)) {
1094 /* Return variables */
1095 *new_handle = *r.out.new_handle;
1096 if (action_taken && r.out.action_taken) {
1097 *action_taken = *r.out.action_taken;
1102 *werror = r.out.result;
1105 return werror_to_ntstatus(r.out.result);
1108 struct rpccli_winreg_DeleteKey_state {
1109 struct winreg_DeleteKey orig;
1110 struct winreg_DeleteKey tmp;
1111 TALLOC_CTX *out_mem_ctx;
1112 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
1115 static void rpccli_winreg_DeleteKey_done(struct tevent_req *subreq);
1117 struct tevent_req *rpccli_winreg_DeleteKey_send(TALLOC_CTX *mem_ctx,
1118 struct tevent_context *ev,
1119 struct rpc_pipe_client *cli,
1120 struct policy_handle *_handle /* [in] [ref] */,
1121 struct winreg_String _key /* [in] */)
1123 struct tevent_req *req;
1124 struct rpccli_winreg_DeleteKey_state *state;
1125 struct tevent_req *subreq;
1127 req = tevent_req_create(mem_ctx, &state,
1128 struct rpccli_winreg_DeleteKey_state);
1132 state->out_mem_ctx = NULL;
1133 state->dispatch_recv = cli->dispatch_recv;
1136 state->orig.in.handle = _handle;
1137 state->orig.in.key = _key;
1139 /* Out parameters */
1142 ZERO_STRUCT(state->orig.out.result);
1144 /* make a temporary copy, that we pass to the dispatch function */
1145 state->tmp = state->orig;
1147 subreq = cli->dispatch_send(state, ev, cli,
1149 NDR_WINREG_DELETEKEY,
1151 if (tevent_req_nomem(subreq, req)) {
1152 return tevent_req_post(req, ev);
1154 tevent_req_set_callback(subreq, rpccli_winreg_DeleteKey_done, req);
1158 static void rpccli_winreg_DeleteKey_done(struct tevent_req *subreq)
1160 struct tevent_req *req = tevent_req_callback_data(
1161 subreq, struct tevent_req);
1162 struct rpccli_winreg_DeleteKey_state *state = tevent_req_data(
1163 req, struct rpccli_winreg_DeleteKey_state);
1165 TALLOC_CTX *mem_ctx;
1167 if (state->out_mem_ctx) {
1168 mem_ctx = state->out_mem_ctx;
1173 status = state->dispatch_recv(subreq, mem_ctx);
1174 TALLOC_FREE(subreq);
1175 if (!NT_STATUS_IS_OK(status)) {
1176 tevent_req_nterror(req, status);
1180 /* Copy out parameters */
1183 state->orig.out.result = state->tmp.out.result;
1185 /* Reset temporary structure */
1186 ZERO_STRUCT(state->tmp);
1188 tevent_req_done(req);
1191 NTSTATUS rpccli_winreg_DeleteKey_recv(struct tevent_req *req,
1192 TALLOC_CTX *mem_ctx,
1195 struct rpccli_winreg_DeleteKey_state *state = tevent_req_data(
1196 req, struct rpccli_winreg_DeleteKey_state);
1199 if (tevent_req_is_nterror(req, &status)) {
1200 tevent_req_received(req);
1204 /* Steal possbile out parameters to the callers context */
1205 talloc_steal(mem_ctx, state->out_mem_ctx);
1208 *result = state->orig.out.result;
1210 tevent_req_received(req);
1211 return NT_STATUS_OK;
1214 NTSTATUS rpccli_winreg_DeleteKey(struct rpc_pipe_client *cli,
1215 TALLOC_CTX *mem_ctx,
1216 struct policy_handle *handle /* [in] [ref] */,
1217 struct winreg_String key /* [in] */,
1220 struct winreg_DeleteKey r;
1224 r.in.handle = handle;
1227 status = cli->dispatch(cli,
1230 NDR_WINREG_DELETEKEY,
1233 if (!NT_STATUS_IS_OK(status)) {
1237 if (NT_STATUS_IS_ERR(status)) {
1241 /* Return variables */
1245 *werror = r.out.result;
1248 return werror_to_ntstatus(r.out.result);
1251 struct rpccli_winreg_DeleteValue_state {
1252 struct winreg_DeleteValue orig;
1253 struct winreg_DeleteValue tmp;
1254 TALLOC_CTX *out_mem_ctx;
1255 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
1258 static void rpccli_winreg_DeleteValue_done(struct tevent_req *subreq);
1260 struct tevent_req *rpccli_winreg_DeleteValue_send(TALLOC_CTX *mem_ctx,
1261 struct tevent_context *ev,
1262 struct rpc_pipe_client *cli,
1263 struct policy_handle *_handle /* [in] [ref] */,
1264 struct winreg_String _value /* [in] */)
1266 struct tevent_req *req;
1267 struct rpccli_winreg_DeleteValue_state *state;
1268 struct tevent_req *subreq;
1270 req = tevent_req_create(mem_ctx, &state,
1271 struct rpccli_winreg_DeleteValue_state);
1275 state->out_mem_ctx = NULL;
1276 state->dispatch_recv = cli->dispatch_recv;
1279 state->orig.in.handle = _handle;
1280 state->orig.in.value = _value;
1282 /* Out parameters */
1285 ZERO_STRUCT(state->orig.out.result);
1287 /* make a temporary copy, that we pass to the dispatch function */
1288 state->tmp = state->orig;
1290 subreq = cli->dispatch_send(state, ev, cli,
1292 NDR_WINREG_DELETEVALUE,
1294 if (tevent_req_nomem(subreq, req)) {
1295 return tevent_req_post(req, ev);
1297 tevent_req_set_callback(subreq, rpccli_winreg_DeleteValue_done, req);
1301 static void rpccli_winreg_DeleteValue_done(struct tevent_req *subreq)
1303 struct tevent_req *req = tevent_req_callback_data(
1304 subreq, struct tevent_req);
1305 struct rpccli_winreg_DeleteValue_state *state = tevent_req_data(
1306 req, struct rpccli_winreg_DeleteValue_state);
1308 TALLOC_CTX *mem_ctx;
1310 if (state->out_mem_ctx) {
1311 mem_ctx = state->out_mem_ctx;
1316 status = state->dispatch_recv(subreq, mem_ctx);
1317 TALLOC_FREE(subreq);
1318 if (!NT_STATUS_IS_OK(status)) {
1319 tevent_req_nterror(req, status);
1323 /* Copy out parameters */
1326 state->orig.out.result = state->tmp.out.result;
1328 /* Reset temporary structure */
1329 ZERO_STRUCT(state->tmp);
1331 tevent_req_done(req);
1334 NTSTATUS rpccli_winreg_DeleteValue_recv(struct tevent_req *req,
1335 TALLOC_CTX *mem_ctx,
1338 struct rpccli_winreg_DeleteValue_state *state = tevent_req_data(
1339 req, struct rpccli_winreg_DeleteValue_state);
1342 if (tevent_req_is_nterror(req, &status)) {
1343 tevent_req_received(req);
1347 /* Steal possbile out parameters to the callers context */
1348 talloc_steal(mem_ctx, state->out_mem_ctx);
1351 *result = state->orig.out.result;
1353 tevent_req_received(req);
1354 return NT_STATUS_OK;
1357 NTSTATUS rpccli_winreg_DeleteValue(struct rpc_pipe_client *cli,
1358 TALLOC_CTX *mem_ctx,
1359 struct policy_handle *handle /* [in] [ref] */,
1360 struct winreg_String value /* [in] */,
1363 struct winreg_DeleteValue r;
1367 r.in.handle = handle;
1370 status = cli->dispatch(cli,
1373 NDR_WINREG_DELETEVALUE,
1376 if (!NT_STATUS_IS_OK(status)) {
1380 if (NT_STATUS_IS_ERR(status)) {
1384 /* Return variables */
1388 *werror = r.out.result;
1391 return werror_to_ntstatus(r.out.result);
1394 struct rpccli_winreg_EnumKey_state {
1395 struct winreg_EnumKey orig;
1396 struct winreg_EnumKey tmp;
1397 TALLOC_CTX *out_mem_ctx;
1398 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
1401 static void rpccli_winreg_EnumKey_done(struct tevent_req *subreq);
1403 struct tevent_req *rpccli_winreg_EnumKey_send(TALLOC_CTX *mem_ctx,
1404 struct tevent_context *ev,
1405 struct rpc_pipe_client *cli,
1406 struct policy_handle *_handle /* [in] [ref] */,
1407 uint32_t _enum_index /* [in] */,
1408 struct winreg_StringBuf *_name /* [in,out] [ref] */,
1409 struct winreg_StringBuf *_keyclass /* [in,out] [unique] */,
1410 NTTIME *_last_changed_time /* [in,out] [unique] */)
1412 struct tevent_req *req;
1413 struct rpccli_winreg_EnumKey_state *state;
1414 struct tevent_req *subreq;
1416 req = tevent_req_create(mem_ctx, &state,
1417 struct rpccli_winreg_EnumKey_state);
1421 state->out_mem_ctx = NULL;
1422 state->dispatch_recv = cli->dispatch_recv;
1425 state->orig.in.handle = _handle;
1426 state->orig.in.enum_index = _enum_index;
1427 state->orig.in.name = _name;
1428 state->orig.in.keyclass = _keyclass;
1429 state->orig.in.last_changed_time = _last_changed_time;
1431 /* Out parameters */
1432 state->orig.out.name = _name;
1433 state->orig.out.keyclass = _keyclass;
1434 state->orig.out.last_changed_time = _last_changed_time;
1437 ZERO_STRUCT(state->orig.out.result);
1439 state->out_mem_ctx = talloc_named_const(state, 0,
1440 "rpccli_winreg_EnumKey_out_memory");
1441 if (tevent_req_nomem(state->out_mem_ctx, req)) {
1442 return tevent_req_post(req, ev);
1445 /* make a temporary copy, that we pass to the dispatch function */
1446 state->tmp = state->orig;
1448 subreq = cli->dispatch_send(state, ev, cli,
1452 if (tevent_req_nomem(subreq, req)) {
1453 return tevent_req_post(req, ev);
1455 tevent_req_set_callback(subreq, rpccli_winreg_EnumKey_done, req);
1459 static void rpccli_winreg_EnumKey_done(struct tevent_req *subreq)
1461 struct tevent_req *req = tevent_req_callback_data(
1462 subreq, struct tevent_req);
1463 struct rpccli_winreg_EnumKey_state *state = tevent_req_data(
1464 req, struct rpccli_winreg_EnumKey_state);
1466 TALLOC_CTX *mem_ctx;
1468 if (state->out_mem_ctx) {
1469 mem_ctx = state->out_mem_ctx;
1474 status = state->dispatch_recv(subreq, mem_ctx);
1475 TALLOC_FREE(subreq);
1476 if (!NT_STATUS_IS_OK(status)) {
1477 tevent_req_nterror(req, status);
1481 /* Copy out parameters */
1482 *state->orig.out.name = *state->tmp.out.name;
1483 if (state->orig.out.keyclass && state->tmp.out.keyclass) {
1484 *state->orig.out.keyclass = *state->tmp.out.keyclass;
1486 if (state->orig.out.last_changed_time && state->tmp.out.last_changed_time) {
1487 *state->orig.out.last_changed_time = *state->tmp.out.last_changed_time;
1491 state->orig.out.result = state->tmp.out.result;
1493 /* Reset temporary structure */
1494 ZERO_STRUCT(state->tmp);
1496 tevent_req_done(req);
1499 NTSTATUS rpccli_winreg_EnumKey_recv(struct tevent_req *req,
1500 TALLOC_CTX *mem_ctx,
1503 struct rpccli_winreg_EnumKey_state *state = tevent_req_data(
1504 req, struct rpccli_winreg_EnumKey_state);
1507 if (tevent_req_is_nterror(req, &status)) {
1508 tevent_req_received(req);
1512 /* Steal possbile out parameters to the callers context */
1513 talloc_steal(mem_ctx, state->out_mem_ctx);
1516 *result = state->orig.out.result;
1518 tevent_req_received(req);
1519 return NT_STATUS_OK;
1522 NTSTATUS rpccli_winreg_EnumKey(struct rpc_pipe_client *cli,
1523 TALLOC_CTX *mem_ctx,
1524 struct policy_handle *handle /* [in] [ref] */,
1525 uint32_t enum_index /* [in] */,
1526 struct winreg_StringBuf *name /* [in,out] [ref] */,
1527 struct winreg_StringBuf *keyclass /* [in,out] [unique] */,
1528 NTTIME *last_changed_time /* [in,out] [unique] */,
1531 struct winreg_EnumKey r;
1535 r.in.handle = handle;
1536 r.in.enum_index = enum_index;
1538 r.in.keyclass = keyclass;
1539 r.in.last_changed_time = last_changed_time;
1541 status = cli->dispatch(cli,
1547 if (!NT_STATUS_IS_OK(status)) {
1551 if (NT_STATUS_IS_ERR(status)) {
1555 /* Return variables */
1556 *name = *r.out.name;
1557 if (keyclass && r.out.keyclass) {
1558 *keyclass = *r.out.keyclass;
1560 if (last_changed_time && r.out.last_changed_time) {
1561 *last_changed_time = *r.out.last_changed_time;
1566 *werror = r.out.result;
1569 return werror_to_ntstatus(r.out.result);
1572 struct rpccli_winreg_EnumValue_state {
1573 struct winreg_EnumValue orig;
1574 struct winreg_EnumValue tmp;
1575 TALLOC_CTX *out_mem_ctx;
1576 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
1579 static void rpccli_winreg_EnumValue_done(struct tevent_req *subreq);
1581 struct tevent_req *rpccli_winreg_EnumValue_send(TALLOC_CTX *mem_ctx,
1582 struct tevent_context *ev,
1583 struct rpc_pipe_client *cli,
1584 struct policy_handle *_handle /* [in] [ref] */,
1585 uint32_t _enum_index /* [in] */,
1586 struct winreg_ValNameBuf *_name /* [in,out] [ref] */,
1587 enum winreg_Type *_type /* [in,out] [unique] */,
1588 uint8_t *_value /* [in,out] [unique,length_is(*length),size_is(*size)] */,
1589 uint32_t *_size /* [in,out] [unique] */,
1590 uint32_t *_length /* [in,out] [unique] */)
1592 struct tevent_req *req;
1593 struct rpccli_winreg_EnumValue_state *state;
1594 struct tevent_req *subreq;
1596 req = tevent_req_create(mem_ctx, &state,
1597 struct rpccli_winreg_EnumValue_state);
1601 state->out_mem_ctx = NULL;
1602 state->dispatch_recv = cli->dispatch_recv;
1605 state->orig.in.handle = _handle;
1606 state->orig.in.enum_index = _enum_index;
1607 state->orig.in.name = _name;
1608 state->orig.in.type = _type;
1609 state->orig.in.value = _value;
1610 state->orig.in.size = _size;
1611 state->orig.in.length = _length;
1613 /* Out parameters */
1614 state->orig.out.name = _name;
1615 state->orig.out.type = _type;
1616 state->orig.out.value = _value;
1617 state->orig.out.size = _size;
1618 state->orig.out.length = _length;
1621 ZERO_STRUCT(state->orig.out.result);
1623 state->out_mem_ctx = talloc_named_const(state, 0,
1624 "rpccli_winreg_EnumValue_out_memory");
1625 if (tevent_req_nomem(state->out_mem_ctx, req)) {
1626 return tevent_req_post(req, ev);
1629 /* make a temporary copy, that we pass to the dispatch function */
1630 state->tmp = state->orig;
1632 subreq = cli->dispatch_send(state, ev, cli,
1634 NDR_WINREG_ENUMVALUE,
1636 if (tevent_req_nomem(subreq, req)) {
1637 return tevent_req_post(req, ev);
1639 tevent_req_set_callback(subreq, rpccli_winreg_EnumValue_done, req);
1643 static void rpccli_winreg_EnumValue_done(struct tevent_req *subreq)
1645 struct tevent_req *req = tevent_req_callback_data(
1646 subreq, struct tevent_req);
1647 struct rpccli_winreg_EnumValue_state *state = tevent_req_data(
1648 req, struct rpccli_winreg_EnumValue_state);
1650 TALLOC_CTX *mem_ctx;
1652 if (state->out_mem_ctx) {
1653 mem_ctx = state->out_mem_ctx;
1658 status = state->dispatch_recv(subreq, mem_ctx);
1659 TALLOC_FREE(subreq);
1660 if (!NT_STATUS_IS_OK(status)) {
1661 tevent_req_nterror(req, status);
1665 /* Copy out parameters */
1666 *state->orig.out.name = *state->tmp.out.name;
1667 if (state->orig.out.type && state->tmp.out.type) {
1668 *state->orig.out.type = *state->tmp.out.type;
1670 if (state->orig.out.value && state->tmp.out.value) {
1671 memcpy(state->orig.out.value, state->tmp.out.value, (*state->tmp.in.size) * sizeof(*state->orig.out.value));
1673 if (state->orig.out.size && state->tmp.out.size) {
1674 *state->orig.out.size = *state->tmp.out.size;
1676 if (state->orig.out.length && state->tmp.out.length) {
1677 *state->orig.out.length = *state->tmp.out.length;
1681 state->orig.out.result = state->tmp.out.result;
1683 /* Reset temporary structure */
1684 ZERO_STRUCT(state->tmp);
1686 tevent_req_done(req);
1689 NTSTATUS rpccli_winreg_EnumValue_recv(struct tevent_req *req,
1690 TALLOC_CTX *mem_ctx,
1693 struct rpccli_winreg_EnumValue_state *state = tevent_req_data(
1694 req, struct rpccli_winreg_EnumValue_state);
1697 if (tevent_req_is_nterror(req, &status)) {
1698 tevent_req_received(req);
1702 /* Steal possbile out parameters to the callers context */
1703 talloc_steal(mem_ctx, state->out_mem_ctx);
1706 *result = state->orig.out.result;
1708 tevent_req_received(req);
1709 return NT_STATUS_OK;
1712 NTSTATUS rpccli_winreg_EnumValue(struct rpc_pipe_client *cli,
1713 TALLOC_CTX *mem_ctx,
1714 struct policy_handle *handle /* [in] [ref] */,
1715 uint32_t enum_index /* [in] */,
1716 struct winreg_ValNameBuf *name /* [in,out] [ref] */,
1717 enum winreg_Type *type /* [in,out] [unique] */,
1718 uint8_t *value /* [in,out] [unique,length_is(*length),size_is(*size)] */,
1719 uint32_t *size /* [in,out] [unique] */,
1720 uint32_t *length /* [in,out] [unique] */,
1723 struct winreg_EnumValue r;
1727 r.in.handle = handle;
1728 r.in.enum_index = enum_index;
1733 r.in.length = length;
1735 status = cli->dispatch(cli,
1738 NDR_WINREG_ENUMVALUE,
1741 if (!NT_STATUS_IS_OK(status)) {
1745 if (NT_STATUS_IS_ERR(status)) {
1749 /* Return variables */
1750 *name = *r.out.name;
1751 if (type && r.out.type) {
1752 *type = *r.out.type;
1754 if (value && r.out.value) {
1755 memcpy(value, r.out.value, (*r.in.size) * sizeof(*value));
1757 if (size && r.out.size) {
1758 *size = *r.out.size;
1760 if (length && r.out.length) {
1761 *length = *r.out.length;
1766 *werror = r.out.result;
1769 return werror_to_ntstatus(r.out.result);
1772 struct rpccli_winreg_FlushKey_state {
1773 struct winreg_FlushKey orig;
1774 struct winreg_FlushKey tmp;
1775 TALLOC_CTX *out_mem_ctx;
1776 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
1779 static void rpccli_winreg_FlushKey_done(struct tevent_req *subreq);
1781 struct tevent_req *rpccli_winreg_FlushKey_send(TALLOC_CTX *mem_ctx,
1782 struct tevent_context *ev,
1783 struct rpc_pipe_client *cli,
1784 struct policy_handle *_handle /* [in] [ref] */)
1786 struct tevent_req *req;
1787 struct rpccli_winreg_FlushKey_state *state;
1788 struct tevent_req *subreq;
1790 req = tevent_req_create(mem_ctx, &state,
1791 struct rpccli_winreg_FlushKey_state);
1795 state->out_mem_ctx = NULL;
1796 state->dispatch_recv = cli->dispatch_recv;
1799 state->orig.in.handle = _handle;
1801 /* Out parameters */
1804 ZERO_STRUCT(state->orig.out.result);
1806 /* make a temporary copy, that we pass to the dispatch function */
1807 state->tmp = state->orig;
1809 subreq = cli->dispatch_send(state, ev, cli,
1811 NDR_WINREG_FLUSHKEY,
1813 if (tevent_req_nomem(subreq, req)) {
1814 return tevent_req_post(req, ev);
1816 tevent_req_set_callback(subreq, rpccli_winreg_FlushKey_done, req);
1820 static void rpccli_winreg_FlushKey_done(struct tevent_req *subreq)
1822 struct tevent_req *req = tevent_req_callback_data(
1823 subreq, struct tevent_req);
1824 struct rpccli_winreg_FlushKey_state *state = tevent_req_data(
1825 req, struct rpccli_winreg_FlushKey_state);
1827 TALLOC_CTX *mem_ctx;
1829 if (state->out_mem_ctx) {
1830 mem_ctx = state->out_mem_ctx;
1835 status = state->dispatch_recv(subreq, mem_ctx);
1836 TALLOC_FREE(subreq);
1837 if (!NT_STATUS_IS_OK(status)) {
1838 tevent_req_nterror(req, status);
1842 /* Copy out parameters */
1845 state->orig.out.result = state->tmp.out.result;
1847 /* Reset temporary structure */
1848 ZERO_STRUCT(state->tmp);
1850 tevent_req_done(req);
1853 NTSTATUS rpccli_winreg_FlushKey_recv(struct tevent_req *req,
1854 TALLOC_CTX *mem_ctx,
1857 struct rpccli_winreg_FlushKey_state *state = tevent_req_data(
1858 req, struct rpccli_winreg_FlushKey_state);
1861 if (tevent_req_is_nterror(req, &status)) {
1862 tevent_req_received(req);
1866 /* Steal possbile out parameters to the callers context */
1867 talloc_steal(mem_ctx, state->out_mem_ctx);
1870 *result = state->orig.out.result;
1872 tevent_req_received(req);
1873 return NT_STATUS_OK;
1876 NTSTATUS rpccli_winreg_FlushKey(struct rpc_pipe_client *cli,
1877 TALLOC_CTX *mem_ctx,
1878 struct policy_handle *handle /* [in] [ref] */,
1881 struct winreg_FlushKey r;
1885 r.in.handle = handle;
1887 status = cli->dispatch(cli,
1890 NDR_WINREG_FLUSHKEY,
1893 if (!NT_STATUS_IS_OK(status)) {
1897 if (NT_STATUS_IS_ERR(status)) {
1901 /* Return variables */
1905 *werror = r.out.result;
1908 return werror_to_ntstatus(r.out.result);
1911 struct rpccli_winreg_GetKeySecurity_state {
1912 struct winreg_GetKeySecurity orig;
1913 struct winreg_GetKeySecurity tmp;
1914 TALLOC_CTX *out_mem_ctx;
1915 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
1918 static void rpccli_winreg_GetKeySecurity_done(struct tevent_req *subreq);
1920 struct tevent_req *rpccli_winreg_GetKeySecurity_send(TALLOC_CTX *mem_ctx,
1921 struct tevent_context *ev,
1922 struct rpc_pipe_client *cli,
1923 struct policy_handle *_handle /* [in] [ref] */,
1924 uint32_t _sec_info /* [in] */,
1925 struct KeySecurityData *_sd /* [in,out] [ref] */)
1927 struct tevent_req *req;
1928 struct rpccli_winreg_GetKeySecurity_state *state;
1929 struct tevent_req *subreq;
1931 req = tevent_req_create(mem_ctx, &state,
1932 struct rpccli_winreg_GetKeySecurity_state);
1936 state->out_mem_ctx = NULL;
1937 state->dispatch_recv = cli->dispatch_recv;
1940 state->orig.in.handle = _handle;
1941 state->orig.in.sec_info = _sec_info;
1942 state->orig.in.sd = _sd;
1944 /* Out parameters */
1945 state->orig.out.sd = _sd;
1948 ZERO_STRUCT(state->orig.out.result);
1950 state->out_mem_ctx = talloc_named_const(state, 0,
1951 "rpccli_winreg_GetKeySecurity_out_memory");
1952 if (tevent_req_nomem(state->out_mem_ctx, req)) {
1953 return tevent_req_post(req, ev);
1956 /* make a temporary copy, that we pass to the dispatch function */
1957 state->tmp = state->orig;
1959 subreq = cli->dispatch_send(state, ev, cli,
1961 NDR_WINREG_GETKEYSECURITY,
1963 if (tevent_req_nomem(subreq, req)) {
1964 return tevent_req_post(req, ev);
1966 tevent_req_set_callback(subreq, rpccli_winreg_GetKeySecurity_done, req);
1970 static void rpccli_winreg_GetKeySecurity_done(struct tevent_req *subreq)
1972 struct tevent_req *req = tevent_req_callback_data(
1973 subreq, struct tevent_req);
1974 struct rpccli_winreg_GetKeySecurity_state *state = tevent_req_data(
1975 req, struct rpccli_winreg_GetKeySecurity_state);
1977 TALLOC_CTX *mem_ctx;
1979 if (state->out_mem_ctx) {
1980 mem_ctx = state->out_mem_ctx;
1985 status = state->dispatch_recv(subreq, mem_ctx);
1986 TALLOC_FREE(subreq);
1987 if (!NT_STATUS_IS_OK(status)) {
1988 tevent_req_nterror(req, status);
1992 /* Copy out parameters */
1993 *state->orig.out.sd = *state->tmp.out.sd;
1996 state->orig.out.result = state->tmp.out.result;
1998 /* Reset temporary structure */
1999 ZERO_STRUCT(state->tmp);
2001 tevent_req_done(req);
2004 NTSTATUS rpccli_winreg_GetKeySecurity_recv(struct tevent_req *req,
2005 TALLOC_CTX *mem_ctx,
2008 struct rpccli_winreg_GetKeySecurity_state *state = tevent_req_data(
2009 req, struct rpccli_winreg_GetKeySecurity_state);
2012 if (tevent_req_is_nterror(req, &status)) {
2013 tevent_req_received(req);
2017 /* Steal possbile out parameters to the callers context */
2018 talloc_steal(mem_ctx, state->out_mem_ctx);
2021 *result = state->orig.out.result;
2023 tevent_req_received(req);
2024 return NT_STATUS_OK;
2027 NTSTATUS rpccli_winreg_GetKeySecurity(struct rpc_pipe_client *cli,
2028 TALLOC_CTX *mem_ctx,
2029 struct policy_handle *handle /* [in] [ref] */,
2030 uint32_t sec_info /* [in] */,
2031 struct KeySecurityData *sd /* [in,out] [ref] */,
2034 struct winreg_GetKeySecurity r;
2038 r.in.handle = handle;
2039 r.in.sec_info = sec_info;
2042 status = cli->dispatch(cli,
2045 NDR_WINREG_GETKEYSECURITY,
2048 if (!NT_STATUS_IS_OK(status)) {
2052 if (NT_STATUS_IS_ERR(status)) {
2056 /* Return variables */
2061 *werror = r.out.result;
2064 return werror_to_ntstatus(r.out.result);
2067 struct rpccli_winreg_LoadKey_state {
2068 struct winreg_LoadKey orig;
2069 struct winreg_LoadKey tmp;
2070 TALLOC_CTX *out_mem_ctx;
2071 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
2074 static void rpccli_winreg_LoadKey_done(struct tevent_req *subreq);
2076 struct tevent_req *rpccli_winreg_LoadKey_send(TALLOC_CTX *mem_ctx,
2077 struct tevent_context *ev,
2078 struct rpc_pipe_client *cli,
2079 struct policy_handle *_handle /* [in] [ref] */,
2080 struct winreg_String *_keyname /* [in] [unique] */,
2081 struct winreg_String *_filename /* [in] [unique] */)
2083 struct tevent_req *req;
2084 struct rpccli_winreg_LoadKey_state *state;
2085 struct tevent_req *subreq;
2087 req = tevent_req_create(mem_ctx, &state,
2088 struct rpccli_winreg_LoadKey_state);
2092 state->out_mem_ctx = NULL;
2093 state->dispatch_recv = cli->dispatch_recv;
2096 state->orig.in.handle = _handle;
2097 state->orig.in.keyname = _keyname;
2098 state->orig.in.filename = _filename;
2100 /* Out parameters */
2103 ZERO_STRUCT(state->orig.out.result);
2105 /* make a temporary copy, that we pass to the dispatch function */
2106 state->tmp = state->orig;
2108 subreq = cli->dispatch_send(state, ev, cli,
2112 if (tevent_req_nomem(subreq, req)) {
2113 return tevent_req_post(req, ev);
2115 tevent_req_set_callback(subreq, rpccli_winreg_LoadKey_done, req);
2119 static void rpccli_winreg_LoadKey_done(struct tevent_req *subreq)
2121 struct tevent_req *req = tevent_req_callback_data(
2122 subreq, struct tevent_req);
2123 struct rpccli_winreg_LoadKey_state *state = tevent_req_data(
2124 req, struct rpccli_winreg_LoadKey_state);
2126 TALLOC_CTX *mem_ctx;
2128 if (state->out_mem_ctx) {
2129 mem_ctx = state->out_mem_ctx;
2134 status = state->dispatch_recv(subreq, mem_ctx);
2135 TALLOC_FREE(subreq);
2136 if (!NT_STATUS_IS_OK(status)) {
2137 tevent_req_nterror(req, status);
2141 /* Copy out parameters */
2144 state->orig.out.result = state->tmp.out.result;
2146 /* Reset temporary structure */
2147 ZERO_STRUCT(state->tmp);
2149 tevent_req_done(req);
2152 NTSTATUS rpccli_winreg_LoadKey_recv(struct tevent_req *req,
2153 TALLOC_CTX *mem_ctx,
2156 struct rpccli_winreg_LoadKey_state *state = tevent_req_data(
2157 req, struct rpccli_winreg_LoadKey_state);
2160 if (tevent_req_is_nterror(req, &status)) {
2161 tevent_req_received(req);
2165 /* Steal possbile out parameters to the callers context */
2166 talloc_steal(mem_ctx, state->out_mem_ctx);
2169 *result = state->orig.out.result;
2171 tevent_req_received(req);
2172 return NT_STATUS_OK;
2175 NTSTATUS rpccli_winreg_LoadKey(struct rpc_pipe_client *cli,
2176 TALLOC_CTX *mem_ctx,
2177 struct policy_handle *handle /* [in] [ref] */,
2178 struct winreg_String *keyname /* [in] [unique] */,
2179 struct winreg_String *filename /* [in] [unique] */,
2182 struct winreg_LoadKey r;
2186 r.in.handle = handle;
2187 r.in.keyname = keyname;
2188 r.in.filename = filename;
2190 status = cli->dispatch(cli,
2196 if (!NT_STATUS_IS_OK(status)) {
2200 if (NT_STATUS_IS_ERR(status)) {
2204 /* Return variables */
2208 *werror = r.out.result;
2211 return werror_to_ntstatus(r.out.result);
2214 struct rpccli_winreg_NotifyChangeKeyValue_state {
2215 struct winreg_NotifyChangeKeyValue orig;
2216 struct winreg_NotifyChangeKeyValue tmp;
2217 TALLOC_CTX *out_mem_ctx;
2218 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
2221 static void rpccli_winreg_NotifyChangeKeyValue_done(struct tevent_req *subreq);
2223 struct tevent_req *rpccli_winreg_NotifyChangeKeyValue_send(TALLOC_CTX *mem_ctx,
2224 struct tevent_context *ev,
2225 struct rpc_pipe_client *cli,
2226 struct policy_handle *_handle /* [in] [ref] */,
2227 uint8_t _watch_subtree /* [in] */,
2228 uint32_t _notify_filter /* [in] */,
2229 uint32_t _unknown /* [in] */,
2230 struct winreg_String _string1 /* [in] */,
2231 struct winreg_String _string2 /* [in] */,
2232 uint32_t _unknown2 /* [in] */)
2234 struct tevent_req *req;
2235 struct rpccli_winreg_NotifyChangeKeyValue_state *state;
2236 struct tevent_req *subreq;
2238 req = tevent_req_create(mem_ctx, &state,
2239 struct rpccli_winreg_NotifyChangeKeyValue_state);
2243 state->out_mem_ctx = NULL;
2244 state->dispatch_recv = cli->dispatch_recv;
2247 state->orig.in.handle = _handle;
2248 state->orig.in.watch_subtree = _watch_subtree;
2249 state->orig.in.notify_filter = _notify_filter;
2250 state->orig.in.unknown = _unknown;
2251 state->orig.in.string1 = _string1;
2252 state->orig.in.string2 = _string2;
2253 state->orig.in.unknown2 = _unknown2;
2255 /* Out parameters */
2258 ZERO_STRUCT(state->orig.out.result);
2260 /* make a temporary copy, that we pass to the dispatch function */
2261 state->tmp = state->orig;
2263 subreq = cli->dispatch_send(state, ev, cli,
2265 NDR_WINREG_NOTIFYCHANGEKEYVALUE,
2267 if (tevent_req_nomem(subreq, req)) {
2268 return tevent_req_post(req, ev);
2270 tevent_req_set_callback(subreq, rpccli_winreg_NotifyChangeKeyValue_done, req);
2274 static void rpccli_winreg_NotifyChangeKeyValue_done(struct tevent_req *subreq)
2276 struct tevent_req *req = tevent_req_callback_data(
2277 subreq, struct tevent_req);
2278 struct rpccli_winreg_NotifyChangeKeyValue_state *state = tevent_req_data(
2279 req, struct rpccli_winreg_NotifyChangeKeyValue_state);
2281 TALLOC_CTX *mem_ctx;
2283 if (state->out_mem_ctx) {
2284 mem_ctx = state->out_mem_ctx;
2289 status = state->dispatch_recv(subreq, mem_ctx);
2290 TALLOC_FREE(subreq);
2291 if (!NT_STATUS_IS_OK(status)) {
2292 tevent_req_nterror(req, status);
2296 /* Copy out parameters */
2299 state->orig.out.result = state->tmp.out.result;
2301 /* Reset temporary structure */
2302 ZERO_STRUCT(state->tmp);
2304 tevent_req_done(req);
2307 NTSTATUS rpccli_winreg_NotifyChangeKeyValue_recv(struct tevent_req *req,
2308 TALLOC_CTX *mem_ctx,
2311 struct rpccli_winreg_NotifyChangeKeyValue_state *state = tevent_req_data(
2312 req, struct rpccli_winreg_NotifyChangeKeyValue_state);
2315 if (tevent_req_is_nterror(req, &status)) {
2316 tevent_req_received(req);
2320 /* Steal possbile out parameters to the callers context */
2321 talloc_steal(mem_ctx, state->out_mem_ctx);
2324 *result = state->orig.out.result;
2326 tevent_req_received(req);
2327 return NT_STATUS_OK;
2330 NTSTATUS rpccli_winreg_NotifyChangeKeyValue(struct rpc_pipe_client *cli,
2331 TALLOC_CTX *mem_ctx,
2332 struct policy_handle *handle /* [in] [ref] */,
2333 uint8_t watch_subtree /* [in] */,
2334 uint32_t notify_filter /* [in] */,
2335 uint32_t unknown /* [in] */,
2336 struct winreg_String string1 /* [in] */,
2337 struct winreg_String string2 /* [in] */,
2338 uint32_t unknown2 /* [in] */,
2341 struct winreg_NotifyChangeKeyValue r;
2345 r.in.handle = handle;
2346 r.in.watch_subtree = watch_subtree;
2347 r.in.notify_filter = notify_filter;
2348 r.in.unknown = unknown;
2349 r.in.string1 = string1;
2350 r.in.string2 = string2;
2351 r.in.unknown2 = unknown2;
2353 status = cli->dispatch(cli,
2356 NDR_WINREG_NOTIFYCHANGEKEYVALUE,
2359 if (!NT_STATUS_IS_OK(status)) {
2363 if (NT_STATUS_IS_ERR(status)) {
2367 /* Return variables */
2371 *werror = r.out.result;
2374 return werror_to_ntstatus(r.out.result);
2377 struct rpccli_winreg_OpenKey_state {
2378 struct winreg_OpenKey orig;
2379 struct winreg_OpenKey tmp;
2380 TALLOC_CTX *out_mem_ctx;
2381 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
2384 static void rpccli_winreg_OpenKey_done(struct tevent_req *subreq);
2386 struct tevent_req *rpccli_winreg_OpenKey_send(TALLOC_CTX *mem_ctx,
2387 struct tevent_context *ev,
2388 struct rpc_pipe_client *cli,
2389 struct policy_handle *_parent_handle /* [in] [ref] */,
2390 struct winreg_String _keyname /* [in] */,
2391 uint32_t _options /* [in] */,
2392 uint32_t _access_mask /* [in] */,
2393 struct policy_handle *_handle /* [out] [ref] */)
2395 struct tevent_req *req;
2396 struct rpccli_winreg_OpenKey_state *state;
2397 struct tevent_req *subreq;
2399 req = tevent_req_create(mem_ctx, &state,
2400 struct rpccli_winreg_OpenKey_state);
2404 state->out_mem_ctx = NULL;
2405 state->dispatch_recv = cli->dispatch_recv;
2408 state->orig.in.parent_handle = _parent_handle;
2409 state->orig.in.keyname = _keyname;
2410 state->orig.in.options = _options;
2411 state->orig.in.access_mask = _access_mask;
2413 /* Out parameters */
2414 state->orig.out.handle = _handle;
2417 ZERO_STRUCT(state->orig.out.result);
2419 state->out_mem_ctx = talloc_named_const(state, 0,
2420 "rpccli_winreg_OpenKey_out_memory");
2421 if (tevent_req_nomem(state->out_mem_ctx, req)) {
2422 return tevent_req_post(req, ev);
2425 /* make a temporary copy, that we pass to the dispatch function */
2426 state->tmp = state->orig;
2428 subreq = cli->dispatch_send(state, ev, cli,
2432 if (tevent_req_nomem(subreq, req)) {
2433 return tevent_req_post(req, ev);
2435 tevent_req_set_callback(subreq, rpccli_winreg_OpenKey_done, req);
2439 static void rpccli_winreg_OpenKey_done(struct tevent_req *subreq)
2441 struct tevent_req *req = tevent_req_callback_data(
2442 subreq, struct tevent_req);
2443 struct rpccli_winreg_OpenKey_state *state = tevent_req_data(
2444 req, struct rpccli_winreg_OpenKey_state);
2446 TALLOC_CTX *mem_ctx;
2448 if (state->out_mem_ctx) {
2449 mem_ctx = state->out_mem_ctx;
2454 status = state->dispatch_recv(subreq, mem_ctx);
2455 TALLOC_FREE(subreq);
2456 if (!NT_STATUS_IS_OK(status)) {
2457 tevent_req_nterror(req, status);
2461 /* Copy out parameters */
2462 *state->orig.out.handle = *state->tmp.out.handle;
2465 state->orig.out.result = state->tmp.out.result;
2467 /* Reset temporary structure */
2468 ZERO_STRUCT(state->tmp);
2470 tevent_req_done(req);
2473 NTSTATUS rpccli_winreg_OpenKey_recv(struct tevent_req *req,
2474 TALLOC_CTX *mem_ctx,
2477 struct rpccli_winreg_OpenKey_state *state = tevent_req_data(
2478 req, struct rpccli_winreg_OpenKey_state);
2481 if (tevent_req_is_nterror(req, &status)) {
2482 tevent_req_received(req);
2486 /* Steal possbile out parameters to the callers context */
2487 talloc_steal(mem_ctx, state->out_mem_ctx);
2490 *result = state->orig.out.result;
2492 tevent_req_received(req);
2493 return NT_STATUS_OK;
2496 NTSTATUS rpccli_winreg_OpenKey(struct rpc_pipe_client *cli,
2497 TALLOC_CTX *mem_ctx,
2498 struct policy_handle *parent_handle /* [in] [ref] */,
2499 struct winreg_String keyname /* [in] */,
2500 uint32_t options /* [in] */,
2501 uint32_t access_mask /* [in] */,
2502 struct policy_handle *handle /* [out] [ref] */,
2505 struct winreg_OpenKey r;
2509 r.in.parent_handle = parent_handle;
2510 r.in.keyname = keyname;
2511 r.in.options = options;
2512 r.in.access_mask = access_mask;
2514 status = cli->dispatch(cli,
2520 if (!NT_STATUS_IS_OK(status)) {
2524 if (NT_STATUS_IS_ERR(status)) {
2528 /* Return variables */
2529 *handle = *r.out.handle;
2533 *werror = r.out.result;
2536 return werror_to_ntstatus(r.out.result);
2539 struct rpccli_winreg_QueryInfoKey_state {
2540 struct winreg_QueryInfoKey orig;
2541 struct winreg_QueryInfoKey tmp;
2542 TALLOC_CTX *out_mem_ctx;
2543 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
2546 static void rpccli_winreg_QueryInfoKey_done(struct tevent_req *subreq);
2548 struct tevent_req *rpccli_winreg_QueryInfoKey_send(TALLOC_CTX *mem_ctx,
2549 struct tevent_context *ev,
2550 struct rpc_pipe_client *cli,
2551 struct policy_handle *_handle /* [in] [ref] */,
2552 struct winreg_String *_classname /* [in,out] [ref] */,
2553 uint32_t *_num_subkeys /* [out] [ref] */,
2554 uint32_t *_max_subkeylen /* [out] [ref] */,
2555 uint32_t *_max_classlen /* [out] [ref] */,
2556 uint32_t *_num_values /* [out] [ref] */,
2557 uint32_t *_max_valnamelen /* [out] [ref] */,
2558 uint32_t *_max_valbufsize /* [out] [ref] */,
2559 uint32_t *_secdescsize /* [out] [ref] */,
2560 NTTIME *_last_changed_time /* [out] [ref] */)
2562 struct tevent_req *req;
2563 struct rpccli_winreg_QueryInfoKey_state *state;
2564 struct tevent_req *subreq;
2566 req = tevent_req_create(mem_ctx, &state,
2567 struct rpccli_winreg_QueryInfoKey_state);
2571 state->out_mem_ctx = NULL;
2572 state->dispatch_recv = cli->dispatch_recv;
2575 state->orig.in.handle = _handle;
2576 state->orig.in.classname = _classname;
2578 /* Out parameters */
2579 state->orig.out.classname = _classname;
2580 state->orig.out.num_subkeys = _num_subkeys;
2581 state->orig.out.max_subkeylen = _max_subkeylen;
2582 state->orig.out.max_classlen = _max_classlen;
2583 state->orig.out.num_values = _num_values;
2584 state->orig.out.max_valnamelen = _max_valnamelen;
2585 state->orig.out.max_valbufsize = _max_valbufsize;
2586 state->orig.out.secdescsize = _secdescsize;
2587 state->orig.out.last_changed_time = _last_changed_time;
2590 ZERO_STRUCT(state->orig.out.result);
2592 state->out_mem_ctx = talloc_named_const(state, 0,
2593 "rpccli_winreg_QueryInfoKey_out_memory");
2594 if (tevent_req_nomem(state->out_mem_ctx, req)) {
2595 return tevent_req_post(req, ev);
2598 /* make a temporary copy, that we pass to the dispatch function */
2599 state->tmp = state->orig;
2601 subreq = cli->dispatch_send(state, ev, cli,
2603 NDR_WINREG_QUERYINFOKEY,
2605 if (tevent_req_nomem(subreq, req)) {
2606 return tevent_req_post(req, ev);
2608 tevent_req_set_callback(subreq, rpccli_winreg_QueryInfoKey_done, req);
2612 static void rpccli_winreg_QueryInfoKey_done(struct tevent_req *subreq)
2614 struct tevent_req *req = tevent_req_callback_data(
2615 subreq, struct tevent_req);
2616 struct rpccli_winreg_QueryInfoKey_state *state = tevent_req_data(
2617 req, struct rpccli_winreg_QueryInfoKey_state);
2619 TALLOC_CTX *mem_ctx;
2621 if (state->out_mem_ctx) {
2622 mem_ctx = state->out_mem_ctx;
2627 status = state->dispatch_recv(subreq, mem_ctx);
2628 TALLOC_FREE(subreq);
2629 if (!NT_STATUS_IS_OK(status)) {
2630 tevent_req_nterror(req, status);
2634 /* Copy out parameters */
2635 *state->orig.out.classname = *state->tmp.out.classname;
2636 *state->orig.out.num_subkeys = *state->tmp.out.num_subkeys;
2637 *state->orig.out.max_subkeylen = *state->tmp.out.max_subkeylen;
2638 *state->orig.out.max_classlen = *state->tmp.out.max_classlen;
2639 *state->orig.out.num_values = *state->tmp.out.num_values;
2640 *state->orig.out.max_valnamelen = *state->tmp.out.max_valnamelen;
2641 *state->orig.out.max_valbufsize = *state->tmp.out.max_valbufsize;
2642 *state->orig.out.secdescsize = *state->tmp.out.secdescsize;
2643 *state->orig.out.last_changed_time = *state->tmp.out.last_changed_time;
2646 state->orig.out.result = state->tmp.out.result;
2648 /* Reset temporary structure */
2649 ZERO_STRUCT(state->tmp);
2651 tevent_req_done(req);
2654 NTSTATUS rpccli_winreg_QueryInfoKey_recv(struct tevent_req *req,
2655 TALLOC_CTX *mem_ctx,
2658 struct rpccli_winreg_QueryInfoKey_state *state = tevent_req_data(
2659 req, struct rpccli_winreg_QueryInfoKey_state);
2662 if (tevent_req_is_nterror(req, &status)) {
2663 tevent_req_received(req);
2667 /* Steal possbile out parameters to the callers context */
2668 talloc_steal(mem_ctx, state->out_mem_ctx);
2671 *result = state->orig.out.result;
2673 tevent_req_received(req);
2674 return NT_STATUS_OK;
2677 NTSTATUS rpccli_winreg_QueryInfoKey(struct rpc_pipe_client *cli,
2678 TALLOC_CTX *mem_ctx,
2679 struct policy_handle *handle /* [in] [ref] */,
2680 struct winreg_String *classname /* [in,out] [ref] */,
2681 uint32_t *num_subkeys /* [out] [ref] */,
2682 uint32_t *max_subkeylen /* [out] [ref] */,
2683 uint32_t *max_classlen /* [out] [ref] */,
2684 uint32_t *num_values /* [out] [ref] */,
2685 uint32_t *max_valnamelen /* [out] [ref] */,
2686 uint32_t *max_valbufsize /* [out] [ref] */,
2687 uint32_t *secdescsize /* [out] [ref] */,
2688 NTTIME *last_changed_time /* [out] [ref] */,
2691 struct winreg_QueryInfoKey r;
2695 r.in.handle = handle;
2696 r.in.classname = classname;
2698 status = cli->dispatch(cli,
2701 NDR_WINREG_QUERYINFOKEY,
2704 if (!NT_STATUS_IS_OK(status)) {
2708 if (NT_STATUS_IS_ERR(status)) {
2712 /* Return variables */
2713 *classname = *r.out.classname;
2714 *num_subkeys = *r.out.num_subkeys;
2715 *max_subkeylen = *r.out.max_subkeylen;
2716 *max_classlen = *r.out.max_classlen;
2717 *num_values = *r.out.num_values;
2718 *max_valnamelen = *r.out.max_valnamelen;
2719 *max_valbufsize = *r.out.max_valbufsize;
2720 *secdescsize = *r.out.secdescsize;
2721 *last_changed_time = *r.out.last_changed_time;
2725 *werror = r.out.result;
2728 return werror_to_ntstatus(r.out.result);
2731 struct rpccli_winreg_QueryValue_state {
2732 struct winreg_QueryValue orig;
2733 struct winreg_QueryValue tmp;
2734 TALLOC_CTX *out_mem_ctx;
2735 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
2738 static void rpccli_winreg_QueryValue_done(struct tevent_req *subreq);
2740 struct tevent_req *rpccli_winreg_QueryValue_send(TALLOC_CTX *mem_ctx,
2741 struct tevent_context *ev,
2742 struct rpc_pipe_client *cli,
2743 struct policy_handle *_handle /* [in] [ref] */,
2744 struct winreg_String *_value_name /* [in] [ref] */,
2745 enum winreg_Type *_type /* [in,out] [unique] */,
2746 uint8_t *_data /* [in,out] [unique,range(0,0x4000000),length_is(data_length?*data_length:0),size_is(data_size?*data_size:0)] */,
2747 uint32_t *_data_size /* [in,out] [unique] */,
2748 uint32_t *_data_length /* [in,out] [unique] */)
2750 struct tevent_req *req;
2751 struct rpccli_winreg_QueryValue_state *state;
2752 struct tevent_req *subreq;
2754 req = tevent_req_create(mem_ctx, &state,
2755 struct rpccli_winreg_QueryValue_state);
2759 state->out_mem_ctx = NULL;
2760 state->dispatch_recv = cli->dispatch_recv;
2763 state->orig.in.handle = _handle;
2764 state->orig.in.value_name = _value_name;
2765 state->orig.in.type = _type;
2766 state->orig.in.data = _data;
2767 state->orig.in.data_size = _data_size;
2768 state->orig.in.data_length = _data_length;
2770 /* Out parameters */
2771 state->orig.out.type = _type;
2772 state->orig.out.data = _data;
2773 state->orig.out.data_size = _data_size;
2774 state->orig.out.data_length = _data_length;
2777 ZERO_STRUCT(state->orig.out.result);
2779 state->out_mem_ctx = talloc_named_const(state, 0,
2780 "rpccli_winreg_QueryValue_out_memory");
2781 if (tevent_req_nomem(state->out_mem_ctx, req)) {
2782 return tevent_req_post(req, ev);
2785 /* make a temporary copy, that we pass to the dispatch function */
2786 state->tmp = state->orig;
2788 subreq = cli->dispatch_send(state, ev, cli,
2790 NDR_WINREG_QUERYVALUE,
2792 if (tevent_req_nomem(subreq, req)) {
2793 return tevent_req_post(req, ev);
2795 tevent_req_set_callback(subreq, rpccli_winreg_QueryValue_done, req);
2799 static void rpccli_winreg_QueryValue_done(struct tevent_req *subreq)
2801 struct tevent_req *req = tevent_req_callback_data(
2802 subreq, struct tevent_req);
2803 struct rpccli_winreg_QueryValue_state *state = tevent_req_data(
2804 req, struct rpccli_winreg_QueryValue_state);
2806 TALLOC_CTX *mem_ctx;
2808 if (state->out_mem_ctx) {
2809 mem_ctx = state->out_mem_ctx;
2814 status = state->dispatch_recv(subreq, mem_ctx);
2815 TALLOC_FREE(subreq);
2816 if (!NT_STATUS_IS_OK(status)) {
2817 tevent_req_nterror(req, status);
2821 /* Copy out parameters */
2822 if (state->orig.out.type && state->tmp.out.type) {
2823 *state->orig.out.type = *state->tmp.out.type;
2825 if (state->orig.out.data && state->tmp.out.data) {
2826 memcpy(state->orig.out.data, state->tmp.out.data, (state->tmp.in.data_size?*state->tmp.in.data_size:0) * sizeof(*state->orig.out.data));
2828 if (state->orig.out.data_size && state->tmp.out.data_size) {
2829 *state->orig.out.data_size = *state->tmp.out.data_size;
2831 if (state->orig.out.data_length && state->tmp.out.data_length) {
2832 *state->orig.out.data_length = *state->tmp.out.data_length;
2836 state->orig.out.result = state->tmp.out.result;
2838 /* Reset temporary structure */
2839 ZERO_STRUCT(state->tmp);
2841 tevent_req_done(req);
2844 NTSTATUS rpccli_winreg_QueryValue_recv(struct tevent_req *req,
2845 TALLOC_CTX *mem_ctx,
2848 struct rpccli_winreg_QueryValue_state *state = tevent_req_data(
2849 req, struct rpccli_winreg_QueryValue_state);
2852 if (tevent_req_is_nterror(req, &status)) {
2853 tevent_req_received(req);
2857 /* Steal possbile out parameters to the callers context */
2858 talloc_steal(mem_ctx, state->out_mem_ctx);
2861 *result = state->orig.out.result;
2863 tevent_req_received(req);
2864 return NT_STATUS_OK;
2867 NTSTATUS rpccli_winreg_QueryValue(struct rpc_pipe_client *cli,
2868 TALLOC_CTX *mem_ctx,
2869 struct policy_handle *handle /* [in] [ref] */,
2870 struct winreg_String *value_name /* [in] [ref] */,
2871 enum winreg_Type *type /* [in,out] [unique] */,
2872 uint8_t *data /* [in,out] [unique,range(0,0x4000000),length_is(data_length?*data_length:0),size_is(data_size?*data_size:0)] */,
2873 uint32_t *data_size /* [in,out] [unique] */,
2874 uint32_t *data_length /* [in,out] [unique] */,
2877 struct winreg_QueryValue r;
2881 r.in.handle = handle;
2882 r.in.value_name = value_name;
2885 r.in.data_size = data_size;
2886 r.in.data_length = data_length;
2888 status = cli->dispatch(cli,
2891 NDR_WINREG_QUERYVALUE,
2894 if (!NT_STATUS_IS_OK(status)) {
2898 if (NT_STATUS_IS_ERR(status)) {
2902 /* Return variables */
2903 if (type && r.out.type) {
2904 *type = *r.out.type;
2906 if (data && r.out.data) {
2907 memcpy(data, r.out.data, (r.in.data_size?*r.in.data_size:0) * sizeof(*data));
2909 if (data_size && r.out.data_size) {
2910 *data_size = *r.out.data_size;
2912 if (data_length && r.out.data_length) {
2913 *data_length = *r.out.data_length;
2918 *werror = r.out.result;
2921 return werror_to_ntstatus(r.out.result);
2924 struct rpccli_winreg_ReplaceKey_state {
2925 struct winreg_ReplaceKey orig;
2926 struct winreg_ReplaceKey tmp;
2927 TALLOC_CTX *out_mem_ctx;
2928 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
2931 static void rpccli_winreg_ReplaceKey_done(struct tevent_req *subreq);
2933 struct tevent_req *rpccli_winreg_ReplaceKey_send(TALLOC_CTX *mem_ctx,
2934 struct tevent_context *ev,
2935 struct rpc_pipe_client *cli,
2936 struct policy_handle *_handle /* [in] [ref] */,
2937 struct winreg_String *_subkey /* [in] [ref] */,
2938 struct winreg_String *_new_file /* [in] [ref] */,
2939 struct winreg_String *_old_file /* [in] [ref] */)
2941 struct tevent_req *req;
2942 struct rpccli_winreg_ReplaceKey_state *state;
2943 struct tevent_req *subreq;
2945 req = tevent_req_create(mem_ctx, &state,
2946 struct rpccli_winreg_ReplaceKey_state);
2950 state->out_mem_ctx = NULL;
2951 state->dispatch_recv = cli->dispatch_recv;
2954 state->orig.in.handle = _handle;
2955 state->orig.in.subkey = _subkey;
2956 state->orig.in.new_file = _new_file;
2957 state->orig.in.old_file = _old_file;
2959 /* Out parameters */
2962 ZERO_STRUCT(state->orig.out.result);
2964 /* make a temporary copy, that we pass to the dispatch function */
2965 state->tmp = state->orig;
2967 subreq = cli->dispatch_send(state, ev, cli,
2969 NDR_WINREG_REPLACEKEY,
2971 if (tevent_req_nomem(subreq, req)) {
2972 return tevent_req_post(req, ev);
2974 tevent_req_set_callback(subreq, rpccli_winreg_ReplaceKey_done, req);
2978 static void rpccli_winreg_ReplaceKey_done(struct tevent_req *subreq)
2980 struct tevent_req *req = tevent_req_callback_data(
2981 subreq, struct tevent_req);
2982 struct rpccli_winreg_ReplaceKey_state *state = tevent_req_data(
2983 req, struct rpccli_winreg_ReplaceKey_state);
2985 TALLOC_CTX *mem_ctx;
2987 if (state->out_mem_ctx) {
2988 mem_ctx = state->out_mem_ctx;
2993 status = state->dispatch_recv(subreq, mem_ctx);
2994 TALLOC_FREE(subreq);
2995 if (!NT_STATUS_IS_OK(status)) {
2996 tevent_req_nterror(req, status);
3000 /* Copy out parameters */
3003 state->orig.out.result = state->tmp.out.result;
3005 /* Reset temporary structure */
3006 ZERO_STRUCT(state->tmp);
3008 tevent_req_done(req);
3011 NTSTATUS rpccli_winreg_ReplaceKey_recv(struct tevent_req *req,
3012 TALLOC_CTX *mem_ctx,
3015 struct rpccli_winreg_ReplaceKey_state *state = tevent_req_data(
3016 req, struct rpccli_winreg_ReplaceKey_state);
3019 if (tevent_req_is_nterror(req, &status)) {
3020 tevent_req_received(req);
3024 /* Steal possbile out parameters to the callers context */
3025 talloc_steal(mem_ctx, state->out_mem_ctx);
3028 *result = state->orig.out.result;
3030 tevent_req_received(req);
3031 return NT_STATUS_OK;
3034 NTSTATUS rpccli_winreg_ReplaceKey(struct rpc_pipe_client *cli,
3035 TALLOC_CTX *mem_ctx,
3036 struct policy_handle *handle /* [in] [ref] */,
3037 struct winreg_String *subkey /* [in] [ref] */,
3038 struct winreg_String *new_file /* [in] [ref] */,
3039 struct winreg_String *old_file /* [in] [ref] */,
3042 struct winreg_ReplaceKey r;
3046 r.in.handle = handle;
3047 r.in.subkey = subkey;
3048 r.in.new_file = new_file;
3049 r.in.old_file = old_file;
3051 status = cli->dispatch(cli,
3054 NDR_WINREG_REPLACEKEY,
3057 if (!NT_STATUS_IS_OK(status)) {
3061 if (NT_STATUS_IS_ERR(status)) {
3065 /* Return variables */
3069 *werror = r.out.result;
3072 return werror_to_ntstatus(r.out.result);
3075 struct rpccli_winreg_RestoreKey_state {
3076 struct winreg_RestoreKey orig;
3077 struct winreg_RestoreKey tmp;
3078 TALLOC_CTX *out_mem_ctx;
3079 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
3082 static void rpccli_winreg_RestoreKey_done(struct tevent_req *subreq);
3084 struct tevent_req *rpccli_winreg_RestoreKey_send(TALLOC_CTX *mem_ctx,
3085 struct tevent_context *ev,
3086 struct rpc_pipe_client *cli,
3087 struct policy_handle *_handle /* [in] [ref] */,
3088 struct winreg_String *_filename /* [in] [ref] */,
3089 uint32_t _flags /* [in] */)
3091 struct tevent_req *req;
3092 struct rpccli_winreg_RestoreKey_state *state;
3093 struct tevent_req *subreq;
3095 req = tevent_req_create(mem_ctx, &state,
3096 struct rpccli_winreg_RestoreKey_state);
3100 state->out_mem_ctx = NULL;
3101 state->dispatch_recv = cli->dispatch_recv;
3104 state->orig.in.handle = _handle;
3105 state->orig.in.filename = _filename;
3106 state->orig.in.flags = _flags;
3108 /* Out parameters */
3111 ZERO_STRUCT(state->orig.out.result);
3113 /* make a temporary copy, that we pass to the dispatch function */
3114 state->tmp = state->orig;
3116 subreq = cli->dispatch_send(state, ev, cli,
3118 NDR_WINREG_RESTOREKEY,
3120 if (tevent_req_nomem(subreq, req)) {
3121 return tevent_req_post(req, ev);
3123 tevent_req_set_callback(subreq, rpccli_winreg_RestoreKey_done, req);
3127 static void rpccli_winreg_RestoreKey_done(struct tevent_req *subreq)
3129 struct tevent_req *req = tevent_req_callback_data(
3130 subreq, struct tevent_req);
3131 struct rpccli_winreg_RestoreKey_state *state = tevent_req_data(
3132 req, struct rpccli_winreg_RestoreKey_state);
3134 TALLOC_CTX *mem_ctx;
3136 if (state->out_mem_ctx) {
3137 mem_ctx = state->out_mem_ctx;
3142 status = state->dispatch_recv(subreq, mem_ctx);
3143 TALLOC_FREE(subreq);
3144 if (!NT_STATUS_IS_OK(status)) {
3145 tevent_req_nterror(req, status);
3149 /* Copy out parameters */
3152 state->orig.out.result = state->tmp.out.result;
3154 /* Reset temporary structure */
3155 ZERO_STRUCT(state->tmp);
3157 tevent_req_done(req);
3160 NTSTATUS rpccli_winreg_RestoreKey_recv(struct tevent_req *req,
3161 TALLOC_CTX *mem_ctx,
3164 struct rpccli_winreg_RestoreKey_state *state = tevent_req_data(
3165 req, struct rpccli_winreg_RestoreKey_state);
3168 if (tevent_req_is_nterror(req, &status)) {
3169 tevent_req_received(req);
3173 /* Steal possbile out parameters to the callers context */
3174 talloc_steal(mem_ctx, state->out_mem_ctx);
3177 *result = state->orig.out.result;
3179 tevent_req_received(req);
3180 return NT_STATUS_OK;
3183 NTSTATUS rpccli_winreg_RestoreKey(struct rpc_pipe_client *cli,
3184 TALLOC_CTX *mem_ctx,
3185 struct policy_handle *handle /* [in] [ref] */,
3186 struct winreg_String *filename /* [in] [ref] */,
3187 uint32_t flags /* [in] */,
3190 struct winreg_RestoreKey r;
3194 r.in.handle = handle;
3195 r.in.filename = filename;
3198 status = cli->dispatch(cli,
3201 NDR_WINREG_RESTOREKEY,
3204 if (!NT_STATUS_IS_OK(status)) {
3208 if (NT_STATUS_IS_ERR(status)) {
3212 /* Return variables */
3216 *werror = r.out.result;
3219 return werror_to_ntstatus(r.out.result);
3222 struct rpccli_winreg_SaveKey_state {
3223 struct winreg_SaveKey orig;
3224 struct winreg_SaveKey tmp;
3225 TALLOC_CTX *out_mem_ctx;
3226 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
3229 static void rpccli_winreg_SaveKey_done(struct tevent_req *subreq);
3231 struct tevent_req *rpccli_winreg_SaveKey_send(TALLOC_CTX *mem_ctx,
3232 struct tevent_context *ev,
3233 struct rpc_pipe_client *cli,
3234 struct policy_handle *_handle /* [in] [ref] */,
3235 struct winreg_String *_filename /* [in] [ref] */,
3236 struct KeySecurityAttribute *_sec_attrib /* [in] [unique] */)
3238 struct tevent_req *req;
3239 struct rpccli_winreg_SaveKey_state *state;
3240 struct tevent_req *subreq;
3242 req = tevent_req_create(mem_ctx, &state,
3243 struct rpccli_winreg_SaveKey_state);
3247 state->out_mem_ctx = NULL;
3248 state->dispatch_recv = cli->dispatch_recv;
3251 state->orig.in.handle = _handle;
3252 state->orig.in.filename = _filename;
3253 state->orig.in.sec_attrib = _sec_attrib;
3255 /* Out parameters */
3258 ZERO_STRUCT(state->orig.out.result);
3260 /* make a temporary copy, that we pass to the dispatch function */
3261 state->tmp = state->orig;
3263 subreq = cli->dispatch_send(state, ev, cli,
3267 if (tevent_req_nomem(subreq, req)) {
3268 return tevent_req_post(req, ev);
3270 tevent_req_set_callback(subreq, rpccli_winreg_SaveKey_done, req);
3274 static void rpccli_winreg_SaveKey_done(struct tevent_req *subreq)
3276 struct tevent_req *req = tevent_req_callback_data(
3277 subreq, struct tevent_req);
3278 struct rpccli_winreg_SaveKey_state *state = tevent_req_data(
3279 req, struct rpccli_winreg_SaveKey_state);
3281 TALLOC_CTX *mem_ctx;
3283 if (state->out_mem_ctx) {
3284 mem_ctx = state->out_mem_ctx;
3289 status = state->dispatch_recv(subreq, mem_ctx);
3290 TALLOC_FREE(subreq);
3291 if (!NT_STATUS_IS_OK(status)) {
3292 tevent_req_nterror(req, status);
3296 /* Copy out parameters */
3299 state->orig.out.result = state->tmp.out.result;
3301 /* Reset temporary structure */
3302 ZERO_STRUCT(state->tmp);
3304 tevent_req_done(req);
3307 NTSTATUS rpccli_winreg_SaveKey_recv(struct tevent_req *req,
3308 TALLOC_CTX *mem_ctx,
3311 struct rpccli_winreg_SaveKey_state *state = tevent_req_data(
3312 req, struct rpccli_winreg_SaveKey_state);
3315 if (tevent_req_is_nterror(req, &status)) {
3316 tevent_req_received(req);
3320 /* Steal possbile out parameters to the callers context */
3321 talloc_steal(mem_ctx, state->out_mem_ctx);
3324 *result = state->orig.out.result;
3326 tevent_req_received(req);
3327 return NT_STATUS_OK;
3330 NTSTATUS rpccli_winreg_SaveKey(struct rpc_pipe_client *cli,
3331 TALLOC_CTX *mem_ctx,
3332 struct policy_handle *handle /* [in] [ref] */,
3333 struct winreg_String *filename /* [in] [ref] */,
3334 struct KeySecurityAttribute *sec_attrib /* [in] [unique] */,
3337 struct winreg_SaveKey r;
3341 r.in.handle = handle;
3342 r.in.filename = filename;
3343 r.in.sec_attrib = sec_attrib;
3345 status = cli->dispatch(cli,
3351 if (!NT_STATUS_IS_OK(status)) {
3355 if (NT_STATUS_IS_ERR(status)) {
3359 /* Return variables */
3363 *werror = r.out.result;
3366 return werror_to_ntstatus(r.out.result);
3369 struct rpccli_winreg_SetKeySecurity_state {
3370 struct winreg_SetKeySecurity orig;
3371 struct winreg_SetKeySecurity tmp;
3372 TALLOC_CTX *out_mem_ctx;
3373 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
3376 static void rpccli_winreg_SetKeySecurity_done(struct tevent_req *subreq);
3378 struct tevent_req *rpccli_winreg_SetKeySecurity_send(TALLOC_CTX *mem_ctx,
3379 struct tevent_context *ev,
3380 struct rpc_pipe_client *cli,
3381 struct policy_handle *_handle /* [in] [ref] */,
3382 uint32_t _sec_info /* [in] */,
3383 struct KeySecurityData *_sd /* [in] [ref] */)
3385 struct tevent_req *req;
3386 struct rpccli_winreg_SetKeySecurity_state *state;
3387 struct tevent_req *subreq;
3389 req = tevent_req_create(mem_ctx, &state,
3390 struct rpccli_winreg_SetKeySecurity_state);
3394 state->out_mem_ctx = NULL;
3395 state->dispatch_recv = cli->dispatch_recv;
3398 state->orig.in.handle = _handle;
3399 state->orig.in.sec_info = _sec_info;
3400 state->orig.in.sd = _sd;
3402 /* Out parameters */
3405 ZERO_STRUCT(state->orig.out.result);
3407 /* make a temporary copy, that we pass to the dispatch function */
3408 state->tmp = state->orig;
3410 subreq = cli->dispatch_send(state, ev, cli,
3412 NDR_WINREG_SETKEYSECURITY,
3414 if (tevent_req_nomem(subreq, req)) {
3415 return tevent_req_post(req, ev);
3417 tevent_req_set_callback(subreq, rpccli_winreg_SetKeySecurity_done, req);
3421 static void rpccli_winreg_SetKeySecurity_done(struct tevent_req *subreq)
3423 struct tevent_req *req = tevent_req_callback_data(
3424 subreq, struct tevent_req);
3425 struct rpccli_winreg_SetKeySecurity_state *state = tevent_req_data(
3426 req, struct rpccli_winreg_SetKeySecurity_state);
3428 TALLOC_CTX *mem_ctx;
3430 if (state->out_mem_ctx) {
3431 mem_ctx = state->out_mem_ctx;
3436 status = state->dispatch_recv(subreq, mem_ctx);
3437 TALLOC_FREE(subreq);
3438 if (!NT_STATUS_IS_OK(status)) {
3439 tevent_req_nterror(req, status);
3443 /* Copy out parameters */
3446 state->orig.out.result = state->tmp.out.result;
3448 /* Reset temporary structure */
3449 ZERO_STRUCT(state->tmp);
3451 tevent_req_done(req);
3454 NTSTATUS rpccli_winreg_SetKeySecurity_recv(struct tevent_req *req,
3455 TALLOC_CTX *mem_ctx,
3458 struct rpccli_winreg_SetKeySecurity_state *state = tevent_req_data(
3459 req, struct rpccli_winreg_SetKeySecurity_state);
3462 if (tevent_req_is_nterror(req, &status)) {
3463 tevent_req_received(req);
3467 /* Steal possbile out parameters to the callers context */
3468 talloc_steal(mem_ctx, state->out_mem_ctx);
3471 *result = state->orig.out.result;
3473 tevent_req_received(req);
3474 return NT_STATUS_OK;
3477 NTSTATUS rpccli_winreg_SetKeySecurity(struct rpc_pipe_client *cli,
3478 TALLOC_CTX *mem_ctx,
3479 struct policy_handle *handle /* [in] [ref] */,
3480 uint32_t sec_info /* [in] */,
3481 struct KeySecurityData *sd /* [in] [ref] */,
3484 struct winreg_SetKeySecurity r;
3488 r.in.handle = handle;
3489 r.in.sec_info = sec_info;
3492 status = cli->dispatch(cli,
3495 NDR_WINREG_SETKEYSECURITY,
3498 if (!NT_STATUS_IS_OK(status)) {
3502 if (NT_STATUS_IS_ERR(status)) {
3506 /* Return variables */
3510 *werror = r.out.result;
3513 return werror_to_ntstatus(r.out.result);
3516 struct rpccli_winreg_SetValue_state {
3517 struct winreg_SetValue orig;
3518 struct winreg_SetValue tmp;
3519 TALLOC_CTX *out_mem_ctx;
3520 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
3523 static void rpccli_winreg_SetValue_done(struct tevent_req *subreq);
3525 struct tevent_req *rpccli_winreg_SetValue_send(TALLOC_CTX *mem_ctx,
3526 struct tevent_context *ev,
3527 struct rpc_pipe_client *cli,
3528 struct policy_handle *_handle /* [in] [ref] */,
3529 struct winreg_String _name /* [in] */,
3530 enum winreg_Type _type /* [in] */,
3531 uint8_t *_data /* [in] [ref,size_is(size)] */,
3532 uint32_t _size /* [in] */)
3534 struct tevent_req *req;
3535 struct rpccli_winreg_SetValue_state *state;
3536 struct tevent_req *subreq;
3538 req = tevent_req_create(mem_ctx, &state,
3539 struct rpccli_winreg_SetValue_state);
3543 state->out_mem_ctx = NULL;
3544 state->dispatch_recv = cli->dispatch_recv;
3547 state->orig.in.handle = _handle;
3548 state->orig.in.name = _name;
3549 state->orig.in.type = _type;
3550 state->orig.in.data = _data;
3551 state->orig.in.size = _size;
3553 /* Out parameters */
3556 ZERO_STRUCT(state->orig.out.result);
3558 /* make a temporary copy, that we pass to the dispatch function */
3559 state->tmp = state->orig;
3561 subreq = cli->dispatch_send(state, ev, cli,
3563 NDR_WINREG_SETVALUE,
3565 if (tevent_req_nomem(subreq, req)) {
3566 return tevent_req_post(req, ev);
3568 tevent_req_set_callback(subreq, rpccli_winreg_SetValue_done, req);
3572 static void rpccli_winreg_SetValue_done(struct tevent_req *subreq)
3574 struct tevent_req *req = tevent_req_callback_data(
3575 subreq, struct tevent_req);
3576 struct rpccli_winreg_SetValue_state *state = tevent_req_data(
3577 req, struct rpccli_winreg_SetValue_state);
3579 TALLOC_CTX *mem_ctx;
3581 if (state->out_mem_ctx) {
3582 mem_ctx = state->out_mem_ctx;
3587 status = state->dispatch_recv(subreq, mem_ctx);
3588 TALLOC_FREE(subreq);
3589 if (!NT_STATUS_IS_OK(status)) {
3590 tevent_req_nterror(req, status);
3594 /* Copy out parameters */
3597 state->orig.out.result = state->tmp.out.result;
3599 /* Reset temporary structure */
3600 ZERO_STRUCT(state->tmp);
3602 tevent_req_done(req);
3605 NTSTATUS rpccli_winreg_SetValue_recv(struct tevent_req *req,
3606 TALLOC_CTX *mem_ctx,
3609 struct rpccli_winreg_SetValue_state *state = tevent_req_data(
3610 req, struct rpccli_winreg_SetValue_state);
3613 if (tevent_req_is_nterror(req, &status)) {
3614 tevent_req_received(req);
3618 /* Steal possbile out parameters to the callers context */
3619 talloc_steal(mem_ctx, state->out_mem_ctx);
3622 *result = state->orig.out.result;
3624 tevent_req_received(req);
3625 return NT_STATUS_OK;
3628 NTSTATUS rpccli_winreg_SetValue(struct rpc_pipe_client *cli,
3629 TALLOC_CTX *mem_ctx,
3630 struct policy_handle *handle /* [in] [ref] */,
3631 struct winreg_String name /* [in] */,
3632 enum winreg_Type type /* [in] */,
3633 uint8_t *data /* [in] [ref,size_is(size)] */,
3634 uint32_t size /* [in] */,
3637 struct winreg_SetValue r;
3641 r.in.handle = handle;
3647 status = cli->dispatch(cli,
3650 NDR_WINREG_SETVALUE,
3653 if (!NT_STATUS_IS_OK(status)) {
3657 if (NT_STATUS_IS_ERR(status)) {
3661 /* Return variables */
3665 *werror = r.out.result;
3668 return werror_to_ntstatus(r.out.result);
3671 struct rpccli_winreg_UnLoadKey_state {
3672 struct winreg_UnLoadKey orig;
3673 struct winreg_UnLoadKey tmp;
3674 TALLOC_CTX *out_mem_ctx;
3675 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
3678 static void rpccli_winreg_UnLoadKey_done(struct tevent_req *subreq);
3680 struct tevent_req *rpccli_winreg_UnLoadKey_send(TALLOC_CTX *mem_ctx,
3681 struct tevent_context *ev,
3682 struct rpc_pipe_client *cli,
3683 struct policy_handle *_handle /* [in] [ref] */,
3684 struct winreg_String *_subkey /* [in] [ref] */)
3686 struct tevent_req *req;
3687 struct rpccli_winreg_UnLoadKey_state *state;
3688 struct tevent_req *subreq;
3690 req = tevent_req_create(mem_ctx, &state,
3691 struct rpccli_winreg_UnLoadKey_state);
3695 state->out_mem_ctx = NULL;
3696 state->dispatch_recv = cli->dispatch_recv;
3699 state->orig.in.handle = _handle;
3700 state->orig.in.subkey = _subkey;
3702 /* Out parameters */
3705 ZERO_STRUCT(state->orig.out.result);
3707 /* make a temporary copy, that we pass to the dispatch function */
3708 state->tmp = state->orig;
3710 subreq = cli->dispatch_send(state, ev, cli,
3712 NDR_WINREG_UNLOADKEY,
3714 if (tevent_req_nomem(subreq, req)) {
3715 return tevent_req_post(req, ev);
3717 tevent_req_set_callback(subreq, rpccli_winreg_UnLoadKey_done, req);
3721 static void rpccli_winreg_UnLoadKey_done(struct tevent_req *subreq)
3723 struct tevent_req *req = tevent_req_callback_data(
3724 subreq, struct tevent_req);
3725 struct rpccli_winreg_UnLoadKey_state *state = tevent_req_data(
3726 req, struct rpccli_winreg_UnLoadKey_state);
3728 TALLOC_CTX *mem_ctx;
3730 if (state->out_mem_ctx) {
3731 mem_ctx = state->out_mem_ctx;
3736 status = state->dispatch_recv(subreq, mem_ctx);
3737 TALLOC_FREE(subreq);
3738 if (!NT_STATUS_IS_OK(status)) {
3739 tevent_req_nterror(req, status);
3743 /* Copy out parameters */
3746 state->orig.out.result = state->tmp.out.result;
3748 /* Reset temporary structure */
3749 ZERO_STRUCT(state->tmp);
3751 tevent_req_done(req);
3754 NTSTATUS rpccli_winreg_UnLoadKey_recv(struct tevent_req *req,
3755 TALLOC_CTX *mem_ctx,
3758 struct rpccli_winreg_UnLoadKey_state *state = tevent_req_data(
3759 req, struct rpccli_winreg_UnLoadKey_state);
3762 if (tevent_req_is_nterror(req, &status)) {
3763 tevent_req_received(req);
3767 /* Steal possbile out parameters to the callers context */
3768 talloc_steal(mem_ctx, state->out_mem_ctx);
3771 *result = state->orig.out.result;
3773 tevent_req_received(req);
3774 return NT_STATUS_OK;
3777 NTSTATUS rpccli_winreg_UnLoadKey(struct rpc_pipe_client *cli,
3778 TALLOC_CTX *mem_ctx,
3779 struct policy_handle *handle /* [in] [ref] */,
3780 struct winreg_String *subkey /* [in] [ref] */,
3783 struct winreg_UnLoadKey r;
3787 r.in.handle = handle;
3788 r.in.subkey = subkey;
3790 status = cli->dispatch(cli,
3793 NDR_WINREG_UNLOADKEY,
3796 if (!NT_STATUS_IS_OK(status)) {
3800 if (NT_STATUS_IS_ERR(status)) {
3804 /* Return variables */
3808 *werror = r.out.result;
3811 return werror_to_ntstatus(r.out.result);
3814 struct rpccli_winreg_InitiateSystemShutdown_state {
3815 struct winreg_InitiateSystemShutdown orig;
3816 struct winreg_InitiateSystemShutdown tmp;
3817 TALLOC_CTX *out_mem_ctx;
3818 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
3821 static void rpccli_winreg_InitiateSystemShutdown_done(struct tevent_req *subreq);
3823 struct tevent_req *rpccli_winreg_InitiateSystemShutdown_send(TALLOC_CTX *mem_ctx,
3824 struct tevent_context *ev,
3825 struct rpc_pipe_client *cli,
3826 uint16_t *_hostname /* [in] [unique] */,
3827 struct lsa_StringLarge *_message /* [in] [unique] */,
3828 uint32_t _timeout /* [in] */,
3829 uint8_t _force_apps /* [in] */,
3830 uint8_t _do_reboot /* [in] */)
3832 struct tevent_req *req;
3833 struct rpccli_winreg_InitiateSystemShutdown_state *state;
3834 struct tevent_req *subreq;
3836 req = tevent_req_create(mem_ctx, &state,
3837 struct rpccli_winreg_InitiateSystemShutdown_state);
3841 state->out_mem_ctx = NULL;
3842 state->dispatch_recv = cli->dispatch_recv;
3845 state->orig.in.hostname = _hostname;
3846 state->orig.in.message = _message;
3847 state->orig.in.timeout = _timeout;
3848 state->orig.in.force_apps = _force_apps;
3849 state->orig.in.do_reboot = _do_reboot;
3851 /* Out parameters */
3854 ZERO_STRUCT(state->orig.out.result);
3856 /* make a temporary copy, that we pass to the dispatch function */
3857 state->tmp = state->orig;
3859 subreq = cli->dispatch_send(state, ev, cli,
3861 NDR_WINREG_INITIATESYSTEMSHUTDOWN,
3863 if (tevent_req_nomem(subreq, req)) {
3864 return tevent_req_post(req, ev);
3866 tevent_req_set_callback(subreq, rpccli_winreg_InitiateSystemShutdown_done, req);
3870 static void rpccli_winreg_InitiateSystemShutdown_done(struct tevent_req *subreq)
3872 struct tevent_req *req = tevent_req_callback_data(
3873 subreq, struct tevent_req);
3874 struct rpccli_winreg_InitiateSystemShutdown_state *state = tevent_req_data(
3875 req, struct rpccli_winreg_InitiateSystemShutdown_state);
3877 TALLOC_CTX *mem_ctx;
3879 if (state->out_mem_ctx) {
3880 mem_ctx = state->out_mem_ctx;
3885 status = state->dispatch_recv(subreq, mem_ctx);
3886 TALLOC_FREE(subreq);
3887 if (!NT_STATUS_IS_OK(status)) {
3888 tevent_req_nterror(req, status);
3892 /* Copy out parameters */
3895 state->orig.out.result = state->tmp.out.result;
3897 /* Reset temporary structure */
3898 ZERO_STRUCT(state->tmp);
3900 tevent_req_done(req);
3903 NTSTATUS rpccli_winreg_InitiateSystemShutdown_recv(struct tevent_req *req,
3904 TALLOC_CTX *mem_ctx,
3907 struct rpccli_winreg_InitiateSystemShutdown_state *state = tevent_req_data(
3908 req, struct rpccli_winreg_InitiateSystemShutdown_state);
3911 if (tevent_req_is_nterror(req, &status)) {
3912 tevent_req_received(req);
3916 /* Steal possbile out parameters to the callers context */
3917 talloc_steal(mem_ctx, state->out_mem_ctx);
3920 *result = state->orig.out.result;
3922 tevent_req_received(req);
3923 return NT_STATUS_OK;
3926 NTSTATUS rpccli_winreg_InitiateSystemShutdown(struct rpc_pipe_client *cli,
3927 TALLOC_CTX *mem_ctx,
3928 uint16_t *hostname /* [in] [unique] */,
3929 struct lsa_StringLarge *message /* [in] [unique] */,
3930 uint32_t timeout /* [in] */,
3931 uint8_t force_apps /* [in] */,
3932 uint8_t do_reboot /* [in] */,
3935 struct winreg_InitiateSystemShutdown r;
3939 r.in.hostname = hostname;
3940 r.in.message = message;
3941 r.in.timeout = timeout;
3942 r.in.force_apps = force_apps;
3943 r.in.do_reboot = do_reboot;
3945 status = cli->dispatch(cli,
3948 NDR_WINREG_INITIATESYSTEMSHUTDOWN,
3951 if (!NT_STATUS_IS_OK(status)) {
3955 if (NT_STATUS_IS_ERR(status)) {
3959 /* Return variables */
3963 *werror = r.out.result;
3966 return werror_to_ntstatus(r.out.result);
3969 struct rpccli_winreg_AbortSystemShutdown_state {
3970 struct winreg_AbortSystemShutdown orig;
3971 struct winreg_AbortSystemShutdown tmp;
3972 TALLOC_CTX *out_mem_ctx;
3973 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
3976 static void rpccli_winreg_AbortSystemShutdown_done(struct tevent_req *subreq);
3978 struct tevent_req *rpccli_winreg_AbortSystemShutdown_send(TALLOC_CTX *mem_ctx,
3979 struct tevent_context *ev,
3980 struct rpc_pipe_client *cli,
3981 uint16_t *_server /* [in] [unique] */)
3983 struct tevent_req *req;
3984 struct rpccli_winreg_AbortSystemShutdown_state *state;
3985 struct tevent_req *subreq;
3987 req = tevent_req_create(mem_ctx, &state,
3988 struct rpccli_winreg_AbortSystemShutdown_state);
3992 state->out_mem_ctx = NULL;
3993 state->dispatch_recv = cli->dispatch_recv;
3996 state->orig.in.server = _server;
3998 /* Out parameters */
4001 ZERO_STRUCT(state->orig.out.result);
4003 /* make a temporary copy, that we pass to the dispatch function */
4004 state->tmp = state->orig;
4006 subreq = cli->dispatch_send(state, ev, cli,
4008 NDR_WINREG_ABORTSYSTEMSHUTDOWN,
4010 if (tevent_req_nomem(subreq, req)) {
4011 return tevent_req_post(req, ev);
4013 tevent_req_set_callback(subreq, rpccli_winreg_AbortSystemShutdown_done, req);
4017 static void rpccli_winreg_AbortSystemShutdown_done(struct tevent_req *subreq)
4019 struct tevent_req *req = tevent_req_callback_data(
4020 subreq, struct tevent_req);
4021 struct rpccli_winreg_AbortSystemShutdown_state *state = tevent_req_data(
4022 req, struct rpccli_winreg_AbortSystemShutdown_state);
4024 TALLOC_CTX *mem_ctx;
4026 if (state->out_mem_ctx) {
4027 mem_ctx = state->out_mem_ctx;
4032 status = state->dispatch_recv(subreq, mem_ctx);
4033 TALLOC_FREE(subreq);
4034 if (!NT_STATUS_IS_OK(status)) {
4035 tevent_req_nterror(req, status);
4039 /* Copy out parameters */
4042 state->orig.out.result = state->tmp.out.result;
4044 /* Reset temporary structure */
4045 ZERO_STRUCT(state->tmp);
4047 tevent_req_done(req);
4050 NTSTATUS rpccli_winreg_AbortSystemShutdown_recv(struct tevent_req *req,
4051 TALLOC_CTX *mem_ctx,
4054 struct rpccli_winreg_AbortSystemShutdown_state *state = tevent_req_data(
4055 req, struct rpccli_winreg_AbortSystemShutdown_state);
4058 if (tevent_req_is_nterror(req, &status)) {
4059 tevent_req_received(req);
4063 /* Steal possbile out parameters to the callers context */
4064 talloc_steal(mem_ctx, state->out_mem_ctx);
4067 *result = state->orig.out.result;
4069 tevent_req_received(req);
4070 return NT_STATUS_OK;
4073 NTSTATUS rpccli_winreg_AbortSystemShutdown(struct rpc_pipe_client *cli,
4074 TALLOC_CTX *mem_ctx,
4075 uint16_t *server /* [in] [unique] */,
4078 struct winreg_AbortSystemShutdown r;
4082 r.in.server = server;
4084 status = cli->dispatch(cli,
4087 NDR_WINREG_ABORTSYSTEMSHUTDOWN,
4090 if (!NT_STATUS_IS_OK(status)) {
4094 if (NT_STATUS_IS_ERR(status)) {
4098 /* Return variables */
4102 *werror = r.out.result;
4105 return werror_to_ntstatus(r.out.result);
4108 struct rpccli_winreg_GetVersion_state {
4109 struct winreg_GetVersion orig;
4110 struct winreg_GetVersion tmp;
4111 TALLOC_CTX *out_mem_ctx;
4112 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
4115 static void rpccli_winreg_GetVersion_done(struct tevent_req *subreq);
4117 struct tevent_req *rpccli_winreg_GetVersion_send(TALLOC_CTX *mem_ctx,
4118 struct tevent_context *ev,
4119 struct rpc_pipe_client *cli,
4120 struct policy_handle *_handle /* [in] [ref] */,
4121 uint32_t *_version /* [out] [ref] */)
4123 struct tevent_req *req;
4124 struct rpccli_winreg_GetVersion_state *state;
4125 struct tevent_req *subreq;
4127 req = tevent_req_create(mem_ctx, &state,
4128 struct rpccli_winreg_GetVersion_state);
4132 state->out_mem_ctx = NULL;
4133 state->dispatch_recv = cli->dispatch_recv;
4136 state->orig.in.handle = _handle;
4138 /* Out parameters */
4139 state->orig.out.version = _version;
4142 ZERO_STRUCT(state->orig.out.result);
4144 state->out_mem_ctx = talloc_named_const(state, 0,
4145 "rpccli_winreg_GetVersion_out_memory");
4146 if (tevent_req_nomem(state->out_mem_ctx, req)) {
4147 return tevent_req_post(req, ev);
4150 /* make a temporary copy, that we pass to the dispatch function */
4151 state->tmp = state->orig;
4153 subreq = cli->dispatch_send(state, ev, cli,
4155 NDR_WINREG_GETVERSION,
4157 if (tevent_req_nomem(subreq, req)) {
4158 return tevent_req_post(req, ev);
4160 tevent_req_set_callback(subreq, rpccli_winreg_GetVersion_done, req);
4164 static void rpccli_winreg_GetVersion_done(struct tevent_req *subreq)
4166 struct tevent_req *req = tevent_req_callback_data(
4167 subreq, struct tevent_req);
4168 struct rpccli_winreg_GetVersion_state *state = tevent_req_data(
4169 req, struct rpccli_winreg_GetVersion_state);
4171 TALLOC_CTX *mem_ctx;
4173 if (state->out_mem_ctx) {
4174 mem_ctx = state->out_mem_ctx;
4179 status = state->dispatch_recv(subreq, mem_ctx);
4180 TALLOC_FREE(subreq);
4181 if (!NT_STATUS_IS_OK(status)) {
4182 tevent_req_nterror(req, status);
4186 /* Copy out parameters */
4187 *state->orig.out.version = *state->tmp.out.version;
4190 state->orig.out.result = state->tmp.out.result;
4192 /* Reset temporary structure */
4193 ZERO_STRUCT(state->tmp);
4195 tevent_req_done(req);
4198 NTSTATUS rpccli_winreg_GetVersion_recv(struct tevent_req *req,
4199 TALLOC_CTX *mem_ctx,
4202 struct rpccli_winreg_GetVersion_state *state = tevent_req_data(
4203 req, struct rpccli_winreg_GetVersion_state);
4206 if (tevent_req_is_nterror(req, &status)) {
4207 tevent_req_received(req);
4211 /* Steal possbile out parameters to the callers context */
4212 talloc_steal(mem_ctx, state->out_mem_ctx);
4215 *result = state->orig.out.result;
4217 tevent_req_received(req);
4218 return NT_STATUS_OK;
4221 NTSTATUS rpccli_winreg_GetVersion(struct rpc_pipe_client *cli,
4222 TALLOC_CTX *mem_ctx,
4223 struct policy_handle *handle /* [in] [ref] */,
4224 uint32_t *version /* [out] [ref] */,
4227 struct winreg_GetVersion r;
4231 r.in.handle = handle;
4233 status = cli->dispatch(cli,
4236 NDR_WINREG_GETVERSION,
4239 if (!NT_STATUS_IS_OK(status)) {
4243 if (NT_STATUS_IS_ERR(status)) {
4247 /* Return variables */
4248 *version = *r.out.version;
4252 *werror = r.out.result;
4255 return werror_to_ntstatus(r.out.result);
4258 struct rpccli_winreg_OpenHKCC_state {
4259 struct winreg_OpenHKCC orig;
4260 struct winreg_OpenHKCC tmp;
4261 TALLOC_CTX *out_mem_ctx;
4262 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
4265 static void rpccli_winreg_OpenHKCC_done(struct tevent_req *subreq);
4267 struct tevent_req *rpccli_winreg_OpenHKCC_send(TALLOC_CTX *mem_ctx,
4268 struct tevent_context *ev,
4269 struct rpc_pipe_client *cli,
4270 uint16_t *_system_name /* [in] [unique] */,
4271 uint32_t _access_mask /* [in] */,
4272 struct policy_handle *_handle /* [out] [ref] */)
4274 struct tevent_req *req;
4275 struct rpccli_winreg_OpenHKCC_state *state;
4276 struct tevent_req *subreq;
4278 req = tevent_req_create(mem_ctx, &state,
4279 struct rpccli_winreg_OpenHKCC_state);
4283 state->out_mem_ctx = NULL;
4284 state->dispatch_recv = cli->dispatch_recv;
4287 state->orig.in.system_name = _system_name;
4288 state->orig.in.access_mask = _access_mask;
4290 /* Out parameters */
4291 state->orig.out.handle = _handle;
4294 ZERO_STRUCT(state->orig.out.result);
4296 state->out_mem_ctx = talloc_named_const(state, 0,
4297 "rpccli_winreg_OpenHKCC_out_memory");
4298 if (tevent_req_nomem(state->out_mem_ctx, req)) {
4299 return tevent_req_post(req, ev);
4302 /* make a temporary copy, that we pass to the dispatch function */
4303 state->tmp = state->orig;
4305 subreq = cli->dispatch_send(state, ev, cli,
4307 NDR_WINREG_OPENHKCC,
4309 if (tevent_req_nomem(subreq, req)) {
4310 return tevent_req_post(req, ev);
4312 tevent_req_set_callback(subreq, rpccli_winreg_OpenHKCC_done, req);
4316 static void rpccli_winreg_OpenHKCC_done(struct tevent_req *subreq)
4318 struct tevent_req *req = tevent_req_callback_data(
4319 subreq, struct tevent_req);
4320 struct rpccli_winreg_OpenHKCC_state *state = tevent_req_data(
4321 req, struct rpccli_winreg_OpenHKCC_state);
4323 TALLOC_CTX *mem_ctx;
4325 if (state->out_mem_ctx) {
4326 mem_ctx = state->out_mem_ctx;
4331 status = state->dispatch_recv(subreq, mem_ctx);
4332 TALLOC_FREE(subreq);
4333 if (!NT_STATUS_IS_OK(status)) {
4334 tevent_req_nterror(req, status);
4338 /* Copy out parameters */
4339 *state->orig.out.handle = *state->tmp.out.handle;
4342 state->orig.out.result = state->tmp.out.result;
4344 /* Reset temporary structure */
4345 ZERO_STRUCT(state->tmp);
4347 tevent_req_done(req);
4350 NTSTATUS rpccli_winreg_OpenHKCC_recv(struct tevent_req *req,
4351 TALLOC_CTX *mem_ctx,
4354 struct rpccli_winreg_OpenHKCC_state *state = tevent_req_data(
4355 req, struct rpccli_winreg_OpenHKCC_state);
4358 if (tevent_req_is_nterror(req, &status)) {
4359 tevent_req_received(req);
4363 /* Steal possbile out parameters to the callers context */
4364 talloc_steal(mem_ctx, state->out_mem_ctx);
4367 *result = state->orig.out.result;
4369 tevent_req_received(req);
4370 return NT_STATUS_OK;
4373 NTSTATUS rpccli_winreg_OpenHKCC(struct rpc_pipe_client *cli,
4374 TALLOC_CTX *mem_ctx,
4375 uint16_t *system_name /* [in] [unique] */,
4376 uint32_t access_mask /* [in] */,
4377 struct policy_handle *handle /* [out] [ref] */,
4380 struct winreg_OpenHKCC r;
4384 r.in.system_name = system_name;
4385 r.in.access_mask = access_mask;
4387 status = cli->dispatch(cli,
4390 NDR_WINREG_OPENHKCC,
4393 if (!NT_STATUS_IS_OK(status)) {
4397 if (NT_STATUS_IS_ERR(status)) {
4401 /* Return variables */
4402 *handle = *r.out.handle;
4406 *werror = r.out.result;
4409 return werror_to_ntstatus(r.out.result);
4412 struct rpccli_winreg_OpenHKDD_state {
4413 struct winreg_OpenHKDD orig;
4414 struct winreg_OpenHKDD tmp;
4415 TALLOC_CTX *out_mem_ctx;
4416 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
4419 static void rpccli_winreg_OpenHKDD_done(struct tevent_req *subreq);
4421 struct tevent_req *rpccli_winreg_OpenHKDD_send(TALLOC_CTX *mem_ctx,
4422 struct tevent_context *ev,
4423 struct rpc_pipe_client *cli,
4424 uint16_t *_system_name /* [in] [unique] */,
4425 uint32_t _access_mask /* [in] */,
4426 struct policy_handle *_handle /* [out] [ref] */)
4428 struct tevent_req *req;
4429 struct rpccli_winreg_OpenHKDD_state *state;
4430 struct tevent_req *subreq;
4432 req = tevent_req_create(mem_ctx, &state,
4433 struct rpccli_winreg_OpenHKDD_state);
4437 state->out_mem_ctx = NULL;
4438 state->dispatch_recv = cli->dispatch_recv;
4441 state->orig.in.system_name = _system_name;
4442 state->orig.in.access_mask = _access_mask;
4444 /* Out parameters */
4445 state->orig.out.handle = _handle;
4448 ZERO_STRUCT(state->orig.out.result);
4450 state->out_mem_ctx = talloc_named_const(state, 0,
4451 "rpccli_winreg_OpenHKDD_out_memory");
4452 if (tevent_req_nomem(state->out_mem_ctx, req)) {
4453 return tevent_req_post(req, ev);
4456 /* make a temporary copy, that we pass to the dispatch function */
4457 state->tmp = state->orig;
4459 subreq = cli->dispatch_send(state, ev, cli,
4461 NDR_WINREG_OPENHKDD,
4463 if (tevent_req_nomem(subreq, req)) {
4464 return tevent_req_post(req, ev);
4466 tevent_req_set_callback(subreq, rpccli_winreg_OpenHKDD_done, req);
4470 static void rpccli_winreg_OpenHKDD_done(struct tevent_req *subreq)
4472 struct tevent_req *req = tevent_req_callback_data(
4473 subreq, struct tevent_req);
4474 struct rpccli_winreg_OpenHKDD_state *state = tevent_req_data(
4475 req, struct rpccli_winreg_OpenHKDD_state);
4477 TALLOC_CTX *mem_ctx;
4479 if (state->out_mem_ctx) {
4480 mem_ctx = state->out_mem_ctx;
4485 status = state->dispatch_recv(subreq, mem_ctx);
4486 TALLOC_FREE(subreq);
4487 if (!NT_STATUS_IS_OK(status)) {
4488 tevent_req_nterror(req, status);
4492 /* Copy out parameters */
4493 *state->orig.out.handle = *state->tmp.out.handle;
4496 state->orig.out.result = state->tmp.out.result;
4498 /* Reset temporary structure */
4499 ZERO_STRUCT(state->tmp);
4501 tevent_req_done(req);
4504 NTSTATUS rpccli_winreg_OpenHKDD_recv(struct tevent_req *req,
4505 TALLOC_CTX *mem_ctx,
4508 struct rpccli_winreg_OpenHKDD_state *state = tevent_req_data(
4509 req, struct rpccli_winreg_OpenHKDD_state);
4512 if (tevent_req_is_nterror(req, &status)) {
4513 tevent_req_received(req);
4517 /* Steal possbile out parameters to the callers context */
4518 talloc_steal(mem_ctx, state->out_mem_ctx);
4521 *result = state->orig.out.result;
4523 tevent_req_received(req);
4524 return NT_STATUS_OK;
4527 NTSTATUS rpccli_winreg_OpenHKDD(struct rpc_pipe_client *cli,
4528 TALLOC_CTX *mem_ctx,
4529 uint16_t *system_name /* [in] [unique] */,
4530 uint32_t access_mask /* [in] */,
4531 struct policy_handle *handle /* [out] [ref] */,
4534 struct winreg_OpenHKDD r;
4538 r.in.system_name = system_name;
4539 r.in.access_mask = access_mask;
4541 status = cli->dispatch(cli,
4544 NDR_WINREG_OPENHKDD,
4547 if (!NT_STATUS_IS_OK(status)) {
4551 if (NT_STATUS_IS_ERR(status)) {
4555 /* Return variables */
4556 *handle = *r.out.handle;
4560 *werror = r.out.result;
4563 return werror_to_ntstatus(r.out.result);
4566 struct rpccli_winreg_QueryMultipleValues_state {
4567 struct winreg_QueryMultipleValues orig;
4568 struct winreg_QueryMultipleValues tmp;
4569 TALLOC_CTX *out_mem_ctx;
4570 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
4573 static void rpccli_winreg_QueryMultipleValues_done(struct tevent_req *subreq);
4575 struct tevent_req *rpccli_winreg_QueryMultipleValues_send(TALLOC_CTX *mem_ctx,
4576 struct tevent_context *ev,
4577 struct rpc_pipe_client *cli,
4578 struct policy_handle *_key_handle /* [in] [ref] */,
4579 struct QueryMultipleValue *_values /* [in,out] [ref,length_is(num_values),size_is(num_values)] */,
4580 uint32_t _num_values /* [in] */,
4581 uint8_t *_buffer /* [in,out] [unique,length_is(*buffer_size),size_is(*buffer_size)] */,
4582 uint32_t *_buffer_size /* [in,out] [ref] */)
4584 struct tevent_req *req;
4585 struct rpccli_winreg_QueryMultipleValues_state *state;
4586 struct tevent_req *subreq;
4588 req = tevent_req_create(mem_ctx, &state,
4589 struct rpccli_winreg_QueryMultipleValues_state);
4593 state->out_mem_ctx = NULL;
4594 state->dispatch_recv = cli->dispatch_recv;
4597 state->orig.in.key_handle = _key_handle;
4598 state->orig.in.values = _values;
4599 state->orig.in.num_values = _num_values;
4600 state->orig.in.buffer = _buffer;
4601 state->orig.in.buffer_size = _buffer_size;
4603 /* Out parameters */
4604 state->orig.out.values = _values;
4605 state->orig.out.buffer = _buffer;
4606 state->orig.out.buffer_size = _buffer_size;
4609 ZERO_STRUCT(state->orig.out.result);
4611 state->out_mem_ctx = talloc_named_const(state, 0,
4612 "rpccli_winreg_QueryMultipleValues_out_memory");
4613 if (tevent_req_nomem(state->out_mem_ctx, req)) {
4614 return tevent_req_post(req, ev);
4617 /* make a temporary copy, that we pass to the dispatch function */
4618 state->tmp = state->orig;
4620 subreq = cli->dispatch_send(state, ev, cli,
4622 NDR_WINREG_QUERYMULTIPLEVALUES,
4624 if (tevent_req_nomem(subreq, req)) {
4625 return tevent_req_post(req, ev);
4627 tevent_req_set_callback(subreq, rpccli_winreg_QueryMultipleValues_done, req);
4631 static void rpccli_winreg_QueryMultipleValues_done(struct tevent_req *subreq)
4633 struct tevent_req *req = tevent_req_callback_data(
4634 subreq, struct tevent_req);
4635 struct rpccli_winreg_QueryMultipleValues_state *state = tevent_req_data(
4636 req, struct rpccli_winreg_QueryMultipleValues_state);
4638 TALLOC_CTX *mem_ctx;
4640 if (state->out_mem_ctx) {
4641 mem_ctx = state->out_mem_ctx;
4646 status = state->dispatch_recv(subreq, mem_ctx);
4647 TALLOC_FREE(subreq);
4648 if (!NT_STATUS_IS_OK(status)) {
4649 tevent_req_nterror(req, status);
4653 /* Copy out parameters */
4654 memcpy(state->orig.out.values, state->tmp.out.values, (state->tmp.in.num_values) * sizeof(*state->orig.out.values));
4655 if (state->orig.out.buffer && state->tmp.out.buffer) {
4656 memcpy(state->orig.out.buffer, state->tmp.out.buffer, (*state->tmp.in.buffer_size) * sizeof(*state->orig.out.buffer));
4658 *state->orig.out.buffer_size = *state->tmp.out.buffer_size;
4661 state->orig.out.result = state->tmp.out.result;
4663 /* Reset temporary structure */
4664 ZERO_STRUCT(state->tmp);
4666 tevent_req_done(req);
4669 NTSTATUS rpccli_winreg_QueryMultipleValues_recv(struct tevent_req *req,
4670 TALLOC_CTX *mem_ctx,
4673 struct rpccli_winreg_QueryMultipleValues_state *state = tevent_req_data(
4674 req, struct rpccli_winreg_QueryMultipleValues_state);
4677 if (tevent_req_is_nterror(req, &status)) {
4678 tevent_req_received(req);
4682 /* Steal possbile out parameters to the callers context */
4683 talloc_steal(mem_ctx, state->out_mem_ctx);
4686 *result = state->orig.out.result;
4688 tevent_req_received(req);
4689 return NT_STATUS_OK;
4692 NTSTATUS rpccli_winreg_QueryMultipleValues(struct rpc_pipe_client *cli,
4693 TALLOC_CTX *mem_ctx,
4694 struct policy_handle *key_handle /* [in] [ref] */,
4695 struct QueryMultipleValue *values /* [in,out] [ref,length_is(num_values),size_is(num_values)] */,
4696 uint32_t num_values /* [in] */,
4697 uint8_t *buffer /* [in,out] [unique,length_is(*buffer_size),size_is(*buffer_size)] */,
4698 uint32_t *buffer_size /* [in,out] [ref] */,
4701 struct winreg_QueryMultipleValues r;
4705 r.in.key_handle = key_handle;
4706 r.in.values = values;
4707 r.in.num_values = num_values;
4708 r.in.buffer = buffer;
4709 r.in.buffer_size = buffer_size;
4711 status = cli->dispatch(cli,
4714 NDR_WINREG_QUERYMULTIPLEVALUES,
4717 if (!NT_STATUS_IS_OK(status)) {
4721 if (NT_STATUS_IS_ERR(status)) {
4725 /* Return variables */
4726 memcpy(values, r.out.values, (r.in.num_values) * sizeof(*values));
4727 if (buffer && r.out.buffer) {
4728 memcpy(buffer, r.out.buffer, (*r.in.buffer_size) * sizeof(*buffer));
4730 *buffer_size = *r.out.buffer_size;
4734 *werror = r.out.result;
4737 return werror_to_ntstatus(r.out.result);
4740 struct rpccli_winreg_InitiateSystemShutdownEx_state {
4741 struct winreg_InitiateSystemShutdownEx orig;
4742 struct winreg_InitiateSystemShutdownEx tmp;
4743 TALLOC_CTX *out_mem_ctx;
4744 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
4747 static void rpccli_winreg_InitiateSystemShutdownEx_done(struct tevent_req *subreq);
4749 struct tevent_req *rpccli_winreg_InitiateSystemShutdownEx_send(TALLOC_CTX *mem_ctx,
4750 struct tevent_context *ev,
4751 struct rpc_pipe_client *cli,
4752 uint16_t *_hostname /* [in] [unique] */,
4753 struct lsa_StringLarge *_message /* [in] [unique] */,
4754 uint32_t _timeout /* [in] */,
4755 uint8_t _force_apps /* [in] */,
4756 uint8_t _do_reboot /* [in] */,
4757 uint32_t _reason /* [in] */)
4759 struct tevent_req *req;
4760 struct rpccli_winreg_InitiateSystemShutdownEx_state *state;
4761 struct tevent_req *subreq;
4763 req = tevent_req_create(mem_ctx, &state,
4764 struct rpccli_winreg_InitiateSystemShutdownEx_state);
4768 state->out_mem_ctx = NULL;
4769 state->dispatch_recv = cli->dispatch_recv;
4772 state->orig.in.hostname = _hostname;
4773 state->orig.in.message = _message;
4774 state->orig.in.timeout = _timeout;
4775 state->orig.in.force_apps = _force_apps;
4776 state->orig.in.do_reboot = _do_reboot;
4777 state->orig.in.reason = _reason;
4779 /* Out parameters */
4782 ZERO_STRUCT(state->orig.out.result);
4784 /* make a temporary copy, that we pass to the dispatch function */
4785 state->tmp = state->orig;
4787 subreq = cli->dispatch_send(state, ev, cli,
4789 NDR_WINREG_INITIATESYSTEMSHUTDOWNEX,
4791 if (tevent_req_nomem(subreq, req)) {
4792 return tevent_req_post(req, ev);
4794 tevent_req_set_callback(subreq, rpccli_winreg_InitiateSystemShutdownEx_done, req);
4798 static void rpccli_winreg_InitiateSystemShutdownEx_done(struct tevent_req *subreq)
4800 struct tevent_req *req = tevent_req_callback_data(
4801 subreq, struct tevent_req);
4802 struct rpccli_winreg_InitiateSystemShutdownEx_state *state = tevent_req_data(
4803 req, struct rpccli_winreg_InitiateSystemShutdownEx_state);
4805 TALLOC_CTX *mem_ctx;
4807 if (state->out_mem_ctx) {
4808 mem_ctx = state->out_mem_ctx;
4813 status = state->dispatch_recv(subreq, mem_ctx);
4814 TALLOC_FREE(subreq);
4815 if (!NT_STATUS_IS_OK(status)) {
4816 tevent_req_nterror(req, status);
4820 /* Copy out parameters */
4823 state->orig.out.result = state->tmp.out.result;
4825 /* Reset temporary structure */
4826 ZERO_STRUCT(state->tmp);
4828 tevent_req_done(req);
4831 NTSTATUS rpccli_winreg_InitiateSystemShutdownEx_recv(struct tevent_req *req,
4832 TALLOC_CTX *mem_ctx,
4835 struct rpccli_winreg_InitiateSystemShutdownEx_state *state = tevent_req_data(
4836 req, struct rpccli_winreg_InitiateSystemShutdownEx_state);
4839 if (tevent_req_is_nterror(req, &status)) {
4840 tevent_req_received(req);
4844 /* Steal possbile out parameters to the callers context */
4845 talloc_steal(mem_ctx, state->out_mem_ctx);
4848 *result = state->orig.out.result;
4850 tevent_req_received(req);
4851 return NT_STATUS_OK;
4854 NTSTATUS rpccli_winreg_InitiateSystemShutdownEx(struct rpc_pipe_client *cli,
4855 TALLOC_CTX *mem_ctx,
4856 uint16_t *hostname /* [in] [unique] */,
4857 struct lsa_StringLarge *message /* [in] [unique] */,
4858 uint32_t timeout /* [in] */,
4859 uint8_t force_apps /* [in] */,
4860 uint8_t do_reboot /* [in] */,
4861 uint32_t reason /* [in] */,
4864 struct winreg_InitiateSystemShutdownEx r;
4868 r.in.hostname = hostname;
4869 r.in.message = message;
4870 r.in.timeout = timeout;
4871 r.in.force_apps = force_apps;
4872 r.in.do_reboot = do_reboot;
4873 r.in.reason = reason;
4875 status = cli->dispatch(cli,
4878 NDR_WINREG_INITIATESYSTEMSHUTDOWNEX,
4881 if (!NT_STATUS_IS_OK(status)) {
4885 if (NT_STATUS_IS_ERR(status)) {
4889 /* Return variables */
4893 *werror = r.out.result;
4896 return werror_to_ntstatus(r.out.result);
4899 struct rpccli_winreg_SaveKeyEx_state {
4900 struct winreg_SaveKeyEx orig;
4901 struct winreg_SaveKeyEx tmp;
4902 TALLOC_CTX *out_mem_ctx;
4903 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
4906 static void rpccli_winreg_SaveKeyEx_done(struct tevent_req *subreq);
4908 struct tevent_req *rpccli_winreg_SaveKeyEx_send(TALLOC_CTX *mem_ctx,
4909 struct tevent_context *ev,
4910 struct rpc_pipe_client *cli,
4911 struct policy_handle *_handle /* [in] [ref] */,
4912 struct winreg_String *_filename /* [in] [ref] */,
4913 struct KeySecurityAttribute *_sec_attrib /* [in] [unique] */,
4914 uint32_t _flags /* [in] */)
4916 struct tevent_req *req;
4917 struct rpccli_winreg_SaveKeyEx_state *state;
4918 struct tevent_req *subreq;
4920 req = tevent_req_create(mem_ctx, &state,
4921 struct rpccli_winreg_SaveKeyEx_state);
4925 state->out_mem_ctx = NULL;
4926 state->dispatch_recv = cli->dispatch_recv;
4929 state->orig.in.handle = _handle;
4930 state->orig.in.filename = _filename;
4931 state->orig.in.sec_attrib = _sec_attrib;
4932 state->orig.in.flags = _flags;
4934 /* Out parameters */
4937 ZERO_STRUCT(state->orig.out.result);
4939 /* make a temporary copy, that we pass to the dispatch function */
4940 state->tmp = state->orig;
4942 subreq = cli->dispatch_send(state, ev, cli,
4944 NDR_WINREG_SAVEKEYEX,
4946 if (tevent_req_nomem(subreq, req)) {
4947 return tevent_req_post(req, ev);
4949 tevent_req_set_callback(subreq, rpccli_winreg_SaveKeyEx_done, req);
4953 static void rpccli_winreg_SaveKeyEx_done(struct tevent_req *subreq)
4955 struct tevent_req *req = tevent_req_callback_data(
4956 subreq, struct tevent_req);
4957 struct rpccli_winreg_SaveKeyEx_state *state = tevent_req_data(
4958 req, struct rpccli_winreg_SaveKeyEx_state);
4960 TALLOC_CTX *mem_ctx;
4962 if (state->out_mem_ctx) {
4963 mem_ctx = state->out_mem_ctx;
4968 status = state->dispatch_recv(subreq, mem_ctx);
4969 TALLOC_FREE(subreq);
4970 if (!NT_STATUS_IS_OK(status)) {
4971 tevent_req_nterror(req, status);
4975 /* Copy out parameters */
4978 state->orig.out.result = state->tmp.out.result;
4980 /* Reset temporary structure */
4981 ZERO_STRUCT(state->tmp);
4983 tevent_req_done(req);
4986 NTSTATUS rpccli_winreg_SaveKeyEx_recv(struct tevent_req *req,
4987 TALLOC_CTX *mem_ctx,
4990 struct rpccli_winreg_SaveKeyEx_state *state = tevent_req_data(
4991 req, struct rpccli_winreg_SaveKeyEx_state);
4994 if (tevent_req_is_nterror(req, &status)) {
4995 tevent_req_received(req);
4999 /* Steal possbile out parameters to the callers context */
5000 talloc_steal(mem_ctx, state->out_mem_ctx);
5003 *result = state->orig.out.result;
5005 tevent_req_received(req);
5006 return NT_STATUS_OK;
5009 NTSTATUS rpccli_winreg_SaveKeyEx(struct rpc_pipe_client *cli,
5010 TALLOC_CTX *mem_ctx,
5011 struct policy_handle *handle /* [in] [ref] */,
5012 struct winreg_String *filename /* [in] [ref] */,
5013 struct KeySecurityAttribute *sec_attrib /* [in] [unique] */,
5014 uint32_t flags /* [in] */,
5017 struct winreg_SaveKeyEx r;
5021 r.in.handle = handle;
5022 r.in.filename = filename;
5023 r.in.sec_attrib = sec_attrib;
5026 status = cli->dispatch(cli,
5029 NDR_WINREG_SAVEKEYEX,
5032 if (!NT_STATUS_IS_OK(status)) {
5036 if (NT_STATUS_IS_ERR(status)) {
5040 /* Return variables */
5044 *werror = r.out.result;
5047 return werror_to_ntstatus(r.out.result);
5050 struct rpccli_winreg_OpenHKPT_state {
5051 struct winreg_OpenHKPT orig;
5052 struct winreg_OpenHKPT tmp;
5053 TALLOC_CTX *out_mem_ctx;
5054 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
5057 static void rpccli_winreg_OpenHKPT_done(struct tevent_req *subreq);
5059 struct tevent_req *rpccli_winreg_OpenHKPT_send(TALLOC_CTX *mem_ctx,
5060 struct tevent_context *ev,
5061 struct rpc_pipe_client *cli,
5062 uint16_t *_system_name /* [in] [unique] */,
5063 uint32_t _access_mask /* [in] */,
5064 struct policy_handle *_handle /* [out] [ref] */)
5066 struct tevent_req *req;
5067 struct rpccli_winreg_OpenHKPT_state *state;
5068 struct tevent_req *subreq;
5070 req = tevent_req_create(mem_ctx, &state,
5071 struct rpccli_winreg_OpenHKPT_state);
5075 state->out_mem_ctx = NULL;
5076 state->dispatch_recv = cli->dispatch_recv;
5079 state->orig.in.system_name = _system_name;
5080 state->orig.in.access_mask = _access_mask;
5082 /* Out parameters */
5083 state->orig.out.handle = _handle;
5086 ZERO_STRUCT(state->orig.out.result);
5088 state->out_mem_ctx = talloc_named_const(state, 0,
5089 "rpccli_winreg_OpenHKPT_out_memory");
5090 if (tevent_req_nomem(state->out_mem_ctx, req)) {
5091 return tevent_req_post(req, ev);
5094 /* make a temporary copy, that we pass to the dispatch function */
5095 state->tmp = state->orig;
5097 subreq = cli->dispatch_send(state, ev, cli,
5099 NDR_WINREG_OPENHKPT,
5101 if (tevent_req_nomem(subreq, req)) {
5102 return tevent_req_post(req, ev);
5104 tevent_req_set_callback(subreq, rpccli_winreg_OpenHKPT_done, req);
5108 static void rpccli_winreg_OpenHKPT_done(struct tevent_req *subreq)
5110 struct tevent_req *req = tevent_req_callback_data(
5111 subreq, struct tevent_req);
5112 struct rpccli_winreg_OpenHKPT_state *state = tevent_req_data(
5113 req, struct rpccli_winreg_OpenHKPT_state);
5115 TALLOC_CTX *mem_ctx;
5117 if (state->out_mem_ctx) {
5118 mem_ctx = state->out_mem_ctx;
5123 status = state->dispatch_recv(subreq, mem_ctx);
5124 TALLOC_FREE(subreq);
5125 if (!NT_STATUS_IS_OK(status)) {
5126 tevent_req_nterror(req, status);
5130 /* Copy out parameters */
5131 *state->orig.out.handle = *state->tmp.out.handle;
5134 state->orig.out.result = state->tmp.out.result;
5136 /* Reset temporary structure */
5137 ZERO_STRUCT(state->tmp);
5139 tevent_req_done(req);
5142 NTSTATUS rpccli_winreg_OpenHKPT_recv(struct tevent_req *req,
5143 TALLOC_CTX *mem_ctx,
5146 struct rpccli_winreg_OpenHKPT_state *state = tevent_req_data(
5147 req, struct rpccli_winreg_OpenHKPT_state);
5150 if (tevent_req_is_nterror(req, &status)) {
5151 tevent_req_received(req);
5155 /* Steal possbile out parameters to the callers context */
5156 talloc_steal(mem_ctx, state->out_mem_ctx);
5159 *result = state->orig.out.result;
5161 tevent_req_received(req);
5162 return NT_STATUS_OK;
5165 NTSTATUS rpccli_winreg_OpenHKPT(struct rpc_pipe_client *cli,
5166 TALLOC_CTX *mem_ctx,
5167 uint16_t *system_name /* [in] [unique] */,
5168 uint32_t access_mask /* [in] */,
5169 struct policy_handle *handle /* [out] [ref] */,
5172 struct winreg_OpenHKPT r;
5176 r.in.system_name = system_name;
5177 r.in.access_mask = access_mask;
5179 status = cli->dispatch(cli,
5182 NDR_WINREG_OPENHKPT,
5185 if (!NT_STATUS_IS_OK(status)) {
5189 if (NT_STATUS_IS_ERR(status)) {
5193 /* Return variables */
5194 *handle = *r.out.handle;
5198 *werror = r.out.result;
5201 return werror_to_ntstatus(r.out.result);
5204 struct rpccli_winreg_OpenHKPN_state {
5205 struct winreg_OpenHKPN orig;
5206 struct winreg_OpenHKPN tmp;
5207 TALLOC_CTX *out_mem_ctx;
5208 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
5211 static void rpccli_winreg_OpenHKPN_done(struct tevent_req *subreq);
5213 struct tevent_req *rpccli_winreg_OpenHKPN_send(TALLOC_CTX *mem_ctx,
5214 struct tevent_context *ev,
5215 struct rpc_pipe_client *cli,
5216 uint16_t *_system_name /* [in] [unique] */,
5217 uint32_t _access_mask /* [in] */,
5218 struct policy_handle *_handle /* [out] [ref] */)
5220 struct tevent_req *req;
5221 struct rpccli_winreg_OpenHKPN_state *state;
5222 struct tevent_req *subreq;
5224 req = tevent_req_create(mem_ctx, &state,
5225 struct rpccli_winreg_OpenHKPN_state);
5229 state->out_mem_ctx = NULL;
5230 state->dispatch_recv = cli->dispatch_recv;
5233 state->orig.in.system_name = _system_name;
5234 state->orig.in.access_mask = _access_mask;
5236 /* Out parameters */
5237 state->orig.out.handle = _handle;
5240 ZERO_STRUCT(state->orig.out.result);
5242 state->out_mem_ctx = talloc_named_const(state, 0,
5243 "rpccli_winreg_OpenHKPN_out_memory");
5244 if (tevent_req_nomem(state->out_mem_ctx, req)) {
5245 return tevent_req_post(req, ev);
5248 /* make a temporary copy, that we pass to the dispatch function */
5249 state->tmp = state->orig;
5251 subreq = cli->dispatch_send(state, ev, cli,
5253 NDR_WINREG_OPENHKPN,
5255 if (tevent_req_nomem(subreq, req)) {
5256 return tevent_req_post(req, ev);
5258 tevent_req_set_callback(subreq, rpccli_winreg_OpenHKPN_done, req);
5262 static void rpccli_winreg_OpenHKPN_done(struct tevent_req *subreq)
5264 struct tevent_req *req = tevent_req_callback_data(
5265 subreq, struct tevent_req);
5266 struct rpccli_winreg_OpenHKPN_state *state = tevent_req_data(
5267 req, struct rpccli_winreg_OpenHKPN_state);
5269 TALLOC_CTX *mem_ctx;
5271 if (state->out_mem_ctx) {
5272 mem_ctx = state->out_mem_ctx;
5277 status = state->dispatch_recv(subreq, mem_ctx);
5278 TALLOC_FREE(subreq);
5279 if (!NT_STATUS_IS_OK(status)) {
5280 tevent_req_nterror(req, status);
5284 /* Copy out parameters */
5285 *state->orig.out.handle = *state->tmp.out.handle;
5288 state->orig.out.result = state->tmp.out.result;
5290 /* Reset temporary structure */
5291 ZERO_STRUCT(state->tmp);
5293 tevent_req_done(req);
5296 NTSTATUS rpccli_winreg_OpenHKPN_recv(struct tevent_req *req,
5297 TALLOC_CTX *mem_ctx,
5300 struct rpccli_winreg_OpenHKPN_state *state = tevent_req_data(
5301 req, struct rpccli_winreg_OpenHKPN_state);
5304 if (tevent_req_is_nterror(req, &status)) {
5305 tevent_req_received(req);
5309 /* Steal possbile out parameters to the callers context */
5310 talloc_steal(mem_ctx, state->out_mem_ctx);
5313 *result = state->orig.out.result;
5315 tevent_req_received(req);
5316 return NT_STATUS_OK;
5319 NTSTATUS rpccli_winreg_OpenHKPN(struct rpc_pipe_client *cli,
5320 TALLOC_CTX *mem_ctx,
5321 uint16_t *system_name /* [in] [unique] */,
5322 uint32_t access_mask /* [in] */,
5323 struct policy_handle *handle /* [out] [ref] */,
5326 struct winreg_OpenHKPN r;
5330 r.in.system_name = system_name;
5331 r.in.access_mask = access_mask;
5333 status = cli->dispatch(cli,
5336 NDR_WINREG_OPENHKPN,
5339 if (!NT_STATUS_IS_OK(status)) {
5343 if (NT_STATUS_IS_ERR(status)) {
5347 /* Return variables */
5348 *handle = *r.out.handle;
5352 *werror = r.out.result;
5355 return werror_to_ntstatus(r.out.result);
5358 struct rpccli_winreg_QueryMultipleValues2_state {
5359 struct winreg_QueryMultipleValues2 orig;
5360 struct winreg_QueryMultipleValues2 tmp;
5361 TALLOC_CTX *out_mem_ctx;
5362 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
5365 static void rpccli_winreg_QueryMultipleValues2_done(struct tevent_req *subreq);
5367 struct tevent_req *rpccli_winreg_QueryMultipleValues2_send(TALLOC_CTX *mem_ctx,
5368 struct tevent_context *ev,
5369 struct rpc_pipe_client *cli,
5370 struct policy_handle *_key_handle /* [in] [ref] */,
5371 struct QueryMultipleValue *_values /* [in,out] [ref,length_is(num_values),size_is(num_values)] */,
5372 uint32_t _num_values /* [in] */,
5373 uint8_t *_buffer /* [in,out] [unique,length_is(offered),size_is(offered)] */,
5374 uint32_t _offered /* [in] */,
5375 uint32_t *_needed /* [out] [ref] */)
5377 struct tevent_req *req;
5378 struct rpccli_winreg_QueryMultipleValues2_state *state;
5379 struct tevent_req *subreq;
5381 req = tevent_req_create(mem_ctx, &state,
5382 struct rpccli_winreg_QueryMultipleValues2_state);
5386 state->out_mem_ctx = NULL;
5387 state->dispatch_recv = cli->dispatch_recv;
5390 state->orig.in.key_handle = _key_handle;
5391 state->orig.in.values = _values;
5392 state->orig.in.num_values = _num_values;
5393 state->orig.in.buffer = _buffer;
5394 state->orig.in.offered = _offered;
5396 /* Out parameters */
5397 state->orig.out.values = _values;
5398 state->orig.out.buffer = _buffer;
5399 state->orig.out.needed = _needed;
5402 ZERO_STRUCT(state->orig.out.result);
5404 state->out_mem_ctx = talloc_named_const(state, 0,
5405 "rpccli_winreg_QueryMultipleValues2_out_memory");
5406 if (tevent_req_nomem(state->out_mem_ctx, req)) {
5407 return tevent_req_post(req, ev);
5410 /* make a temporary copy, that we pass to the dispatch function */
5411 state->tmp = state->orig;
5413 subreq = cli->dispatch_send(state, ev, cli,
5415 NDR_WINREG_QUERYMULTIPLEVALUES2,
5417 if (tevent_req_nomem(subreq, req)) {
5418 return tevent_req_post(req, ev);
5420 tevent_req_set_callback(subreq, rpccli_winreg_QueryMultipleValues2_done, req);
5424 static void rpccli_winreg_QueryMultipleValues2_done(struct tevent_req *subreq)
5426 struct tevent_req *req = tevent_req_callback_data(
5427 subreq, struct tevent_req);
5428 struct rpccli_winreg_QueryMultipleValues2_state *state = tevent_req_data(
5429 req, struct rpccli_winreg_QueryMultipleValues2_state);
5431 TALLOC_CTX *mem_ctx;
5433 if (state->out_mem_ctx) {
5434 mem_ctx = state->out_mem_ctx;
5439 status = state->dispatch_recv(subreq, mem_ctx);
5440 TALLOC_FREE(subreq);
5441 if (!NT_STATUS_IS_OK(status)) {
5442 tevent_req_nterror(req, status);
5446 /* Copy out parameters */
5447 memcpy(state->orig.out.values, state->tmp.out.values, (state->tmp.in.num_values) * sizeof(*state->orig.out.values));
5448 if (state->orig.out.buffer && state->tmp.out.buffer) {
5449 memcpy(state->orig.out.buffer, state->tmp.out.buffer, (state->tmp.in.offered) * sizeof(*state->orig.out.buffer));
5451 *state->orig.out.needed = *state->tmp.out.needed;
5454 state->orig.out.result = state->tmp.out.result;
5456 /* Reset temporary structure */
5457 ZERO_STRUCT(state->tmp);
5459 tevent_req_done(req);
5462 NTSTATUS rpccli_winreg_QueryMultipleValues2_recv(struct tevent_req *req,
5463 TALLOC_CTX *mem_ctx,
5466 struct rpccli_winreg_QueryMultipleValues2_state *state = tevent_req_data(
5467 req, struct rpccli_winreg_QueryMultipleValues2_state);
5470 if (tevent_req_is_nterror(req, &status)) {
5471 tevent_req_received(req);
5475 /* Steal possbile out parameters to the callers context */
5476 talloc_steal(mem_ctx, state->out_mem_ctx);
5479 *result = state->orig.out.result;
5481 tevent_req_received(req);
5482 return NT_STATUS_OK;
5485 NTSTATUS rpccli_winreg_QueryMultipleValues2(struct rpc_pipe_client *cli,
5486 TALLOC_CTX *mem_ctx,
5487 struct policy_handle *key_handle /* [in] [ref] */,
5488 struct QueryMultipleValue *values /* [in,out] [ref,length_is(num_values),size_is(num_values)] */,
5489 uint32_t num_values /* [in] */,
5490 uint8_t *buffer /* [in,out] [unique,length_is(offered),size_is(offered)] */,
5491 uint32_t offered /* [in] */,
5492 uint32_t *needed /* [out] [ref] */,
5495 struct winreg_QueryMultipleValues2 r;
5499 r.in.key_handle = key_handle;
5500 r.in.values = values;
5501 r.in.num_values = num_values;
5502 r.in.buffer = buffer;
5503 r.in.offered = offered;
5505 status = cli->dispatch(cli,
5508 NDR_WINREG_QUERYMULTIPLEVALUES2,
5511 if (!NT_STATUS_IS_OK(status)) {
5515 if (NT_STATUS_IS_ERR(status)) {
5519 /* Return variables */
5520 memcpy(values, r.out.values, (r.in.num_values) * sizeof(*values));
5521 if (buffer && r.out.buffer) {
5522 memcpy(buffer, r.out.buffer, (r.in.offered) * sizeof(*buffer));
5524 *needed = *r.out.needed;
5528 *werror = r.out.result;
5531 return werror_to_ntstatus(r.out.result);
5534 struct rpccli_winreg_DeleteKeyEx_state {
5535 struct winreg_DeleteKeyEx orig;
5536 struct winreg_DeleteKeyEx tmp;
5537 TALLOC_CTX *out_mem_ctx;
5538 NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx);
5541 static void rpccli_winreg_DeleteKeyEx_done(struct tevent_req *subreq);
5543 struct tevent_req *rpccli_winreg_DeleteKeyEx_send(TALLOC_CTX *mem_ctx,
5544 struct tevent_context *ev,
5545 struct rpc_pipe_client *cli,
5546 struct policy_handle *_handle /* [in] [ref] */,
5547 struct winreg_String *_key /* [in] [ref] */,
5548 uint32_t _access_mask /* [in] */,
5549 uint32_t _reserved /* [in] */)
5551 struct tevent_req *req;
5552 struct rpccli_winreg_DeleteKeyEx_state *state;
5553 struct tevent_req *subreq;
5555 req = tevent_req_create(mem_ctx, &state,
5556 struct rpccli_winreg_DeleteKeyEx_state);
5560 state->out_mem_ctx = NULL;
5561 state->dispatch_recv = cli->dispatch_recv;
5564 state->orig.in.handle = _handle;
5565 state->orig.in.key = _key;
5566 state->orig.in.access_mask = _access_mask;
5567 state->orig.in.reserved = _reserved;
5569 /* Out parameters */
5572 ZERO_STRUCT(state->orig.out.result);
5574 /* make a temporary copy, that we pass to the dispatch function */
5575 state->tmp = state->orig;
5577 subreq = cli->dispatch_send(state, ev, cli,
5579 NDR_WINREG_DELETEKEYEX,
5581 if (tevent_req_nomem(subreq, req)) {
5582 return tevent_req_post(req, ev);
5584 tevent_req_set_callback(subreq, rpccli_winreg_DeleteKeyEx_done, req);
5588 static void rpccli_winreg_DeleteKeyEx_done(struct tevent_req *subreq)
5590 struct tevent_req *req = tevent_req_callback_data(
5591 subreq, struct tevent_req);
5592 struct rpccli_winreg_DeleteKeyEx_state *state = tevent_req_data(
5593 req, struct rpccli_winreg_DeleteKeyEx_state);
5595 TALLOC_CTX *mem_ctx;
5597 if (state->out_mem_ctx) {
5598 mem_ctx = state->out_mem_ctx;
5603 status = state->dispatch_recv(subreq, mem_ctx);
5604 TALLOC_FREE(subreq);
5605 if (!NT_STATUS_IS_OK(status)) {
5606 tevent_req_nterror(req, status);
5610 /* Copy out parameters */
5613 state->orig.out.result = state->tmp.out.result;
5615 /* Reset temporary structure */
5616 ZERO_STRUCT(state->tmp);
5618 tevent_req_done(req);
5621 NTSTATUS rpccli_winreg_DeleteKeyEx_recv(struct tevent_req *req,
5622 TALLOC_CTX *mem_ctx,
5625 struct rpccli_winreg_DeleteKeyEx_state *state = tevent_req_data(
5626 req, struct rpccli_winreg_DeleteKeyEx_state);
5629 if (tevent_req_is_nterror(req, &status)) {
5630 tevent_req_received(req);
5634 /* Steal possbile out parameters to the callers context */
5635 talloc_steal(mem_ctx, state->out_mem_ctx);
5638 *result = state->orig.out.result;
5640 tevent_req_received(req);
5641 return NT_STATUS_OK;
5644 NTSTATUS rpccli_winreg_DeleteKeyEx(struct rpc_pipe_client *cli,
5645 TALLOC_CTX *mem_ctx,
5646 struct policy_handle *handle /* [in] [ref] */,
5647 struct winreg_String *key /* [in] [ref] */,
5648 uint32_t access_mask /* [in] */,
5649 uint32_t reserved /* [in] */,
5652 struct winreg_DeleteKeyEx r;
5656 r.in.handle = handle;
5658 r.in.access_mask = access_mask;
5659 r.in.reserved = reserved;
5661 status = cli->dispatch(cli,
5664 NDR_WINREG_DELETEKEYEX,
5667 if (!NT_STATUS_IS_OK(status)) {
5671 if (NT_STATUS_IS_ERR(status)) {
5675 /* Return variables */
5679 *werror = r.out.result;
5682 return werror_to_ntstatus(r.out.result);