diff options
Diffstat (limited to 'librpc/gen_ndr/cli_winreg.c')
-rw-r--r-- | librpc/gen_ndr/cli_winreg.c | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/librpc/gen_ndr/cli_winreg.c b/librpc/gen_ndr/cli_winreg.c index 82dbb63ac5..5eb7fb9ccc 100644 --- a/librpc/gen_ndr/cli_winreg.c +++ b/librpc/gen_ndr/cli_winreg.c @@ -5366,7 +5366,13 @@ static void rpccli_winreg_QueryMultipleValues2_done(struct tevent_req *subreq); struct tevent_req *rpccli_winreg_QueryMultipleValues2_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, - struct rpc_pipe_client *cli) + struct rpc_pipe_client *cli, + struct policy_handle *_key_handle /* [in] [ref] */, + struct QueryMultipleValue *_values /* [in,out] [ref,length_is(num_values),size_is(num_values)] */, + uint32_t _num_values /* [in] */, + uint8_t *_buffer /* [in,out] [unique,length_is(offered),size_is(offered)] */, + uint32_t _offered /* [in] */, + uint32_t *_needed /* [out] [ref] */) { struct tevent_req *req; struct rpccli_winreg_QueryMultipleValues2_state *state; @@ -5381,12 +5387,26 @@ struct tevent_req *rpccli_winreg_QueryMultipleValues2_send(TALLOC_CTX *mem_ctx, state->dispatch_recv = cli->dispatch_recv; /* In parameters */ + state->orig.in.key_handle = _key_handle; + state->orig.in.values = _values; + state->orig.in.num_values = _num_values; + state->orig.in.buffer = _buffer; + state->orig.in.offered = _offered; /* Out parameters */ + state->orig.out.values = _values; + state->orig.out.buffer = _buffer; + state->orig.out.needed = _needed; /* Result */ ZERO_STRUCT(state->orig.out.result); + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_winreg_QueryMultipleValues2_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + /* make a temporary copy, that we pass to the dispatch function */ state->tmp = state->orig; @@ -5424,6 +5444,11 @@ static void rpccli_winreg_QueryMultipleValues2_done(struct tevent_req *subreq) } /* Copy out parameters */ + memcpy(state->orig.out.values, state->tmp.out.values, (state->tmp.in.num_values) * sizeof(*state->orig.out.values)); + if (state->orig.out.buffer && state->tmp.out.buffer) { + memcpy(state->orig.out.buffer, state->tmp.out.buffer, (state->tmp.in.offered) * sizeof(*state->orig.out.buffer)); + } + *state->orig.out.needed = *state->tmp.out.needed; /* Copy result */ state->orig.out.result = state->tmp.out.result; @@ -5459,12 +5484,23 @@ NTSTATUS rpccli_winreg_QueryMultipleValues2_recv(struct tevent_req *req, NTSTATUS rpccli_winreg_QueryMultipleValues2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, + struct policy_handle *key_handle /* [in] [ref] */, + struct QueryMultipleValue *values /* [in,out] [ref,length_is(num_values),size_is(num_values)] */, + uint32_t num_values /* [in] */, + uint8_t *buffer /* [in,out] [unique,length_is(offered),size_is(offered)] */, + uint32_t offered /* [in] */, + uint32_t *needed /* [out] [ref] */, WERROR *werror) { struct winreg_QueryMultipleValues2 r; NTSTATUS status; /* In parameters */ + r.in.key_handle = key_handle; + r.in.values = values; + r.in.num_values = num_values; + r.in.buffer = buffer; + r.in.offered = offered; status = cli->dispatch(cli, mem_ctx, @@ -5481,6 +5517,11 @@ NTSTATUS rpccli_winreg_QueryMultipleValues2(struct rpc_pipe_client *cli, } /* Return variables */ + memcpy(values, r.out.values, (r.in.num_values) * sizeof(*values)); + if (buffer && r.out.buffer) { + memcpy(buffer, r.out.buffer, (r.in.offered) * sizeof(*buffer)); + } + *needed = *r.out.needed; /* Return result */ if (werror) { |