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