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 _unknown
/* [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
.unknown
= _unknown
;
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 unknown
/* [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
.unknown
= unknown
;
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,length_is(*data_length),size_is(*data_size)] */,
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
) * 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,length_is(*data_length),size_is(*data_size)] */,
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
) * 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
)
2937 struct tevent_req
*req
;
2938 struct rpccli_winreg_ReplaceKey_state
*state
;
2939 struct tevent_req
*subreq
;
2941 req
= tevent_req_create(mem_ctx
, &state
,
2942 struct rpccli_winreg_ReplaceKey_state
);
2946 state
->out_mem_ctx
= NULL
;
2947 state
->dispatch_recv
= cli
->dispatch_recv
;
2951 /* Out parameters */
2954 ZERO_STRUCT(state
->orig
.out
.result
);
2956 /* make a temporary copy, that we pass to the dispatch function */
2957 state
->tmp
= state
->orig
;
2959 subreq
= cli
->dispatch_send(state
, ev
, cli
,
2961 NDR_WINREG_REPLACEKEY
,
2963 if (tevent_req_nomem(subreq
, req
)) {
2964 return tevent_req_post(req
, ev
);
2966 tevent_req_set_callback(subreq
, rpccli_winreg_ReplaceKey_done
, req
);
2970 static void rpccli_winreg_ReplaceKey_done(struct tevent_req
*subreq
)
2972 struct tevent_req
*req
= tevent_req_callback_data(
2973 subreq
, struct tevent_req
);
2974 struct rpccli_winreg_ReplaceKey_state
*state
= tevent_req_data(
2975 req
, struct rpccli_winreg_ReplaceKey_state
);
2977 TALLOC_CTX
*mem_ctx
;
2979 if (state
->out_mem_ctx
) {
2980 mem_ctx
= state
->out_mem_ctx
;
2985 status
= state
->dispatch_recv(subreq
, mem_ctx
);
2986 TALLOC_FREE(subreq
);
2987 if (!NT_STATUS_IS_OK(status
)) {
2988 tevent_req_nterror(req
, status
);
2992 /* Copy out parameters */
2995 state
->orig
.out
.result
= state
->tmp
.out
.result
;
2997 /* Reset temporary structure */
2998 ZERO_STRUCT(state
->tmp
);
3000 tevent_req_done(req
);
3003 NTSTATUS
rpccli_winreg_ReplaceKey_recv(struct tevent_req
*req
,
3004 TALLOC_CTX
*mem_ctx
,
3007 struct rpccli_winreg_ReplaceKey_state
*state
= tevent_req_data(
3008 req
, struct rpccli_winreg_ReplaceKey_state
);
3011 if (tevent_req_is_nterror(req
, &status
)) {
3012 tevent_req_received(req
);
3016 /* Steal possbile out parameters to the callers context */
3017 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
3020 *result
= state
->orig
.out
.result
;
3022 tevent_req_received(req
);
3023 return NT_STATUS_OK
;
3026 NTSTATUS
rpccli_winreg_ReplaceKey(struct rpc_pipe_client
*cli
,
3027 TALLOC_CTX
*mem_ctx
,
3030 struct winreg_ReplaceKey r
;
3035 status
= cli
->dispatch(cli
,
3038 NDR_WINREG_REPLACEKEY
,
3041 if (!NT_STATUS_IS_OK(status
)) {
3045 if (NT_STATUS_IS_ERR(status
)) {
3049 /* Return variables */
3053 *werror
= r
.out
.result
;
3056 return werror_to_ntstatus(r
.out
.result
);
3059 struct rpccli_winreg_RestoreKey_state
{
3060 struct winreg_RestoreKey orig
;
3061 struct winreg_RestoreKey tmp
;
3062 TALLOC_CTX
*out_mem_ctx
;
3063 NTSTATUS (*dispatch_recv
)(struct tevent_req
*req
, TALLOC_CTX
*mem_ctx
);
3066 static void rpccli_winreg_RestoreKey_done(struct tevent_req
*subreq
);
3068 struct tevent_req
*rpccli_winreg_RestoreKey_send(TALLOC_CTX
*mem_ctx
,
3069 struct tevent_context
*ev
,
3070 struct rpc_pipe_client
*cli
,
3071 struct policy_handle
*_handle
/* [in] [ref] */,
3072 struct winreg_String
*_filename
/* [in] [ref] */,
3073 uint32_t _flags
/* [in] */)
3075 struct tevent_req
*req
;
3076 struct rpccli_winreg_RestoreKey_state
*state
;
3077 struct tevent_req
*subreq
;
3079 req
= tevent_req_create(mem_ctx
, &state
,
3080 struct rpccli_winreg_RestoreKey_state
);
3084 state
->out_mem_ctx
= NULL
;
3085 state
->dispatch_recv
= cli
->dispatch_recv
;
3088 state
->orig
.in
.handle
= _handle
;
3089 state
->orig
.in
.filename
= _filename
;
3090 state
->orig
.in
.flags
= _flags
;
3092 /* Out parameters */
3095 ZERO_STRUCT(state
->orig
.out
.result
);
3097 /* make a temporary copy, that we pass to the dispatch function */
3098 state
->tmp
= state
->orig
;
3100 subreq
= cli
->dispatch_send(state
, ev
, cli
,
3102 NDR_WINREG_RESTOREKEY
,
3104 if (tevent_req_nomem(subreq
, req
)) {
3105 return tevent_req_post(req
, ev
);
3107 tevent_req_set_callback(subreq
, rpccli_winreg_RestoreKey_done
, req
);
3111 static void rpccli_winreg_RestoreKey_done(struct tevent_req
*subreq
)
3113 struct tevent_req
*req
= tevent_req_callback_data(
3114 subreq
, struct tevent_req
);
3115 struct rpccli_winreg_RestoreKey_state
*state
= tevent_req_data(
3116 req
, struct rpccli_winreg_RestoreKey_state
);
3118 TALLOC_CTX
*mem_ctx
;
3120 if (state
->out_mem_ctx
) {
3121 mem_ctx
= state
->out_mem_ctx
;
3126 status
= state
->dispatch_recv(subreq
, mem_ctx
);
3127 TALLOC_FREE(subreq
);
3128 if (!NT_STATUS_IS_OK(status
)) {
3129 tevent_req_nterror(req
, status
);
3133 /* Copy out parameters */
3136 state
->orig
.out
.result
= state
->tmp
.out
.result
;
3138 /* Reset temporary structure */
3139 ZERO_STRUCT(state
->tmp
);
3141 tevent_req_done(req
);
3144 NTSTATUS
rpccli_winreg_RestoreKey_recv(struct tevent_req
*req
,
3145 TALLOC_CTX
*mem_ctx
,
3148 struct rpccli_winreg_RestoreKey_state
*state
= tevent_req_data(
3149 req
, struct rpccli_winreg_RestoreKey_state
);
3152 if (tevent_req_is_nterror(req
, &status
)) {
3153 tevent_req_received(req
);
3157 /* Steal possbile out parameters to the callers context */
3158 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
3161 *result
= state
->orig
.out
.result
;
3163 tevent_req_received(req
);
3164 return NT_STATUS_OK
;
3167 NTSTATUS
rpccli_winreg_RestoreKey(struct rpc_pipe_client
*cli
,
3168 TALLOC_CTX
*mem_ctx
,
3169 struct policy_handle
*handle
/* [in] [ref] */,
3170 struct winreg_String
*filename
/* [in] [ref] */,
3171 uint32_t flags
/* [in] */,
3174 struct winreg_RestoreKey r
;
3178 r
.in
.handle
= handle
;
3179 r
.in
.filename
= filename
;
3182 status
= cli
->dispatch(cli
,
3185 NDR_WINREG_RESTOREKEY
,
3188 if (!NT_STATUS_IS_OK(status
)) {
3192 if (NT_STATUS_IS_ERR(status
)) {
3196 /* Return variables */
3200 *werror
= r
.out
.result
;
3203 return werror_to_ntstatus(r
.out
.result
);
3206 struct rpccli_winreg_SaveKey_state
{
3207 struct winreg_SaveKey orig
;
3208 struct winreg_SaveKey tmp
;
3209 TALLOC_CTX
*out_mem_ctx
;
3210 NTSTATUS (*dispatch_recv
)(struct tevent_req
*req
, TALLOC_CTX
*mem_ctx
);
3213 static void rpccli_winreg_SaveKey_done(struct tevent_req
*subreq
);
3215 struct tevent_req
*rpccli_winreg_SaveKey_send(TALLOC_CTX
*mem_ctx
,
3216 struct tevent_context
*ev
,
3217 struct rpc_pipe_client
*cli
,
3218 struct policy_handle
*_handle
/* [in] [ref] */,
3219 struct winreg_String
*_filename
/* [in] [ref] */,
3220 struct KeySecurityAttribute
*_sec_attrib
/* [in] [unique] */)
3222 struct tevent_req
*req
;
3223 struct rpccli_winreg_SaveKey_state
*state
;
3224 struct tevent_req
*subreq
;
3226 req
= tevent_req_create(mem_ctx
, &state
,
3227 struct rpccli_winreg_SaveKey_state
);
3231 state
->out_mem_ctx
= NULL
;
3232 state
->dispatch_recv
= cli
->dispatch_recv
;
3235 state
->orig
.in
.handle
= _handle
;
3236 state
->orig
.in
.filename
= _filename
;
3237 state
->orig
.in
.sec_attrib
= _sec_attrib
;
3239 /* Out parameters */
3242 ZERO_STRUCT(state
->orig
.out
.result
);
3244 /* make a temporary copy, that we pass to the dispatch function */
3245 state
->tmp
= state
->orig
;
3247 subreq
= cli
->dispatch_send(state
, ev
, cli
,
3251 if (tevent_req_nomem(subreq
, req
)) {
3252 return tevent_req_post(req
, ev
);
3254 tevent_req_set_callback(subreq
, rpccli_winreg_SaveKey_done
, req
);
3258 static void rpccli_winreg_SaveKey_done(struct tevent_req
*subreq
)
3260 struct tevent_req
*req
= tevent_req_callback_data(
3261 subreq
, struct tevent_req
);
3262 struct rpccli_winreg_SaveKey_state
*state
= tevent_req_data(
3263 req
, struct rpccli_winreg_SaveKey_state
);
3265 TALLOC_CTX
*mem_ctx
;
3267 if (state
->out_mem_ctx
) {
3268 mem_ctx
= state
->out_mem_ctx
;
3273 status
= state
->dispatch_recv(subreq
, mem_ctx
);
3274 TALLOC_FREE(subreq
);
3275 if (!NT_STATUS_IS_OK(status
)) {
3276 tevent_req_nterror(req
, status
);
3280 /* Copy out parameters */
3283 state
->orig
.out
.result
= state
->tmp
.out
.result
;
3285 /* Reset temporary structure */
3286 ZERO_STRUCT(state
->tmp
);
3288 tevent_req_done(req
);
3291 NTSTATUS
rpccli_winreg_SaveKey_recv(struct tevent_req
*req
,
3292 TALLOC_CTX
*mem_ctx
,
3295 struct rpccli_winreg_SaveKey_state
*state
= tevent_req_data(
3296 req
, struct rpccli_winreg_SaveKey_state
);
3299 if (tevent_req_is_nterror(req
, &status
)) {
3300 tevent_req_received(req
);
3304 /* Steal possbile out parameters to the callers context */
3305 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
3308 *result
= state
->orig
.out
.result
;
3310 tevent_req_received(req
);
3311 return NT_STATUS_OK
;
3314 NTSTATUS
rpccli_winreg_SaveKey(struct rpc_pipe_client
*cli
,
3315 TALLOC_CTX
*mem_ctx
,
3316 struct policy_handle
*handle
/* [in] [ref] */,
3317 struct winreg_String
*filename
/* [in] [ref] */,
3318 struct KeySecurityAttribute
*sec_attrib
/* [in] [unique] */,
3321 struct winreg_SaveKey r
;
3325 r
.in
.handle
= handle
;
3326 r
.in
.filename
= filename
;
3327 r
.in
.sec_attrib
= sec_attrib
;
3329 status
= cli
->dispatch(cli
,
3335 if (!NT_STATUS_IS_OK(status
)) {
3339 if (NT_STATUS_IS_ERR(status
)) {
3343 /* Return variables */
3347 *werror
= r
.out
.result
;
3350 return werror_to_ntstatus(r
.out
.result
);
3353 struct rpccli_winreg_SetKeySecurity_state
{
3354 struct winreg_SetKeySecurity orig
;
3355 struct winreg_SetKeySecurity tmp
;
3356 TALLOC_CTX
*out_mem_ctx
;
3357 NTSTATUS (*dispatch_recv
)(struct tevent_req
*req
, TALLOC_CTX
*mem_ctx
);
3360 static void rpccli_winreg_SetKeySecurity_done(struct tevent_req
*subreq
);
3362 struct tevent_req
*rpccli_winreg_SetKeySecurity_send(TALLOC_CTX
*mem_ctx
,
3363 struct tevent_context
*ev
,
3364 struct rpc_pipe_client
*cli
,
3365 struct policy_handle
*_handle
/* [in] [ref] */,
3366 uint32_t _sec_info
/* [in] */,
3367 struct KeySecurityData
*_sd
/* [in] [ref] */)
3369 struct tevent_req
*req
;
3370 struct rpccli_winreg_SetKeySecurity_state
*state
;
3371 struct tevent_req
*subreq
;
3373 req
= tevent_req_create(mem_ctx
, &state
,
3374 struct rpccli_winreg_SetKeySecurity_state
);
3378 state
->out_mem_ctx
= NULL
;
3379 state
->dispatch_recv
= cli
->dispatch_recv
;
3382 state
->orig
.in
.handle
= _handle
;
3383 state
->orig
.in
.sec_info
= _sec_info
;
3384 state
->orig
.in
.sd
= _sd
;
3386 /* Out parameters */
3389 ZERO_STRUCT(state
->orig
.out
.result
);
3391 /* make a temporary copy, that we pass to the dispatch function */
3392 state
->tmp
= state
->orig
;
3394 subreq
= cli
->dispatch_send(state
, ev
, cli
,
3396 NDR_WINREG_SETKEYSECURITY
,
3398 if (tevent_req_nomem(subreq
, req
)) {
3399 return tevent_req_post(req
, ev
);
3401 tevent_req_set_callback(subreq
, rpccli_winreg_SetKeySecurity_done
, req
);
3405 static void rpccli_winreg_SetKeySecurity_done(struct tevent_req
*subreq
)
3407 struct tevent_req
*req
= tevent_req_callback_data(
3408 subreq
, struct tevent_req
);
3409 struct rpccli_winreg_SetKeySecurity_state
*state
= tevent_req_data(
3410 req
, struct rpccli_winreg_SetKeySecurity_state
);
3412 TALLOC_CTX
*mem_ctx
;
3414 if (state
->out_mem_ctx
) {
3415 mem_ctx
= state
->out_mem_ctx
;
3420 status
= state
->dispatch_recv(subreq
, mem_ctx
);
3421 TALLOC_FREE(subreq
);
3422 if (!NT_STATUS_IS_OK(status
)) {
3423 tevent_req_nterror(req
, status
);
3427 /* Copy out parameters */
3430 state
->orig
.out
.result
= state
->tmp
.out
.result
;
3432 /* Reset temporary structure */
3433 ZERO_STRUCT(state
->tmp
);
3435 tevent_req_done(req
);
3438 NTSTATUS
rpccli_winreg_SetKeySecurity_recv(struct tevent_req
*req
,
3439 TALLOC_CTX
*mem_ctx
,
3442 struct rpccli_winreg_SetKeySecurity_state
*state
= tevent_req_data(
3443 req
, struct rpccli_winreg_SetKeySecurity_state
);
3446 if (tevent_req_is_nterror(req
, &status
)) {
3447 tevent_req_received(req
);
3451 /* Steal possbile out parameters to the callers context */
3452 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
3455 *result
= state
->orig
.out
.result
;
3457 tevent_req_received(req
);
3458 return NT_STATUS_OK
;
3461 NTSTATUS
rpccli_winreg_SetKeySecurity(struct rpc_pipe_client
*cli
,
3462 TALLOC_CTX
*mem_ctx
,
3463 struct policy_handle
*handle
/* [in] [ref] */,
3464 uint32_t sec_info
/* [in] */,
3465 struct KeySecurityData
*sd
/* [in] [ref] */,
3468 struct winreg_SetKeySecurity r
;
3472 r
.in
.handle
= handle
;
3473 r
.in
.sec_info
= sec_info
;
3476 status
= cli
->dispatch(cli
,
3479 NDR_WINREG_SETKEYSECURITY
,
3482 if (!NT_STATUS_IS_OK(status
)) {
3486 if (NT_STATUS_IS_ERR(status
)) {
3490 /* Return variables */
3494 *werror
= r
.out
.result
;
3497 return werror_to_ntstatus(r
.out
.result
);
3500 struct rpccli_winreg_SetValue_state
{
3501 struct winreg_SetValue orig
;
3502 struct winreg_SetValue tmp
;
3503 TALLOC_CTX
*out_mem_ctx
;
3504 NTSTATUS (*dispatch_recv
)(struct tevent_req
*req
, TALLOC_CTX
*mem_ctx
);
3507 static void rpccli_winreg_SetValue_done(struct tevent_req
*subreq
);
3509 struct tevent_req
*rpccli_winreg_SetValue_send(TALLOC_CTX
*mem_ctx
,
3510 struct tevent_context
*ev
,
3511 struct rpc_pipe_client
*cli
,
3512 struct policy_handle
*_handle
/* [in] [ref] */,
3513 struct winreg_String _name
/* [in] */,
3514 enum winreg_Type _type
/* [in] */,
3515 uint8_t *_data
/* [in] [ref,size_is(size)] */,
3516 uint32_t _size
/* [in] */)
3518 struct tevent_req
*req
;
3519 struct rpccli_winreg_SetValue_state
*state
;
3520 struct tevent_req
*subreq
;
3522 req
= tevent_req_create(mem_ctx
, &state
,
3523 struct rpccli_winreg_SetValue_state
);
3527 state
->out_mem_ctx
= NULL
;
3528 state
->dispatch_recv
= cli
->dispatch_recv
;
3531 state
->orig
.in
.handle
= _handle
;
3532 state
->orig
.in
.name
= _name
;
3533 state
->orig
.in
.type
= _type
;
3534 state
->orig
.in
.data
= _data
;
3535 state
->orig
.in
.size
= _size
;
3537 /* Out parameters */
3540 ZERO_STRUCT(state
->orig
.out
.result
);
3542 /* make a temporary copy, that we pass to the dispatch function */
3543 state
->tmp
= state
->orig
;
3545 subreq
= cli
->dispatch_send(state
, ev
, cli
,
3547 NDR_WINREG_SETVALUE
,
3549 if (tevent_req_nomem(subreq
, req
)) {
3550 return tevent_req_post(req
, ev
);
3552 tevent_req_set_callback(subreq
, rpccli_winreg_SetValue_done
, req
);
3556 static void rpccli_winreg_SetValue_done(struct tevent_req
*subreq
)
3558 struct tevent_req
*req
= tevent_req_callback_data(
3559 subreq
, struct tevent_req
);
3560 struct rpccli_winreg_SetValue_state
*state
= tevent_req_data(
3561 req
, struct rpccli_winreg_SetValue_state
);
3563 TALLOC_CTX
*mem_ctx
;
3565 if (state
->out_mem_ctx
) {
3566 mem_ctx
= state
->out_mem_ctx
;
3571 status
= state
->dispatch_recv(subreq
, mem_ctx
);
3572 TALLOC_FREE(subreq
);
3573 if (!NT_STATUS_IS_OK(status
)) {
3574 tevent_req_nterror(req
, status
);
3578 /* Copy out parameters */
3581 state
->orig
.out
.result
= state
->tmp
.out
.result
;
3583 /* Reset temporary structure */
3584 ZERO_STRUCT(state
->tmp
);
3586 tevent_req_done(req
);
3589 NTSTATUS
rpccli_winreg_SetValue_recv(struct tevent_req
*req
,
3590 TALLOC_CTX
*mem_ctx
,
3593 struct rpccli_winreg_SetValue_state
*state
= tevent_req_data(
3594 req
, struct rpccli_winreg_SetValue_state
);
3597 if (tevent_req_is_nterror(req
, &status
)) {
3598 tevent_req_received(req
);
3602 /* Steal possbile out parameters to the callers context */
3603 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
3606 *result
= state
->orig
.out
.result
;
3608 tevent_req_received(req
);
3609 return NT_STATUS_OK
;
3612 NTSTATUS
rpccli_winreg_SetValue(struct rpc_pipe_client
*cli
,
3613 TALLOC_CTX
*mem_ctx
,
3614 struct policy_handle
*handle
/* [in] [ref] */,
3615 struct winreg_String name
/* [in] */,
3616 enum winreg_Type type
/* [in] */,
3617 uint8_t *data
/* [in] [ref,size_is(size)] */,
3618 uint32_t size
/* [in] */,
3621 struct winreg_SetValue r
;
3625 r
.in
.handle
= handle
;
3631 status
= cli
->dispatch(cli
,
3634 NDR_WINREG_SETVALUE
,
3637 if (!NT_STATUS_IS_OK(status
)) {
3641 if (NT_STATUS_IS_ERR(status
)) {
3645 /* Return variables */
3649 *werror
= r
.out
.result
;
3652 return werror_to_ntstatus(r
.out
.result
);
3655 struct rpccli_winreg_UnLoadKey_state
{
3656 struct winreg_UnLoadKey orig
;
3657 struct winreg_UnLoadKey tmp
;
3658 TALLOC_CTX
*out_mem_ctx
;
3659 NTSTATUS (*dispatch_recv
)(struct tevent_req
*req
, TALLOC_CTX
*mem_ctx
);
3662 static void rpccli_winreg_UnLoadKey_done(struct tevent_req
*subreq
);
3664 struct tevent_req
*rpccli_winreg_UnLoadKey_send(TALLOC_CTX
*mem_ctx
,
3665 struct tevent_context
*ev
,
3666 struct rpc_pipe_client
*cli
)
3668 struct tevent_req
*req
;
3669 struct rpccli_winreg_UnLoadKey_state
*state
;
3670 struct tevent_req
*subreq
;
3672 req
= tevent_req_create(mem_ctx
, &state
,
3673 struct rpccli_winreg_UnLoadKey_state
);
3677 state
->out_mem_ctx
= NULL
;
3678 state
->dispatch_recv
= cli
->dispatch_recv
;
3682 /* Out parameters */
3685 ZERO_STRUCT(state
->orig
.out
.result
);
3687 /* make a temporary copy, that we pass to the dispatch function */
3688 state
->tmp
= state
->orig
;
3690 subreq
= cli
->dispatch_send(state
, ev
, cli
,
3692 NDR_WINREG_UNLOADKEY
,
3694 if (tevent_req_nomem(subreq
, req
)) {
3695 return tevent_req_post(req
, ev
);
3697 tevent_req_set_callback(subreq
, rpccli_winreg_UnLoadKey_done
, req
);
3701 static void rpccli_winreg_UnLoadKey_done(struct tevent_req
*subreq
)
3703 struct tevent_req
*req
= tevent_req_callback_data(
3704 subreq
, struct tevent_req
);
3705 struct rpccli_winreg_UnLoadKey_state
*state
= tevent_req_data(
3706 req
, struct rpccli_winreg_UnLoadKey_state
);
3708 TALLOC_CTX
*mem_ctx
;
3710 if (state
->out_mem_ctx
) {
3711 mem_ctx
= state
->out_mem_ctx
;
3716 status
= state
->dispatch_recv(subreq
, mem_ctx
);
3717 TALLOC_FREE(subreq
);
3718 if (!NT_STATUS_IS_OK(status
)) {
3719 tevent_req_nterror(req
, status
);
3723 /* Copy out parameters */
3726 state
->orig
.out
.result
= state
->tmp
.out
.result
;
3728 /* Reset temporary structure */
3729 ZERO_STRUCT(state
->tmp
);
3731 tevent_req_done(req
);
3734 NTSTATUS
rpccli_winreg_UnLoadKey_recv(struct tevent_req
*req
,
3735 TALLOC_CTX
*mem_ctx
,
3738 struct rpccli_winreg_UnLoadKey_state
*state
= tevent_req_data(
3739 req
, struct rpccli_winreg_UnLoadKey_state
);
3742 if (tevent_req_is_nterror(req
, &status
)) {
3743 tevent_req_received(req
);
3747 /* Steal possbile out parameters to the callers context */
3748 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
3751 *result
= state
->orig
.out
.result
;
3753 tevent_req_received(req
);
3754 return NT_STATUS_OK
;
3757 NTSTATUS
rpccli_winreg_UnLoadKey(struct rpc_pipe_client
*cli
,
3758 TALLOC_CTX
*mem_ctx
,
3761 struct winreg_UnLoadKey r
;
3766 status
= cli
->dispatch(cli
,
3769 NDR_WINREG_UNLOADKEY
,
3772 if (!NT_STATUS_IS_OK(status
)) {
3776 if (NT_STATUS_IS_ERR(status
)) {
3780 /* Return variables */
3784 *werror
= r
.out
.result
;
3787 return werror_to_ntstatus(r
.out
.result
);
3790 struct rpccli_winreg_InitiateSystemShutdown_state
{
3791 struct winreg_InitiateSystemShutdown orig
;
3792 struct winreg_InitiateSystemShutdown tmp
;
3793 TALLOC_CTX
*out_mem_ctx
;
3794 NTSTATUS (*dispatch_recv
)(struct tevent_req
*req
, TALLOC_CTX
*mem_ctx
);
3797 static void rpccli_winreg_InitiateSystemShutdown_done(struct tevent_req
*subreq
);
3799 struct tevent_req
*rpccli_winreg_InitiateSystemShutdown_send(TALLOC_CTX
*mem_ctx
,
3800 struct tevent_context
*ev
,
3801 struct rpc_pipe_client
*cli
,
3802 uint16_t *_hostname
/* [in] [unique] */,
3803 struct lsa_StringLarge
*_message
/* [in] [unique] */,
3804 uint32_t _timeout
/* [in] */,
3805 uint8_t _force_apps
/* [in] */,
3806 uint8_t _do_reboot
/* [in] */)
3808 struct tevent_req
*req
;
3809 struct rpccli_winreg_InitiateSystemShutdown_state
*state
;
3810 struct tevent_req
*subreq
;
3812 req
= tevent_req_create(mem_ctx
, &state
,
3813 struct rpccli_winreg_InitiateSystemShutdown_state
);
3817 state
->out_mem_ctx
= NULL
;
3818 state
->dispatch_recv
= cli
->dispatch_recv
;
3821 state
->orig
.in
.hostname
= _hostname
;
3822 state
->orig
.in
.message
= _message
;
3823 state
->orig
.in
.timeout
= _timeout
;
3824 state
->orig
.in
.force_apps
= _force_apps
;
3825 state
->orig
.in
.do_reboot
= _do_reboot
;
3827 /* Out parameters */
3830 ZERO_STRUCT(state
->orig
.out
.result
);
3832 /* make a temporary copy, that we pass to the dispatch function */
3833 state
->tmp
= state
->orig
;
3835 subreq
= cli
->dispatch_send(state
, ev
, cli
,
3837 NDR_WINREG_INITIATESYSTEMSHUTDOWN
,
3839 if (tevent_req_nomem(subreq
, req
)) {
3840 return tevent_req_post(req
, ev
);
3842 tevent_req_set_callback(subreq
, rpccli_winreg_InitiateSystemShutdown_done
, req
);
3846 static void rpccli_winreg_InitiateSystemShutdown_done(struct tevent_req
*subreq
)
3848 struct tevent_req
*req
= tevent_req_callback_data(
3849 subreq
, struct tevent_req
);
3850 struct rpccli_winreg_InitiateSystemShutdown_state
*state
= tevent_req_data(
3851 req
, struct rpccli_winreg_InitiateSystemShutdown_state
);
3853 TALLOC_CTX
*mem_ctx
;
3855 if (state
->out_mem_ctx
) {
3856 mem_ctx
= state
->out_mem_ctx
;
3861 status
= state
->dispatch_recv(subreq
, mem_ctx
);
3862 TALLOC_FREE(subreq
);
3863 if (!NT_STATUS_IS_OK(status
)) {
3864 tevent_req_nterror(req
, status
);
3868 /* Copy out parameters */
3871 state
->orig
.out
.result
= state
->tmp
.out
.result
;
3873 /* Reset temporary structure */
3874 ZERO_STRUCT(state
->tmp
);
3876 tevent_req_done(req
);
3879 NTSTATUS
rpccli_winreg_InitiateSystemShutdown_recv(struct tevent_req
*req
,
3880 TALLOC_CTX
*mem_ctx
,
3883 struct rpccli_winreg_InitiateSystemShutdown_state
*state
= tevent_req_data(
3884 req
, struct rpccli_winreg_InitiateSystemShutdown_state
);
3887 if (tevent_req_is_nterror(req
, &status
)) {
3888 tevent_req_received(req
);
3892 /* Steal possbile out parameters to the callers context */
3893 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
3896 *result
= state
->orig
.out
.result
;
3898 tevent_req_received(req
);
3899 return NT_STATUS_OK
;
3902 NTSTATUS
rpccli_winreg_InitiateSystemShutdown(struct rpc_pipe_client
*cli
,
3903 TALLOC_CTX
*mem_ctx
,
3904 uint16_t *hostname
/* [in] [unique] */,
3905 struct lsa_StringLarge
*message
/* [in] [unique] */,
3906 uint32_t timeout
/* [in] */,
3907 uint8_t force_apps
/* [in] */,
3908 uint8_t do_reboot
/* [in] */,
3911 struct winreg_InitiateSystemShutdown r
;
3915 r
.in
.hostname
= hostname
;
3916 r
.in
.message
= message
;
3917 r
.in
.timeout
= timeout
;
3918 r
.in
.force_apps
= force_apps
;
3919 r
.in
.do_reboot
= do_reboot
;
3921 status
= cli
->dispatch(cli
,
3924 NDR_WINREG_INITIATESYSTEMSHUTDOWN
,
3927 if (!NT_STATUS_IS_OK(status
)) {
3931 if (NT_STATUS_IS_ERR(status
)) {
3935 /* Return variables */
3939 *werror
= r
.out
.result
;
3942 return werror_to_ntstatus(r
.out
.result
);
3945 struct rpccli_winreg_AbortSystemShutdown_state
{
3946 struct winreg_AbortSystemShutdown orig
;
3947 struct winreg_AbortSystemShutdown tmp
;
3948 TALLOC_CTX
*out_mem_ctx
;
3949 NTSTATUS (*dispatch_recv
)(struct tevent_req
*req
, TALLOC_CTX
*mem_ctx
);
3952 static void rpccli_winreg_AbortSystemShutdown_done(struct tevent_req
*subreq
);
3954 struct tevent_req
*rpccli_winreg_AbortSystemShutdown_send(TALLOC_CTX
*mem_ctx
,
3955 struct tevent_context
*ev
,
3956 struct rpc_pipe_client
*cli
,
3957 uint16_t *_server
/* [in] [unique] */)
3959 struct tevent_req
*req
;
3960 struct rpccli_winreg_AbortSystemShutdown_state
*state
;
3961 struct tevent_req
*subreq
;
3963 req
= tevent_req_create(mem_ctx
, &state
,
3964 struct rpccli_winreg_AbortSystemShutdown_state
);
3968 state
->out_mem_ctx
= NULL
;
3969 state
->dispatch_recv
= cli
->dispatch_recv
;
3972 state
->orig
.in
.server
= _server
;
3974 /* Out parameters */
3977 ZERO_STRUCT(state
->orig
.out
.result
);
3979 /* make a temporary copy, that we pass to the dispatch function */
3980 state
->tmp
= state
->orig
;
3982 subreq
= cli
->dispatch_send(state
, ev
, cli
,
3984 NDR_WINREG_ABORTSYSTEMSHUTDOWN
,
3986 if (tevent_req_nomem(subreq
, req
)) {
3987 return tevent_req_post(req
, ev
);
3989 tevent_req_set_callback(subreq
, rpccli_winreg_AbortSystemShutdown_done
, req
);
3993 static void rpccli_winreg_AbortSystemShutdown_done(struct tevent_req
*subreq
)
3995 struct tevent_req
*req
= tevent_req_callback_data(
3996 subreq
, struct tevent_req
);
3997 struct rpccli_winreg_AbortSystemShutdown_state
*state
= tevent_req_data(
3998 req
, struct rpccli_winreg_AbortSystemShutdown_state
);
4000 TALLOC_CTX
*mem_ctx
;
4002 if (state
->out_mem_ctx
) {
4003 mem_ctx
= state
->out_mem_ctx
;
4008 status
= state
->dispatch_recv(subreq
, mem_ctx
);
4009 TALLOC_FREE(subreq
);
4010 if (!NT_STATUS_IS_OK(status
)) {
4011 tevent_req_nterror(req
, status
);
4015 /* Copy out parameters */
4018 state
->orig
.out
.result
= state
->tmp
.out
.result
;
4020 /* Reset temporary structure */
4021 ZERO_STRUCT(state
->tmp
);
4023 tevent_req_done(req
);
4026 NTSTATUS
rpccli_winreg_AbortSystemShutdown_recv(struct tevent_req
*req
,
4027 TALLOC_CTX
*mem_ctx
,
4030 struct rpccli_winreg_AbortSystemShutdown_state
*state
= tevent_req_data(
4031 req
, struct rpccli_winreg_AbortSystemShutdown_state
);
4034 if (tevent_req_is_nterror(req
, &status
)) {
4035 tevent_req_received(req
);
4039 /* Steal possbile out parameters to the callers context */
4040 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
4043 *result
= state
->orig
.out
.result
;
4045 tevent_req_received(req
);
4046 return NT_STATUS_OK
;
4049 NTSTATUS
rpccli_winreg_AbortSystemShutdown(struct rpc_pipe_client
*cli
,
4050 TALLOC_CTX
*mem_ctx
,
4051 uint16_t *server
/* [in] [unique] */,
4054 struct winreg_AbortSystemShutdown r
;
4058 r
.in
.server
= server
;
4060 status
= cli
->dispatch(cli
,
4063 NDR_WINREG_ABORTSYSTEMSHUTDOWN
,
4066 if (!NT_STATUS_IS_OK(status
)) {
4070 if (NT_STATUS_IS_ERR(status
)) {
4074 /* Return variables */
4078 *werror
= r
.out
.result
;
4081 return werror_to_ntstatus(r
.out
.result
);
4084 struct rpccli_winreg_GetVersion_state
{
4085 struct winreg_GetVersion orig
;
4086 struct winreg_GetVersion tmp
;
4087 TALLOC_CTX
*out_mem_ctx
;
4088 NTSTATUS (*dispatch_recv
)(struct tevent_req
*req
, TALLOC_CTX
*mem_ctx
);
4091 static void rpccli_winreg_GetVersion_done(struct tevent_req
*subreq
);
4093 struct tevent_req
*rpccli_winreg_GetVersion_send(TALLOC_CTX
*mem_ctx
,
4094 struct tevent_context
*ev
,
4095 struct rpc_pipe_client
*cli
,
4096 struct policy_handle
*_handle
/* [in] [ref] */,
4097 uint32_t *_version
/* [out] [ref] */)
4099 struct tevent_req
*req
;
4100 struct rpccli_winreg_GetVersion_state
*state
;
4101 struct tevent_req
*subreq
;
4103 req
= tevent_req_create(mem_ctx
, &state
,
4104 struct rpccli_winreg_GetVersion_state
);
4108 state
->out_mem_ctx
= NULL
;
4109 state
->dispatch_recv
= cli
->dispatch_recv
;
4112 state
->orig
.in
.handle
= _handle
;
4114 /* Out parameters */
4115 state
->orig
.out
.version
= _version
;
4118 ZERO_STRUCT(state
->orig
.out
.result
);
4120 state
->out_mem_ctx
= talloc_named_const(state
, 0,
4121 "rpccli_winreg_GetVersion_out_memory");
4122 if (tevent_req_nomem(state
->out_mem_ctx
, req
)) {
4123 return tevent_req_post(req
, ev
);
4126 /* make a temporary copy, that we pass to the dispatch function */
4127 state
->tmp
= state
->orig
;
4129 subreq
= cli
->dispatch_send(state
, ev
, cli
,
4131 NDR_WINREG_GETVERSION
,
4133 if (tevent_req_nomem(subreq
, req
)) {
4134 return tevent_req_post(req
, ev
);
4136 tevent_req_set_callback(subreq
, rpccli_winreg_GetVersion_done
, req
);
4140 static void rpccli_winreg_GetVersion_done(struct tevent_req
*subreq
)
4142 struct tevent_req
*req
= tevent_req_callback_data(
4143 subreq
, struct tevent_req
);
4144 struct rpccli_winreg_GetVersion_state
*state
= tevent_req_data(
4145 req
, struct rpccli_winreg_GetVersion_state
);
4147 TALLOC_CTX
*mem_ctx
;
4149 if (state
->out_mem_ctx
) {
4150 mem_ctx
= state
->out_mem_ctx
;
4155 status
= state
->dispatch_recv(subreq
, mem_ctx
);
4156 TALLOC_FREE(subreq
);
4157 if (!NT_STATUS_IS_OK(status
)) {
4158 tevent_req_nterror(req
, status
);
4162 /* Copy out parameters */
4163 *state
->orig
.out
.version
= *state
->tmp
.out
.version
;
4166 state
->orig
.out
.result
= state
->tmp
.out
.result
;
4168 /* Reset temporary structure */
4169 ZERO_STRUCT(state
->tmp
);
4171 tevent_req_done(req
);
4174 NTSTATUS
rpccli_winreg_GetVersion_recv(struct tevent_req
*req
,
4175 TALLOC_CTX
*mem_ctx
,
4178 struct rpccli_winreg_GetVersion_state
*state
= tevent_req_data(
4179 req
, struct rpccli_winreg_GetVersion_state
);
4182 if (tevent_req_is_nterror(req
, &status
)) {
4183 tevent_req_received(req
);
4187 /* Steal possbile out parameters to the callers context */
4188 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
4191 *result
= state
->orig
.out
.result
;
4193 tevent_req_received(req
);
4194 return NT_STATUS_OK
;
4197 NTSTATUS
rpccli_winreg_GetVersion(struct rpc_pipe_client
*cli
,
4198 TALLOC_CTX
*mem_ctx
,
4199 struct policy_handle
*handle
/* [in] [ref] */,
4200 uint32_t *version
/* [out] [ref] */,
4203 struct winreg_GetVersion r
;
4207 r
.in
.handle
= handle
;
4209 status
= cli
->dispatch(cli
,
4212 NDR_WINREG_GETVERSION
,
4215 if (!NT_STATUS_IS_OK(status
)) {
4219 if (NT_STATUS_IS_ERR(status
)) {
4223 /* Return variables */
4224 *version
= *r
.out
.version
;
4228 *werror
= r
.out
.result
;
4231 return werror_to_ntstatus(r
.out
.result
);
4234 struct rpccli_winreg_OpenHKCC_state
{
4235 struct winreg_OpenHKCC orig
;
4236 struct winreg_OpenHKCC tmp
;
4237 TALLOC_CTX
*out_mem_ctx
;
4238 NTSTATUS (*dispatch_recv
)(struct tevent_req
*req
, TALLOC_CTX
*mem_ctx
);
4241 static void rpccli_winreg_OpenHKCC_done(struct tevent_req
*subreq
);
4243 struct tevent_req
*rpccli_winreg_OpenHKCC_send(TALLOC_CTX
*mem_ctx
,
4244 struct tevent_context
*ev
,
4245 struct rpc_pipe_client
*cli
,
4246 uint16_t *_system_name
/* [in] [unique] */,
4247 uint32_t _access_mask
/* [in] */,
4248 struct policy_handle
*_handle
/* [out] [ref] */)
4250 struct tevent_req
*req
;
4251 struct rpccli_winreg_OpenHKCC_state
*state
;
4252 struct tevent_req
*subreq
;
4254 req
= tevent_req_create(mem_ctx
, &state
,
4255 struct rpccli_winreg_OpenHKCC_state
);
4259 state
->out_mem_ctx
= NULL
;
4260 state
->dispatch_recv
= cli
->dispatch_recv
;
4263 state
->orig
.in
.system_name
= _system_name
;
4264 state
->orig
.in
.access_mask
= _access_mask
;
4266 /* Out parameters */
4267 state
->orig
.out
.handle
= _handle
;
4270 ZERO_STRUCT(state
->orig
.out
.result
);
4272 state
->out_mem_ctx
= talloc_named_const(state
, 0,
4273 "rpccli_winreg_OpenHKCC_out_memory");
4274 if (tevent_req_nomem(state
->out_mem_ctx
, req
)) {
4275 return tevent_req_post(req
, ev
);
4278 /* make a temporary copy, that we pass to the dispatch function */
4279 state
->tmp
= state
->orig
;
4281 subreq
= cli
->dispatch_send(state
, ev
, cli
,
4283 NDR_WINREG_OPENHKCC
,
4285 if (tevent_req_nomem(subreq
, req
)) {
4286 return tevent_req_post(req
, ev
);
4288 tevent_req_set_callback(subreq
, rpccli_winreg_OpenHKCC_done
, req
);
4292 static void rpccli_winreg_OpenHKCC_done(struct tevent_req
*subreq
)
4294 struct tevent_req
*req
= tevent_req_callback_data(
4295 subreq
, struct tevent_req
);
4296 struct rpccli_winreg_OpenHKCC_state
*state
= tevent_req_data(
4297 req
, struct rpccli_winreg_OpenHKCC_state
);
4299 TALLOC_CTX
*mem_ctx
;
4301 if (state
->out_mem_ctx
) {
4302 mem_ctx
= state
->out_mem_ctx
;
4307 status
= state
->dispatch_recv(subreq
, mem_ctx
);
4308 TALLOC_FREE(subreq
);
4309 if (!NT_STATUS_IS_OK(status
)) {
4310 tevent_req_nterror(req
, status
);
4314 /* Copy out parameters */
4315 *state
->orig
.out
.handle
= *state
->tmp
.out
.handle
;
4318 state
->orig
.out
.result
= state
->tmp
.out
.result
;
4320 /* Reset temporary structure */
4321 ZERO_STRUCT(state
->tmp
);
4323 tevent_req_done(req
);
4326 NTSTATUS
rpccli_winreg_OpenHKCC_recv(struct tevent_req
*req
,
4327 TALLOC_CTX
*mem_ctx
,
4330 struct rpccli_winreg_OpenHKCC_state
*state
= tevent_req_data(
4331 req
, struct rpccli_winreg_OpenHKCC_state
);
4334 if (tevent_req_is_nterror(req
, &status
)) {
4335 tevent_req_received(req
);
4339 /* Steal possbile out parameters to the callers context */
4340 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
4343 *result
= state
->orig
.out
.result
;
4345 tevent_req_received(req
);
4346 return NT_STATUS_OK
;
4349 NTSTATUS
rpccli_winreg_OpenHKCC(struct rpc_pipe_client
*cli
,
4350 TALLOC_CTX
*mem_ctx
,
4351 uint16_t *system_name
/* [in] [unique] */,
4352 uint32_t access_mask
/* [in] */,
4353 struct policy_handle
*handle
/* [out] [ref] */,
4356 struct winreg_OpenHKCC r
;
4360 r
.in
.system_name
= system_name
;
4361 r
.in
.access_mask
= access_mask
;
4363 status
= cli
->dispatch(cli
,
4366 NDR_WINREG_OPENHKCC
,
4369 if (!NT_STATUS_IS_OK(status
)) {
4373 if (NT_STATUS_IS_ERR(status
)) {
4377 /* Return variables */
4378 *handle
= *r
.out
.handle
;
4382 *werror
= r
.out
.result
;
4385 return werror_to_ntstatus(r
.out
.result
);
4388 struct rpccli_winreg_OpenHKDD_state
{
4389 struct winreg_OpenHKDD orig
;
4390 struct winreg_OpenHKDD tmp
;
4391 TALLOC_CTX
*out_mem_ctx
;
4392 NTSTATUS (*dispatch_recv
)(struct tevent_req
*req
, TALLOC_CTX
*mem_ctx
);
4395 static void rpccli_winreg_OpenHKDD_done(struct tevent_req
*subreq
);
4397 struct tevent_req
*rpccli_winreg_OpenHKDD_send(TALLOC_CTX
*mem_ctx
,
4398 struct tevent_context
*ev
,
4399 struct rpc_pipe_client
*cli
,
4400 uint16_t *_system_name
/* [in] [unique] */,
4401 uint32_t _access_mask
/* [in] */,
4402 struct policy_handle
*_handle
/* [out] [ref] */)
4404 struct tevent_req
*req
;
4405 struct rpccli_winreg_OpenHKDD_state
*state
;
4406 struct tevent_req
*subreq
;
4408 req
= tevent_req_create(mem_ctx
, &state
,
4409 struct rpccli_winreg_OpenHKDD_state
);
4413 state
->out_mem_ctx
= NULL
;
4414 state
->dispatch_recv
= cli
->dispatch_recv
;
4417 state
->orig
.in
.system_name
= _system_name
;
4418 state
->orig
.in
.access_mask
= _access_mask
;
4420 /* Out parameters */
4421 state
->orig
.out
.handle
= _handle
;
4424 ZERO_STRUCT(state
->orig
.out
.result
);
4426 state
->out_mem_ctx
= talloc_named_const(state
, 0,
4427 "rpccli_winreg_OpenHKDD_out_memory");
4428 if (tevent_req_nomem(state
->out_mem_ctx
, req
)) {
4429 return tevent_req_post(req
, ev
);
4432 /* make a temporary copy, that we pass to the dispatch function */
4433 state
->tmp
= state
->orig
;
4435 subreq
= cli
->dispatch_send(state
, ev
, cli
,
4437 NDR_WINREG_OPENHKDD
,
4439 if (tevent_req_nomem(subreq
, req
)) {
4440 return tevent_req_post(req
, ev
);
4442 tevent_req_set_callback(subreq
, rpccli_winreg_OpenHKDD_done
, req
);
4446 static void rpccli_winreg_OpenHKDD_done(struct tevent_req
*subreq
)
4448 struct tevent_req
*req
= tevent_req_callback_data(
4449 subreq
, struct tevent_req
);
4450 struct rpccli_winreg_OpenHKDD_state
*state
= tevent_req_data(
4451 req
, struct rpccli_winreg_OpenHKDD_state
);
4453 TALLOC_CTX
*mem_ctx
;
4455 if (state
->out_mem_ctx
) {
4456 mem_ctx
= state
->out_mem_ctx
;
4461 status
= state
->dispatch_recv(subreq
, mem_ctx
);
4462 TALLOC_FREE(subreq
);
4463 if (!NT_STATUS_IS_OK(status
)) {
4464 tevent_req_nterror(req
, status
);
4468 /* Copy out parameters */
4469 *state
->orig
.out
.handle
= *state
->tmp
.out
.handle
;
4472 state
->orig
.out
.result
= state
->tmp
.out
.result
;
4474 /* Reset temporary structure */
4475 ZERO_STRUCT(state
->tmp
);
4477 tevent_req_done(req
);
4480 NTSTATUS
rpccli_winreg_OpenHKDD_recv(struct tevent_req
*req
,
4481 TALLOC_CTX
*mem_ctx
,
4484 struct rpccli_winreg_OpenHKDD_state
*state
= tevent_req_data(
4485 req
, struct rpccli_winreg_OpenHKDD_state
);
4488 if (tevent_req_is_nterror(req
, &status
)) {
4489 tevent_req_received(req
);
4493 /* Steal possbile out parameters to the callers context */
4494 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
4497 *result
= state
->orig
.out
.result
;
4499 tevent_req_received(req
);
4500 return NT_STATUS_OK
;
4503 NTSTATUS
rpccli_winreg_OpenHKDD(struct rpc_pipe_client
*cli
,
4504 TALLOC_CTX
*mem_ctx
,
4505 uint16_t *system_name
/* [in] [unique] */,
4506 uint32_t access_mask
/* [in] */,
4507 struct policy_handle
*handle
/* [out] [ref] */,
4510 struct winreg_OpenHKDD r
;
4514 r
.in
.system_name
= system_name
;
4515 r
.in
.access_mask
= access_mask
;
4517 status
= cli
->dispatch(cli
,
4520 NDR_WINREG_OPENHKDD
,
4523 if (!NT_STATUS_IS_OK(status
)) {
4527 if (NT_STATUS_IS_ERR(status
)) {
4531 /* Return variables */
4532 *handle
= *r
.out
.handle
;
4536 *werror
= r
.out
.result
;
4539 return werror_to_ntstatus(r
.out
.result
);
4542 struct rpccli_winreg_QueryMultipleValues_state
{
4543 struct winreg_QueryMultipleValues orig
;
4544 struct winreg_QueryMultipleValues tmp
;
4545 TALLOC_CTX
*out_mem_ctx
;
4546 NTSTATUS (*dispatch_recv
)(struct tevent_req
*req
, TALLOC_CTX
*mem_ctx
);
4549 static void rpccli_winreg_QueryMultipleValues_done(struct tevent_req
*subreq
);
4551 struct tevent_req
*rpccli_winreg_QueryMultipleValues_send(TALLOC_CTX
*mem_ctx
,
4552 struct tevent_context
*ev
,
4553 struct rpc_pipe_client
*cli
,
4554 struct policy_handle
*_key_handle
/* [in] [ref] */,
4555 struct QueryMultipleValue
*_values
/* [in,out] [ref,length_is(num_values),size_is(num_values)] */,
4556 uint32_t _num_values
/* [in] */,
4557 uint8_t *_buffer
/* [in,out] [unique,length_is(*buffer_size),size_is(*buffer_size)] */,
4558 uint32_t *_buffer_size
/* [in,out] [ref] */)
4560 struct tevent_req
*req
;
4561 struct rpccli_winreg_QueryMultipleValues_state
*state
;
4562 struct tevent_req
*subreq
;
4564 req
= tevent_req_create(mem_ctx
, &state
,
4565 struct rpccli_winreg_QueryMultipleValues_state
);
4569 state
->out_mem_ctx
= NULL
;
4570 state
->dispatch_recv
= cli
->dispatch_recv
;
4573 state
->orig
.in
.key_handle
= _key_handle
;
4574 state
->orig
.in
.values
= _values
;
4575 state
->orig
.in
.num_values
= _num_values
;
4576 state
->orig
.in
.buffer
= _buffer
;
4577 state
->orig
.in
.buffer_size
= _buffer_size
;
4579 /* Out parameters */
4580 state
->orig
.out
.values
= _values
;
4581 state
->orig
.out
.buffer
= _buffer
;
4582 state
->orig
.out
.buffer_size
= _buffer_size
;
4585 ZERO_STRUCT(state
->orig
.out
.result
);
4587 state
->out_mem_ctx
= talloc_named_const(state
, 0,
4588 "rpccli_winreg_QueryMultipleValues_out_memory");
4589 if (tevent_req_nomem(state
->out_mem_ctx
, req
)) {
4590 return tevent_req_post(req
, ev
);
4593 /* make a temporary copy, that we pass to the dispatch function */
4594 state
->tmp
= state
->orig
;
4596 subreq
= cli
->dispatch_send(state
, ev
, cli
,
4598 NDR_WINREG_QUERYMULTIPLEVALUES
,
4600 if (tevent_req_nomem(subreq
, req
)) {
4601 return tevent_req_post(req
, ev
);
4603 tevent_req_set_callback(subreq
, rpccli_winreg_QueryMultipleValues_done
, req
);
4607 static void rpccli_winreg_QueryMultipleValues_done(struct tevent_req
*subreq
)
4609 struct tevent_req
*req
= tevent_req_callback_data(
4610 subreq
, struct tevent_req
);
4611 struct rpccli_winreg_QueryMultipleValues_state
*state
= tevent_req_data(
4612 req
, struct rpccli_winreg_QueryMultipleValues_state
);
4614 TALLOC_CTX
*mem_ctx
;
4616 if (state
->out_mem_ctx
) {
4617 mem_ctx
= state
->out_mem_ctx
;
4622 status
= state
->dispatch_recv(subreq
, mem_ctx
);
4623 TALLOC_FREE(subreq
);
4624 if (!NT_STATUS_IS_OK(status
)) {
4625 tevent_req_nterror(req
, status
);
4629 /* Copy out parameters */
4630 memcpy(state
->orig
.out
.values
, state
->tmp
.out
.values
, (state
->tmp
.in
.num_values
) * sizeof(*state
->orig
.out
.values
));
4631 if (state
->orig
.out
.buffer
&& state
->tmp
.out
.buffer
) {
4632 memcpy(state
->orig
.out
.buffer
, state
->tmp
.out
.buffer
, (*state
->tmp
.in
.buffer_size
) * sizeof(*state
->orig
.out
.buffer
));
4634 *state
->orig
.out
.buffer_size
= *state
->tmp
.out
.buffer_size
;
4637 state
->orig
.out
.result
= state
->tmp
.out
.result
;
4639 /* Reset temporary structure */
4640 ZERO_STRUCT(state
->tmp
);
4642 tevent_req_done(req
);
4645 NTSTATUS
rpccli_winreg_QueryMultipleValues_recv(struct tevent_req
*req
,
4646 TALLOC_CTX
*mem_ctx
,
4649 struct rpccli_winreg_QueryMultipleValues_state
*state
= tevent_req_data(
4650 req
, struct rpccli_winreg_QueryMultipleValues_state
);
4653 if (tevent_req_is_nterror(req
, &status
)) {
4654 tevent_req_received(req
);
4658 /* Steal possbile out parameters to the callers context */
4659 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
4662 *result
= state
->orig
.out
.result
;
4664 tevent_req_received(req
);
4665 return NT_STATUS_OK
;
4668 NTSTATUS
rpccli_winreg_QueryMultipleValues(struct rpc_pipe_client
*cli
,
4669 TALLOC_CTX
*mem_ctx
,
4670 struct policy_handle
*key_handle
/* [in] [ref] */,
4671 struct QueryMultipleValue
*values
/* [in,out] [ref,length_is(num_values),size_is(num_values)] */,
4672 uint32_t num_values
/* [in] */,
4673 uint8_t *buffer
/* [in,out] [unique,length_is(*buffer_size),size_is(*buffer_size)] */,
4674 uint32_t *buffer_size
/* [in,out] [ref] */,
4677 struct winreg_QueryMultipleValues r
;
4681 r
.in
.key_handle
= key_handle
;
4682 r
.in
.values
= values
;
4683 r
.in
.num_values
= num_values
;
4684 r
.in
.buffer
= buffer
;
4685 r
.in
.buffer_size
= buffer_size
;
4687 status
= cli
->dispatch(cli
,
4690 NDR_WINREG_QUERYMULTIPLEVALUES
,
4693 if (!NT_STATUS_IS_OK(status
)) {
4697 if (NT_STATUS_IS_ERR(status
)) {
4701 /* Return variables */
4702 memcpy(values
, r
.out
.values
, (r
.in
.num_values
) * sizeof(*values
));
4703 if (buffer
&& r
.out
.buffer
) {
4704 memcpy(buffer
, r
.out
.buffer
, (*r
.in
.buffer_size
) * sizeof(*buffer
));
4706 *buffer_size
= *r
.out
.buffer_size
;
4710 *werror
= r
.out
.result
;
4713 return werror_to_ntstatus(r
.out
.result
);
4716 struct rpccli_winreg_InitiateSystemShutdownEx_state
{
4717 struct winreg_InitiateSystemShutdownEx orig
;
4718 struct winreg_InitiateSystemShutdownEx tmp
;
4719 TALLOC_CTX
*out_mem_ctx
;
4720 NTSTATUS (*dispatch_recv
)(struct tevent_req
*req
, TALLOC_CTX
*mem_ctx
);
4723 static void rpccli_winreg_InitiateSystemShutdownEx_done(struct tevent_req
*subreq
);
4725 struct tevent_req
*rpccli_winreg_InitiateSystemShutdownEx_send(TALLOC_CTX
*mem_ctx
,
4726 struct tevent_context
*ev
,
4727 struct rpc_pipe_client
*cli
,
4728 uint16_t *_hostname
/* [in] [unique] */,
4729 struct lsa_StringLarge
*_message
/* [in] [unique] */,
4730 uint32_t _timeout
/* [in] */,
4731 uint8_t _force_apps
/* [in] */,
4732 uint8_t _do_reboot
/* [in] */,
4733 uint32_t _reason
/* [in] */)
4735 struct tevent_req
*req
;
4736 struct rpccli_winreg_InitiateSystemShutdownEx_state
*state
;
4737 struct tevent_req
*subreq
;
4739 req
= tevent_req_create(mem_ctx
, &state
,
4740 struct rpccli_winreg_InitiateSystemShutdownEx_state
);
4744 state
->out_mem_ctx
= NULL
;
4745 state
->dispatch_recv
= cli
->dispatch_recv
;
4748 state
->orig
.in
.hostname
= _hostname
;
4749 state
->orig
.in
.message
= _message
;
4750 state
->orig
.in
.timeout
= _timeout
;
4751 state
->orig
.in
.force_apps
= _force_apps
;
4752 state
->orig
.in
.do_reboot
= _do_reboot
;
4753 state
->orig
.in
.reason
= _reason
;
4755 /* Out parameters */
4758 ZERO_STRUCT(state
->orig
.out
.result
);
4760 /* make a temporary copy, that we pass to the dispatch function */
4761 state
->tmp
= state
->orig
;
4763 subreq
= cli
->dispatch_send(state
, ev
, cli
,
4765 NDR_WINREG_INITIATESYSTEMSHUTDOWNEX
,
4767 if (tevent_req_nomem(subreq
, req
)) {
4768 return tevent_req_post(req
, ev
);
4770 tevent_req_set_callback(subreq
, rpccli_winreg_InitiateSystemShutdownEx_done
, req
);
4774 static void rpccli_winreg_InitiateSystemShutdownEx_done(struct tevent_req
*subreq
)
4776 struct tevent_req
*req
= tevent_req_callback_data(
4777 subreq
, struct tevent_req
);
4778 struct rpccli_winreg_InitiateSystemShutdownEx_state
*state
= tevent_req_data(
4779 req
, struct rpccli_winreg_InitiateSystemShutdownEx_state
);
4781 TALLOC_CTX
*mem_ctx
;
4783 if (state
->out_mem_ctx
) {
4784 mem_ctx
= state
->out_mem_ctx
;
4789 status
= state
->dispatch_recv(subreq
, mem_ctx
);
4790 TALLOC_FREE(subreq
);
4791 if (!NT_STATUS_IS_OK(status
)) {
4792 tevent_req_nterror(req
, status
);
4796 /* Copy out parameters */
4799 state
->orig
.out
.result
= state
->tmp
.out
.result
;
4801 /* Reset temporary structure */
4802 ZERO_STRUCT(state
->tmp
);
4804 tevent_req_done(req
);
4807 NTSTATUS
rpccli_winreg_InitiateSystemShutdownEx_recv(struct tevent_req
*req
,
4808 TALLOC_CTX
*mem_ctx
,
4811 struct rpccli_winreg_InitiateSystemShutdownEx_state
*state
= tevent_req_data(
4812 req
, struct rpccli_winreg_InitiateSystemShutdownEx_state
);
4815 if (tevent_req_is_nterror(req
, &status
)) {
4816 tevent_req_received(req
);
4820 /* Steal possbile out parameters to the callers context */
4821 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
4824 *result
= state
->orig
.out
.result
;
4826 tevent_req_received(req
);
4827 return NT_STATUS_OK
;
4830 NTSTATUS
rpccli_winreg_InitiateSystemShutdownEx(struct rpc_pipe_client
*cli
,
4831 TALLOC_CTX
*mem_ctx
,
4832 uint16_t *hostname
/* [in] [unique] */,
4833 struct lsa_StringLarge
*message
/* [in] [unique] */,
4834 uint32_t timeout
/* [in] */,
4835 uint8_t force_apps
/* [in] */,
4836 uint8_t do_reboot
/* [in] */,
4837 uint32_t reason
/* [in] */,
4840 struct winreg_InitiateSystemShutdownEx r
;
4844 r
.in
.hostname
= hostname
;
4845 r
.in
.message
= message
;
4846 r
.in
.timeout
= timeout
;
4847 r
.in
.force_apps
= force_apps
;
4848 r
.in
.do_reboot
= do_reboot
;
4849 r
.in
.reason
= reason
;
4851 status
= cli
->dispatch(cli
,
4854 NDR_WINREG_INITIATESYSTEMSHUTDOWNEX
,
4857 if (!NT_STATUS_IS_OK(status
)) {
4861 if (NT_STATUS_IS_ERR(status
)) {
4865 /* Return variables */
4869 *werror
= r
.out
.result
;
4872 return werror_to_ntstatus(r
.out
.result
);
4875 struct rpccli_winreg_SaveKeyEx_state
{
4876 struct winreg_SaveKeyEx orig
;
4877 struct winreg_SaveKeyEx tmp
;
4878 TALLOC_CTX
*out_mem_ctx
;
4879 NTSTATUS (*dispatch_recv
)(struct tevent_req
*req
, TALLOC_CTX
*mem_ctx
);
4882 static void rpccli_winreg_SaveKeyEx_done(struct tevent_req
*subreq
);
4884 struct tevent_req
*rpccli_winreg_SaveKeyEx_send(TALLOC_CTX
*mem_ctx
,
4885 struct tevent_context
*ev
,
4886 struct rpc_pipe_client
*cli
)
4888 struct tevent_req
*req
;
4889 struct rpccli_winreg_SaveKeyEx_state
*state
;
4890 struct tevent_req
*subreq
;
4892 req
= tevent_req_create(mem_ctx
, &state
,
4893 struct rpccli_winreg_SaveKeyEx_state
);
4897 state
->out_mem_ctx
= NULL
;
4898 state
->dispatch_recv
= cli
->dispatch_recv
;
4902 /* Out parameters */
4905 ZERO_STRUCT(state
->orig
.out
.result
);
4907 /* make a temporary copy, that we pass to the dispatch function */
4908 state
->tmp
= state
->orig
;
4910 subreq
= cli
->dispatch_send(state
, ev
, cli
,
4912 NDR_WINREG_SAVEKEYEX
,
4914 if (tevent_req_nomem(subreq
, req
)) {
4915 return tevent_req_post(req
, ev
);
4917 tevent_req_set_callback(subreq
, rpccli_winreg_SaveKeyEx_done
, req
);
4921 static void rpccli_winreg_SaveKeyEx_done(struct tevent_req
*subreq
)
4923 struct tevent_req
*req
= tevent_req_callback_data(
4924 subreq
, struct tevent_req
);
4925 struct rpccli_winreg_SaveKeyEx_state
*state
= tevent_req_data(
4926 req
, struct rpccli_winreg_SaveKeyEx_state
);
4928 TALLOC_CTX
*mem_ctx
;
4930 if (state
->out_mem_ctx
) {
4931 mem_ctx
= state
->out_mem_ctx
;
4936 status
= state
->dispatch_recv(subreq
, mem_ctx
);
4937 TALLOC_FREE(subreq
);
4938 if (!NT_STATUS_IS_OK(status
)) {
4939 tevent_req_nterror(req
, status
);
4943 /* Copy out parameters */
4946 state
->orig
.out
.result
= state
->tmp
.out
.result
;
4948 /* Reset temporary structure */
4949 ZERO_STRUCT(state
->tmp
);
4951 tevent_req_done(req
);
4954 NTSTATUS
rpccli_winreg_SaveKeyEx_recv(struct tevent_req
*req
,
4955 TALLOC_CTX
*mem_ctx
,
4958 struct rpccli_winreg_SaveKeyEx_state
*state
= tevent_req_data(
4959 req
, struct rpccli_winreg_SaveKeyEx_state
);
4962 if (tevent_req_is_nterror(req
, &status
)) {
4963 tevent_req_received(req
);
4967 /* Steal possbile out parameters to the callers context */
4968 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
4971 *result
= state
->orig
.out
.result
;
4973 tevent_req_received(req
);
4974 return NT_STATUS_OK
;
4977 NTSTATUS
rpccli_winreg_SaveKeyEx(struct rpc_pipe_client
*cli
,
4978 TALLOC_CTX
*mem_ctx
,
4981 struct winreg_SaveKeyEx r
;
4986 status
= cli
->dispatch(cli
,
4989 NDR_WINREG_SAVEKEYEX
,
4992 if (!NT_STATUS_IS_OK(status
)) {
4996 if (NT_STATUS_IS_ERR(status
)) {
5000 /* Return variables */
5004 *werror
= r
.out
.result
;
5007 return werror_to_ntstatus(r
.out
.result
);
5010 struct rpccli_winreg_OpenHKPT_state
{
5011 struct winreg_OpenHKPT orig
;
5012 struct winreg_OpenHKPT tmp
;
5013 TALLOC_CTX
*out_mem_ctx
;
5014 NTSTATUS (*dispatch_recv
)(struct tevent_req
*req
, TALLOC_CTX
*mem_ctx
);
5017 static void rpccli_winreg_OpenHKPT_done(struct tevent_req
*subreq
);
5019 struct tevent_req
*rpccli_winreg_OpenHKPT_send(TALLOC_CTX
*mem_ctx
,
5020 struct tevent_context
*ev
,
5021 struct rpc_pipe_client
*cli
,
5022 uint16_t *_system_name
/* [in] [unique] */,
5023 uint32_t _access_mask
/* [in] */,
5024 struct policy_handle
*_handle
/* [out] [ref] */)
5026 struct tevent_req
*req
;
5027 struct rpccli_winreg_OpenHKPT_state
*state
;
5028 struct tevent_req
*subreq
;
5030 req
= tevent_req_create(mem_ctx
, &state
,
5031 struct rpccli_winreg_OpenHKPT_state
);
5035 state
->out_mem_ctx
= NULL
;
5036 state
->dispatch_recv
= cli
->dispatch_recv
;
5039 state
->orig
.in
.system_name
= _system_name
;
5040 state
->orig
.in
.access_mask
= _access_mask
;
5042 /* Out parameters */
5043 state
->orig
.out
.handle
= _handle
;
5046 ZERO_STRUCT(state
->orig
.out
.result
);
5048 state
->out_mem_ctx
= talloc_named_const(state
, 0,
5049 "rpccli_winreg_OpenHKPT_out_memory");
5050 if (tevent_req_nomem(state
->out_mem_ctx
, req
)) {
5051 return tevent_req_post(req
, ev
);
5054 /* make a temporary copy, that we pass to the dispatch function */
5055 state
->tmp
= state
->orig
;
5057 subreq
= cli
->dispatch_send(state
, ev
, cli
,
5059 NDR_WINREG_OPENHKPT
,
5061 if (tevent_req_nomem(subreq
, req
)) {
5062 return tevent_req_post(req
, ev
);
5064 tevent_req_set_callback(subreq
, rpccli_winreg_OpenHKPT_done
, req
);
5068 static void rpccli_winreg_OpenHKPT_done(struct tevent_req
*subreq
)
5070 struct tevent_req
*req
= tevent_req_callback_data(
5071 subreq
, struct tevent_req
);
5072 struct rpccli_winreg_OpenHKPT_state
*state
= tevent_req_data(
5073 req
, struct rpccli_winreg_OpenHKPT_state
);
5075 TALLOC_CTX
*mem_ctx
;
5077 if (state
->out_mem_ctx
) {
5078 mem_ctx
= state
->out_mem_ctx
;
5083 status
= state
->dispatch_recv(subreq
, mem_ctx
);
5084 TALLOC_FREE(subreq
);
5085 if (!NT_STATUS_IS_OK(status
)) {
5086 tevent_req_nterror(req
, status
);
5090 /* Copy out parameters */
5091 *state
->orig
.out
.handle
= *state
->tmp
.out
.handle
;
5094 state
->orig
.out
.result
= state
->tmp
.out
.result
;
5096 /* Reset temporary structure */
5097 ZERO_STRUCT(state
->tmp
);
5099 tevent_req_done(req
);
5102 NTSTATUS
rpccli_winreg_OpenHKPT_recv(struct tevent_req
*req
,
5103 TALLOC_CTX
*mem_ctx
,
5106 struct rpccli_winreg_OpenHKPT_state
*state
= tevent_req_data(
5107 req
, struct rpccli_winreg_OpenHKPT_state
);
5110 if (tevent_req_is_nterror(req
, &status
)) {
5111 tevent_req_received(req
);
5115 /* Steal possbile out parameters to the callers context */
5116 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
5119 *result
= state
->orig
.out
.result
;
5121 tevent_req_received(req
);
5122 return NT_STATUS_OK
;
5125 NTSTATUS
rpccli_winreg_OpenHKPT(struct rpc_pipe_client
*cli
,
5126 TALLOC_CTX
*mem_ctx
,
5127 uint16_t *system_name
/* [in] [unique] */,
5128 uint32_t access_mask
/* [in] */,
5129 struct policy_handle
*handle
/* [out] [ref] */,
5132 struct winreg_OpenHKPT r
;
5136 r
.in
.system_name
= system_name
;
5137 r
.in
.access_mask
= access_mask
;
5139 status
= cli
->dispatch(cli
,
5142 NDR_WINREG_OPENHKPT
,
5145 if (!NT_STATUS_IS_OK(status
)) {
5149 if (NT_STATUS_IS_ERR(status
)) {
5153 /* Return variables */
5154 *handle
= *r
.out
.handle
;
5158 *werror
= r
.out
.result
;
5161 return werror_to_ntstatus(r
.out
.result
);
5164 struct rpccli_winreg_OpenHKPN_state
{
5165 struct winreg_OpenHKPN orig
;
5166 struct winreg_OpenHKPN tmp
;
5167 TALLOC_CTX
*out_mem_ctx
;
5168 NTSTATUS (*dispatch_recv
)(struct tevent_req
*req
, TALLOC_CTX
*mem_ctx
);
5171 static void rpccli_winreg_OpenHKPN_done(struct tevent_req
*subreq
);
5173 struct tevent_req
*rpccli_winreg_OpenHKPN_send(TALLOC_CTX
*mem_ctx
,
5174 struct tevent_context
*ev
,
5175 struct rpc_pipe_client
*cli
,
5176 uint16_t *_system_name
/* [in] [unique] */,
5177 uint32_t _access_mask
/* [in] */,
5178 struct policy_handle
*_handle
/* [out] [ref] */)
5180 struct tevent_req
*req
;
5181 struct rpccli_winreg_OpenHKPN_state
*state
;
5182 struct tevent_req
*subreq
;
5184 req
= tevent_req_create(mem_ctx
, &state
,
5185 struct rpccli_winreg_OpenHKPN_state
);
5189 state
->out_mem_ctx
= NULL
;
5190 state
->dispatch_recv
= cli
->dispatch_recv
;
5193 state
->orig
.in
.system_name
= _system_name
;
5194 state
->orig
.in
.access_mask
= _access_mask
;
5196 /* Out parameters */
5197 state
->orig
.out
.handle
= _handle
;
5200 ZERO_STRUCT(state
->orig
.out
.result
);
5202 state
->out_mem_ctx
= talloc_named_const(state
, 0,
5203 "rpccli_winreg_OpenHKPN_out_memory");
5204 if (tevent_req_nomem(state
->out_mem_ctx
, req
)) {
5205 return tevent_req_post(req
, ev
);
5208 /* make a temporary copy, that we pass to the dispatch function */
5209 state
->tmp
= state
->orig
;
5211 subreq
= cli
->dispatch_send(state
, ev
, cli
,
5213 NDR_WINREG_OPENHKPN
,
5215 if (tevent_req_nomem(subreq
, req
)) {
5216 return tevent_req_post(req
, ev
);
5218 tevent_req_set_callback(subreq
, rpccli_winreg_OpenHKPN_done
, req
);
5222 static void rpccli_winreg_OpenHKPN_done(struct tevent_req
*subreq
)
5224 struct tevent_req
*req
= tevent_req_callback_data(
5225 subreq
, struct tevent_req
);
5226 struct rpccli_winreg_OpenHKPN_state
*state
= tevent_req_data(
5227 req
, struct rpccli_winreg_OpenHKPN_state
);
5229 TALLOC_CTX
*mem_ctx
;
5231 if (state
->out_mem_ctx
) {
5232 mem_ctx
= state
->out_mem_ctx
;
5237 status
= state
->dispatch_recv(subreq
, mem_ctx
);
5238 TALLOC_FREE(subreq
);
5239 if (!NT_STATUS_IS_OK(status
)) {
5240 tevent_req_nterror(req
, status
);
5244 /* Copy out parameters */
5245 *state
->orig
.out
.handle
= *state
->tmp
.out
.handle
;
5248 state
->orig
.out
.result
= state
->tmp
.out
.result
;
5250 /* Reset temporary structure */
5251 ZERO_STRUCT(state
->tmp
);
5253 tevent_req_done(req
);
5256 NTSTATUS
rpccli_winreg_OpenHKPN_recv(struct tevent_req
*req
,
5257 TALLOC_CTX
*mem_ctx
,
5260 struct rpccli_winreg_OpenHKPN_state
*state
= tevent_req_data(
5261 req
, struct rpccli_winreg_OpenHKPN_state
);
5264 if (tevent_req_is_nterror(req
, &status
)) {
5265 tevent_req_received(req
);
5269 /* Steal possbile out parameters to the callers context */
5270 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
5273 *result
= state
->orig
.out
.result
;
5275 tevent_req_received(req
);
5276 return NT_STATUS_OK
;
5279 NTSTATUS
rpccli_winreg_OpenHKPN(struct rpc_pipe_client
*cli
,
5280 TALLOC_CTX
*mem_ctx
,
5281 uint16_t *system_name
/* [in] [unique] */,
5282 uint32_t access_mask
/* [in] */,
5283 struct policy_handle
*handle
/* [out] [ref] */,
5286 struct winreg_OpenHKPN r
;
5290 r
.in
.system_name
= system_name
;
5291 r
.in
.access_mask
= access_mask
;
5293 status
= cli
->dispatch(cli
,
5296 NDR_WINREG_OPENHKPN
,
5299 if (!NT_STATUS_IS_OK(status
)) {
5303 if (NT_STATUS_IS_ERR(status
)) {
5307 /* Return variables */
5308 *handle
= *r
.out
.handle
;
5312 *werror
= r
.out
.result
;
5315 return werror_to_ntstatus(r
.out
.result
);
5318 struct rpccli_winreg_QueryMultipleValues2_state
{
5319 struct winreg_QueryMultipleValues2 orig
;
5320 struct winreg_QueryMultipleValues2 tmp
;
5321 TALLOC_CTX
*out_mem_ctx
;
5322 NTSTATUS (*dispatch_recv
)(struct tevent_req
*req
, TALLOC_CTX
*mem_ctx
);
5325 static void rpccli_winreg_QueryMultipleValues2_done(struct tevent_req
*subreq
);
5327 struct tevent_req
*rpccli_winreg_QueryMultipleValues2_send(TALLOC_CTX
*mem_ctx
,
5328 struct tevent_context
*ev
,
5329 struct rpc_pipe_client
*cli
)
5331 struct tevent_req
*req
;
5332 struct rpccli_winreg_QueryMultipleValues2_state
*state
;
5333 struct tevent_req
*subreq
;
5335 req
= tevent_req_create(mem_ctx
, &state
,
5336 struct rpccli_winreg_QueryMultipleValues2_state
);
5340 state
->out_mem_ctx
= NULL
;
5341 state
->dispatch_recv
= cli
->dispatch_recv
;
5345 /* Out parameters */
5348 ZERO_STRUCT(state
->orig
.out
.result
);
5350 /* make a temporary copy, that we pass to the dispatch function */
5351 state
->tmp
= state
->orig
;
5353 subreq
= cli
->dispatch_send(state
, ev
, cli
,
5355 NDR_WINREG_QUERYMULTIPLEVALUES2
,
5357 if (tevent_req_nomem(subreq
, req
)) {
5358 return tevent_req_post(req
, ev
);
5360 tevent_req_set_callback(subreq
, rpccli_winreg_QueryMultipleValues2_done
, req
);
5364 static void rpccli_winreg_QueryMultipleValues2_done(struct tevent_req
*subreq
)
5366 struct tevent_req
*req
= tevent_req_callback_data(
5367 subreq
, struct tevent_req
);
5368 struct rpccli_winreg_QueryMultipleValues2_state
*state
= tevent_req_data(
5369 req
, struct rpccli_winreg_QueryMultipleValues2_state
);
5371 TALLOC_CTX
*mem_ctx
;
5373 if (state
->out_mem_ctx
) {
5374 mem_ctx
= state
->out_mem_ctx
;
5379 status
= state
->dispatch_recv(subreq
, mem_ctx
);
5380 TALLOC_FREE(subreq
);
5381 if (!NT_STATUS_IS_OK(status
)) {
5382 tevent_req_nterror(req
, status
);
5386 /* Copy out parameters */
5389 state
->orig
.out
.result
= state
->tmp
.out
.result
;
5391 /* Reset temporary structure */
5392 ZERO_STRUCT(state
->tmp
);
5394 tevent_req_done(req
);
5397 NTSTATUS
rpccli_winreg_QueryMultipleValues2_recv(struct tevent_req
*req
,
5398 TALLOC_CTX
*mem_ctx
,
5401 struct rpccli_winreg_QueryMultipleValues2_state
*state
= tevent_req_data(
5402 req
, struct rpccli_winreg_QueryMultipleValues2_state
);
5405 if (tevent_req_is_nterror(req
, &status
)) {
5406 tevent_req_received(req
);
5410 /* Steal possbile out parameters to the callers context */
5411 talloc_steal(mem_ctx
, state
->out_mem_ctx
);
5414 *result
= state
->orig
.out
.result
;
5416 tevent_req_received(req
);
5417 return NT_STATUS_OK
;
5420 NTSTATUS
rpccli_winreg_QueryMultipleValues2(struct rpc_pipe_client
*cli
,
5421 TALLOC_CTX
*mem_ctx
,
5424 struct winreg_QueryMultipleValues2 r
;
5429 status
= cli
->dispatch(cli
,
5432 NDR_WINREG_QUERYMULTIPLEVALUES2
,
5435 if (!NT_STATUS_IS_OK(status
)) {
5439 if (NT_STATUS_IS_ERR(status
)) {
5443 /* Return variables */
5447 *werror
= r
.out
.result
;
5450 return werror_to_ntstatus(r
.out
.result
);