Line data Source code
1 : /* client functions auto-generated by pidl */
2 :
3 : #include "includes.h"
4 : #include <tevent.h>
5 : #include "lib/util/tevent_ntstatus.h"
6 : #include "bin/default/librpc/gen_ndr/ndr_winreg.h"
7 : #include "bin/default/librpc/gen_ndr/ndr_winreg_c.h"
8 :
9 : /* winreg - client functions generated by pidl */
10 :
11 : struct dcerpc_winreg_OpenHKCR_r_state {
12 : TALLOC_CTX *out_mem_ctx;
13 : };
14 :
15 : static void dcerpc_winreg_OpenHKCR_r_done(struct tevent_req *subreq);
16 :
17 0 : struct tevent_req *dcerpc_winreg_OpenHKCR_r_send(TALLOC_CTX *mem_ctx,
18 : struct tevent_context *ev,
19 : struct dcerpc_binding_handle *h,
20 : struct winreg_OpenHKCR *r)
21 : {
22 0 : struct tevent_req *req;
23 0 : struct dcerpc_winreg_OpenHKCR_r_state *state;
24 0 : struct tevent_req *subreq;
25 :
26 0 : req = tevent_req_create(mem_ctx, &state,
27 : struct dcerpc_winreg_OpenHKCR_r_state);
28 0 : if (req == NULL) {
29 0 : return NULL;
30 : }
31 :
32 0 : state->out_mem_ctx = talloc_new(state);
33 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
34 0 : return tevent_req_post(req, ev);
35 : }
36 :
37 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
38 : NULL, &ndr_table_winreg,
39 0 : NDR_WINREG_OPENHKCR, state->out_mem_ctx, r);
40 0 : if (tevent_req_nomem(subreq, req)) {
41 0 : return tevent_req_post(req, ev);
42 : }
43 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKCR_r_done, req);
44 :
45 0 : return req;
46 : }
47 :
48 0 : static void dcerpc_winreg_OpenHKCR_r_done(struct tevent_req *subreq)
49 : {
50 0 : struct tevent_req *req =
51 0 : tevent_req_callback_data(subreq,
52 : struct tevent_req);
53 0 : NTSTATUS status;
54 :
55 0 : status = dcerpc_binding_handle_call_recv(subreq);
56 0 : TALLOC_FREE(subreq);
57 0 : if (tevent_req_nterror(req, status)) {
58 0 : return;
59 : }
60 :
61 0 : tevent_req_done(req);
62 : }
63 :
64 0 : NTSTATUS dcerpc_winreg_OpenHKCR_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
65 : {
66 0 : struct dcerpc_winreg_OpenHKCR_r_state *state =
67 0 : tevent_req_data(req,
68 : struct dcerpc_winreg_OpenHKCR_r_state);
69 0 : NTSTATUS status;
70 :
71 0 : if (tevent_req_is_nterror(req, &status)) {
72 0 : tevent_req_received(req);
73 0 : return status;
74 : }
75 :
76 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
77 :
78 0 : tevent_req_received(req);
79 0 : return NT_STATUS_OK;
80 : }
81 :
82 87 : NTSTATUS dcerpc_winreg_OpenHKCR_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_OpenHKCR *r)
83 : {
84 0 : NTSTATUS status;
85 :
86 87 : status = dcerpc_binding_handle_call(h,
87 : NULL, &ndr_table_winreg,
88 : NDR_WINREG_OPENHKCR, mem_ctx, r);
89 :
90 87 : return status;
91 : }
92 :
93 : struct dcerpc_winreg_OpenHKCR_state {
94 : struct winreg_OpenHKCR orig;
95 : struct winreg_OpenHKCR tmp;
96 : TALLOC_CTX *out_mem_ctx;
97 : };
98 :
99 : static void dcerpc_winreg_OpenHKCR_done(struct tevent_req *subreq);
100 :
101 0 : struct tevent_req *dcerpc_winreg_OpenHKCR_send(TALLOC_CTX *mem_ctx,
102 : struct tevent_context *ev,
103 : struct dcerpc_binding_handle *h,
104 : uint16_t *_system_name /* [in] [unique] */,
105 : uint32_t _access_mask /* [in] */,
106 : struct policy_handle *_handle /* [out] [ref] */)
107 : {
108 0 : struct tevent_req *req;
109 0 : struct dcerpc_winreg_OpenHKCR_state *state;
110 0 : struct tevent_req *subreq;
111 :
112 0 : req = tevent_req_create(mem_ctx, &state,
113 : struct dcerpc_winreg_OpenHKCR_state);
114 0 : if (req == NULL) {
115 0 : return NULL;
116 : }
117 0 : state->out_mem_ctx = NULL;
118 :
119 : /* In parameters */
120 0 : state->orig.in.system_name = _system_name;
121 0 : state->orig.in.access_mask = _access_mask;
122 :
123 : /* Out parameters */
124 0 : state->orig.out.handle = _handle;
125 :
126 : /* Result */
127 0 : NDR_ZERO_STRUCT(state->orig.out.result);
128 :
129 0 : state->out_mem_ctx = talloc_named_const(state, 0,
130 : "dcerpc_winreg_OpenHKCR_out_memory");
131 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
132 0 : return tevent_req_post(req, ev);
133 : }
134 :
135 : /* make a temporary copy, that we pass to the dispatch function */
136 0 : state->tmp = state->orig;
137 :
138 0 : subreq = dcerpc_winreg_OpenHKCR_r_send(state, ev, h, &state->tmp);
139 0 : if (tevent_req_nomem(subreq, req)) {
140 0 : return tevent_req_post(req, ev);
141 : }
142 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKCR_done, req);
143 0 : return req;
144 : }
145 :
146 0 : static void dcerpc_winreg_OpenHKCR_done(struct tevent_req *subreq)
147 : {
148 0 : struct tevent_req *req = tevent_req_callback_data(
149 : subreq, struct tevent_req);
150 0 : struct dcerpc_winreg_OpenHKCR_state *state = tevent_req_data(
151 : req, struct dcerpc_winreg_OpenHKCR_state);
152 0 : NTSTATUS status;
153 0 : TALLOC_CTX *mem_ctx;
154 :
155 0 : if (state->out_mem_ctx) {
156 0 : mem_ctx = state->out_mem_ctx;
157 : } else {
158 0 : mem_ctx = state;
159 : }
160 :
161 0 : status = dcerpc_winreg_OpenHKCR_r_recv(subreq, mem_ctx);
162 0 : TALLOC_FREE(subreq);
163 0 : if (tevent_req_nterror(req, status)) {
164 0 : return;
165 : }
166 :
167 : /* Copy out parameters */
168 0 : *state->orig.out.handle = *state->tmp.out.handle;
169 :
170 : /* Copy result */
171 0 : state->orig.out.result = state->tmp.out.result;
172 :
173 : /* Reset temporary structure */
174 0 : NDR_ZERO_STRUCT(state->tmp);
175 :
176 0 : tevent_req_done(req);
177 : }
178 :
179 0 : NTSTATUS dcerpc_winreg_OpenHKCR_recv(struct tevent_req *req,
180 : TALLOC_CTX *mem_ctx,
181 : WERROR *result)
182 : {
183 0 : struct dcerpc_winreg_OpenHKCR_state *state = tevent_req_data(
184 : req, struct dcerpc_winreg_OpenHKCR_state);
185 0 : NTSTATUS status;
186 :
187 0 : if (tevent_req_is_nterror(req, &status)) {
188 0 : tevent_req_received(req);
189 0 : return status;
190 : }
191 :
192 : /* Steal possible out parameters to the callers context */
193 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
194 :
195 : /* Return result */
196 0 : *result = state->orig.out.result;
197 :
198 0 : tevent_req_received(req);
199 0 : return NT_STATUS_OK;
200 : }
201 :
202 0 : NTSTATUS dcerpc_winreg_OpenHKCR(struct dcerpc_binding_handle *h,
203 : TALLOC_CTX *mem_ctx,
204 : uint16_t *_system_name /* [in] [unique] */,
205 : uint32_t _access_mask /* [in] */,
206 : struct policy_handle *_handle /* [out] [ref] */,
207 : WERROR *result)
208 : {
209 0 : struct winreg_OpenHKCR r;
210 0 : NTSTATUS status;
211 :
212 : /* In parameters */
213 0 : r.in.system_name = _system_name;
214 0 : r.in.access_mask = _access_mask;
215 :
216 : /* Out parameters */
217 0 : r.out.handle = _handle;
218 :
219 : /* Result */
220 0 : NDR_ZERO_STRUCT(r.out.result);
221 :
222 0 : status = dcerpc_winreg_OpenHKCR_r(h, mem_ctx, &r);
223 0 : if (!NT_STATUS_IS_OK(status)) {
224 0 : return status;
225 : }
226 :
227 : /* Return variables */
228 0 : *_handle = *r.out.handle;
229 :
230 : /* Return result */
231 0 : *result = r.out.result;
232 :
233 0 : return NT_STATUS_OK;
234 : }
235 :
236 : struct dcerpc_winreg_OpenHKCU_r_state {
237 : TALLOC_CTX *out_mem_ctx;
238 : };
239 :
240 : static void dcerpc_winreg_OpenHKCU_r_done(struct tevent_req *subreq);
241 :
242 0 : struct tevent_req *dcerpc_winreg_OpenHKCU_r_send(TALLOC_CTX *mem_ctx,
243 : struct tevent_context *ev,
244 : struct dcerpc_binding_handle *h,
245 : struct winreg_OpenHKCU *r)
246 : {
247 0 : struct tevent_req *req;
248 0 : struct dcerpc_winreg_OpenHKCU_r_state *state;
249 0 : struct tevent_req *subreq;
250 :
251 0 : req = tevent_req_create(mem_ctx, &state,
252 : struct dcerpc_winreg_OpenHKCU_r_state);
253 0 : if (req == NULL) {
254 0 : return NULL;
255 : }
256 :
257 0 : state->out_mem_ctx = talloc_new(state);
258 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
259 0 : return tevent_req_post(req, ev);
260 : }
261 :
262 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
263 : NULL, &ndr_table_winreg,
264 0 : NDR_WINREG_OPENHKCU, state->out_mem_ctx, r);
265 0 : if (tevent_req_nomem(subreq, req)) {
266 0 : return tevent_req_post(req, ev);
267 : }
268 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKCU_r_done, req);
269 :
270 0 : return req;
271 : }
272 :
273 0 : static void dcerpc_winreg_OpenHKCU_r_done(struct tevent_req *subreq)
274 : {
275 0 : struct tevent_req *req =
276 0 : tevent_req_callback_data(subreq,
277 : struct tevent_req);
278 0 : NTSTATUS status;
279 :
280 0 : status = dcerpc_binding_handle_call_recv(subreq);
281 0 : TALLOC_FREE(subreq);
282 0 : if (tevent_req_nterror(req, status)) {
283 0 : return;
284 : }
285 :
286 0 : tevent_req_done(req);
287 : }
288 :
289 0 : NTSTATUS dcerpc_winreg_OpenHKCU_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
290 : {
291 0 : struct dcerpc_winreg_OpenHKCU_r_state *state =
292 0 : tevent_req_data(req,
293 : struct dcerpc_winreg_OpenHKCU_r_state);
294 0 : NTSTATUS status;
295 :
296 0 : if (tevent_req_is_nterror(req, &status)) {
297 0 : tevent_req_received(req);
298 0 : return status;
299 : }
300 :
301 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
302 :
303 0 : tevent_req_received(req);
304 0 : return NT_STATUS_OK;
305 : }
306 :
307 87 : NTSTATUS dcerpc_winreg_OpenHKCU_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_OpenHKCU *r)
308 : {
309 0 : NTSTATUS status;
310 :
311 87 : status = dcerpc_binding_handle_call(h,
312 : NULL, &ndr_table_winreg,
313 : NDR_WINREG_OPENHKCU, mem_ctx, r);
314 :
315 87 : return status;
316 : }
317 :
318 : struct dcerpc_winreg_OpenHKCU_state {
319 : struct winreg_OpenHKCU orig;
320 : struct winreg_OpenHKCU tmp;
321 : TALLOC_CTX *out_mem_ctx;
322 : };
323 :
324 : static void dcerpc_winreg_OpenHKCU_done(struct tevent_req *subreq);
325 :
326 0 : struct tevent_req *dcerpc_winreg_OpenHKCU_send(TALLOC_CTX *mem_ctx,
327 : struct tevent_context *ev,
328 : struct dcerpc_binding_handle *h,
329 : uint16_t *_system_name /* [in] [unique] */,
330 : uint32_t _access_mask /* [in] */,
331 : struct policy_handle *_handle /* [out] [ref] */)
332 : {
333 0 : struct tevent_req *req;
334 0 : struct dcerpc_winreg_OpenHKCU_state *state;
335 0 : struct tevent_req *subreq;
336 :
337 0 : req = tevent_req_create(mem_ctx, &state,
338 : struct dcerpc_winreg_OpenHKCU_state);
339 0 : if (req == NULL) {
340 0 : return NULL;
341 : }
342 0 : state->out_mem_ctx = NULL;
343 :
344 : /* In parameters */
345 0 : state->orig.in.system_name = _system_name;
346 0 : state->orig.in.access_mask = _access_mask;
347 :
348 : /* Out parameters */
349 0 : state->orig.out.handle = _handle;
350 :
351 : /* Result */
352 0 : NDR_ZERO_STRUCT(state->orig.out.result);
353 :
354 0 : state->out_mem_ctx = talloc_named_const(state, 0,
355 : "dcerpc_winreg_OpenHKCU_out_memory");
356 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
357 0 : return tevent_req_post(req, ev);
358 : }
359 :
360 : /* make a temporary copy, that we pass to the dispatch function */
361 0 : state->tmp = state->orig;
362 :
363 0 : subreq = dcerpc_winreg_OpenHKCU_r_send(state, ev, h, &state->tmp);
364 0 : if (tevent_req_nomem(subreq, req)) {
365 0 : return tevent_req_post(req, ev);
366 : }
367 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKCU_done, req);
368 0 : return req;
369 : }
370 :
371 0 : static void dcerpc_winreg_OpenHKCU_done(struct tevent_req *subreq)
372 : {
373 0 : struct tevent_req *req = tevent_req_callback_data(
374 : subreq, struct tevent_req);
375 0 : struct dcerpc_winreg_OpenHKCU_state *state = tevent_req_data(
376 : req, struct dcerpc_winreg_OpenHKCU_state);
377 0 : NTSTATUS status;
378 0 : TALLOC_CTX *mem_ctx;
379 :
380 0 : if (state->out_mem_ctx) {
381 0 : mem_ctx = state->out_mem_ctx;
382 : } else {
383 0 : mem_ctx = state;
384 : }
385 :
386 0 : status = dcerpc_winreg_OpenHKCU_r_recv(subreq, mem_ctx);
387 0 : TALLOC_FREE(subreq);
388 0 : if (tevent_req_nterror(req, status)) {
389 0 : return;
390 : }
391 :
392 : /* Copy out parameters */
393 0 : *state->orig.out.handle = *state->tmp.out.handle;
394 :
395 : /* Copy result */
396 0 : state->orig.out.result = state->tmp.out.result;
397 :
398 : /* Reset temporary structure */
399 0 : NDR_ZERO_STRUCT(state->tmp);
400 :
401 0 : tevent_req_done(req);
402 : }
403 :
404 0 : NTSTATUS dcerpc_winreg_OpenHKCU_recv(struct tevent_req *req,
405 : TALLOC_CTX *mem_ctx,
406 : WERROR *result)
407 : {
408 0 : struct dcerpc_winreg_OpenHKCU_state *state = tevent_req_data(
409 : req, struct dcerpc_winreg_OpenHKCU_state);
410 0 : NTSTATUS status;
411 :
412 0 : if (tevent_req_is_nterror(req, &status)) {
413 0 : tevent_req_received(req);
414 0 : return status;
415 : }
416 :
417 : /* Steal possible out parameters to the callers context */
418 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
419 :
420 : /* Return result */
421 0 : *result = state->orig.out.result;
422 :
423 0 : tevent_req_received(req);
424 0 : return NT_STATUS_OK;
425 : }
426 :
427 0 : NTSTATUS dcerpc_winreg_OpenHKCU(struct dcerpc_binding_handle *h,
428 : TALLOC_CTX *mem_ctx,
429 : uint16_t *_system_name /* [in] [unique] */,
430 : uint32_t _access_mask /* [in] */,
431 : struct policy_handle *_handle /* [out] [ref] */,
432 : WERROR *result)
433 : {
434 0 : struct winreg_OpenHKCU r;
435 0 : NTSTATUS status;
436 :
437 : /* In parameters */
438 0 : r.in.system_name = _system_name;
439 0 : r.in.access_mask = _access_mask;
440 :
441 : /* Out parameters */
442 0 : r.out.handle = _handle;
443 :
444 : /* Result */
445 0 : NDR_ZERO_STRUCT(r.out.result);
446 :
447 0 : status = dcerpc_winreg_OpenHKCU_r(h, mem_ctx, &r);
448 0 : if (!NT_STATUS_IS_OK(status)) {
449 0 : return status;
450 : }
451 :
452 : /* Return variables */
453 0 : *_handle = *r.out.handle;
454 :
455 : /* Return result */
456 0 : *result = r.out.result;
457 :
458 0 : return NT_STATUS_OK;
459 : }
460 :
461 : struct dcerpc_winreg_OpenHKLM_r_state {
462 : TALLOC_CTX *out_mem_ctx;
463 : };
464 :
465 : static void dcerpc_winreg_OpenHKLM_r_done(struct tevent_req *subreq);
466 :
467 0 : struct tevent_req *dcerpc_winreg_OpenHKLM_r_send(TALLOC_CTX *mem_ctx,
468 : struct tevent_context *ev,
469 : struct dcerpc_binding_handle *h,
470 : struct winreg_OpenHKLM *r)
471 : {
472 0 : struct tevent_req *req;
473 0 : struct dcerpc_winreg_OpenHKLM_r_state *state;
474 0 : struct tevent_req *subreq;
475 :
476 0 : req = tevent_req_create(mem_ctx, &state,
477 : struct dcerpc_winreg_OpenHKLM_r_state);
478 0 : if (req == NULL) {
479 0 : return NULL;
480 : }
481 :
482 0 : state->out_mem_ctx = talloc_new(state);
483 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
484 0 : return tevent_req_post(req, ev);
485 : }
486 :
487 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
488 : NULL, &ndr_table_winreg,
489 0 : NDR_WINREG_OPENHKLM, state->out_mem_ctx, r);
490 0 : if (tevent_req_nomem(subreq, req)) {
491 0 : return tevent_req_post(req, ev);
492 : }
493 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKLM_r_done, req);
494 :
495 0 : return req;
496 : }
497 :
498 0 : static void dcerpc_winreg_OpenHKLM_r_done(struct tevent_req *subreq)
499 : {
500 0 : struct tevent_req *req =
501 0 : tevent_req_callback_data(subreq,
502 : struct tevent_req);
503 0 : NTSTATUS status;
504 :
505 0 : status = dcerpc_binding_handle_call_recv(subreq);
506 0 : TALLOC_FREE(subreq);
507 0 : if (tevent_req_nterror(req, status)) {
508 0 : return;
509 : }
510 :
511 0 : tevent_req_done(req);
512 : }
513 :
514 0 : NTSTATUS dcerpc_winreg_OpenHKLM_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
515 : {
516 0 : struct dcerpc_winreg_OpenHKLM_r_state *state =
517 0 : tevent_req_data(req,
518 : struct dcerpc_winreg_OpenHKLM_r_state);
519 0 : NTSTATUS status;
520 :
521 0 : if (tevent_req_is_nterror(req, &status)) {
522 0 : tevent_req_received(req);
523 0 : return status;
524 : }
525 :
526 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
527 :
528 0 : tevent_req_received(req);
529 0 : return NT_STATUS_OK;
530 : }
531 :
532 44578 : NTSTATUS dcerpc_winreg_OpenHKLM_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_OpenHKLM *r)
533 : {
534 0 : NTSTATUS status;
535 :
536 44578 : status = dcerpc_binding_handle_call(h,
537 : NULL, &ndr_table_winreg,
538 : NDR_WINREG_OPENHKLM, mem_ctx, r);
539 :
540 44578 : return status;
541 : }
542 :
543 : struct dcerpc_winreg_OpenHKLM_state {
544 : struct winreg_OpenHKLM orig;
545 : struct winreg_OpenHKLM tmp;
546 : TALLOC_CTX *out_mem_ctx;
547 : };
548 :
549 : static void dcerpc_winreg_OpenHKLM_done(struct tevent_req *subreq);
550 :
551 0 : struct tevent_req *dcerpc_winreg_OpenHKLM_send(TALLOC_CTX *mem_ctx,
552 : struct tevent_context *ev,
553 : struct dcerpc_binding_handle *h,
554 : uint16_t *_system_name /* [in] [unique] */,
555 : uint32_t _access_mask /* [in] */,
556 : struct policy_handle *_handle /* [out] [ref] */)
557 : {
558 0 : struct tevent_req *req;
559 0 : struct dcerpc_winreg_OpenHKLM_state *state;
560 0 : struct tevent_req *subreq;
561 :
562 0 : req = tevent_req_create(mem_ctx, &state,
563 : struct dcerpc_winreg_OpenHKLM_state);
564 0 : if (req == NULL) {
565 0 : return NULL;
566 : }
567 0 : state->out_mem_ctx = NULL;
568 :
569 : /* In parameters */
570 0 : state->orig.in.system_name = _system_name;
571 0 : state->orig.in.access_mask = _access_mask;
572 :
573 : /* Out parameters */
574 0 : state->orig.out.handle = _handle;
575 :
576 : /* Result */
577 0 : NDR_ZERO_STRUCT(state->orig.out.result);
578 :
579 0 : state->out_mem_ctx = talloc_named_const(state, 0,
580 : "dcerpc_winreg_OpenHKLM_out_memory");
581 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
582 0 : return tevent_req_post(req, ev);
583 : }
584 :
585 : /* make a temporary copy, that we pass to the dispatch function */
586 0 : state->tmp = state->orig;
587 :
588 0 : subreq = dcerpc_winreg_OpenHKLM_r_send(state, ev, h, &state->tmp);
589 0 : if (tevent_req_nomem(subreq, req)) {
590 0 : return tevent_req_post(req, ev);
591 : }
592 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKLM_done, req);
593 0 : return req;
594 : }
595 :
596 0 : static void dcerpc_winreg_OpenHKLM_done(struct tevent_req *subreq)
597 : {
598 0 : struct tevent_req *req = tevent_req_callback_data(
599 : subreq, struct tevent_req);
600 0 : struct dcerpc_winreg_OpenHKLM_state *state = tevent_req_data(
601 : req, struct dcerpc_winreg_OpenHKLM_state);
602 0 : NTSTATUS status;
603 0 : TALLOC_CTX *mem_ctx;
604 :
605 0 : if (state->out_mem_ctx) {
606 0 : mem_ctx = state->out_mem_ctx;
607 : } else {
608 0 : mem_ctx = state;
609 : }
610 :
611 0 : status = dcerpc_winreg_OpenHKLM_r_recv(subreq, mem_ctx);
612 0 : TALLOC_FREE(subreq);
613 0 : if (tevent_req_nterror(req, status)) {
614 0 : return;
615 : }
616 :
617 : /* Copy out parameters */
618 0 : *state->orig.out.handle = *state->tmp.out.handle;
619 :
620 : /* Copy result */
621 0 : state->orig.out.result = state->tmp.out.result;
622 :
623 : /* Reset temporary structure */
624 0 : NDR_ZERO_STRUCT(state->tmp);
625 :
626 0 : tevent_req_done(req);
627 : }
628 :
629 0 : NTSTATUS dcerpc_winreg_OpenHKLM_recv(struct tevent_req *req,
630 : TALLOC_CTX *mem_ctx,
631 : WERROR *result)
632 : {
633 0 : struct dcerpc_winreg_OpenHKLM_state *state = tevent_req_data(
634 : req, struct dcerpc_winreg_OpenHKLM_state);
635 0 : NTSTATUS status;
636 :
637 0 : if (tevent_req_is_nterror(req, &status)) {
638 0 : tevent_req_received(req);
639 0 : return status;
640 : }
641 :
642 : /* Steal possible out parameters to the callers context */
643 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
644 :
645 : /* Return result */
646 0 : *result = state->orig.out.result;
647 :
648 0 : tevent_req_received(req);
649 0 : return NT_STATUS_OK;
650 : }
651 :
652 44436 : NTSTATUS dcerpc_winreg_OpenHKLM(struct dcerpc_binding_handle *h,
653 : TALLOC_CTX *mem_ctx,
654 : uint16_t *_system_name /* [in] [unique] */,
655 : uint32_t _access_mask /* [in] */,
656 : struct policy_handle *_handle /* [out] [ref] */,
657 : WERROR *result)
658 : {
659 0 : struct winreg_OpenHKLM r;
660 0 : NTSTATUS status;
661 :
662 : /* In parameters */
663 44436 : r.in.system_name = _system_name;
664 44436 : r.in.access_mask = _access_mask;
665 :
666 : /* Out parameters */
667 44436 : r.out.handle = _handle;
668 :
669 : /* Result */
670 44436 : NDR_ZERO_STRUCT(r.out.result);
671 :
672 44436 : status = dcerpc_winreg_OpenHKLM_r(h, mem_ctx, &r);
673 44436 : if (!NT_STATUS_IS_OK(status)) {
674 0 : return status;
675 : }
676 :
677 : /* Return variables */
678 44436 : *_handle = *r.out.handle;
679 :
680 : /* Return result */
681 44436 : *result = r.out.result;
682 :
683 44436 : return NT_STATUS_OK;
684 : }
685 :
686 : struct dcerpc_winreg_OpenHKPD_r_state {
687 : TALLOC_CTX *out_mem_ctx;
688 : };
689 :
690 : static void dcerpc_winreg_OpenHKPD_r_done(struct tevent_req *subreq);
691 :
692 0 : struct tevent_req *dcerpc_winreg_OpenHKPD_r_send(TALLOC_CTX *mem_ctx,
693 : struct tevent_context *ev,
694 : struct dcerpc_binding_handle *h,
695 : struct winreg_OpenHKPD *r)
696 : {
697 0 : struct tevent_req *req;
698 0 : struct dcerpc_winreg_OpenHKPD_r_state *state;
699 0 : struct tevent_req *subreq;
700 :
701 0 : req = tevent_req_create(mem_ctx, &state,
702 : struct dcerpc_winreg_OpenHKPD_r_state);
703 0 : if (req == NULL) {
704 0 : return NULL;
705 : }
706 :
707 0 : state->out_mem_ctx = talloc_new(state);
708 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
709 0 : return tevent_req_post(req, ev);
710 : }
711 :
712 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
713 : NULL, &ndr_table_winreg,
714 0 : NDR_WINREG_OPENHKPD, state->out_mem_ctx, r);
715 0 : if (tevent_req_nomem(subreq, req)) {
716 0 : return tevent_req_post(req, ev);
717 : }
718 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKPD_r_done, req);
719 :
720 0 : return req;
721 : }
722 :
723 0 : static void dcerpc_winreg_OpenHKPD_r_done(struct tevent_req *subreq)
724 : {
725 0 : struct tevent_req *req =
726 0 : tevent_req_callback_data(subreq,
727 : struct tevent_req);
728 0 : NTSTATUS status;
729 :
730 0 : status = dcerpc_binding_handle_call_recv(subreq);
731 0 : TALLOC_FREE(subreq);
732 0 : if (tevent_req_nterror(req, status)) {
733 0 : return;
734 : }
735 :
736 0 : tevent_req_done(req);
737 : }
738 :
739 0 : NTSTATUS dcerpc_winreg_OpenHKPD_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
740 : {
741 0 : struct dcerpc_winreg_OpenHKPD_r_state *state =
742 0 : tevent_req_data(req,
743 : struct dcerpc_winreg_OpenHKPD_r_state);
744 0 : NTSTATUS status;
745 :
746 0 : if (tevent_req_is_nterror(req, &status)) {
747 0 : tevent_req_received(req);
748 0 : return status;
749 : }
750 :
751 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
752 :
753 0 : tevent_req_received(req);
754 0 : return NT_STATUS_OK;
755 : }
756 :
757 0 : NTSTATUS dcerpc_winreg_OpenHKPD_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_OpenHKPD *r)
758 : {
759 0 : NTSTATUS status;
760 :
761 0 : status = dcerpc_binding_handle_call(h,
762 : NULL, &ndr_table_winreg,
763 : NDR_WINREG_OPENHKPD, mem_ctx, r);
764 :
765 0 : return status;
766 : }
767 :
768 : struct dcerpc_winreg_OpenHKPD_state {
769 : struct winreg_OpenHKPD orig;
770 : struct winreg_OpenHKPD tmp;
771 : TALLOC_CTX *out_mem_ctx;
772 : };
773 :
774 : static void dcerpc_winreg_OpenHKPD_done(struct tevent_req *subreq);
775 :
776 0 : struct tevent_req *dcerpc_winreg_OpenHKPD_send(TALLOC_CTX *mem_ctx,
777 : struct tevent_context *ev,
778 : struct dcerpc_binding_handle *h,
779 : uint16_t *_system_name /* [in] [unique] */,
780 : uint32_t _access_mask /* [in] */,
781 : struct policy_handle *_handle /* [out] [ref] */)
782 : {
783 0 : struct tevent_req *req;
784 0 : struct dcerpc_winreg_OpenHKPD_state *state;
785 0 : struct tevent_req *subreq;
786 :
787 0 : req = tevent_req_create(mem_ctx, &state,
788 : struct dcerpc_winreg_OpenHKPD_state);
789 0 : if (req == NULL) {
790 0 : return NULL;
791 : }
792 0 : state->out_mem_ctx = NULL;
793 :
794 : /* In parameters */
795 0 : state->orig.in.system_name = _system_name;
796 0 : state->orig.in.access_mask = _access_mask;
797 :
798 : /* Out parameters */
799 0 : state->orig.out.handle = _handle;
800 :
801 : /* Result */
802 0 : NDR_ZERO_STRUCT(state->orig.out.result);
803 :
804 0 : state->out_mem_ctx = talloc_named_const(state, 0,
805 : "dcerpc_winreg_OpenHKPD_out_memory");
806 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
807 0 : return tevent_req_post(req, ev);
808 : }
809 :
810 : /* make a temporary copy, that we pass to the dispatch function */
811 0 : state->tmp = state->orig;
812 :
813 0 : subreq = dcerpc_winreg_OpenHKPD_r_send(state, ev, h, &state->tmp);
814 0 : if (tevent_req_nomem(subreq, req)) {
815 0 : return tevent_req_post(req, ev);
816 : }
817 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKPD_done, req);
818 0 : return req;
819 : }
820 :
821 0 : static void dcerpc_winreg_OpenHKPD_done(struct tevent_req *subreq)
822 : {
823 0 : struct tevent_req *req = tevent_req_callback_data(
824 : subreq, struct tevent_req);
825 0 : struct dcerpc_winreg_OpenHKPD_state *state = tevent_req_data(
826 : req, struct dcerpc_winreg_OpenHKPD_state);
827 0 : NTSTATUS status;
828 0 : TALLOC_CTX *mem_ctx;
829 :
830 0 : if (state->out_mem_ctx) {
831 0 : mem_ctx = state->out_mem_ctx;
832 : } else {
833 0 : mem_ctx = state;
834 : }
835 :
836 0 : status = dcerpc_winreg_OpenHKPD_r_recv(subreq, mem_ctx);
837 0 : TALLOC_FREE(subreq);
838 0 : if (tevent_req_nterror(req, status)) {
839 0 : return;
840 : }
841 :
842 : /* Copy out parameters */
843 0 : *state->orig.out.handle = *state->tmp.out.handle;
844 :
845 : /* Copy result */
846 0 : state->orig.out.result = state->tmp.out.result;
847 :
848 : /* Reset temporary structure */
849 0 : NDR_ZERO_STRUCT(state->tmp);
850 :
851 0 : tevent_req_done(req);
852 : }
853 :
854 0 : NTSTATUS dcerpc_winreg_OpenHKPD_recv(struct tevent_req *req,
855 : TALLOC_CTX *mem_ctx,
856 : WERROR *result)
857 : {
858 0 : struct dcerpc_winreg_OpenHKPD_state *state = tevent_req_data(
859 : req, struct dcerpc_winreg_OpenHKPD_state);
860 0 : NTSTATUS status;
861 :
862 0 : if (tevent_req_is_nterror(req, &status)) {
863 0 : tevent_req_received(req);
864 0 : return status;
865 : }
866 :
867 : /* Steal possible out parameters to the callers context */
868 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
869 :
870 : /* Return result */
871 0 : *result = state->orig.out.result;
872 :
873 0 : tevent_req_received(req);
874 0 : return NT_STATUS_OK;
875 : }
876 :
877 0 : NTSTATUS dcerpc_winreg_OpenHKPD(struct dcerpc_binding_handle *h,
878 : TALLOC_CTX *mem_ctx,
879 : uint16_t *_system_name /* [in] [unique] */,
880 : uint32_t _access_mask /* [in] */,
881 : struct policy_handle *_handle /* [out] [ref] */,
882 : WERROR *result)
883 : {
884 0 : struct winreg_OpenHKPD r;
885 0 : NTSTATUS status;
886 :
887 : /* In parameters */
888 0 : r.in.system_name = _system_name;
889 0 : r.in.access_mask = _access_mask;
890 :
891 : /* Out parameters */
892 0 : r.out.handle = _handle;
893 :
894 : /* Result */
895 0 : NDR_ZERO_STRUCT(r.out.result);
896 :
897 0 : status = dcerpc_winreg_OpenHKPD_r(h, mem_ctx, &r);
898 0 : if (!NT_STATUS_IS_OK(status)) {
899 0 : return status;
900 : }
901 :
902 : /* Return variables */
903 0 : *_handle = *r.out.handle;
904 :
905 : /* Return result */
906 0 : *result = r.out.result;
907 :
908 0 : return NT_STATUS_OK;
909 : }
910 :
911 : struct dcerpc_winreg_OpenHKU_r_state {
912 : TALLOC_CTX *out_mem_ctx;
913 : };
914 :
915 : static void dcerpc_winreg_OpenHKU_r_done(struct tevent_req *subreq);
916 :
917 0 : struct tevent_req *dcerpc_winreg_OpenHKU_r_send(TALLOC_CTX *mem_ctx,
918 : struct tevent_context *ev,
919 : struct dcerpc_binding_handle *h,
920 : struct winreg_OpenHKU *r)
921 : {
922 0 : struct tevent_req *req;
923 0 : struct dcerpc_winreg_OpenHKU_r_state *state;
924 0 : struct tevent_req *subreq;
925 :
926 0 : req = tevent_req_create(mem_ctx, &state,
927 : struct dcerpc_winreg_OpenHKU_r_state);
928 0 : if (req == NULL) {
929 0 : return NULL;
930 : }
931 :
932 0 : state->out_mem_ctx = talloc_new(state);
933 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
934 0 : return tevent_req_post(req, ev);
935 : }
936 :
937 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
938 : NULL, &ndr_table_winreg,
939 0 : NDR_WINREG_OPENHKU, state->out_mem_ctx, r);
940 0 : if (tevent_req_nomem(subreq, req)) {
941 0 : return tevent_req_post(req, ev);
942 : }
943 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKU_r_done, req);
944 :
945 0 : return req;
946 : }
947 :
948 0 : static void dcerpc_winreg_OpenHKU_r_done(struct tevent_req *subreq)
949 : {
950 0 : struct tevent_req *req =
951 0 : tevent_req_callback_data(subreq,
952 : struct tevent_req);
953 0 : NTSTATUS status;
954 :
955 0 : status = dcerpc_binding_handle_call_recv(subreq);
956 0 : TALLOC_FREE(subreq);
957 0 : if (tevent_req_nterror(req, status)) {
958 0 : return;
959 : }
960 :
961 0 : tevent_req_done(req);
962 : }
963 :
964 0 : NTSTATUS dcerpc_winreg_OpenHKU_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
965 : {
966 0 : struct dcerpc_winreg_OpenHKU_r_state *state =
967 0 : tevent_req_data(req,
968 : struct dcerpc_winreg_OpenHKU_r_state);
969 0 : NTSTATUS status;
970 :
971 0 : if (tevent_req_is_nterror(req, &status)) {
972 0 : tevent_req_received(req);
973 0 : return status;
974 : }
975 :
976 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
977 :
978 0 : tevent_req_received(req);
979 0 : return NT_STATUS_OK;
980 : }
981 :
982 87 : NTSTATUS dcerpc_winreg_OpenHKU_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_OpenHKU *r)
983 : {
984 0 : NTSTATUS status;
985 :
986 87 : status = dcerpc_binding_handle_call(h,
987 : NULL, &ndr_table_winreg,
988 : NDR_WINREG_OPENHKU, mem_ctx, r);
989 :
990 87 : return status;
991 : }
992 :
993 : struct dcerpc_winreg_OpenHKU_state {
994 : struct winreg_OpenHKU orig;
995 : struct winreg_OpenHKU tmp;
996 : TALLOC_CTX *out_mem_ctx;
997 : };
998 :
999 : static void dcerpc_winreg_OpenHKU_done(struct tevent_req *subreq);
1000 :
1001 0 : struct tevent_req *dcerpc_winreg_OpenHKU_send(TALLOC_CTX *mem_ctx,
1002 : struct tevent_context *ev,
1003 : struct dcerpc_binding_handle *h,
1004 : uint16_t *_system_name /* [in] [unique] */,
1005 : uint32_t _access_mask /* [in] */,
1006 : struct policy_handle *_handle /* [out] [ref] */)
1007 : {
1008 0 : struct tevent_req *req;
1009 0 : struct dcerpc_winreg_OpenHKU_state *state;
1010 0 : struct tevent_req *subreq;
1011 :
1012 0 : req = tevent_req_create(mem_ctx, &state,
1013 : struct dcerpc_winreg_OpenHKU_state);
1014 0 : if (req == NULL) {
1015 0 : return NULL;
1016 : }
1017 0 : state->out_mem_ctx = NULL;
1018 :
1019 : /* In parameters */
1020 0 : state->orig.in.system_name = _system_name;
1021 0 : state->orig.in.access_mask = _access_mask;
1022 :
1023 : /* Out parameters */
1024 0 : state->orig.out.handle = _handle;
1025 :
1026 : /* Result */
1027 0 : NDR_ZERO_STRUCT(state->orig.out.result);
1028 :
1029 0 : state->out_mem_ctx = talloc_named_const(state, 0,
1030 : "dcerpc_winreg_OpenHKU_out_memory");
1031 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
1032 0 : return tevent_req_post(req, ev);
1033 : }
1034 :
1035 : /* make a temporary copy, that we pass to the dispatch function */
1036 0 : state->tmp = state->orig;
1037 :
1038 0 : subreq = dcerpc_winreg_OpenHKU_r_send(state, ev, h, &state->tmp);
1039 0 : if (tevent_req_nomem(subreq, req)) {
1040 0 : return tevent_req_post(req, ev);
1041 : }
1042 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKU_done, req);
1043 0 : return req;
1044 : }
1045 :
1046 0 : static void dcerpc_winreg_OpenHKU_done(struct tevent_req *subreq)
1047 : {
1048 0 : struct tevent_req *req = tevent_req_callback_data(
1049 : subreq, struct tevent_req);
1050 0 : struct dcerpc_winreg_OpenHKU_state *state = tevent_req_data(
1051 : req, struct dcerpc_winreg_OpenHKU_state);
1052 0 : NTSTATUS status;
1053 0 : TALLOC_CTX *mem_ctx;
1054 :
1055 0 : if (state->out_mem_ctx) {
1056 0 : mem_ctx = state->out_mem_ctx;
1057 : } else {
1058 0 : mem_ctx = state;
1059 : }
1060 :
1061 0 : status = dcerpc_winreg_OpenHKU_r_recv(subreq, mem_ctx);
1062 0 : TALLOC_FREE(subreq);
1063 0 : if (tevent_req_nterror(req, status)) {
1064 0 : return;
1065 : }
1066 :
1067 : /* Copy out parameters */
1068 0 : *state->orig.out.handle = *state->tmp.out.handle;
1069 :
1070 : /* Copy result */
1071 0 : state->orig.out.result = state->tmp.out.result;
1072 :
1073 : /* Reset temporary structure */
1074 0 : NDR_ZERO_STRUCT(state->tmp);
1075 :
1076 0 : tevent_req_done(req);
1077 : }
1078 :
1079 0 : NTSTATUS dcerpc_winreg_OpenHKU_recv(struct tevent_req *req,
1080 : TALLOC_CTX *mem_ctx,
1081 : WERROR *result)
1082 : {
1083 0 : struct dcerpc_winreg_OpenHKU_state *state = tevent_req_data(
1084 : req, struct dcerpc_winreg_OpenHKU_state);
1085 0 : NTSTATUS status;
1086 :
1087 0 : if (tevent_req_is_nterror(req, &status)) {
1088 0 : tevent_req_received(req);
1089 0 : return status;
1090 : }
1091 :
1092 : /* Steal possible out parameters to the callers context */
1093 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
1094 :
1095 : /* Return result */
1096 0 : *result = state->orig.out.result;
1097 :
1098 0 : tevent_req_received(req);
1099 0 : return NT_STATUS_OK;
1100 : }
1101 :
1102 0 : NTSTATUS dcerpc_winreg_OpenHKU(struct dcerpc_binding_handle *h,
1103 : TALLOC_CTX *mem_ctx,
1104 : uint16_t *_system_name /* [in] [unique] */,
1105 : uint32_t _access_mask /* [in] */,
1106 : struct policy_handle *_handle /* [out] [ref] */,
1107 : WERROR *result)
1108 : {
1109 0 : struct winreg_OpenHKU r;
1110 0 : NTSTATUS status;
1111 :
1112 : /* In parameters */
1113 0 : r.in.system_name = _system_name;
1114 0 : r.in.access_mask = _access_mask;
1115 :
1116 : /* Out parameters */
1117 0 : r.out.handle = _handle;
1118 :
1119 : /* Result */
1120 0 : NDR_ZERO_STRUCT(r.out.result);
1121 :
1122 0 : status = dcerpc_winreg_OpenHKU_r(h, mem_ctx, &r);
1123 0 : if (!NT_STATUS_IS_OK(status)) {
1124 0 : return status;
1125 : }
1126 :
1127 : /* Return variables */
1128 0 : *_handle = *r.out.handle;
1129 :
1130 : /* Return result */
1131 0 : *result = r.out.result;
1132 :
1133 0 : return NT_STATUS_OK;
1134 : }
1135 :
1136 : struct dcerpc_winreg_CloseKey_r_state {
1137 : TALLOC_CTX *out_mem_ctx;
1138 : };
1139 :
1140 : static void dcerpc_winreg_CloseKey_r_done(struct tevent_req *subreq);
1141 :
1142 0 : struct tevent_req *dcerpc_winreg_CloseKey_r_send(TALLOC_CTX *mem_ctx,
1143 : struct tevent_context *ev,
1144 : struct dcerpc_binding_handle *h,
1145 : struct winreg_CloseKey *r)
1146 : {
1147 0 : struct tevent_req *req;
1148 0 : struct dcerpc_winreg_CloseKey_r_state *state;
1149 0 : struct tevent_req *subreq;
1150 :
1151 0 : req = tevent_req_create(mem_ctx, &state,
1152 : struct dcerpc_winreg_CloseKey_r_state);
1153 0 : if (req == NULL) {
1154 0 : return NULL;
1155 : }
1156 :
1157 0 : state->out_mem_ctx = talloc_new(state);
1158 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
1159 0 : return tevent_req_post(req, ev);
1160 : }
1161 :
1162 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
1163 : NULL, &ndr_table_winreg,
1164 0 : NDR_WINREG_CLOSEKEY, state->out_mem_ctx, r);
1165 0 : if (tevent_req_nomem(subreq, req)) {
1166 0 : return tevent_req_post(req, ev);
1167 : }
1168 0 : tevent_req_set_callback(subreq, dcerpc_winreg_CloseKey_r_done, req);
1169 :
1170 0 : return req;
1171 : }
1172 :
1173 0 : static void dcerpc_winreg_CloseKey_r_done(struct tevent_req *subreq)
1174 : {
1175 0 : struct tevent_req *req =
1176 0 : tevent_req_callback_data(subreq,
1177 : struct tevent_req);
1178 0 : NTSTATUS status;
1179 :
1180 0 : status = dcerpc_binding_handle_call_recv(subreq);
1181 0 : TALLOC_FREE(subreq);
1182 0 : if (tevent_req_nterror(req, status)) {
1183 0 : return;
1184 : }
1185 :
1186 0 : tevent_req_done(req);
1187 : }
1188 :
1189 0 : NTSTATUS dcerpc_winreg_CloseKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
1190 : {
1191 0 : struct dcerpc_winreg_CloseKey_r_state *state =
1192 0 : tevent_req_data(req,
1193 : struct dcerpc_winreg_CloseKey_r_state);
1194 0 : NTSTATUS status;
1195 :
1196 0 : if (tevent_req_is_nterror(req, &status)) {
1197 0 : tevent_req_received(req);
1198 0 : return status;
1199 : }
1200 :
1201 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
1202 :
1203 0 : tevent_req_received(req);
1204 0 : return NT_STATUS_OK;
1205 : }
1206 :
1207 91010 : NTSTATUS dcerpc_winreg_CloseKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_CloseKey *r)
1208 : {
1209 0 : NTSTATUS status;
1210 :
1211 91010 : status = dcerpc_binding_handle_call(h,
1212 : NULL, &ndr_table_winreg,
1213 : NDR_WINREG_CLOSEKEY, mem_ctx, r);
1214 :
1215 91010 : return status;
1216 : }
1217 :
1218 : struct dcerpc_winreg_CloseKey_state {
1219 : struct winreg_CloseKey orig;
1220 : struct winreg_CloseKey tmp;
1221 : TALLOC_CTX *out_mem_ctx;
1222 : };
1223 :
1224 : static void dcerpc_winreg_CloseKey_done(struct tevent_req *subreq);
1225 :
1226 0 : struct tevent_req *dcerpc_winreg_CloseKey_send(TALLOC_CTX *mem_ctx,
1227 : struct tevent_context *ev,
1228 : struct dcerpc_binding_handle *h,
1229 : struct policy_handle *_handle /* [in,out] [ref] */)
1230 : {
1231 0 : struct tevent_req *req;
1232 0 : struct dcerpc_winreg_CloseKey_state *state;
1233 0 : struct tevent_req *subreq;
1234 :
1235 0 : req = tevent_req_create(mem_ctx, &state,
1236 : struct dcerpc_winreg_CloseKey_state);
1237 0 : if (req == NULL) {
1238 0 : return NULL;
1239 : }
1240 0 : state->out_mem_ctx = NULL;
1241 :
1242 : /* In parameters */
1243 0 : state->orig.in.handle = _handle;
1244 :
1245 : /* Out parameters */
1246 0 : state->orig.out.handle = _handle;
1247 :
1248 : /* Result */
1249 0 : NDR_ZERO_STRUCT(state->orig.out.result);
1250 :
1251 0 : state->out_mem_ctx = talloc_named_const(state, 0,
1252 : "dcerpc_winreg_CloseKey_out_memory");
1253 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
1254 0 : return tevent_req_post(req, ev);
1255 : }
1256 :
1257 : /* make a temporary copy, that we pass to the dispatch function */
1258 0 : state->tmp = state->orig;
1259 :
1260 0 : subreq = dcerpc_winreg_CloseKey_r_send(state, ev, h, &state->tmp);
1261 0 : if (tevent_req_nomem(subreq, req)) {
1262 0 : return tevent_req_post(req, ev);
1263 : }
1264 0 : tevent_req_set_callback(subreq, dcerpc_winreg_CloseKey_done, req);
1265 0 : return req;
1266 : }
1267 :
1268 0 : static void dcerpc_winreg_CloseKey_done(struct tevent_req *subreq)
1269 : {
1270 0 : struct tevent_req *req = tevent_req_callback_data(
1271 : subreq, struct tevent_req);
1272 0 : struct dcerpc_winreg_CloseKey_state *state = tevent_req_data(
1273 : req, struct dcerpc_winreg_CloseKey_state);
1274 0 : NTSTATUS status;
1275 0 : TALLOC_CTX *mem_ctx;
1276 :
1277 0 : if (state->out_mem_ctx) {
1278 0 : mem_ctx = state->out_mem_ctx;
1279 : } else {
1280 0 : mem_ctx = state;
1281 : }
1282 :
1283 0 : status = dcerpc_winreg_CloseKey_r_recv(subreq, mem_ctx);
1284 0 : TALLOC_FREE(subreq);
1285 0 : if (tevent_req_nterror(req, status)) {
1286 0 : return;
1287 : }
1288 :
1289 : /* Copy out parameters */
1290 0 : *state->orig.out.handle = *state->tmp.out.handle;
1291 :
1292 : /* Copy result */
1293 0 : state->orig.out.result = state->tmp.out.result;
1294 :
1295 : /* Reset temporary structure */
1296 0 : NDR_ZERO_STRUCT(state->tmp);
1297 :
1298 0 : tevent_req_done(req);
1299 : }
1300 :
1301 0 : NTSTATUS dcerpc_winreg_CloseKey_recv(struct tevent_req *req,
1302 : TALLOC_CTX *mem_ctx,
1303 : WERROR *result)
1304 : {
1305 0 : struct dcerpc_winreg_CloseKey_state *state = tevent_req_data(
1306 : req, struct dcerpc_winreg_CloseKey_state);
1307 0 : NTSTATUS status;
1308 :
1309 0 : if (tevent_req_is_nterror(req, &status)) {
1310 0 : tevent_req_received(req);
1311 0 : return status;
1312 : }
1313 :
1314 : /* Steal possible out parameters to the callers context */
1315 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
1316 :
1317 : /* Return result */
1318 0 : *result = state->orig.out.result;
1319 :
1320 0 : tevent_req_received(req);
1321 0 : return NT_STATUS_OK;
1322 : }
1323 :
1324 89636 : NTSTATUS dcerpc_winreg_CloseKey(struct dcerpc_binding_handle *h,
1325 : TALLOC_CTX *mem_ctx,
1326 : struct policy_handle *_handle /* [in,out] [ref] */,
1327 : WERROR *result)
1328 : {
1329 0 : struct winreg_CloseKey r;
1330 0 : NTSTATUS status;
1331 :
1332 : /* In parameters */
1333 89636 : r.in.handle = _handle;
1334 :
1335 : /* Out parameters */
1336 89636 : r.out.handle = _handle;
1337 :
1338 : /* Result */
1339 89636 : NDR_ZERO_STRUCT(r.out.result);
1340 :
1341 89636 : status = dcerpc_winreg_CloseKey_r(h, mem_ctx, &r);
1342 89636 : if (!NT_STATUS_IS_OK(status)) {
1343 46 : return status;
1344 : }
1345 :
1346 : /* Return variables */
1347 89590 : *_handle = *r.out.handle;
1348 :
1349 : /* Return result */
1350 89590 : *result = r.out.result;
1351 :
1352 89590 : return NT_STATUS_OK;
1353 : }
1354 :
1355 : struct dcerpc_winreg_CreateKey_r_state {
1356 : TALLOC_CTX *out_mem_ctx;
1357 : };
1358 :
1359 : static void dcerpc_winreg_CreateKey_r_done(struct tevent_req *subreq);
1360 :
1361 0 : struct tevent_req *dcerpc_winreg_CreateKey_r_send(TALLOC_CTX *mem_ctx,
1362 : struct tevent_context *ev,
1363 : struct dcerpc_binding_handle *h,
1364 : struct winreg_CreateKey *r)
1365 : {
1366 0 : struct tevent_req *req;
1367 0 : struct dcerpc_winreg_CreateKey_r_state *state;
1368 0 : struct tevent_req *subreq;
1369 :
1370 0 : req = tevent_req_create(mem_ctx, &state,
1371 : struct dcerpc_winreg_CreateKey_r_state);
1372 0 : if (req == NULL) {
1373 0 : return NULL;
1374 : }
1375 :
1376 0 : state->out_mem_ctx = talloc_new(state);
1377 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
1378 0 : return tevent_req_post(req, ev);
1379 : }
1380 :
1381 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
1382 : NULL, &ndr_table_winreg,
1383 0 : NDR_WINREG_CREATEKEY, state->out_mem_ctx, r);
1384 0 : if (tevent_req_nomem(subreq, req)) {
1385 0 : return tevent_req_post(req, ev);
1386 : }
1387 0 : tevent_req_set_callback(subreq, dcerpc_winreg_CreateKey_r_done, req);
1388 :
1389 0 : return req;
1390 : }
1391 :
1392 0 : static void dcerpc_winreg_CreateKey_r_done(struct tevent_req *subreq)
1393 : {
1394 0 : struct tevent_req *req =
1395 0 : tevent_req_callback_data(subreq,
1396 : struct tevent_req);
1397 0 : NTSTATUS status;
1398 :
1399 0 : status = dcerpc_binding_handle_call_recv(subreq);
1400 0 : TALLOC_FREE(subreq);
1401 0 : if (tevent_req_nterror(req, status)) {
1402 0 : return;
1403 : }
1404 :
1405 0 : tevent_req_done(req);
1406 : }
1407 :
1408 0 : NTSTATUS dcerpc_winreg_CreateKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
1409 : {
1410 0 : struct dcerpc_winreg_CreateKey_r_state *state =
1411 0 : tevent_req_data(req,
1412 : struct dcerpc_winreg_CreateKey_r_state);
1413 0 : NTSTATUS status;
1414 :
1415 0 : if (tevent_req_is_nterror(req, &status)) {
1416 0 : tevent_req_received(req);
1417 0 : return status;
1418 : }
1419 :
1420 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
1421 :
1422 0 : tevent_req_received(req);
1423 0 : return NT_STATUS_OK;
1424 : }
1425 :
1426 7897 : NTSTATUS dcerpc_winreg_CreateKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_CreateKey *r)
1427 : {
1428 0 : NTSTATUS status;
1429 :
1430 7897 : status = dcerpc_binding_handle_call(h,
1431 : NULL, &ndr_table_winreg,
1432 : NDR_WINREG_CREATEKEY, mem_ctx, r);
1433 :
1434 7897 : return status;
1435 : }
1436 :
1437 : struct dcerpc_winreg_CreateKey_state {
1438 : struct winreg_CreateKey orig;
1439 : struct winreg_CreateKey tmp;
1440 : TALLOC_CTX *out_mem_ctx;
1441 : };
1442 :
1443 : static void dcerpc_winreg_CreateKey_done(struct tevent_req *subreq);
1444 :
1445 0 : struct tevent_req *dcerpc_winreg_CreateKey_send(TALLOC_CTX *mem_ctx,
1446 : struct tevent_context *ev,
1447 : struct dcerpc_binding_handle *h,
1448 : struct policy_handle *_handle /* [in] [ref] */,
1449 : struct winreg_String _name /* [in] */,
1450 : struct winreg_String _keyclass /* [in] */,
1451 : uint32_t _options /* [in] */,
1452 : uint32_t _access_mask /* [in] */,
1453 : struct winreg_SecBuf *_secdesc /* [in] [unique] */,
1454 : struct policy_handle *_new_handle /* [out] [ref] */,
1455 : enum winreg_CreateAction *_action_taken /* [in,out] [unique] */)
1456 : {
1457 0 : struct tevent_req *req;
1458 0 : struct dcerpc_winreg_CreateKey_state *state;
1459 0 : struct tevent_req *subreq;
1460 :
1461 0 : req = tevent_req_create(mem_ctx, &state,
1462 : struct dcerpc_winreg_CreateKey_state);
1463 0 : if (req == NULL) {
1464 0 : return NULL;
1465 : }
1466 0 : state->out_mem_ctx = NULL;
1467 :
1468 : /* In parameters */
1469 0 : state->orig.in.handle = _handle;
1470 0 : state->orig.in.name = _name;
1471 0 : state->orig.in.keyclass = _keyclass;
1472 0 : state->orig.in.options = _options;
1473 0 : state->orig.in.access_mask = _access_mask;
1474 0 : state->orig.in.secdesc = _secdesc;
1475 0 : state->orig.in.action_taken = _action_taken;
1476 :
1477 : /* Out parameters */
1478 0 : state->orig.out.new_handle = _new_handle;
1479 0 : state->orig.out.action_taken = _action_taken;
1480 :
1481 : /* Result */
1482 0 : NDR_ZERO_STRUCT(state->orig.out.result);
1483 :
1484 0 : state->out_mem_ctx = talloc_named_const(state, 0,
1485 : "dcerpc_winreg_CreateKey_out_memory");
1486 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
1487 0 : return tevent_req_post(req, ev);
1488 : }
1489 :
1490 : /* make a temporary copy, that we pass to the dispatch function */
1491 0 : state->tmp = state->orig;
1492 :
1493 0 : subreq = dcerpc_winreg_CreateKey_r_send(state, ev, h, &state->tmp);
1494 0 : if (tevent_req_nomem(subreq, req)) {
1495 0 : return tevent_req_post(req, ev);
1496 : }
1497 0 : tevent_req_set_callback(subreq, dcerpc_winreg_CreateKey_done, req);
1498 0 : return req;
1499 : }
1500 :
1501 0 : static void dcerpc_winreg_CreateKey_done(struct tevent_req *subreq)
1502 : {
1503 0 : struct tevent_req *req = tevent_req_callback_data(
1504 : subreq, struct tevent_req);
1505 0 : struct dcerpc_winreg_CreateKey_state *state = tevent_req_data(
1506 : req, struct dcerpc_winreg_CreateKey_state);
1507 0 : NTSTATUS status;
1508 0 : TALLOC_CTX *mem_ctx;
1509 :
1510 0 : if (state->out_mem_ctx) {
1511 0 : mem_ctx = state->out_mem_ctx;
1512 : } else {
1513 0 : mem_ctx = state;
1514 : }
1515 :
1516 0 : status = dcerpc_winreg_CreateKey_r_recv(subreq, mem_ctx);
1517 0 : TALLOC_FREE(subreq);
1518 0 : if (tevent_req_nterror(req, status)) {
1519 0 : return;
1520 : }
1521 :
1522 : /* Copy out parameters */
1523 0 : *state->orig.out.new_handle = *state->tmp.out.new_handle;
1524 0 : if (state->orig.out.action_taken && state->tmp.out.action_taken) {
1525 0 : *state->orig.out.action_taken = *state->tmp.out.action_taken;
1526 : }
1527 :
1528 : /* Copy result */
1529 0 : state->orig.out.result = state->tmp.out.result;
1530 :
1531 : /* Reset temporary structure */
1532 0 : NDR_ZERO_STRUCT(state->tmp);
1533 :
1534 0 : tevent_req_done(req);
1535 : }
1536 :
1537 0 : NTSTATUS dcerpc_winreg_CreateKey_recv(struct tevent_req *req,
1538 : TALLOC_CTX *mem_ctx,
1539 : WERROR *result)
1540 : {
1541 0 : struct dcerpc_winreg_CreateKey_state *state = tevent_req_data(
1542 : req, struct dcerpc_winreg_CreateKey_state);
1543 0 : NTSTATUS status;
1544 :
1545 0 : if (tevent_req_is_nterror(req, &status)) {
1546 0 : tevent_req_received(req);
1547 0 : return status;
1548 : }
1549 :
1550 : /* Steal possible out parameters to the callers context */
1551 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
1552 :
1553 : /* Return result */
1554 0 : *result = state->orig.out.result;
1555 :
1556 0 : tevent_req_received(req);
1557 0 : return NT_STATUS_OK;
1558 : }
1559 :
1560 6070 : NTSTATUS dcerpc_winreg_CreateKey(struct dcerpc_binding_handle *h,
1561 : TALLOC_CTX *mem_ctx,
1562 : struct policy_handle *_handle /* [in] [ref] */,
1563 : struct winreg_String _name /* [in] */,
1564 : struct winreg_String _keyclass /* [in] */,
1565 : uint32_t _options /* [in] */,
1566 : uint32_t _access_mask /* [in] */,
1567 : struct winreg_SecBuf *_secdesc /* [in] [unique] */,
1568 : struct policy_handle *_new_handle /* [out] [ref] */,
1569 : enum winreg_CreateAction *_action_taken /* [in,out] [unique] */,
1570 : WERROR *result)
1571 : {
1572 0 : struct winreg_CreateKey r;
1573 0 : NTSTATUS status;
1574 :
1575 : /* In parameters */
1576 6070 : r.in.handle = _handle;
1577 6070 : r.in.name = _name;
1578 6070 : r.in.keyclass = _keyclass;
1579 6070 : r.in.options = _options;
1580 6070 : r.in.access_mask = _access_mask;
1581 6070 : r.in.secdesc = _secdesc;
1582 6070 : r.in.action_taken = _action_taken;
1583 :
1584 : /* Out parameters */
1585 6070 : r.out.new_handle = _new_handle;
1586 6070 : r.out.action_taken = _action_taken;
1587 :
1588 : /* Result */
1589 6070 : NDR_ZERO_STRUCT(r.out.result);
1590 :
1591 6070 : status = dcerpc_winreg_CreateKey_r(h, mem_ctx, &r);
1592 6070 : if (!NT_STATUS_IS_OK(status)) {
1593 0 : return status;
1594 : }
1595 :
1596 : /* Return variables */
1597 6070 : *_new_handle = *r.out.new_handle;
1598 6070 : if (_action_taken && r.out.action_taken) {
1599 6070 : *_action_taken = *r.out.action_taken;
1600 : }
1601 :
1602 : /* Return result */
1603 6070 : *result = r.out.result;
1604 :
1605 6070 : return NT_STATUS_OK;
1606 : }
1607 :
1608 : struct dcerpc_winreg_DeleteKey_r_state {
1609 : TALLOC_CTX *out_mem_ctx;
1610 : };
1611 :
1612 : static void dcerpc_winreg_DeleteKey_r_done(struct tevent_req *subreq);
1613 :
1614 0 : struct tevent_req *dcerpc_winreg_DeleteKey_r_send(TALLOC_CTX *mem_ctx,
1615 : struct tevent_context *ev,
1616 : struct dcerpc_binding_handle *h,
1617 : struct winreg_DeleteKey *r)
1618 : {
1619 0 : struct tevent_req *req;
1620 0 : struct dcerpc_winreg_DeleteKey_r_state *state;
1621 0 : struct tevent_req *subreq;
1622 :
1623 0 : req = tevent_req_create(mem_ctx, &state,
1624 : struct dcerpc_winreg_DeleteKey_r_state);
1625 0 : if (req == NULL) {
1626 0 : return NULL;
1627 : }
1628 :
1629 0 : state->out_mem_ctx = NULL;
1630 :
1631 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
1632 : NULL, &ndr_table_winreg,
1633 : NDR_WINREG_DELETEKEY, state, r);
1634 0 : if (tevent_req_nomem(subreq, req)) {
1635 0 : return tevent_req_post(req, ev);
1636 : }
1637 0 : tevent_req_set_callback(subreq, dcerpc_winreg_DeleteKey_r_done, req);
1638 :
1639 0 : return req;
1640 : }
1641 :
1642 0 : static void dcerpc_winreg_DeleteKey_r_done(struct tevent_req *subreq)
1643 : {
1644 0 : struct tevent_req *req =
1645 0 : tevent_req_callback_data(subreq,
1646 : struct tevent_req);
1647 0 : NTSTATUS status;
1648 :
1649 0 : status = dcerpc_binding_handle_call_recv(subreq);
1650 0 : TALLOC_FREE(subreq);
1651 0 : if (tevent_req_nterror(req, status)) {
1652 0 : return;
1653 : }
1654 :
1655 0 : tevent_req_done(req);
1656 : }
1657 :
1658 0 : NTSTATUS dcerpc_winreg_DeleteKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
1659 : {
1660 0 : struct dcerpc_winreg_DeleteKey_r_state *state =
1661 0 : tevent_req_data(req,
1662 : struct dcerpc_winreg_DeleteKey_r_state);
1663 0 : NTSTATUS status;
1664 :
1665 0 : if (tevent_req_is_nterror(req, &status)) {
1666 0 : tevent_req_received(req);
1667 0 : return status;
1668 : }
1669 :
1670 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
1671 :
1672 0 : tevent_req_received(req);
1673 0 : return NT_STATUS_OK;
1674 : }
1675 :
1676 3754 : NTSTATUS dcerpc_winreg_DeleteKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_DeleteKey *r)
1677 : {
1678 0 : NTSTATUS status;
1679 :
1680 3754 : status = dcerpc_binding_handle_call(h,
1681 : NULL, &ndr_table_winreg,
1682 : NDR_WINREG_DELETEKEY, mem_ctx, r);
1683 :
1684 3754 : return status;
1685 : }
1686 :
1687 : struct dcerpc_winreg_DeleteKey_state {
1688 : struct winreg_DeleteKey orig;
1689 : struct winreg_DeleteKey tmp;
1690 : TALLOC_CTX *out_mem_ctx;
1691 : };
1692 :
1693 : static void dcerpc_winreg_DeleteKey_done(struct tevent_req *subreq);
1694 :
1695 0 : struct tevent_req *dcerpc_winreg_DeleteKey_send(TALLOC_CTX *mem_ctx,
1696 : struct tevent_context *ev,
1697 : struct dcerpc_binding_handle *h,
1698 : struct policy_handle *_handle /* [in] [ref] */,
1699 : struct winreg_String _key /* [in] */)
1700 : {
1701 0 : struct tevent_req *req;
1702 0 : struct dcerpc_winreg_DeleteKey_state *state;
1703 0 : struct tevent_req *subreq;
1704 :
1705 0 : req = tevent_req_create(mem_ctx, &state,
1706 : struct dcerpc_winreg_DeleteKey_state);
1707 0 : if (req == NULL) {
1708 0 : return NULL;
1709 : }
1710 0 : state->out_mem_ctx = NULL;
1711 :
1712 : /* In parameters */
1713 0 : state->orig.in.handle = _handle;
1714 0 : state->orig.in.key = _key;
1715 :
1716 : /* Out parameters */
1717 :
1718 : /* Result */
1719 0 : NDR_ZERO_STRUCT(state->orig.out.result);
1720 :
1721 : /* make a temporary copy, that we pass to the dispatch function */
1722 0 : state->tmp = state->orig;
1723 :
1724 0 : subreq = dcerpc_winreg_DeleteKey_r_send(state, ev, h, &state->tmp);
1725 0 : if (tevent_req_nomem(subreq, req)) {
1726 0 : return tevent_req_post(req, ev);
1727 : }
1728 0 : tevent_req_set_callback(subreq, dcerpc_winreg_DeleteKey_done, req);
1729 0 : return req;
1730 : }
1731 :
1732 0 : static void dcerpc_winreg_DeleteKey_done(struct tevent_req *subreq)
1733 : {
1734 0 : struct tevent_req *req = tevent_req_callback_data(
1735 : subreq, struct tevent_req);
1736 0 : struct dcerpc_winreg_DeleteKey_state *state = tevent_req_data(
1737 : req, struct dcerpc_winreg_DeleteKey_state);
1738 0 : NTSTATUS status;
1739 0 : TALLOC_CTX *mem_ctx;
1740 :
1741 0 : if (state->out_mem_ctx) {
1742 0 : mem_ctx = state->out_mem_ctx;
1743 : } else {
1744 0 : mem_ctx = state;
1745 : }
1746 :
1747 0 : status = dcerpc_winreg_DeleteKey_r_recv(subreq, mem_ctx);
1748 0 : TALLOC_FREE(subreq);
1749 0 : if (tevent_req_nterror(req, status)) {
1750 0 : return;
1751 : }
1752 :
1753 : /* Copy out parameters */
1754 :
1755 : /* Copy result */
1756 0 : state->orig.out.result = state->tmp.out.result;
1757 :
1758 : /* Reset temporary structure */
1759 0 : NDR_ZERO_STRUCT(state->tmp);
1760 :
1761 0 : tevent_req_done(req);
1762 : }
1763 :
1764 0 : NTSTATUS dcerpc_winreg_DeleteKey_recv(struct tevent_req *req,
1765 : TALLOC_CTX *mem_ctx,
1766 : WERROR *result)
1767 : {
1768 0 : struct dcerpc_winreg_DeleteKey_state *state = tevent_req_data(
1769 : req, struct dcerpc_winreg_DeleteKey_state);
1770 0 : NTSTATUS status;
1771 :
1772 0 : if (tevent_req_is_nterror(req, &status)) {
1773 0 : tevent_req_received(req);
1774 0 : return status;
1775 : }
1776 :
1777 : /* Steal possible out parameters to the callers context */
1778 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
1779 :
1780 : /* Return result */
1781 0 : *result = state->orig.out.result;
1782 :
1783 0 : tevent_req_received(req);
1784 0 : return NT_STATUS_OK;
1785 : }
1786 :
1787 970 : NTSTATUS dcerpc_winreg_DeleteKey(struct dcerpc_binding_handle *h,
1788 : TALLOC_CTX *mem_ctx,
1789 : struct policy_handle *_handle /* [in] [ref] */,
1790 : struct winreg_String _key /* [in] */,
1791 : WERROR *result)
1792 : {
1793 0 : struct winreg_DeleteKey r;
1794 0 : NTSTATUS status;
1795 :
1796 : /* In parameters */
1797 970 : r.in.handle = _handle;
1798 970 : r.in.key = _key;
1799 :
1800 : /* Out parameters */
1801 :
1802 : /* Result */
1803 970 : NDR_ZERO_STRUCT(r.out.result);
1804 :
1805 970 : status = dcerpc_winreg_DeleteKey_r(h, mem_ctx, &r);
1806 970 : if (!NT_STATUS_IS_OK(status)) {
1807 0 : return status;
1808 : }
1809 :
1810 : /* Return variables */
1811 :
1812 : /* Return result */
1813 970 : *result = r.out.result;
1814 :
1815 970 : return NT_STATUS_OK;
1816 : }
1817 :
1818 : struct dcerpc_winreg_DeleteValue_r_state {
1819 : TALLOC_CTX *out_mem_ctx;
1820 : };
1821 :
1822 : static void dcerpc_winreg_DeleteValue_r_done(struct tevent_req *subreq);
1823 :
1824 0 : struct tevent_req *dcerpc_winreg_DeleteValue_r_send(TALLOC_CTX *mem_ctx,
1825 : struct tevent_context *ev,
1826 : struct dcerpc_binding_handle *h,
1827 : struct winreg_DeleteValue *r)
1828 : {
1829 0 : struct tevent_req *req;
1830 0 : struct dcerpc_winreg_DeleteValue_r_state *state;
1831 0 : struct tevent_req *subreq;
1832 :
1833 0 : req = tevent_req_create(mem_ctx, &state,
1834 : struct dcerpc_winreg_DeleteValue_r_state);
1835 0 : if (req == NULL) {
1836 0 : return NULL;
1837 : }
1838 :
1839 0 : state->out_mem_ctx = NULL;
1840 :
1841 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
1842 : NULL, &ndr_table_winreg,
1843 : NDR_WINREG_DELETEVALUE, state, r);
1844 0 : if (tevent_req_nomem(subreq, req)) {
1845 0 : return tevent_req_post(req, ev);
1846 : }
1847 0 : tevent_req_set_callback(subreq, dcerpc_winreg_DeleteValue_r_done, req);
1848 :
1849 0 : return req;
1850 : }
1851 :
1852 0 : static void dcerpc_winreg_DeleteValue_r_done(struct tevent_req *subreq)
1853 : {
1854 0 : struct tevent_req *req =
1855 0 : tevent_req_callback_data(subreq,
1856 : struct tevent_req);
1857 0 : NTSTATUS status;
1858 :
1859 0 : status = dcerpc_binding_handle_call_recv(subreq);
1860 0 : TALLOC_FREE(subreq);
1861 0 : if (tevent_req_nterror(req, status)) {
1862 0 : return;
1863 : }
1864 :
1865 0 : tevent_req_done(req);
1866 : }
1867 :
1868 0 : NTSTATUS dcerpc_winreg_DeleteValue_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
1869 : {
1870 0 : struct dcerpc_winreg_DeleteValue_r_state *state =
1871 0 : tevent_req_data(req,
1872 : struct dcerpc_winreg_DeleteValue_r_state);
1873 0 : NTSTATUS status;
1874 :
1875 0 : if (tevent_req_is_nterror(req, &status)) {
1876 0 : tevent_req_received(req);
1877 0 : return status;
1878 : }
1879 :
1880 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
1881 :
1882 0 : tevent_req_received(req);
1883 0 : return NT_STATUS_OK;
1884 : }
1885 :
1886 5560 : NTSTATUS dcerpc_winreg_DeleteValue_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_DeleteValue *r)
1887 : {
1888 0 : NTSTATUS status;
1889 :
1890 5560 : status = dcerpc_binding_handle_call(h,
1891 : NULL, &ndr_table_winreg,
1892 : NDR_WINREG_DELETEVALUE, mem_ctx, r);
1893 :
1894 5560 : return status;
1895 : }
1896 :
1897 : struct dcerpc_winreg_DeleteValue_state {
1898 : struct winreg_DeleteValue orig;
1899 : struct winreg_DeleteValue tmp;
1900 : TALLOC_CTX *out_mem_ctx;
1901 : };
1902 :
1903 : static void dcerpc_winreg_DeleteValue_done(struct tevent_req *subreq);
1904 :
1905 0 : struct tevent_req *dcerpc_winreg_DeleteValue_send(TALLOC_CTX *mem_ctx,
1906 : struct tevent_context *ev,
1907 : struct dcerpc_binding_handle *h,
1908 : struct policy_handle *_handle /* [in] [ref] */,
1909 : struct winreg_String _value /* [in] */)
1910 : {
1911 0 : struct tevent_req *req;
1912 0 : struct dcerpc_winreg_DeleteValue_state *state;
1913 0 : struct tevent_req *subreq;
1914 :
1915 0 : req = tevent_req_create(mem_ctx, &state,
1916 : struct dcerpc_winreg_DeleteValue_state);
1917 0 : if (req == NULL) {
1918 0 : return NULL;
1919 : }
1920 0 : state->out_mem_ctx = NULL;
1921 :
1922 : /* In parameters */
1923 0 : state->orig.in.handle = _handle;
1924 0 : state->orig.in.value = _value;
1925 :
1926 : /* Out parameters */
1927 :
1928 : /* Result */
1929 0 : NDR_ZERO_STRUCT(state->orig.out.result);
1930 :
1931 : /* make a temporary copy, that we pass to the dispatch function */
1932 0 : state->tmp = state->orig;
1933 :
1934 0 : subreq = dcerpc_winreg_DeleteValue_r_send(state, ev, h, &state->tmp);
1935 0 : if (tevent_req_nomem(subreq, req)) {
1936 0 : return tevent_req_post(req, ev);
1937 : }
1938 0 : tevent_req_set_callback(subreq, dcerpc_winreg_DeleteValue_done, req);
1939 0 : return req;
1940 : }
1941 :
1942 0 : static void dcerpc_winreg_DeleteValue_done(struct tevent_req *subreq)
1943 : {
1944 0 : struct tevent_req *req = tevent_req_callback_data(
1945 : subreq, struct tevent_req);
1946 0 : struct dcerpc_winreg_DeleteValue_state *state = tevent_req_data(
1947 : req, struct dcerpc_winreg_DeleteValue_state);
1948 0 : NTSTATUS status;
1949 0 : TALLOC_CTX *mem_ctx;
1950 :
1951 0 : if (state->out_mem_ctx) {
1952 0 : mem_ctx = state->out_mem_ctx;
1953 : } else {
1954 0 : mem_ctx = state;
1955 : }
1956 :
1957 0 : status = dcerpc_winreg_DeleteValue_r_recv(subreq, mem_ctx);
1958 0 : TALLOC_FREE(subreq);
1959 0 : if (tevent_req_nterror(req, status)) {
1960 0 : return;
1961 : }
1962 :
1963 : /* Copy out parameters */
1964 :
1965 : /* Copy result */
1966 0 : state->orig.out.result = state->tmp.out.result;
1967 :
1968 : /* Reset temporary structure */
1969 0 : NDR_ZERO_STRUCT(state->tmp);
1970 :
1971 0 : tevent_req_done(req);
1972 : }
1973 :
1974 0 : NTSTATUS dcerpc_winreg_DeleteValue_recv(struct tevent_req *req,
1975 : TALLOC_CTX *mem_ctx,
1976 : WERROR *result)
1977 : {
1978 0 : struct dcerpc_winreg_DeleteValue_state *state = tevent_req_data(
1979 : req, struct dcerpc_winreg_DeleteValue_state);
1980 0 : NTSTATUS status;
1981 :
1982 0 : if (tevent_req_is_nterror(req, &status)) {
1983 0 : tevent_req_received(req);
1984 0 : return status;
1985 : }
1986 :
1987 : /* Steal possible out parameters to the callers context */
1988 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
1989 :
1990 : /* Return result */
1991 0 : *result = state->orig.out.result;
1992 :
1993 0 : tevent_req_received(req);
1994 0 : return NT_STATUS_OK;
1995 : }
1996 :
1997 1720 : NTSTATUS dcerpc_winreg_DeleteValue(struct dcerpc_binding_handle *h,
1998 : TALLOC_CTX *mem_ctx,
1999 : struct policy_handle *_handle /* [in] [ref] */,
2000 : struct winreg_String _value /* [in] */,
2001 : WERROR *result)
2002 : {
2003 0 : struct winreg_DeleteValue r;
2004 0 : NTSTATUS status;
2005 :
2006 : /* In parameters */
2007 1720 : r.in.handle = _handle;
2008 1720 : r.in.value = _value;
2009 :
2010 : /* Out parameters */
2011 :
2012 : /* Result */
2013 1720 : NDR_ZERO_STRUCT(r.out.result);
2014 :
2015 1720 : status = dcerpc_winreg_DeleteValue_r(h, mem_ctx, &r);
2016 1720 : if (!NT_STATUS_IS_OK(status)) {
2017 0 : return status;
2018 : }
2019 :
2020 : /* Return variables */
2021 :
2022 : /* Return result */
2023 1720 : *result = r.out.result;
2024 :
2025 1720 : return NT_STATUS_OK;
2026 : }
2027 :
2028 : struct dcerpc_winreg_EnumKey_r_state {
2029 : TALLOC_CTX *out_mem_ctx;
2030 : };
2031 :
2032 : static void dcerpc_winreg_EnumKey_r_done(struct tevent_req *subreq);
2033 :
2034 0 : struct tevent_req *dcerpc_winreg_EnumKey_r_send(TALLOC_CTX *mem_ctx,
2035 : struct tevent_context *ev,
2036 : struct dcerpc_binding_handle *h,
2037 : struct winreg_EnumKey *r)
2038 : {
2039 0 : struct tevent_req *req;
2040 0 : struct dcerpc_winreg_EnumKey_r_state *state;
2041 0 : struct tevent_req *subreq;
2042 :
2043 0 : req = tevent_req_create(mem_ctx, &state,
2044 : struct dcerpc_winreg_EnumKey_r_state);
2045 0 : if (req == NULL) {
2046 0 : return NULL;
2047 : }
2048 :
2049 0 : state->out_mem_ctx = talloc_new(state);
2050 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
2051 0 : return tevent_req_post(req, ev);
2052 : }
2053 :
2054 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
2055 : NULL, &ndr_table_winreg,
2056 0 : NDR_WINREG_ENUMKEY, state->out_mem_ctx, r);
2057 0 : if (tevent_req_nomem(subreq, req)) {
2058 0 : return tevent_req_post(req, ev);
2059 : }
2060 0 : tevent_req_set_callback(subreq, dcerpc_winreg_EnumKey_r_done, req);
2061 :
2062 0 : return req;
2063 : }
2064 :
2065 0 : static void dcerpc_winreg_EnumKey_r_done(struct tevent_req *subreq)
2066 : {
2067 0 : struct tevent_req *req =
2068 0 : tevent_req_callback_data(subreq,
2069 : struct tevent_req);
2070 0 : NTSTATUS status;
2071 :
2072 0 : status = dcerpc_binding_handle_call_recv(subreq);
2073 0 : TALLOC_FREE(subreq);
2074 0 : if (tevent_req_nterror(req, status)) {
2075 0 : return;
2076 : }
2077 :
2078 0 : tevent_req_done(req);
2079 : }
2080 :
2081 0 : NTSTATUS dcerpc_winreg_EnumKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
2082 : {
2083 0 : struct dcerpc_winreg_EnumKey_r_state *state =
2084 0 : tevent_req_data(req,
2085 : struct dcerpc_winreg_EnumKey_r_state);
2086 0 : NTSTATUS status;
2087 :
2088 0 : if (tevent_req_is_nterror(req, &status)) {
2089 0 : tevent_req_received(req);
2090 0 : return status;
2091 : }
2092 :
2093 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
2094 :
2095 0 : tevent_req_received(req);
2096 0 : return NT_STATUS_OK;
2097 : }
2098 :
2099 66459 : NTSTATUS dcerpc_winreg_EnumKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_EnumKey *r)
2100 : {
2101 0 : NTSTATUS status;
2102 :
2103 66459 : status = dcerpc_binding_handle_call(h,
2104 : NULL, &ndr_table_winreg,
2105 : NDR_WINREG_ENUMKEY, mem_ctx, r);
2106 :
2107 66459 : return status;
2108 : }
2109 :
2110 : struct dcerpc_winreg_EnumKey_state {
2111 : struct winreg_EnumKey orig;
2112 : struct winreg_EnumKey tmp;
2113 : TALLOC_CTX *out_mem_ctx;
2114 : };
2115 :
2116 : static void dcerpc_winreg_EnumKey_done(struct tevent_req *subreq);
2117 :
2118 0 : struct tevent_req *dcerpc_winreg_EnumKey_send(TALLOC_CTX *mem_ctx,
2119 : struct tevent_context *ev,
2120 : struct dcerpc_binding_handle *h,
2121 : struct policy_handle *_handle /* [in] [ref] */,
2122 : uint32_t _enum_index /* [in] */,
2123 : struct winreg_StringBuf *_name /* [in,out] [ref] */,
2124 : struct winreg_StringBuf *_keyclass /* [in,out] [unique] */,
2125 : NTTIME *_last_changed_time /* [in,out] [unique] */)
2126 : {
2127 0 : struct tevent_req *req;
2128 0 : struct dcerpc_winreg_EnumKey_state *state;
2129 0 : struct tevent_req *subreq;
2130 :
2131 0 : req = tevent_req_create(mem_ctx, &state,
2132 : struct dcerpc_winreg_EnumKey_state);
2133 0 : if (req == NULL) {
2134 0 : return NULL;
2135 : }
2136 0 : state->out_mem_ctx = NULL;
2137 :
2138 : /* In parameters */
2139 0 : state->orig.in.handle = _handle;
2140 0 : state->orig.in.enum_index = _enum_index;
2141 0 : state->orig.in.name = _name;
2142 0 : state->orig.in.keyclass = _keyclass;
2143 0 : state->orig.in.last_changed_time = _last_changed_time;
2144 :
2145 : /* Out parameters */
2146 0 : state->orig.out.name = _name;
2147 0 : state->orig.out.keyclass = _keyclass;
2148 0 : state->orig.out.last_changed_time = _last_changed_time;
2149 :
2150 : /* Result */
2151 0 : NDR_ZERO_STRUCT(state->orig.out.result);
2152 :
2153 0 : state->out_mem_ctx = talloc_named_const(state, 0,
2154 : "dcerpc_winreg_EnumKey_out_memory");
2155 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
2156 0 : return tevent_req_post(req, ev);
2157 : }
2158 :
2159 : /* make a temporary copy, that we pass to the dispatch function */
2160 0 : state->tmp = state->orig;
2161 :
2162 0 : subreq = dcerpc_winreg_EnumKey_r_send(state, ev, h, &state->tmp);
2163 0 : if (tevent_req_nomem(subreq, req)) {
2164 0 : return tevent_req_post(req, ev);
2165 : }
2166 0 : tevent_req_set_callback(subreq, dcerpc_winreg_EnumKey_done, req);
2167 0 : return req;
2168 : }
2169 :
2170 0 : static void dcerpc_winreg_EnumKey_done(struct tevent_req *subreq)
2171 : {
2172 0 : struct tevent_req *req = tevent_req_callback_data(
2173 : subreq, struct tevent_req);
2174 0 : struct dcerpc_winreg_EnumKey_state *state = tevent_req_data(
2175 : req, struct dcerpc_winreg_EnumKey_state);
2176 0 : NTSTATUS status;
2177 0 : TALLOC_CTX *mem_ctx;
2178 :
2179 0 : if (state->out_mem_ctx) {
2180 0 : mem_ctx = state->out_mem_ctx;
2181 : } else {
2182 0 : mem_ctx = state;
2183 : }
2184 :
2185 0 : status = dcerpc_winreg_EnumKey_r_recv(subreq, mem_ctx);
2186 0 : TALLOC_FREE(subreq);
2187 0 : if (tevent_req_nterror(req, status)) {
2188 0 : return;
2189 : }
2190 :
2191 : /* Copy out parameters */
2192 0 : *state->orig.out.name = *state->tmp.out.name;
2193 0 : if (state->orig.out.keyclass && state->tmp.out.keyclass) {
2194 0 : *state->orig.out.keyclass = *state->tmp.out.keyclass;
2195 : }
2196 0 : if (state->orig.out.last_changed_time && state->tmp.out.last_changed_time) {
2197 0 : *state->orig.out.last_changed_time = *state->tmp.out.last_changed_time;
2198 : }
2199 :
2200 : /* Copy result */
2201 0 : state->orig.out.result = state->tmp.out.result;
2202 :
2203 : /* Reset temporary structure */
2204 0 : NDR_ZERO_STRUCT(state->tmp);
2205 :
2206 0 : tevent_req_done(req);
2207 : }
2208 :
2209 0 : NTSTATUS dcerpc_winreg_EnumKey_recv(struct tevent_req *req,
2210 : TALLOC_CTX *mem_ctx,
2211 : WERROR *result)
2212 : {
2213 0 : struct dcerpc_winreg_EnumKey_state *state = tevent_req_data(
2214 : req, struct dcerpc_winreg_EnumKey_state);
2215 0 : NTSTATUS status;
2216 :
2217 0 : if (tevent_req_is_nterror(req, &status)) {
2218 0 : tevent_req_received(req);
2219 0 : return status;
2220 : }
2221 :
2222 : /* Steal possible out parameters to the callers context */
2223 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
2224 :
2225 : /* Return result */
2226 0 : *result = state->orig.out.result;
2227 :
2228 0 : tevent_req_received(req);
2229 0 : return NT_STATUS_OK;
2230 : }
2231 :
2232 65822 : NTSTATUS dcerpc_winreg_EnumKey(struct dcerpc_binding_handle *h,
2233 : TALLOC_CTX *mem_ctx,
2234 : struct policy_handle *_handle /* [in] [ref] */,
2235 : uint32_t _enum_index /* [in] */,
2236 : struct winreg_StringBuf *_name /* [in,out] [ref] */,
2237 : struct winreg_StringBuf *_keyclass /* [in,out] [unique] */,
2238 : NTTIME *_last_changed_time /* [in,out] [unique] */,
2239 : WERROR *result)
2240 : {
2241 0 : struct winreg_EnumKey r;
2242 0 : NTSTATUS status;
2243 :
2244 : /* In parameters */
2245 65822 : r.in.handle = _handle;
2246 65822 : r.in.enum_index = _enum_index;
2247 65822 : r.in.name = _name;
2248 65822 : r.in.keyclass = _keyclass;
2249 65822 : r.in.last_changed_time = _last_changed_time;
2250 :
2251 : /* Out parameters */
2252 65822 : r.out.name = _name;
2253 65822 : r.out.keyclass = _keyclass;
2254 65822 : r.out.last_changed_time = _last_changed_time;
2255 :
2256 : /* Result */
2257 65822 : NDR_ZERO_STRUCT(r.out.result);
2258 :
2259 65822 : status = dcerpc_winreg_EnumKey_r(h, mem_ctx, &r);
2260 65822 : if (!NT_STATUS_IS_OK(status)) {
2261 0 : return status;
2262 : }
2263 :
2264 : /* Return variables */
2265 65822 : *_name = *r.out.name;
2266 65822 : if (_keyclass && r.out.keyclass) {
2267 65822 : *_keyclass = *r.out.keyclass;
2268 : }
2269 65822 : if (_last_changed_time && r.out.last_changed_time) {
2270 65822 : *_last_changed_time = *r.out.last_changed_time;
2271 : }
2272 :
2273 : /* Return result */
2274 65822 : *result = r.out.result;
2275 :
2276 65822 : return NT_STATUS_OK;
2277 : }
2278 :
2279 : struct dcerpc_winreg_EnumValue_r_state {
2280 : TALLOC_CTX *out_mem_ctx;
2281 : };
2282 :
2283 : static void dcerpc_winreg_EnumValue_r_done(struct tevent_req *subreq);
2284 :
2285 0 : struct tevent_req *dcerpc_winreg_EnumValue_r_send(TALLOC_CTX *mem_ctx,
2286 : struct tevent_context *ev,
2287 : struct dcerpc_binding_handle *h,
2288 : struct winreg_EnumValue *r)
2289 : {
2290 0 : struct tevent_req *req;
2291 0 : struct dcerpc_winreg_EnumValue_r_state *state;
2292 0 : struct tevent_req *subreq;
2293 :
2294 0 : req = tevent_req_create(mem_ctx, &state,
2295 : struct dcerpc_winreg_EnumValue_r_state);
2296 0 : if (req == NULL) {
2297 0 : return NULL;
2298 : }
2299 :
2300 0 : state->out_mem_ctx = talloc_new(state);
2301 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
2302 0 : return tevent_req_post(req, ev);
2303 : }
2304 :
2305 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
2306 : NULL, &ndr_table_winreg,
2307 0 : NDR_WINREG_ENUMVALUE, state->out_mem_ctx, r);
2308 0 : if (tevent_req_nomem(subreq, req)) {
2309 0 : return tevent_req_post(req, ev);
2310 : }
2311 0 : tevent_req_set_callback(subreq, dcerpc_winreg_EnumValue_r_done, req);
2312 :
2313 0 : return req;
2314 : }
2315 :
2316 0 : static void dcerpc_winreg_EnumValue_r_done(struct tevent_req *subreq)
2317 : {
2318 0 : struct tevent_req *req =
2319 0 : tevent_req_callback_data(subreq,
2320 : struct tevent_req);
2321 0 : NTSTATUS status;
2322 :
2323 0 : status = dcerpc_binding_handle_call_recv(subreq);
2324 0 : TALLOC_FREE(subreq);
2325 0 : if (tevent_req_nterror(req, status)) {
2326 0 : return;
2327 : }
2328 :
2329 0 : tevent_req_done(req);
2330 : }
2331 :
2332 0 : NTSTATUS dcerpc_winreg_EnumValue_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
2333 : {
2334 0 : struct dcerpc_winreg_EnumValue_r_state *state =
2335 0 : tevent_req_data(req,
2336 : struct dcerpc_winreg_EnumValue_r_state);
2337 0 : NTSTATUS status;
2338 :
2339 0 : if (tevent_req_is_nterror(req, &status)) {
2340 0 : tevent_req_received(req);
2341 0 : return status;
2342 : }
2343 :
2344 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
2345 :
2346 0 : tevent_req_received(req);
2347 0 : return NT_STATUS_OK;
2348 : }
2349 :
2350 194707 : NTSTATUS dcerpc_winreg_EnumValue_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_EnumValue *r)
2351 : {
2352 0 : NTSTATUS status;
2353 :
2354 194707 : status = dcerpc_binding_handle_call(h,
2355 : NULL, &ndr_table_winreg,
2356 : NDR_WINREG_ENUMVALUE, mem_ctx, r);
2357 :
2358 194707 : return status;
2359 : }
2360 :
2361 : struct dcerpc_winreg_EnumValue_state {
2362 : struct winreg_EnumValue orig;
2363 : struct winreg_EnumValue tmp;
2364 : TALLOC_CTX *out_mem_ctx;
2365 : };
2366 :
2367 : static void dcerpc_winreg_EnumValue_done(struct tevent_req *subreq);
2368 :
2369 0 : struct tevent_req *dcerpc_winreg_EnumValue_send(TALLOC_CTX *mem_ctx,
2370 : struct tevent_context *ev,
2371 : struct dcerpc_binding_handle *h,
2372 : struct policy_handle *_handle /* [in] [ref] */,
2373 : uint32_t _enum_index /* [in] */,
2374 : struct winreg_ValNameBuf *_name /* [in,out] [ref] */,
2375 : enum winreg_Type *_type /* [in,out] [unique] */,
2376 : uint8_t *_value /* [in,out] [length_is(length?*length:0),range(0,0x4000000),size_is(size?*size:0),unique] */,
2377 : uint32_t *_size /* [in,out] [unique] */,
2378 : uint32_t *_length /* [in,out] [unique] */)
2379 : {
2380 0 : struct tevent_req *req;
2381 0 : struct dcerpc_winreg_EnumValue_state *state;
2382 0 : struct tevent_req *subreq;
2383 :
2384 0 : req = tevent_req_create(mem_ctx, &state,
2385 : struct dcerpc_winreg_EnumValue_state);
2386 0 : if (req == NULL) {
2387 0 : return NULL;
2388 : }
2389 0 : state->out_mem_ctx = NULL;
2390 :
2391 : /* In parameters */
2392 0 : state->orig.in.handle = _handle;
2393 0 : state->orig.in.enum_index = _enum_index;
2394 0 : state->orig.in.name = _name;
2395 0 : state->orig.in.type = _type;
2396 0 : state->orig.in.value = _value;
2397 0 : state->orig.in.size = _size;
2398 0 : state->orig.in.length = _length;
2399 :
2400 : /* Out parameters */
2401 0 : state->orig.out.name = _name;
2402 0 : state->orig.out.type = _type;
2403 0 : state->orig.out.value = _value;
2404 0 : state->orig.out.size = _size;
2405 0 : state->orig.out.length = _length;
2406 :
2407 : /* Result */
2408 0 : NDR_ZERO_STRUCT(state->orig.out.result);
2409 :
2410 0 : state->out_mem_ctx = talloc_named_const(state, 0,
2411 : "dcerpc_winreg_EnumValue_out_memory");
2412 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
2413 0 : return tevent_req_post(req, ev);
2414 : }
2415 :
2416 : /* make a temporary copy, that we pass to the dispatch function */
2417 0 : state->tmp = state->orig;
2418 :
2419 0 : subreq = dcerpc_winreg_EnumValue_r_send(state, ev, h, &state->tmp);
2420 0 : if (tevent_req_nomem(subreq, req)) {
2421 0 : return tevent_req_post(req, ev);
2422 : }
2423 0 : tevent_req_set_callback(subreq, dcerpc_winreg_EnumValue_done, req);
2424 0 : return req;
2425 : }
2426 :
2427 0 : static void dcerpc_winreg_EnumValue_done(struct tevent_req *subreq)
2428 : {
2429 0 : struct tevent_req *req = tevent_req_callback_data(
2430 : subreq, struct tevent_req);
2431 0 : struct dcerpc_winreg_EnumValue_state *state = tevent_req_data(
2432 : req, struct dcerpc_winreg_EnumValue_state);
2433 0 : NTSTATUS status;
2434 0 : TALLOC_CTX *mem_ctx;
2435 :
2436 0 : if (state->out_mem_ctx) {
2437 0 : mem_ctx = state->out_mem_ctx;
2438 : } else {
2439 0 : mem_ctx = state;
2440 : }
2441 :
2442 0 : status = dcerpc_winreg_EnumValue_r_recv(subreq, mem_ctx);
2443 0 : TALLOC_FREE(subreq);
2444 0 : if (tevent_req_nterror(req, status)) {
2445 0 : return;
2446 : }
2447 :
2448 : /* Copy out parameters */
2449 0 : *state->orig.out.name = *state->tmp.out.name;
2450 0 : if (state->orig.out.type && state->tmp.out.type) {
2451 0 : *state->orig.out.type = *state->tmp.out.type;
2452 : }
2453 0 : if (state->orig.out.value && state->tmp.out.value) {
2454 : {
2455 0 : size_t _copy_len_value;
2456 0 : if ((state->tmp.out.size?*state->tmp.out.size:0) > (state->tmp.in.size?*state->tmp.in.size:0)) {
2457 0 : tevent_req_nterror(req, NT_STATUS_INVALID_NETWORK_RESPONSE);
2458 0 : return;
2459 : }
2460 0 : if ((state->tmp.out.length?*state->tmp.out.length:0) > (state->tmp.out.size?*state->tmp.out.size:0)) {
2461 0 : tevent_req_nterror(req, NT_STATUS_INVALID_NETWORK_RESPONSE);
2462 0 : return;
2463 : }
2464 0 : _copy_len_value = state->tmp.out.length?*state->tmp.out.length:0;
2465 0 : if (state->orig.out.value != state->tmp.out.value) {
2466 0 : memcpy(state->orig.out.value, state->tmp.out.value, _copy_len_value * sizeof(*state->orig.out.value));
2467 : }
2468 : }
2469 : }
2470 0 : if (state->orig.out.size && state->tmp.out.size) {
2471 0 : *state->orig.out.size = *state->tmp.out.size;
2472 : }
2473 0 : if (state->orig.out.length && state->tmp.out.length) {
2474 0 : *state->orig.out.length = *state->tmp.out.length;
2475 : }
2476 :
2477 : /* Copy result */
2478 0 : state->orig.out.result = state->tmp.out.result;
2479 :
2480 : /* Reset temporary structure */
2481 0 : NDR_ZERO_STRUCT(state->tmp);
2482 :
2483 0 : tevent_req_done(req);
2484 : }
2485 :
2486 0 : NTSTATUS dcerpc_winreg_EnumValue_recv(struct tevent_req *req,
2487 : TALLOC_CTX *mem_ctx,
2488 : WERROR *result)
2489 : {
2490 0 : struct dcerpc_winreg_EnumValue_state *state = tevent_req_data(
2491 : req, struct dcerpc_winreg_EnumValue_state);
2492 0 : NTSTATUS status;
2493 :
2494 0 : if (tevent_req_is_nterror(req, &status)) {
2495 0 : tevent_req_received(req);
2496 0 : return status;
2497 : }
2498 :
2499 : /* Steal possible out parameters to the callers context */
2500 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
2501 :
2502 : /* Return result */
2503 0 : *result = state->orig.out.result;
2504 :
2505 0 : tevent_req_received(req);
2506 0 : return NT_STATUS_OK;
2507 : }
2508 :
2509 190298 : NTSTATUS dcerpc_winreg_EnumValue(struct dcerpc_binding_handle *h,
2510 : TALLOC_CTX *mem_ctx,
2511 : struct policy_handle *_handle /* [in] [ref] */,
2512 : uint32_t _enum_index /* [in] */,
2513 : struct winreg_ValNameBuf *_name /* [in,out] [ref] */,
2514 : enum winreg_Type *_type /* [in,out] [unique] */,
2515 : uint8_t *_value /* [in,out] [length_is(length?*length:0),range(0,0x4000000),size_is(size?*size:0),unique] */,
2516 : uint32_t *_size /* [in,out] [unique] */,
2517 : uint32_t *_length /* [in,out] [unique] */,
2518 : WERROR *result)
2519 : {
2520 0 : struct winreg_EnumValue r;
2521 0 : NTSTATUS status;
2522 :
2523 : /* In parameters */
2524 190298 : r.in.handle = _handle;
2525 190298 : r.in.enum_index = _enum_index;
2526 190298 : r.in.name = _name;
2527 190298 : r.in.type = _type;
2528 190298 : r.in.value = _value;
2529 190298 : r.in.size = _size;
2530 190298 : r.in.length = _length;
2531 :
2532 : /* Out parameters */
2533 190298 : r.out.name = _name;
2534 190298 : r.out.type = _type;
2535 190298 : r.out.value = _value;
2536 190298 : r.out.size = _size;
2537 190298 : r.out.length = _length;
2538 :
2539 : /* Result */
2540 190298 : NDR_ZERO_STRUCT(r.out.result);
2541 :
2542 190298 : status = dcerpc_winreg_EnumValue_r(h, mem_ctx, &r);
2543 190298 : if (!NT_STATUS_IS_OK(status)) {
2544 0 : return status;
2545 : }
2546 :
2547 : /* Return variables */
2548 190298 : *_name = *r.out.name;
2549 190298 : if (_type && r.out.type) {
2550 190298 : *_type = *r.out.type;
2551 : }
2552 190298 : if (_value && r.out.value) {
2553 : {
2554 0 : size_t _copy_len_value;
2555 190226 : if ((r.out.size?*r.out.size:0) > (r.in.size?*r.in.size:0)) {
2556 0 : return NT_STATUS_INVALID_NETWORK_RESPONSE;
2557 : }
2558 190226 : if ((r.out.length?*r.out.length:0) > (r.out.size?*r.out.size:0)) {
2559 0 : return NT_STATUS_INVALID_NETWORK_RESPONSE;
2560 : }
2561 190226 : _copy_len_value = r.out.length?*r.out.length:0;
2562 190226 : if (_value != r.out.value) {
2563 190226 : memcpy(_value, r.out.value, _copy_len_value * sizeof(*_value));
2564 : }
2565 : }
2566 : }
2567 190298 : if (_size && r.out.size) {
2568 190226 : *_size = *r.out.size;
2569 : }
2570 190298 : if (_length && r.out.length) {
2571 190298 : *_length = *r.out.length;
2572 : }
2573 :
2574 : /* Return result */
2575 190298 : *result = r.out.result;
2576 :
2577 190298 : return NT_STATUS_OK;
2578 : }
2579 :
2580 : struct dcerpc_winreg_FlushKey_r_state {
2581 : TALLOC_CTX *out_mem_ctx;
2582 : };
2583 :
2584 : static void dcerpc_winreg_FlushKey_r_done(struct tevent_req *subreq);
2585 :
2586 0 : struct tevent_req *dcerpc_winreg_FlushKey_r_send(TALLOC_CTX *mem_ctx,
2587 : struct tevent_context *ev,
2588 : struct dcerpc_binding_handle *h,
2589 : struct winreg_FlushKey *r)
2590 : {
2591 0 : struct tevent_req *req;
2592 0 : struct dcerpc_winreg_FlushKey_r_state *state;
2593 0 : struct tevent_req *subreq;
2594 :
2595 0 : req = tevent_req_create(mem_ctx, &state,
2596 : struct dcerpc_winreg_FlushKey_r_state);
2597 0 : if (req == NULL) {
2598 0 : return NULL;
2599 : }
2600 :
2601 0 : state->out_mem_ctx = NULL;
2602 :
2603 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
2604 : NULL, &ndr_table_winreg,
2605 : NDR_WINREG_FLUSHKEY, state, r);
2606 0 : if (tevent_req_nomem(subreq, req)) {
2607 0 : return tevent_req_post(req, ev);
2608 : }
2609 0 : tevent_req_set_callback(subreq, dcerpc_winreg_FlushKey_r_done, req);
2610 :
2611 0 : return req;
2612 : }
2613 :
2614 0 : static void dcerpc_winreg_FlushKey_r_done(struct tevent_req *subreq)
2615 : {
2616 0 : struct tevent_req *req =
2617 0 : tevent_req_callback_data(subreq,
2618 : struct tevent_req);
2619 0 : NTSTATUS status;
2620 :
2621 0 : status = dcerpc_binding_handle_call_recv(subreq);
2622 0 : TALLOC_FREE(subreq);
2623 0 : if (tevent_req_nterror(req, status)) {
2624 0 : return;
2625 : }
2626 :
2627 0 : tevent_req_done(req);
2628 : }
2629 :
2630 0 : NTSTATUS dcerpc_winreg_FlushKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
2631 : {
2632 0 : struct dcerpc_winreg_FlushKey_r_state *state =
2633 0 : tevent_req_data(req,
2634 : struct dcerpc_winreg_FlushKey_r_state);
2635 0 : NTSTATUS status;
2636 :
2637 0 : if (tevent_req_is_nterror(req, &status)) {
2638 0 : tevent_req_received(req);
2639 0 : return status;
2640 : }
2641 :
2642 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
2643 :
2644 0 : tevent_req_received(req);
2645 0 : return NT_STATUS_OK;
2646 : }
2647 :
2648 696 : NTSTATUS dcerpc_winreg_FlushKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_FlushKey *r)
2649 : {
2650 0 : NTSTATUS status;
2651 :
2652 696 : status = dcerpc_binding_handle_call(h,
2653 : NULL, &ndr_table_winreg,
2654 : NDR_WINREG_FLUSHKEY, mem_ctx, r);
2655 :
2656 696 : return status;
2657 : }
2658 :
2659 : struct dcerpc_winreg_FlushKey_state {
2660 : struct winreg_FlushKey orig;
2661 : struct winreg_FlushKey tmp;
2662 : TALLOC_CTX *out_mem_ctx;
2663 : };
2664 :
2665 : static void dcerpc_winreg_FlushKey_done(struct tevent_req *subreq);
2666 :
2667 0 : struct tevent_req *dcerpc_winreg_FlushKey_send(TALLOC_CTX *mem_ctx,
2668 : struct tevent_context *ev,
2669 : struct dcerpc_binding_handle *h,
2670 : struct policy_handle *_handle /* [in] [ref] */)
2671 : {
2672 0 : struct tevent_req *req;
2673 0 : struct dcerpc_winreg_FlushKey_state *state;
2674 0 : struct tevent_req *subreq;
2675 :
2676 0 : req = tevent_req_create(mem_ctx, &state,
2677 : struct dcerpc_winreg_FlushKey_state);
2678 0 : if (req == NULL) {
2679 0 : return NULL;
2680 : }
2681 0 : state->out_mem_ctx = NULL;
2682 :
2683 : /* In parameters */
2684 0 : state->orig.in.handle = _handle;
2685 :
2686 : /* Out parameters */
2687 :
2688 : /* Result */
2689 0 : NDR_ZERO_STRUCT(state->orig.out.result);
2690 :
2691 : /* make a temporary copy, that we pass to the dispatch function */
2692 0 : state->tmp = state->orig;
2693 :
2694 0 : subreq = dcerpc_winreg_FlushKey_r_send(state, ev, h, &state->tmp);
2695 0 : if (tevent_req_nomem(subreq, req)) {
2696 0 : return tevent_req_post(req, ev);
2697 : }
2698 0 : tevent_req_set_callback(subreq, dcerpc_winreg_FlushKey_done, req);
2699 0 : return req;
2700 : }
2701 :
2702 0 : static void dcerpc_winreg_FlushKey_done(struct tevent_req *subreq)
2703 : {
2704 0 : struct tevent_req *req = tevent_req_callback_data(
2705 : subreq, struct tevent_req);
2706 0 : struct dcerpc_winreg_FlushKey_state *state = tevent_req_data(
2707 : req, struct dcerpc_winreg_FlushKey_state);
2708 0 : NTSTATUS status;
2709 0 : TALLOC_CTX *mem_ctx;
2710 :
2711 0 : if (state->out_mem_ctx) {
2712 0 : mem_ctx = state->out_mem_ctx;
2713 : } else {
2714 0 : mem_ctx = state;
2715 : }
2716 :
2717 0 : status = dcerpc_winreg_FlushKey_r_recv(subreq, mem_ctx);
2718 0 : TALLOC_FREE(subreq);
2719 0 : if (tevent_req_nterror(req, status)) {
2720 0 : return;
2721 : }
2722 :
2723 : /* Copy out parameters */
2724 :
2725 : /* Copy result */
2726 0 : state->orig.out.result = state->tmp.out.result;
2727 :
2728 : /* Reset temporary structure */
2729 0 : NDR_ZERO_STRUCT(state->tmp);
2730 :
2731 0 : tevent_req_done(req);
2732 : }
2733 :
2734 0 : NTSTATUS dcerpc_winreg_FlushKey_recv(struct tevent_req *req,
2735 : TALLOC_CTX *mem_ctx,
2736 : WERROR *result)
2737 : {
2738 0 : struct dcerpc_winreg_FlushKey_state *state = tevent_req_data(
2739 : req, struct dcerpc_winreg_FlushKey_state);
2740 0 : NTSTATUS status;
2741 :
2742 0 : if (tevent_req_is_nterror(req, &status)) {
2743 0 : tevent_req_received(req);
2744 0 : return status;
2745 : }
2746 :
2747 : /* Steal possible out parameters to the callers context */
2748 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
2749 :
2750 : /* Return result */
2751 0 : *result = state->orig.out.result;
2752 :
2753 0 : tevent_req_received(req);
2754 0 : return NT_STATUS_OK;
2755 : }
2756 :
2757 0 : NTSTATUS dcerpc_winreg_FlushKey(struct dcerpc_binding_handle *h,
2758 : TALLOC_CTX *mem_ctx,
2759 : struct policy_handle *_handle /* [in] [ref] */,
2760 : WERROR *result)
2761 : {
2762 0 : struct winreg_FlushKey r;
2763 0 : NTSTATUS status;
2764 :
2765 : /* In parameters */
2766 0 : r.in.handle = _handle;
2767 :
2768 : /* Out parameters */
2769 :
2770 : /* Result */
2771 0 : NDR_ZERO_STRUCT(r.out.result);
2772 :
2773 0 : status = dcerpc_winreg_FlushKey_r(h, mem_ctx, &r);
2774 0 : if (!NT_STATUS_IS_OK(status)) {
2775 0 : return status;
2776 : }
2777 :
2778 : /* Return variables */
2779 :
2780 : /* Return result */
2781 0 : *result = r.out.result;
2782 :
2783 0 : return NT_STATUS_OK;
2784 : }
2785 :
2786 : struct dcerpc_winreg_GetKeySecurity_r_state {
2787 : TALLOC_CTX *out_mem_ctx;
2788 : };
2789 :
2790 : static void dcerpc_winreg_GetKeySecurity_r_done(struct tevent_req *subreq);
2791 :
2792 0 : struct tevent_req *dcerpc_winreg_GetKeySecurity_r_send(TALLOC_CTX *mem_ctx,
2793 : struct tevent_context *ev,
2794 : struct dcerpc_binding_handle *h,
2795 : struct winreg_GetKeySecurity *r)
2796 : {
2797 0 : struct tevent_req *req;
2798 0 : struct dcerpc_winreg_GetKeySecurity_r_state *state;
2799 0 : struct tevent_req *subreq;
2800 :
2801 0 : req = tevent_req_create(mem_ctx, &state,
2802 : struct dcerpc_winreg_GetKeySecurity_r_state);
2803 0 : if (req == NULL) {
2804 0 : return NULL;
2805 : }
2806 :
2807 0 : state->out_mem_ctx = talloc_new(state);
2808 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
2809 0 : return tevent_req_post(req, ev);
2810 : }
2811 :
2812 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
2813 : NULL, &ndr_table_winreg,
2814 0 : NDR_WINREG_GETKEYSECURITY, state->out_mem_ctx, r);
2815 0 : if (tevent_req_nomem(subreq, req)) {
2816 0 : return tevent_req_post(req, ev);
2817 : }
2818 0 : tevent_req_set_callback(subreq, dcerpc_winreg_GetKeySecurity_r_done, req);
2819 :
2820 0 : return req;
2821 : }
2822 :
2823 0 : static void dcerpc_winreg_GetKeySecurity_r_done(struct tevent_req *subreq)
2824 : {
2825 0 : struct tevent_req *req =
2826 0 : tevent_req_callback_data(subreq,
2827 : struct tevent_req);
2828 0 : NTSTATUS status;
2829 :
2830 0 : status = dcerpc_binding_handle_call_recv(subreq);
2831 0 : TALLOC_FREE(subreq);
2832 0 : if (tevent_req_nterror(req, status)) {
2833 0 : return;
2834 : }
2835 :
2836 0 : tevent_req_done(req);
2837 : }
2838 :
2839 0 : NTSTATUS dcerpc_winreg_GetKeySecurity_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
2840 : {
2841 0 : struct dcerpc_winreg_GetKeySecurity_r_state *state =
2842 0 : tevent_req_data(req,
2843 : struct dcerpc_winreg_GetKeySecurity_r_state);
2844 0 : NTSTATUS status;
2845 :
2846 0 : if (tevent_req_is_nterror(req, &status)) {
2847 0 : tevent_req_received(req);
2848 0 : return status;
2849 : }
2850 :
2851 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
2852 :
2853 0 : tevent_req_received(req);
2854 0 : return NT_STATUS_OK;
2855 : }
2856 :
2857 0 : NTSTATUS dcerpc_winreg_GetKeySecurity_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_GetKeySecurity *r)
2858 : {
2859 0 : NTSTATUS status;
2860 :
2861 0 : status = dcerpc_binding_handle_call(h,
2862 : NULL, &ndr_table_winreg,
2863 : NDR_WINREG_GETKEYSECURITY, mem_ctx, r);
2864 :
2865 0 : return status;
2866 : }
2867 :
2868 : struct dcerpc_winreg_GetKeySecurity_state {
2869 : struct winreg_GetKeySecurity orig;
2870 : struct winreg_GetKeySecurity tmp;
2871 : TALLOC_CTX *out_mem_ctx;
2872 : };
2873 :
2874 : static void dcerpc_winreg_GetKeySecurity_done(struct tevent_req *subreq);
2875 :
2876 0 : struct tevent_req *dcerpc_winreg_GetKeySecurity_send(TALLOC_CTX *mem_ctx,
2877 : struct tevent_context *ev,
2878 : struct dcerpc_binding_handle *h,
2879 : struct policy_handle *_handle /* [in] [ref] */,
2880 : uint32_t _sec_info /* [in] */,
2881 : struct KeySecurityData *_sd /* [in,out] [ref] */)
2882 : {
2883 0 : struct tevent_req *req;
2884 0 : struct dcerpc_winreg_GetKeySecurity_state *state;
2885 0 : struct tevent_req *subreq;
2886 :
2887 0 : req = tevent_req_create(mem_ctx, &state,
2888 : struct dcerpc_winreg_GetKeySecurity_state);
2889 0 : if (req == NULL) {
2890 0 : return NULL;
2891 : }
2892 0 : state->out_mem_ctx = NULL;
2893 :
2894 : /* In parameters */
2895 0 : state->orig.in.handle = _handle;
2896 0 : state->orig.in.sec_info = _sec_info;
2897 0 : state->orig.in.sd = _sd;
2898 :
2899 : /* Out parameters */
2900 0 : state->orig.out.sd = _sd;
2901 :
2902 : /* Result */
2903 0 : NDR_ZERO_STRUCT(state->orig.out.result);
2904 :
2905 0 : state->out_mem_ctx = talloc_named_const(state, 0,
2906 : "dcerpc_winreg_GetKeySecurity_out_memory");
2907 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
2908 0 : return tevent_req_post(req, ev);
2909 : }
2910 :
2911 : /* make a temporary copy, that we pass to the dispatch function */
2912 0 : state->tmp = state->orig;
2913 :
2914 0 : subreq = dcerpc_winreg_GetKeySecurity_r_send(state, ev, h, &state->tmp);
2915 0 : if (tevent_req_nomem(subreq, req)) {
2916 0 : return tevent_req_post(req, ev);
2917 : }
2918 0 : tevent_req_set_callback(subreq, dcerpc_winreg_GetKeySecurity_done, req);
2919 0 : return req;
2920 : }
2921 :
2922 0 : static void dcerpc_winreg_GetKeySecurity_done(struct tevent_req *subreq)
2923 : {
2924 0 : struct tevent_req *req = tevent_req_callback_data(
2925 : subreq, struct tevent_req);
2926 0 : struct dcerpc_winreg_GetKeySecurity_state *state = tevent_req_data(
2927 : req, struct dcerpc_winreg_GetKeySecurity_state);
2928 0 : NTSTATUS status;
2929 0 : TALLOC_CTX *mem_ctx;
2930 :
2931 0 : if (state->out_mem_ctx) {
2932 0 : mem_ctx = state->out_mem_ctx;
2933 : } else {
2934 0 : mem_ctx = state;
2935 : }
2936 :
2937 0 : status = dcerpc_winreg_GetKeySecurity_r_recv(subreq, mem_ctx);
2938 0 : TALLOC_FREE(subreq);
2939 0 : if (tevent_req_nterror(req, status)) {
2940 0 : return;
2941 : }
2942 :
2943 : /* Copy out parameters */
2944 0 : *state->orig.out.sd = *state->tmp.out.sd;
2945 :
2946 : /* Copy result */
2947 0 : state->orig.out.result = state->tmp.out.result;
2948 :
2949 : /* Reset temporary structure */
2950 0 : NDR_ZERO_STRUCT(state->tmp);
2951 :
2952 0 : tevent_req_done(req);
2953 : }
2954 :
2955 0 : NTSTATUS dcerpc_winreg_GetKeySecurity_recv(struct tevent_req *req,
2956 : TALLOC_CTX *mem_ctx,
2957 : WERROR *result)
2958 : {
2959 0 : struct dcerpc_winreg_GetKeySecurity_state *state = tevent_req_data(
2960 : req, struct dcerpc_winreg_GetKeySecurity_state);
2961 0 : NTSTATUS status;
2962 :
2963 0 : if (tevent_req_is_nterror(req, &status)) {
2964 0 : tevent_req_received(req);
2965 0 : return status;
2966 : }
2967 :
2968 : /* Steal possible out parameters to the callers context */
2969 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
2970 :
2971 : /* Return result */
2972 0 : *result = state->orig.out.result;
2973 :
2974 0 : tevent_req_received(req);
2975 0 : return NT_STATUS_OK;
2976 : }
2977 :
2978 0 : NTSTATUS dcerpc_winreg_GetKeySecurity(struct dcerpc_binding_handle *h,
2979 : TALLOC_CTX *mem_ctx,
2980 : struct policy_handle *_handle /* [in] [ref] */,
2981 : uint32_t _sec_info /* [in] */,
2982 : struct KeySecurityData *_sd /* [in,out] [ref] */,
2983 : WERROR *result)
2984 : {
2985 0 : struct winreg_GetKeySecurity r;
2986 0 : NTSTATUS status;
2987 :
2988 : /* In parameters */
2989 0 : r.in.handle = _handle;
2990 0 : r.in.sec_info = _sec_info;
2991 0 : r.in.sd = _sd;
2992 :
2993 : /* Out parameters */
2994 0 : r.out.sd = _sd;
2995 :
2996 : /* Result */
2997 0 : NDR_ZERO_STRUCT(r.out.result);
2998 :
2999 0 : status = dcerpc_winreg_GetKeySecurity_r(h, mem_ctx, &r);
3000 0 : if (!NT_STATUS_IS_OK(status)) {
3001 0 : return status;
3002 : }
3003 :
3004 : /* Return variables */
3005 0 : *_sd = *r.out.sd;
3006 :
3007 : /* Return result */
3008 0 : *result = r.out.result;
3009 :
3010 0 : return NT_STATUS_OK;
3011 : }
3012 :
3013 : struct dcerpc_winreg_LoadKey_r_state {
3014 : TALLOC_CTX *out_mem_ctx;
3015 : };
3016 :
3017 : static void dcerpc_winreg_LoadKey_r_done(struct tevent_req *subreq);
3018 :
3019 0 : struct tevent_req *dcerpc_winreg_LoadKey_r_send(TALLOC_CTX *mem_ctx,
3020 : struct tevent_context *ev,
3021 : struct dcerpc_binding_handle *h,
3022 : struct winreg_LoadKey *r)
3023 : {
3024 0 : struct tevent_req *req;
3025 0 : struct dcerpc_winreg_LoadKey_r_state *state;
3026 0 : struct tevent_req *subreq;
3027 :
3028 0 : req = tevent_req_create(mem_ctx, &state,
3029 : struct dcerpc_winreg_LoadKey_r_state);
3030 0 : if (req == NULL) {
3031 0 : return NULL;
3032 : }
3033 :
3034 0 : state->out_mem_ctx = NULL;
3035 :
3036 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
3037 : NULL, &ndr_table_winreg,
3038 : NDR_WINREG_LOADKEY, state, r);
3039 0 : if (tevent_req_nomem(subreq, req)) {
3040 0 : return tevent_req_post(req, ev);
3041 : }
3042 0 : tevent_req_set_callback(subreq, dcerpc_winreg_LoadKey_r_done, req);
3043 :
3044 0 : return req;
3045 : }
3046 :
3047 0 : static void dcerpc_winreg_LoadKey_r_done(struct tevent_req *subreq)
3048 : {
3049 0 : struct tevent_req *req =
3050 0 : tevent_req_callback_data(subreq,
3051 : struct tevent_req);
3052 0 : NTSTATUS status;
3053 :
3054 0 : status = dcerpc_binding_handle_call_recv(subreq);
3055 0 : TALLOC_FREE(subreq);
3056 0 : if (tevent_req_nterror(req, status)) {
3057 0 : return;
3058 : }
3059 :
3060 0 : tevent_req_done(req);
3061 : }
3062 :
3063 0 : NTSTATUS dcerpc_winreg_LoadKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
3064 : {
3065 0 : struct dcerpc_winreg_LoadKey_r_state *state =
3066 0 : tevent_req_data(req,
3067 : struct dcerpc_winreg_LoadKey_r_state);
3068 0 : NTSTATUS status;
3069 :
3070 0 : if (tevent_req_is_nterror(req, &status)) {
3071 0 : tevent_req_received(req);
3072 0 : return status;
3073 : }
3074 :
3075 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
3076 :
3077 0 : tevent_req_received(req);
3078 0 : return NT_STATUS_OK;
3079 : }
3080 :
3081 0 : NTSTATUS dcerpc_winreg_LoadKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_LoadKey *r)
3082 : {
3083 0 : NTSTATUS status;
3084 :
3085 0 : status = dcerpc_binding_handle_call(h,
3086 : NULL, &ndr_table_winreg,
3087 : NDR_WINREG_LOADKEY, mem_ctx, r);
3088 :
3089 0 : return status;
3090 : }
3091 :
3092 : struct dcerpc_winreg_LoadKey_state {
3093 : struct winreg_LoadKey orig;
3094 : struct winreg_LoadKey tmp;
3095 : TALLOC_CTX *out_mem_ctx;
3096 : };
3097 :
3098 : static void dcerpc_winreg_LoadKey_done(struct tevent_req *subreq);
3099 :
3100 0 : struct tevent_req *dcerpc_winreg_LoadKey_send(TALLOC_CTX *mem_ctx,
3101 : struct tevent_context *ev,
3102 : struct dcerpc_binding_handle *h,
3103 : struct policy_handle *_handle /* [in] [ref] */,
3104 : struct winreg_String *_keyname /* [in] [unique] */,
3105 : struct winreg_String *_filename /* [in] [unique] */)
3106 : {
3107 0 : struct tevent_req *req;
3108 0 : struct dcerpc_winreg_LoadKey_state *state;
3109 0 : struct tevent_req *subreq;
3110 :
3111 0 : req = tevent_req_create(mem_ctx, &state,
3112 : struct dcerpc_winreg_LoadKey_state);
3113 0 : if (req == NULL) {
3114 0 : return NULL;
3115 : }
3116 0 : state->out_mem_ctx = NULL;
3117 :
3118 : /* In parameters */
3119 0 : state->orig.in.handle = _handle;
3120 0 : state->orig.in.keyname = _keyname;
3121 0 : state->orig.in.filename = _filename;
3122 :
3123 : /* Out parameters */
3124 :
3125 : /* Result */
3126 0 : NDR_ZERO_STRUCT(state->orig.out.result);
3127 :
3128 : /* make a temporary copy, that we pass to the dispatch function */
3129 0 : state->tmp = state->orig;
3130 :
3131 0 : subreq = dcerpc_winreg_LoadKey_r_send(state, ev, h, &state->tmp);
3132 0 : if (tevent_req_nomem(subreq, req)) {
3133 0 : return tevent_req_post(req, ev);
3134 : }
3135 0 : tevent_req_set_callback(subreq, dcerpc_winreg_LoadKey_done, req);
3136 0 : return req;
3137 : }
3138 :
3139 0 : static void dcerpc_winreg_LoadKey_done(struct tevent_req *subreq)
3140 : {
3141 0 : struct tevent_req *req = tevent_req_callback_data(
3142 : subreq, struct tevent_req);
3143 0 : struct dcerpc_winreg_LoadKey_state *state = tevent_req_data(
3144 : req, struct dcerpc_winreg_LoadKey_state);
3145 0 : NTSTATUS status;
3146 0 : TALLOC_CTX *mem_ctx;
3147 :
3148 0 : if (state->out_mem_ctx) {
3149 0 : mem_ctx = state->out_mem_ctx;
3150 : } else {
3151 0 : mem_ctx = state;
3152 : }
3153 :
3154 0 : status = dcerpc_winreg_LoadKey_r_recv(subreq, mem_ctx);
3155 0 : TALLOC_FREE(subreq);
3156 0 : if (tevent_req_nterror(req, status)) {
3157 0 : return;
3158 : }
3159 :
3160 : /* Copy out parameters */
3161 :
3162 : /* Copy result */
3163 0 : state->orig.out.result = state->tmp.out.result;
3164 :
3165 : /* Reset temporary structure */
3166 0 : NDR_ZERO_STRUCT(state->tmp);
3167 :
3168 0 : tevent_req_done(req);
3169 : }
3170 :
3171 0 : NTSTATUS dcerpc_winreg_LoadKey_recv(struct tevent_req *req,
3172 : TALLOC_CTX *mem_ctx,
3173 : WERROR *result)
3174 : {
3175 0 : struct dcerpc_winreg_LoadKey_state *state = tevent_req_data(
3176 : req, struct dcerpc_winreg_LoadKey_state);
3177 0 : NTSTATUS status;
3178 :
3179 0 : if (tevent_req_is_nterror(req, &status)) {
3180 0 : tevent_req_received(req);
3181 0 : return status;
3182 : }
3183 :
3184 : /* Steal possible out parameters to the callers context */
3185 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
3186 :
3187 : /* Return result */
3188 0 : *result = state->orig.out.result;
3189 :
3190 0 : tevent_req_received(req);
3191 0 : return NT_STATUS_OK;
3192 : }
3193 :
3194 0 : NTSTATUS dcerpc_winreg_LoadKey(struct dcerpc_binding_handle *h,
3195 : TALLOC_CTX *mem_ctx,
3196 : struct policy_handle *_handle /* [in] [ref] */,
3197 : struct winreg_String *_keyname /* [in] [unique] */,
3198 : struct winreg_String *_filename /* [in] [unique] */,
3199 : WERROR *result)
3200 : {
3201 0 : struct winreg_LoadKey r;
3202 0 : NTSTATUS status;
3203 :
3204 : /* In parameters */
3205 0 : r.in.handle = _handle;
3206 0 : r.in.keyname = _keyname;
3207 0 : r.in.filename = _filename;
3208 :
3209 : /* Out parameters */
3210 :
3211 : /* Result */
3212 0 : NDR_ZERO_STRUCT(r.out.result);
3213 :
3214 0 : status = dcerpc_winreg_LoadKey_r(h, mem_ctx, &r);
3215 0 : if (!NT_STATUS_IS_OK(status)) {
3216 0 : return status;
3217 : }
3218 :
3219 : /* Return variables */
3220 :
3221 : /* Return result */
3222 0 : *result = r.out.result;
3223 :
3224 0 : return NT_STATUS_OK;
3225 : }
3226 :
3227 : struct dcerpc_winreg_NotifyChangeKeyValue_r_state {
3228 : TALLOC_CTX *out_mem_ctx;
3229 : };
3230 :
3231 : static void dcerpc_winreg_NotifyChangeKeyValue_r_done(struct tevent_req *subreq);
3232 :
3233 0 : struct tevent_req *dcerpc_winreg_NotifyChangeKeyValue_r_send(TALLOC_CTX *mem_ctx,
3234 : struct tevent_context *ev,
3235 : struct dcerpc_binding_handle *h,
3236 : struct winreg_NotifyChangeKeyValue *r)
3237 : {
3238 0 : struct tevent_req *req;
3239 0 : struct dcerpc_winreg_NotifyChangeKeyValue_r_state *state;
3240 0 : struct tevent_req *subreq;
3241 :
3242 0 : req = tevent_req_create(mem_ctx, &state,
3243 : struct dcerpc_winreg_NotifyChangeKeyValue_r_state);
3244 0 : if (req == NULL) {
3245 0 : return NULL;
3246 : }
3247 :
3248 0 : state->out_mem_ctx = NULL;
3249 :
3250 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
3251 : NULL, &ndr_table_winreg,
3252 : NDR_WINREG_NOTIFYCHANGEKEYVALUE, state, r);
3253 0 : if (tevent_req_nomem(subreq, req)) {
3254 0 : return tevent_req_post(req, ev);
3255 : }
3256 0 : tevent_req_set_callback(subreq, dcerpc_winreg_NotifyChangeKeyValue_r_done, req);
3257 :
3258 0 : return req;
3259 : }
3260 :
3261 0 : static void dcerpc_winreg_NotifyChangeKeyValue_r_done(struct tevent_req *subreq)
3262 : {
3263 0 : struct tevent_req *req =
3264 0 : tevent_req_callback_data(subreq,
3265 : struct tevent_req);
3266 0 : NTSTATUS status;
3267 :
3268 0 : status = dcerpc_binding_handle_call_recv(subreq);
3269 0 : TALLOC_FREE(subreq);
3270 0 : if (tevent_req_nterror(req, status)) {
3271 0 : return;
3272 : }
3273 :
3274 0 : tevent_req_done(req);
3275 : }
3276 :
3277 0 : NTSTATUS dcerpc_winreg_NotifyChangeKeyValue_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
3278 : {
3279 0 : struct dcerpc_winreg_NotifyChangeKeyValue_r_state *state =
3280 0 : tevent_req_data(req,
3281 : struct dcerpc_winreg_NotifyChangeKeyValue_r_state);
3282 0 : NTSTATUS status;
3283 :
3284 0 : if (tevent_req_is_nterror(req, &status)) {
3285 0 : tevent_req_received(req);
3286 0 : return status;
3287 : }
3288 :
3289 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
3290 :
3291 0 : tevent_req_received(req);
3292 0 : return NT_STATUS_OK;
3293 : }
3294 :
3295 268 : NTSTATUS dcerpc_winreg_NotifyChangeKeyValue_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_NotifyChangeKeyValue *r)
3296 : {
3297 0 : NTSTATUS status;
3298 :
3299 268 : status = dcerpc_binding_handle_call(h,
3300 : NULL, &ndr_table_winreg,
3301 : NDR_WINREG_NOTIFYCHANGEKEYVALUE, mem_ctx, r);
3302 :
3303 268 : return status;
3304 : }
3305 :
3306 : struct dcerpc_winreg_NotifyChangeKeyValue_state {
3307 : struct winreg_NotifyChangeKeyValue orig;
3308 : struct winreg_NotifyChangeKeyValue tmp;
3309 : TALLOC_CTX *out_mem_ctx;
3310 : };
3311 :
3312 : static void dcerpc_winreg_NotifyChangeKeyValue_done(struct tevent_req *subreq);
3313 :
3314 0 : struct tevent_req *dcerpc_winreg_NotifyChangeKeyValue_send(TALLOC_CTX *mem_ctx,
3315 : struct tevent_context *ev,
3316 : struct dcerpc_binding_handle *h,
3317 : struct policy_handle *_handle /* [in] [ref] */,
3318 : uint8_t _watch_subtree /* [in] */,
3319 : uint32_t _notify_filter /* [in] */,
3320 : uint32_t _unknown /* [in] */,
3321 : struct winreg_String _string1 /* [in] */,
3322 : struct winreg_String _string2 /* [in] */,
3323 : uint32_t _unknown2 /* [in] */)
3324 : {
3325 0 : struct tevent_req *req;
3326 0 : struct dcerpc_winreg_NotifyChangeKeyValue_state *state;
3327 0 : struct tevent_req *subreq;
3328 :
3329 0 : req = tevent_req_create(mem_ctx, &state,
3330 : struct dcerpc_winreg_NotifyChangeKeyValue_state);
3331 0 : if (req == NULL) {
3332 0 : return NULL;
3333 : }
3334 0 : state->out_mem_ctx = NULL;
3335 :
3336 : /* In parameters */
3337 0 : state->orig.in.handle = _handle;
3338 0 : state->orig.in.watch_subtree = _watch_subtree;
3339 0 : state->orig.in.notify_filter = _notify_filter;
3340 0 : state->orig.in.unknown = _unknown;
3341 0 : state->orig.in.string1 = _string1;
3342 0 : state->orig.in.string2 = _string2;
3343 0 : state->orig.in.unknown2 = _unknown2;
3344 :
3345 : /* Out parameters */
3346 :
3347 : /* Result */
3348 0 : NDR_ZERO_STRUCT(state->orig.out.result);
3349 :
3350 : /* make a temporary copy, that we pass to the dispatch function */
3351 0 : state->tmp = state->orig;
3352 :
3353 0 : subreq = dcerpc_winreg_NotifyChangeKeyValue_r_send(state, ev, h, &state->tmp);
3354 0 : if (tevent_req_nomem(subreq, req)) {
3355 0 : return tevent_req_post(req, ev);
3356 : }
3357 0 : tevent_req_set_callback(subreq, dcerpc_winreg_NotifyChangeKeyValue_done, req);
3358 0 : return req;
3359 : }
3360 :
3361 0 : static void dcerpc_winreg_NotifyChangeKeyValue_done(struct tevent_req *subreq)
3362 : {
3363 0 : struct tevent_req *req = tevent_req_callback_data(
3364 : subreq, struct tevent_req);
3365 0 : struct dcerpc_winreg_NotifyChangeKeyValue_state *state = tevent_req_data(
3366 : req, struct dcerpc_winreg_NotifyChangeKeyValue_state);
3367 0 : NTSTATUS status;
3368 0 : TALLOC_CTX *mem_ctx;
3369 :
3370 0 : if (state->out_mem_ctx) {
3371 0 : mem_ctx = state->out_mem_ctx;
3372 : } else {
3373 0 : mem_ctx = state;
3374 : }
3375 :
3376 0 : status = dcerpc_winreg_NotifyChangeKeyValue_r_recv(subreq, mem_ctx);
3377 0 : TALLOC_FREE(subreq);
3378 0 : if (tevent_req_nterror(req, status)) {
3379 0 : return;
3380 : }
3381 :
3382 : /* Copy out parameters */
3383 :
3384 : /* Copy result */
3385 0 : state->orig.out.result = state->tmp.out.result;
3386 :
3387 : /* Reset temporary structure */
3388 0 : NDR_ZERO_STRUCT(state->tmp);
3389 :
3390 0 : tevent_req_done(req);
3391 : }
3392 :
3393 0 : NTSTATUS dcerpc_winreg_NotifyChangeKeyValue_recv(struct tevent_req *req,
3394 : TALLOC_CTX *mem_ctx,
3395 : WERROR *result)
3396 : {
3397 0 : struct dcerpc_winreg_NotifyChangeKeyValue_state *state = tevent_req_data(
3398 : req, struct dcerpc_winreg_NotifyChangeKeyValue_state);
3399 0 : NTSTATUS status;
3400 :
3401 0 : if (tevent_req_is_nterror(req, &status)) {
3402 0 : tevent_req_received(req);
3403 0 : return status;
3404 : }
3405 :
3406 : /* Steal possible out parameters to the callers context */
3407 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
3408 :
3409 : /* Return result */
3410 0 : *result = state->orig.out.result;
3411 :
3412 0 : tevent_req_received(req);
3413 0 : return NT_STATUS_OK;
3414 : }
3415 :
3416 0 : NTSTATUS dcerpc_winreg_NotifyChangeKeyValue(struct dcerpc_binding_handle *h,
3417 : TALLOC_CTX *mem_ctx,
3418 : struct policy_handle *_handle /* [in] [ref] */,
3419 : uint8_t _watch_subtree /* [in] */,
3420 : uint32_t _notify_filter /* [in] */,
3421 : uint32_t _unknown /* [in] */,
3422 : struct winreg_String _string1 /* [in] */,
3423 : struct winreg_String _string2 /* [in] */,
3424 : uint32_t _unknown2 /* [in] */,
3425 : WERROR *result)
3426 : {
3427 0 : struct winreg_NotifyChangeKeyValue r;
3428 0 : NTSTATUS status;
3429 :
3430 : /* In parameters */
3431 0 : r.in.handle = _handle;
3432 0 : r.in.watch_subtree = _watch_subtree;
3433 0 : r.in.notify_filter = _notify_filter;
3434 0 : r.in.unknown = _unknown;
3435 0 : r.in.string1 = _string1;
3436 0 : r.in.string2 = _string2;
3437 0 : r.in.unknown2 = _unknown2;
3438 :
3439 : /* Out parameters */
3440 :
3441 : /* Result */
3442 0 : NDR_ZERO_STRUCT(r.out.result);
3443 :
3444 0 : status = dcerpc_winreg_NotifyChangeKeyValue_r(h, mem_ctx, &r);
3445 0 : if (!NT_STATUS_IS_OK(status)) {
3446 0 : return status;
3447 : }
3448 :
3449 : /* Return variables */
3450 :
3451 : /* Return result */
3452 0 : *result = r.out.result;
3453 :
3454 0 : return NT_STATUS_OK;
3455 : }
3456 :
3457 : struct dcerpc_winreg_OpenKey_r_state {
3458 : TALLOC_CTX *out_mem_ctx;
3459 : };
3460 :
3461 : static void dcerpc_winreg_OpenKey_r_done(struct tevent_req *subreq);
3462 :
3463 0 : struct tevent_req *dcerpc_winreg_OpenKey_r_send(TALLOC_CTX *mem_ctx,
3464 : struct tevent_context *ev,
3465 : struct dcerpc_binding_handle *h,
3466 : struct winreg_OpenKey *r)
3467 : {
3468 0 : struct tevent_req *req;
3469 0 : struct dcerpc_winreg_OpenKey_r_state *state;
3470 0 : struct tevent_req *subreq;
3471 :
3472 0 : req = tevent_req_create(mem_ctx, &state,
3473 : struct dcerpc_winreg_OpenKey_r_state);
3474 0 : if (req == NULL) {
3475 0 : return NULL;
3476 : }
3477 :
3478 0 : state->out_mem_ctx = talloc_new(state);
3479 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
3480 0 : return tevent_req_post(req, ev);
3481 : }
3482 :
3483 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
3484 : NULL, &ndr_table_winreg,
3485 0 : NDR_WINREG_OPENKEY, state->out_mem_ctx, r);
3486 0 : if (tevent_req_nomem(subreq, req)) {
3487 0 : return tevent_req_post(req, ev);
3488 : }
3489 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenKey_r_done, req);
3490 :
3491 0 : return req;
3492 : }
3493 :
3494 0 : static void dcerpc_winreg_OpenKey_r_done(struct tevent_req *subreq)
3495 : {
3496 0 : struct tevent_req *req =
3497 0 : tevent_req_callback_data(subreq,
3498 : struct tevent_req);
3499 0 : NTSTATUS status;
3500 :
3501 0 : status = dcerpc_binding_handle_call_recv(subreq);
3502 0 : TALLOC_FREE(subreq);
3503 0 : if (tevent_req_nterror(req, status)) {
3504 0 : return;
3505 : }
3506 :
3507 0 : tevent_req_done(req);
3508 : }
3509 :
3510 0 : NTSTATUS dcerpc_winreg_OpenKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
3511 : {
3512 0 : struct dcerpc_winreg_OpenKey_r_state *state =
3513 0 : tevent_req_data(req,
3514 : struct dcerpc_winreg_OpenKey_r_state);
3515 0 : NTSTATUS status;
3516 :
3517 0 : if (tevent_req_is_nterror(req, &status)) {
3518 0 : tevent_req_received(req);
3519 0 : return status;
3520 : }
3521 :
3522 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
3523 :
3524 0 : tevent_req_received(req);
3525 0 : return NT_STATUS_OK;
3526 : }
3527 :
3528 43094 : NTSTATUS dcerpc_winreg_OpenKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_OpenKey *r)
3529 : {
3530 0 : NTSTATUS status;
3531 :
3532 43094 : status = dcerpc_binding_handle_call(h,
3533 : NULL, &ndr_table_winreg,
3534 : NDR_WINREG_OPENKEY, mem_ctx, r);
3535 :
3536 43094 : return status;
3537 : }
3538 :
3539 : struct dcerpc_winreg_OpenKey_state {
3540 : struct winreg_OpenKey orig;
3541 : struct winreg_OpenKey tmp;
3542 : TALLOC_CTX *out_mem_ctx;
3543 : };
3544 :
3545 : static void dcerpc_winreg_OpenKey_done(struct tevent_req *subreq);
3546 :
3547 0 : struct tevent_req *dcerpc_winreg_OpenKey_send(TALLOC_CTX *mem_ctx,
3548 : struct tevent_context *ev,
3549 : struct dcerpc_binding_handle *h,
3550 : struct policy_handle *_parent_handle /* [in] [ref] */,
3551 : struct winreg_String _keyname /* [in] */,
3552 : uint32_t _options /* [in] */,
3553 : uint32_t _access_mask /* [in] */,
3554 : struct policy_handle *_handle /* [out] [ref] */)
3555 : {
3556 0 : struct tevent_req *req;
3557 0 : struct dcerpc_winreg_OpenKey_state *state;
3558 0 : struct tevent_req *subreq;
3559 :
3560 0 : req = tevent_req_create(mem_ctx, &state,
3561 : struct dcerpc_winreg_OpenKey_state);
3562 0 : if (req == NULL) {
3563 0 : return NULL;
3564 : }
3565 0 : state->out_mem_ctx = NULL;
3566 :
3567 : /* In parameters */
3568 0 : state->orig.in.parent_handle = _parent_handle;
3569 0 : state->orig.in.keyname = _keyname;
3570 0 : state->orig.in.options = _options;
3571 0 : state->orig.in.access_mask = _access_mask;
3572 :
3573 : /* Out parameters */
3574 0 : state->orig.out.handle = _handle;
3575 :
3576 : /* Result */
3577 0 : NDR_ZERO_STRUCT(state->orig.out.result);
3578 :
3579 0 : state->out_mem_ctx = talloc_named_const(state, 0,
3580 : "dcerpc_winreg_OpenKey_out_memory");
3581 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
3582 0 : return tevent_req_post(req, ev);
3583 : }
3584 :
3585 : /* make a temporary copy, that we pass to the dispatch function */
3586 0 : state->tmp = state->orig;
3587 :
3588 0 : subreq = dcerpc_winreg_OpenKey_r_send(state, ev, h, &state->tmp);
3589 0 : if (tevent_req_nomem(subreq, req)) {
3590 0 : return tevent_req_post(req, ev);
3591 : }
3592 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenKey_done, req);
3593 0 : return req;
3594 : }
3595 :
3596 0 : static void dcerpc_winreg_OpenKey_done(struct tevent_req *subreq)
3597 : {
3598 0 : struct tevent_req *req = tevent_req_callback_data(
3599 : subreq, struct tevent_req);
3600 0 : struct dcerpc_winreg_OpenKey_state *state = tevent_req_data(
3601 : req, struct dcerpc_winreg_OpenKey_state);
3602 0 : NTSTATUS status;
3603 0 : TALLOC_CTX *mem_ctx;
3604 :
3605 0 : if (state->out_mem_ctx) {
3606 0 : mem_ctx = state->out_mem_ctx;
3607 : } else {
3608 0 : mem_ctx = state;
3609 : }
3610 :
3611 0 : status = dcerpc_winreg_OpenKey_r_recv(subreq, mem_ctx);
3612 0 : TALLOC_FREE(subreq);
3613 0 : if (tevent_req_nterror(req, status)) {
3614 0 : return;
3615 : }
3616 :
3617 : /* Copy out parameters */
3618 0 : *state->orig.out.handle = *state->tmp.out.handle;
3619 :
3620 : /* Copy result */
3621 0 : state->orig.out.result = state->tmp.out.result;
3622 :
3623 : /* Reset temporary structure */
3624 0 : NDR_ZERO_STRUCT(state->tmp);
3625 :
3626 0 : tevent_req_done(req);
3627 : }
3628 :
3629 0 : NTSTATUS dcerpc_winreg_OpenKey_recv(struct tevent_req *req,
3630 : TALLOC_CTX *mem_ctx,
3631 : WERROR *result)
3632 : {
3633 0 : struct dcerpc_winreg_OpenKey_state *state = tevent_req_data(
3634 : req, struct dcerpc_winreg_OpenKey_state);
3635 0 : NTSTATUS status;
3636 :
3637 0 : if (tevent_req_is_nterror(req, &status)) {
3638 0 : tevent_req_received(req);
3639 0 : return status;
3640 : }
3641 :
3642 : /* Steal possible out parameters to the callers context */
3643 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
3644 :
3645 : /* Return result */
3646 0 : *result = state->orig.out.result;
3647 :
3648 0 : tevent_req_received(req);
3649 0 : return NT_STATUS_OK;
3650 : }
3651 :
3652 41674 : NTSTATUS dcerpc_winreg_OpenKey(struct dcerpc_binding_handle *h,
3653 : TALLOC_CTX *mem_ctx,
3654 : struct policy_handle *_parent_handle /* [in] [ref] */,
3655 : struct winreg_String _keyname /* [in] */,
3656 : uint32_t _options /* [in] */,
3657 : uint32_t _access_mask /* [in] */,
3658 : struct policy_handle *_handle /* [out] [ref] */,
3659 : WERROR *result)
3660 : {
3661 0 : struct winreg_OpenKey r;
3662 0 : NTSTATUS status;
3663 :
3664 : /* In parameters */
3665 41674 : r.in.parent_handle = _parent_handle;
3666 41674 : r.in.keyname = _keyname;
3667 41674 : r.in.options = _options;
3668 41674 : r.in.access_mask = _access_mask;
3669 :
3670 : /* Out parameters */
3671 41674 : r.out.handle = _handle;
3672 :
3673 : /* Result */
3674 41674 : NDR_ZERO_STRUCT(r.out.result);
3675 :
3676 41674 : status = dcerpc_winreg_OpenKey_r(h, mem_ctx, &r);
3677 41674 : if (!NT_STATUS_IS_OK(status)) {
3678 0 : return status;
3679 : }
3680 :
3681 : /* Return variables */
3682 41674 : *_handle = *r.out.handle;
3683 :
3684 : /* Return result */
3685 41674 : *result = r.out.result;
3686 :
3687 41674 : return NT_STATUS_OK;
3688 : }
3689 :
3690 : struct dcerpc_winreg_QueryInfoKey_r_state {
3691 : TALLOC_CTX *out_mem_ctx;
3692 : };
3693 :
3694 : static void dcerpc_winreg_QueryInfoKey_r_done(struct tevent_req *subreq);
3695 :
3696 0 : struct tevent_req *dcerpc_winreg_QueryInfoKey_r_send(TALLOC_CTX *mem_ctx,
3697 : struct tevent_context *ev,
3698 : struct dcerpc_binding_handle *h,
3699 : struct winreg_QueryInfoKey *r)
3700 : {
3701 0 : struct tevent_req *req;
3702 0 : struct dcerpc_winreg_QueryInfoKey_r_state *state;
3703 0 : struct tevent_req *subreq;
3704 :
3705 0 : req = tevent_req_create(mem_ctx, &state,
3706 : struct dcerpc_winreg_QueryInfoKey_r_state);
3707 0 : if (req == NULL) {
3708 0 : return NULL;
3709 : }
3710 :
3711 0 : state->out_mem_ctx = talloc_new(state);
3712 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
3713 0 : return tevent_req_post(req, ev);
3714 : }
3715 :
3716 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
3717 : NULL, &ndr_table_winreg,
3718 0 : NDR_WINREG_QUERYINFOKEY, state->out_mem_ctx, r);
3719 0 : if (tevent_req_nomem(subreq, req)) {
3720 0 : return tevent_req_post(req, ev);
3721 : }
3722 0 : tevent_req_set_callback(subreq, dcerpc_winreg_QueryInfoKey_r_done, req);
3723 :
3724 0 : return req;
3725 : }
3726 :
3727 0 : static void dcerpc_winreg_QueryInfoKey_r_done(struct tevent_req *subreq)
3728 : {
3729 0 : struct tevent_req *req =
3730 0 : tevent_req_callback_data(subreq,
3731 : struct tevent_req);
3732 0 : NTSTATUS status;
3733 :
3734 0 : status = dcerpc_binding_handle_call_recv(subreq);
3735 0 : TALLOC_FREE(subreq);
3736 0 : if (tevent_req_nterror(req, status)) {
3737 0 : return;
3738 : }
3739 :
3740 0 : tevent_req_done(req);
3741 : }
3742 :
3743 0 : NTSTATUS dcerpc_winreg_QueryInfoKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
3744 : {
3745 0 : struct dcerpc_winreg_QueryInfoKey_r_state *state =
3746 0 : tevent_req_data(req,
3747 : struct dcerpc_winreg_QueryInfoKey_r_state);
3748 0 : NTSTATUS status;
3749 :
3750 0 : if (tevent_req_is_nterror(req, &status)) {
3751 0 : tevent_req_received(req);
3752 0 : return status;
3753 : }
3754 :
3755 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
3756 :
3757 0 : tevent_req_received(req);
3758 0 : return NT_STATUS_OK;
3759 : }
3760 :
3761 20593 : NTSTATUS dcerpc_winreg_QueryInfoKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_QueryInfoKey *r)
3762 : {
3763 0 : NTSTATUS status;
3764 :
3765 20593 : status = dcerpc_binding_handle_call(h,
3766 : NULL, &ndr_table_winreg,
3767 : NDR_WINREG_QUERYINFOKEY, mem_ctx, r);
3768 :
3769 20593 : return status;
3770 : }
3771 :
3772 : struct dcerpc_winreg_QueryInfoKey_state {
3773 : struct winreg_QueryInfoKey orig;
3774 : struct winreg_QueryInfoKey tmp;
3775 : TALLOC_CTX *out_mem_ctx;
3776 : };
3777 :
3778 : static void dcerpc_winreg_QueryInfoKey_done(struct tevent_req *subreq);
3779 :
3780 0 : struct tevent_req *dcerpc_winreg_QueryInfoKey_send(TALLOC_CTX *mem_ctx,
3781 : struct tevent_context *ev,
3782 : struct dcerpc_binding_handle *h,
3783 : struct policy_handle *_handle /* [in] [ref] */,
3784 : struct winreg_String *_classname /* [in,out] [ref] */,
3785 : uint32_t *_num_subkeys /* [out] [ref] */,
3786 : uint32_t *_max_subkeylen /* [out] [ref] */,
3787 : uint32_t *_max_classlen /* [out] [ref] */,
3788 : uint32_t *_num_values /* [out] [ref] */,
3789 : uint32_t *_max_valnamelen /* [out] [ref] */,
3790 : uint32_t *_max_valbufsize /* [out] [ref] */,
3791 : uint32_t *_secdescsize /* [out] [ref] */,
3792 : NTTIME *_last_changed_time /* [out] [ref] */)
3793 : {
3794 0 : struct tevent_req *req;
3795 0 : struct dcerpc_winreg_QueryInfoKey_state *state;
3796 0 : struct tevent_req *subreq;
3797 :
3798 0 : req = tevent_req_create(mem_ctx, &state,
3799 : struct dcerpc_winreg_QueryInfoKey_state);
3800 0 : if (req == NULL) {
3801 0 : return NULL;
3802 : }
3803 0 : state->out_mem_ctx = NULL;
3804 :
3805 : /* In parameters */
3806 0 : state->orig.in.handle = _handle;
3807 0 : state->orig.in.classname = _classname;
3808 :
3809 : /* Out parameters */
3810 0 : state->orig.out.classname = _classname;
3811 0 : state->orig.out.num_subkeys = _num_subkeys;
3812 0 : state->orig.out.max_subkeylen = _max_subkeylen;
3813 0 : state->orig.out.max_classlen = _max_classlen;
3814 0 : state->orig.out.num_values = _num_values;
3815 0 : state->orig.out.max_valnamelen = _max_valnamelen;
3816 0 : state->orig.out.max_valbufsize = _max_valbufsize;
3817 0 : state->orig.out.secdescsize = _secdescsize;
3818 0 : state->orig.out.last_changed_time = _last_changed_time;
3819 :
3820 : /* Result */
3821 0 : NDR_ZERO_STRUCT(state->orig.out.result);
3822 :
3823 0 : state->out_mem_ctx = talloc_named_const(state, 0,
3824 : "dcerpc_winreg_QueryInfoKey_out_memory");
3825 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
3826 0 : return tevent_req_post(req, ev);
3827 : }
3828 :
3829 : /* make a temporary copy, that we pass to the dispatch function */
3830 0 : state->tmp = state->orig;
3831 :
3832 0 : subreq = dcerpc_winreg_QueryInfoKey_r_send(state, ev, h, &state->tmp);
3833 0 : if (tevent_req_nomem(subreq, req)) {
3834 0 : return tevent_req_post(req, ev);
3835 : }
3836 0 : tevent_req_set_callback(subreq, dcerpc_winreg_QueryInfoKey_done, req);
3837 0 : return req;
3838 : }
3839 :
3840 0 : static void dcerpc_winreg_QueryInfoKey_done(struct tevent_req *subreq)
3841 : {
3842 0 : struct tevent_req *req = tevent_req_callback_data(
3843 : subreq, struct tevent_req);
3844 0 : struct dcerpc_winreg_QueryInfoKey_state *state = tevent_req_data(
3845 : req, struct dcerpc_winreg_QueryInfoKey_state);
3846 0 : NTSTATUS status;
3847 0 : TALLOC_CTX *mem_ctx;
3848 :
3849 0 : if (state->out_mem_ctx) {
3850 0 : mem_ctx = state->out_mem_ctx;
3851 : } else {
3852 0 : mem_ctx = state;
3853 : }
3854 :
3855 0 : status = dcerpc_winreg_QueryInfoKey_r_recv(subreq, mem_ctx);
3856 0 : TALLOC_FREE(subreq);
3857 0 : if (tevent_req_nterror(req, status)) {
3858 0 : return;
3859 : }
3860 :
3861 : /* Copy out parameters */
3862 0 : *state->orig.out.classname = *state->tmp.out.classname;
3863 0 : *state->orig.out.num_subkeys = *state->tmp.out.num_subkeys;
3864 0 : *state->orig.out.max_subkeylen = *state->tmp.out.max_subkeylen;
3865 0 : *state->orig.out.max_classlen = *state->tmp.out.max_classlen;
3866 0 : *state->orig.out.num_values = *state->tmp.out.num_values;
3867 0 : *state->orig.out.max_valnamelen = *state->tmp.out.max_valnamelen;
3868 0 : *state->orig.out.max_valbufsize = *state->tmp.out.max_valbufsize;
3869 0 : *state->orig.out.secdescsize = *state->tmp.out.secdescsize;
3870 0 : *state->orig.out.last_changed_time = *state->tmp.out.last_changed_time;
3871 :
3872 : /* Copy result */
3873 0 : state->orig.out.result = state->tmp.out.result;
3874 :
3875 : /* Reset temporary structure */
3876 0 : NDR_ZERO_STRUCT(state->tmp);
3877 :
3878 0 : tevent_req_done(req);
3879 : }
3880 :
3881 0 : NTSTATUS dcerpc_winreg_QueryInfoKey_recv(struct tevent_req *req,
3882 : TALLOC_CTX *mem_ctx,
3883 : WERROR *result)
3884 : {
3885 0 : struct dcerpc_winreg_QueryInfoKey_state *state = tevent_req_data(
3886 : req, struct dcerpc_winreg_QueryInfoKey_state);
3887 0 : NTSTATUS status;
3888 :
3889 0 : if (tevent_req_is_nterror(req, &status)) {
3890 0 : tevent_req_received(req);
3891 0 : return status;
3892 : }
3893 :
3894 : /* Steal possible out parameters to the callers context */
3895 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
3896 :
3897 : /* Return result */
3898 0 : *result = state->orig.out.result;
3899 :
3900 0 : tevent_req_received(req);
3901 0 : return NT_STATUS_OK;
3902 : }
3903 :
3904 20324 : NTSTATUS dcerpc_winreg_QueryInfoKey(struct dcerpc_binding_handle *h,
3905 : TALLOC_CTX *mem_ctx,
3906 : struct policy_handle *_handle /* [in] [ref] */,
3907 : struct winreg_String *_classname /* [in,out] [ref] */,
3908 : uint32_t *_num_subkeys /* [out] [ref] */,
3909 : uint32_t *_max_subkeylen /* [out] [ref] */,
3910 : uint32_t *_max_classlen /* [out] [ref] */,
3911 : uint32_t *_num_values /* [out] [ref] */,
3912 : uint32_t *_max_valnamelen /* [out] [ref] */,
3913 : uint32_t *_max_valbufsize /* [out] [ref] */,
3914 : uint32_t *_secdescsize /* [out] [ref] */,
3915 : NTTIME *_last_changed_time /* [out] [ref] */,
3916 : WERROR *result)
3917 : {
3918 0 : struct winreg_QueryInfoKey r;
3919 0 : NTSTATUS status;
3920 :
3921 : /* In parameters */
3922 20324 : r.in.handle = _handle;
3923 20324 : r.in.classname = _classname;
3924 :
3925 : /* Out parameters */
3926 20324 : r.out.classname = _classname;
3927 20324 : r.out.num_subkeys = _num_subkeys;
3928 20324 : r.out.max_subkeylen = _max_subkeylen;
3929 20324 : r.out.max_classlen = _max_classlen;
3930 20324 : r.out.num_values = _num_values;
3931 20324 : r.out.max_valnamelen = _max_valnamelen;
3932 20324 : r.out.max_valbufsize = _max_valbufsize;
3933 20324 : r.out.secdescsize = _secdescsize;
3934 20324 : r.out.last_changed_time = _last_changed_time;
3935 :
3936 : /* Result */
3937 20324 : NDR_ZERO_STRUCT(r.out.result);
3938 :
3939 20324 : status = dcerpc_winreg_QueryInfoKey_r(h, mem_ctx, &r);
3940 20324 : if (!NT_STATUS_IS_OK(status)) {
3941 0 : return status;
3942 : }
3943 :
3944 : /* Return variables */
3945 20324 : *_classname = *r.out.classname;
3946 20324 : *_num_subkeys = *r.out.num_subkeys;
3947 20324 : *_max_subkeylen = *r.out.max_subkeylen;
3948 20324 : *_max_classlen = *r.out.max_classlen;
3949 20324 : *_num_values = *r.out.num_values;
3950 20324 : *_max_valnamelen = *r.out.max_valnamelen;
3951 20324 : *_max_valbufsize = *r.out.max_valbufsize;
3952 20324 : *_secdescsize = *r.out.secdescsize;
3953 20324 : *_last_changed_time = *r.out.last_changed_time;
3954 :
3955 : /* Return result */
3956 20324 : *result = r.out.result;
3957 :
3958 20324 : return NT_STATUS_OK;
3959 : }
3960 :
3961 : struct dcerpc_winreg_QueryValue_r_state {
3962 : TALLOC_CTX *out_mem_ctx;
3963 : };
3964 :
3965 : static void dcerpc_winreg_QueryValue_r_done(struct tevent_req *subreq);
3966 :
3967 0 : struct tevent_req *dcerpc_winreg_QueryValue_r_send(TALLOC_CTX *mem_ctx,
3968 : struct tevent_context *ev,
3969 : struct dcerpc_binding_handle *h,
3970 : struct winreg_QueryValue *r)
3971 : {
3972 0 : struct tevent_req *req;
3973 0 : struct dcerpc_winreg_QueryValue_r_state *state;
3974 0 : struct tevent_req *subreq;
3975 :
3976 0 : req = tevent_req_create(mem_ctx, &state,
3977 : struct dcerpc_winreg_QueryValue_r_state);
3978 0 : if (req == NULL) {
3979 0 : return NULL;
3980 : }
3981 :
3982 0 : state->out_mem_ctx = talloc_new(state);
3983 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
3984 0 : return tevent_req_post(req, ev);
3985 : }
3986 :
3987 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
3988 : NULL, &ndr_table_winreg,
3989 0 : NDR_WINREG_QUERYVALUE, state->out_mem_ctx, r);
3990 0 : if (tevent_req_nomem(subreq, req)) {
3991 0 : return tevent_req_post(req, ev);
3992 : }
3993 0 : tevent_req_set_callback(subreq, dcerpc_winreg_QueryValue_r_done, req);
3994 :
3995 0 : return req;
3996 : }
3997 :
3998 0 : static void dcerpc_winreg_QueryValue_r_done(struct tevent_req *subreq)
3999 : {
4000 0 : struct tevent_req *req =
4001 0 : tevent_req_callback_data(subreq,
4002 : struct tevent_req);
4003 0 : NTSTATUS status;
4004 :
4005 0 : status = dcerpc_binding_handle_call_recv(subreq);
4006 0 : TALLOC_FREE(subreq);
4007 0 : if (tevent_req_nterror(req, status)) {
4008 0 : return;
4009 : }
4010 :
4011 0 : tevent_req_done(req);
4012 : }
4013 :
4014 0 : NTSTATUS dcerpc_winreg_QueryValue_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
4015 : {
4016 0 : struct dcerpc_winreg_QueryValue_r_state *state =
4017 0 : tevent_req_data(req,
4018 : struct dcerpc_winreg_QueryValue_r_state);
4019 0 : NTSTATUS status;
4020 :
4021 0 : if (tevent_req_is_nterror(req, &status)) {
4022 0 : tevent_req_received(req);
4023 0 : return status;
4024 : }
4025 :
4026 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
4027 :
4028 0 : tevent_req_received(req);
4029 0 : return NT_STATUS_OK;
4030 : }
4031 :
4032 61704 : NTSTATUS dcerpc_winreg_QueryValue_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_QueryValue *r)
4033 : {
4034 0 : NTSTATUS status;
4035 :
4036 61704 : status = dcerpc_binding_handle_call(h,
4037 : NULL, &ndr_table_winreg,
4038 : NDR_WINREG_QUERYVALUE, mem_ctx, r);
4039 :
4040 61704 : return status;
4041 : }
4042 :
4043 : struct dcerpc_winreg_QueryValue_state {
4044 : struct winreg_QueryValue orig;
4045 : struct winreg_QueryValue tmp;
4046 : TALLOC_CTX *out_mem_ctx;
4047 : };
4048 :
4049 : static void dcerpc_winreg_QueryValue_done(struct tevent_req *subreq);
4050 :
4051 0 : struct tevent_req *dcerpc_winreg_QueryValue_send(TALLOC_CTX *mem_ctx,
4052 : struct tevent_context *ev,
4053 : struct dcerpc_binding_handle *h,
4054 : struct policy_handle *_handle /* [in] [ref] */,
4055 : struct winreg_String *_value_name /* [in] [ref] */,
4056 : enum winreg_Type *_type /* [in,out] [unique] */,
4057 : uint8_t *_data /* [in,out] [length_is(data_length?*data_length:0),range(0,0x4000000),size_is(data_size?*data_size:0),unique] */,
4058 : uint32_t *_data_size /* [in,out] [unique] */,
4059 : uint32_t *_data_length /* [in,out] [unique] */)
4060 : {
4061 0 : struct tevent_req *req;
4062 0 : struct dcerpc_winreg_QueryValue_state *state;
4063 0 : struct tevent_req *subreq;
4064 :
4065 0 : req = tevent_req_create(mem_ctx, &state,
4066 : struct dcerpc_winreg_QueryValue_state);
4067 0 : if (req == NULL) {
4068 0 : return NULL;
4069 : }
4070 0 : state->out_mem_ctx = NULL;
4071 :
4072 : /* In parameters */
4073 0 : state->orig.in.handle = _handle;
4074 0 : state->orig.in.value_name = _value_name;
4075 0 : state->orig.in.type = _type;
4076 0 : state->orig.in.data = _data;
4077 0 : state->orig.in.data_size = _data_size;
4078 0 : state->orig.in.data_length = _data_length;
4079 :
4080 : /* Out parameters */
4081 0 : state->orig.out.type = _type;
4082 0 : state->orig.out.data = _data;
4083 0 : state->orig.out.data_size = _data_size;
4084 0 : state->orig.out.data_length = _data_length;
4085 :
4086 : /* Result */
4087 0 : NDR_ZERO_STRUCT(state->orig.out.result);
4088 :
4089 0 : state->out_mem_ctx = talloc_named_const(state, 0,
4090 : "dcerpc_winreg_QueryValue_out_memory");
4091 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
4092 0 : return tevent_req_post(req, ev);
4093 : }
4094 :
4095 : /* make a temporary copy, that we pass to the dispatch function */
4096 0 : state->tmp = state->orig;
4097 :
4098 0 : subreq = dcerpc_winreg_QueryValue_r_send(state, ev, h, &state->tmp);
4099 0 : if (tevent_req_nomem(subreq, req)) {
4100 0 : return tevent_req_post(req, ev);
4101 : }
4102 0 : tevent_req_set_callback(subreq, dcerpc_winreg_QueryValue_done, req);
4103 0 : return req;
4104 : }
4105 :
4106 0 : static void dcerpc_winreg_QueryValue_done(struct tevent_req *subreq)
4107 : {
4108 0 : struct tevent_req *req = tevent_req_callback_data(
4109 : subreq, struct tevent_req);
4110 0 : struct dcerpc_winreg_QueryValue_state *state = tevent_req_data(
4111 : req, struct dcerpc_winreg_QueryValue_state);
4112 0 : NTSTATUS status;
4113 0 : TALLOC_CTX *mem_ctx;
4114 :
4115 0 : if (state->out_mem_ctx) {
4116 0 : mem_ctx = state->out_mem_ctx;
4117 : } else {
4118 0 : mem_ctx = state;
4119 : }
4120 :
4121 0 : status = dcerpc_winreg_QueryValue_r_recv(subreq, mem_ctx);
4122 0 : TALLOC_FREE(subreq);
4123 0 : if (tevent_req_nterror(req, status)) {
4124 0 : return;
4125 : }
4126 :
4127 : /* Copy out parameters */
4128 0 : if (state->orig.out.type && state->tmp.out.type) {
4129 0 : *state->orig.out.type = *state->tmp.out.type;
4130 : }
4131 0 : if (state->orig.out.data && state->tmp.out.data) {
4132 : {
4133 0 : size_t _copy_len_data;
4134 0 : if ((state->tmp.out.data_size?*state->tmp.out.data_size:0) > (state->tmp.in.data_size?*state->tmp.in.data_size:0)) {
4135 0 : tevent_req_nterror(req, NT_STATUS_INVALID_NETWORK_RESPONSE);
4136 0 : return;
4137 : }
4138 0 : if ((state->tmp.out.data_length?*state->tmp.out.data_length:0) > (state->tmp.out.data_size?*state->tmp.out.data_size:0)) {
4139 0 : tevent_req_nterror(req, NT_STATUS_INVALID_NETWORK_RESPONSE);
4140 0 : return;
4141 : }
4142 0 : _copy_len_data = state->tmp.out.data_length?*state->tmp.out.data_length:0;
4143 0 : if (state->orig.out.data != state->tmp.out.data) {
4144 0 : memcpy(state->orig.out.data, state->tmp.out.data, _copy_len_data * sizeof(*state->orig.out.data));
4145 : }
4146 : }
4147 : }
4148 0 : if (state->orig.out.data_size && state->tmp.out.data_size) {
4149 0 : *state->orig.out.data_size = *state->tmp.out.data_size;
4150 : }
4151 0 : if (state->orig.out.data_length && state->tmp.out.data_length) {
4152 0 : *state->orig.out.data_length = *state->tmp.out.data_length;
4153 : }
4154 :
4155 : /* Copy result */
4156 0 : state->orig.out.result = state->tmp.out.result;
4157 :
4158 : /* Reset temporary structure */
4159 0 : NDR_ZERO_STRUCT(state->tmp);
4160 :
4161 0 : tevent_req_done(req);
4162 : }
4163 :
4164 0 : NTSTATUS dcerpc_winreg_QueryValue_recv(struct tevent_req *req,
4165 : TALLOC_CTX *mem_ctx,
4166 : WERROR *result)
4167 : {
4168 0 : struct dcerpc_winreg_QueryValue_state *state = tevent_req_data(
4169 : req, struct dcerpc_winreg_QueryValue_state);
4170 0 : NTSTATUS status;
4171 :
4172 0 : if (tevent_req_is_nterror(req, &status)) {
4173 0 : tevent_req_received(req);
4174 0 : return status;
4175 : }
4176 :
4177 : /* Steal possible out parameters to the callers context */
4178 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
4179 :
4180 : /* Return result */
4181 0 : *result = state->orig.out.result;
4182 :
4183 0 : tevent_req_received(req);
4184 0 : return NT_STATUS_OK;
4185 : }
4186 :
4187 41778 : NTSTATUS dcerpc_winreg_QueryValue(struct dcerpc_binding_handle *h,
4188 : TALLOC_CTX *mem_ctx,
4189 : struct policy_handle *_handle /* [in] [ref] */,
4190 : struct winreg_String *_value_name /* [in] [ref] */,
4191 : enum winreg_Type *_type /* [in,out] [unique] */,
4192 : uint8_t *_data /* [in,out] [length_is(data_length?*data_length:0),range(0,0x4000000),size_is(data_size?*data_size:0),unique] */,
4193 : uint32_t *_data_size /* [in,out] [unique] */,
4194 : uint32_t *_data_length /* [in,out] [unique] */,
4195 : WERROR *result)
4196 : {
4197 0 : struct winreg_QueryValue r;
4198 0 : NTSTATUS status;
4199 :
4200 : /* In parameters */
4201 41778 : r.in.handle = _handle;
4202 41778 : r.in.value_name = _value_name;
4203 41778 : r.in.type = _type;
4204 41778 : r.in.data = _data;
4205 41778 : r.in.data_size = _data_size;
4206 41778 : r.in.data_length = _data_length;
4207 :
4208 : /* Out parameters */
4209 41778 : r.out.type = _type;
4210 41778 : r.out.data = _data;
4211 41778 : r.out.data_size = _data_size;
4212 41778 : r.out.data_length = _data_length;
4213 :
4214 : /* Result */
4215 41778 : NDR_ZERO_STRUCT(r.out.result);
4216 :
4217 41778 : status = dcerpc_winreg_QueryValue_r(h, mem_ctx, &r);
4218 41778 : if (!NT_STATUS_IS_OK(status)) {
4219 0 : return status;
4220 : }
4221 :
4222 : /* Return variables */
4223 41778 : if (_type && r.out.type) {
4224 41778 : *_type = *r.out.type;
4225 : }
4226 41778 : if (_data && r.out.data) {
4227 : {
4228 0 : size_t _copy_len_data;
4229 17054 : if ((r.out.data_size?*r.out.data_size:0) > (r.in.data_size?*r.in.data_size:0)) {
4230 0 : return NT_STATUS_INVALID_NETWORK_RESPONSE;
4231 : }
4232 17054 : if ((r.out.data_length?*r.out.data_length:0) > (r.out.data_size?*r.out.data_size:0)) {
4233 0 : return NT_STATUS_INVALID_NETWORK_RESPONSE;
4234 : }
4235 17054 : _copy_len_data = r.out.data_length?*r.out.data_length:0;
4236 17054 : if (_data != r.out.data) {
4237 17054 : memcpy(_data, r.out.data, _copy_len_data * sizeof(*_data));
4238 : }
4239 : }
4240 : }
4241 41778 : if (_data_size && r.out.data_size) {
4242 41778 : *_data_size = *r.out.data_size;
4243 : }
4244 41778 : if (_data_length && r.out.data_length) {
4245 41778 : *_data_length = *r.out.data_length;
4246 : }
4247 :
4248 : /* Return result */
4249 41778 : *result = r.out.result;
4250 :
4251 41778 : return NT_STATUS_OK;
4252 : }
4253 :
4254 : struct dcerpc_winreg_ReplaceKey_r_state {
4255 : TALLOC_CTX *out_mem_ctx;
4256 : };
4257 :
4258 : static void dcerpc_winreg_ReplaceKey_r_done(struct tevent_req *subreq);
4259 :
4260 0 : struct tevent_req *dcerpc_winreg_ReplaceKey_r_send(TALLOC_CTX *mem_ctx,
4261 : struct tevent_context *ev,
4262 : struct dcerpc_binding_handle *h,
4263 : struct winreg_ReplaceKey *r)
4264 : {
4265 0 : struct tevent_req *req;
4266 0 : struct dcerpc_winreg_ReplaceKey_r_state *state;
4267 0 : struct tevent_req *subreq;
4268 :
4269 0 : req = tevent_req_create(mem_ctx, &state,
4270 : struct dcerpc_winreg_ReplaceKey_r_state);
4271 0 : if (req == NULL) {
4272 0 : return NULL;
4273 : }
4274 :
4275 0 : state->out_mem_ctx = NULL;
4276 :
4277 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
4278 : NULL, &ndr_table_winreg,
4279 : NDR_WINREG_REPLACEKEY, state, r);
4280 0 : if (tevent_req_nomem(subreq, req)) {
4281 0 : return tevent_req_post(req, ev);
4282 : }
4283 0 : tevent_req_set_callback(subreq, dcerpc_winreg_ReplaceKey_r_done, req);
4284 :
4285 0 : return req;
4286 : }
4287 :
4288 0 : static void dcerpc_winreg_ReplaceKey_r_done(struct tevent_req *subreq)
4289 : {
4290 0 : struct tevent_req *req =
4291 0 : tevent_req_callback_data(subreq,
4292 : struct tevent_req);
4293 0 : NTSTATUS status;
4294 :
4295 0 : status = dcerpc_binding_handle_call_recv(subreq);
4296 0 : TALLOC_FREE(subreq);
4297 0 : if (tevent_req_nterror(req, status)) {
4298 0 : return;
4299 : }
4300 :
4301 0 : tevent_req_done(req);
4302 : }
4303 :
4304 0 : NTSTATUS dcerpc_winreg_ReplaceKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
4305 : {
4306 0 : struct dcerpc_winreg_ReplaceKey_r_state *state =
4307 0 : tevent_req_data(req,
4308 : struct dcerpc_winreg_ReplaceKey_r_state);
4309 0 : NTSTATUS status;
4310 :
4311 0 : if (tevent_req_is_nterror(req, &status)) {
4312 0 : tevent_req_received(req);
4313 0 : return status;
4314 : }
4315 :
4316 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
4317 :
4318 0 : tevent_req_received(req);
4319 0 : return NT_STATUS_OK;
4320 : }
4321 :
4322 0 : NTSTATUS dcerpc_winreg_ReplaceKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_ReplaceKey *r)
4323 : {
4324 0 : NTSTATUS status;
4325 :
4326 0 : status = dcerpc_binding_handle_call(h,
4327 : NULL, &ndr_table_winreg,
4328 : NDR_WINREG_REPLACEKEY, mem_ctx, r);
4329 :
4330 0 : return status;
4331 : }
4332 :
4333 : struct dcerpc_winreg_ReplaceKey_state {
4334 : struct winreg_ReplaceKey orig;
4335 : struct winreg_ReplaceKey tmp;
4336 : TALLOC_CTX *out_mem_ctx;
4337 : };
4338 :
4339 : static void dcerpc_winreg_ReplaceKey_done(struct tevent_req *subreq);
4340 :
4341 0 : struct tevent_req *dcerpc_winreg_ReplaceKey_send(TALLOC_CTX *mem_ctx,
4342 : struct tevent_context *ev,
4343 : struct dcerpc_binding_handle *h,
4344 : struct policy_handle *_handle /* [in] [ref] */,
4345 : struct winreg_String *_subkey /* [in] [ref] */,
4346 : struct winreg_String *_new_file /* [in] [ref] */,
4347 : struct winreg_String *_old_file /* [in] [ref] */)
4348 : {
4349 0 : struct tevent_req *req;
4350 0 : struct dcerpc_winreg_ReplaceKey_state *state;
4351 0 : struct tevent_req *subreq;
4352 :
4353 0 : req = tevent_req_create(mem_ctx, &state,
4354 : struct dcerpc_winreg_ReplaceKey_state);
4355 0 : if (req == NULL) {
4356 0 : return NULL;
4357 : }
4358 0 : state->out_mem_ctx = NULL;
4359 :
4360 : /* In parameters */
4361 0 : state->orig.in.handle = _handle;
4362 0 : state->orig.in.subkey = _subkey;
4363 0 : state->orig.in.new_file = _new_file;
4364 0 : state->orig.in.old_file = _old_file;
4365 :
4366 : /* Out parameters */
4367 :
4368 : /* Result */
4369 0 : NDR_ZERO_STRUCT(state->orig.out.result);
4370 :
4371 : /* make a temporary copy, that we pass to the dispatch function */
4372 0 : state->tmp = state->orig;
4373 :
4374 0 : subreq = dcerpc_winreg_ReplaceKey_r_send(state, ev, h, &state->tmp);
4375 0 : if (tevent_req_nomem(subreq, req)) {
4376 0 : return tevent_req_post(req, ev);
4377 : }
4378 0 : tevent_req_set_callback(subreq, dcerpc_winreg_ReplaceKey_done, req);
4379 0 : return req;
4380 : }
4381 :
4382 0 : static void dcerpc_winreg_ReplaceKey_done(struct tevent_req *subreq)
4383 : {
4384 0 : struct tevent_req *req = tevent_req_callback_data(
4385 : subreq, struct tevent_req);
4386 0 : struct dcerpc_winreg_ReplaceKey_state *state = tevent_req_data(
4387 : req, struct dcerpc_winreg_ReplaceKey_state);
4388 0 : NTSTATUS status;
4389 0 : TALLOC_CTX *mem_ctx;
4390 :
4391 0 : if (state->out_mem_ctx) {
4392 0 : mem_ctx = state->out_mem_ctx;
4393 : } else {
4394 0 : mem_ctx = state;
4395 : }
4396 :
4397 0 : status = dcerpc_winreg_ReplaceKey_r_recv(subreq, mem_ctx);
4398 0 : TALLOC_FREE(subreq);
4399 0 : if (tevent_req_nterror(req, status)) {
4400 0 : return;
4401 : }
4402 :
4403 : /* Copy out parameters */
4404 :
4405 : /* Copy result */
4406 0 : state->orig.out.result = state->tmp.out.result;
4407 :
4408 : /* Reset temporary structure */
4409 0 : NDR_ZERO_STRUCT(state->tmp);
4410 :
4411 0 : tevent_req_done(req);
4412 : }
4413 :
4414 0 : NTSTATUS dcerpc_winreg_ReplaceKey_recv(struct tevent_req *req,
4415 : TALLOC_CTX *mem_ctx,
4416 : WERROR *result)
4417 : {
4418 0 : struct dcerpc_winreg_ReplaceKey_state *state = tevent_req_data(
4419 : req, struct dcerpc_winreg_ReplaceKey_state);
4420 0 : NTSTATUS status;
4421 :
4422 0 : if (tevent_req_is_nterror(req, &status)) {
4423 0 : tevent_req_received(req);
4424 0 : return status;
4425 : }
4426 :
4427 : /* Steal possible out parameters to the callers context */
4428 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
4429 :
4430 : /* Return result */
4431 0 : *result = state->orig.out.result;
4432 :
4433 0 : tevent_req_received(req);
4434 0 : return NT_STATUS_OK;
4435 : }
4436 :
4437 0 : NTSTATUS dcerpc_winreg_ReplaceKey(struct dcerpc_binding_handle *h,
4438 : TALLOC_CTX *mem_ctx,
4439 : struct policy_handle *_handle /* [in] [ref] */,
4440 : struct winreg_String *_subkey /* [in] [ref] */,
4441 : struct winreg_String *_new_file /* [in] [ref] */,
4442 : struct winreg_String *_old_file /* [in] [ref] */,
4443 : WERROR *result)
4444 : {
4445 0 : struct winreg_ReplaceKey r;
4446 0 : NTSTATUS status;
4447 :
4448 : /* In parameters */
4449 0 : r.in.handle = _handle;
4450 0 : r.in.subkey = _subkey;
4451 0 : r.in.new_file = _new_file;
4452 0 : r.in.old_file = _old_file;
4453 :
4454 : /* Out parameters */
4455 :
4456 : /* Result */
4457 0 : NDR_ZERO_STRUCT(r.out.result);
4458 :
4459 0 : status = dcerpc_winreg_ReplaceKey_r(h, mem_ctx, &r);
4460 0 : if (!NT_STATUS_IS_OK(status)) {
4461 0 : return status;
4462 : }
4463 :
4464 : /* Return variables */
4465 :
4466 : /* Return result */
4467 0 : *result = r.out.result;
4468 :
4469 0 : return NT_STATUS_OK;
4470 : }
4471 :
4472 : struct dcerpc_winreg_RestoreKey_r_state {
4473 : TALLOC_CTX *out_mem_ctx;
4474 : };
4475 :
4476 : static void dcerpc_winreg_RestoreKey_r_done(struct tevent_req *subreq);
4477 :
4478 0 : struct tevent_req *dcerpc_winreg_RestoreKey_r_send(TALLOC_CTX *mem_ctx,
4479 : struct tevent_context *ev,
4480 : struct dcerpc_binding_handle *h,
4481 : struct winreg_RestoreKey *r)
4482 : {
4483 0 : struct tevent_req *req;
4484 0 : struct dcerpc_winreg_RestoreKey_r_state *state;
4485 0 : struct tevent_req *subreq;
4486 :
4487 0 : req = tevent_req_create(mem_ctx, &state,
4488 : struct dcerpc_winreg_RestoreKey_r_state);
4489 0 : if (req == NULL) {
4490 0 : return NULL;
4491 : }
4492 :
4493 0 : state->out_mem_ctx = NULL;
4494 :
4495 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
4496 : NULL, &ndr_table_winreg,
4497 : NDR_WINREG_RESTOREKEY, state, r);
4498 0 : if (tevent_req_nomem(subreq, req)) {
4499 0 : return tevent_req_post(req, ev);
4500 : }
4501 0 : tevent_req_set_callback(subreq, dcerpc_winreg_RestoreKey_r_done, req);
4502 :
4503 0 : return req;
4504 : }
4505 :
4506 0 : static void dcerpc_winreg_RestoreKey_r_done(struct tevent_req *subreq)
4507 : {
4508 0 : struct tevent_req *req =
4509 0 : tevent_req_callback_data(subreq,
4510 : struct tevent_req);
4511 0 : NTSTATUS status;
4512 :
4513 0 : status = dcerpc_binding_handle_call_recv(subreq);
4514 0 : TALLOC_FREE(subreq);
4515 0 : if (tevent_req_nterror(req, status)) {
4516 0 : return;
4517 : }
4518 :
4519 0 : tevent_req_done(req);
4520 : }
4521 :
4522 0 : NTSTATUS dcerpc_winreg_RestoreKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
4523 : {
4524 0 : struct dcerpc_winreg_RestoreKey_r_state *state =
4525 0 : tevent_req_data(req,
4526 : struct dcerpc_winreg_RestoreKey_r_state);
4527 0 : NTSTATUS status;
4528 :
4529 0 : if (tevent_req_is_nterror(req, &status)) {
4530 0 : tevent_req_received(req);
4531 0 : return status;
4532 : }
4533 :
4534 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
4535 :
4536 0 : tevent_req_received(req);
4537 0 : return NT_STATUS_OK;
4538 : }
4539 :
4540 0 : NTSTATUS dcerpc_winreg_RestoreKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_RestoreKey *r)
4541 : {
4542 0 : NTSTATUS status;
4543 :
4544 0 : status = dcerpc_binding_handle_call(h,
4545 : NULL, &ndr_table_winreg,
4546 : NDR_WINREG_RESTOREKEY, mem_ctx, r);
4547 :
4548 0 : return status;
4549 : }
4550 :
4551 : struct dcerpc_winreg_RestoreKey_state {
4552 : struct winreg_RestoreKey orig;
4553 : struct winreg_RestoreKey tmp;
4554 : TALLOC_CTX *out_mem_ctx;
4555 : };
4556 :
4557 : static void dcerpc_winreg_RestoreKey_done(struct tevent_req *subreq);
4558 :
4559 0 : struct tevent_req *dcerpc_winreg_RestoreKey_send(TALLOC_CTX *mem_ctx,
4560 : struct tevent_context *ev,
4561 : struct dcerpc_binding_handle *h,
4562 : struct policy_handle *_handle /* [in] [ref] */,
4563 : struct winreg_String *_filename /* [in] [ref] */,
4564 : uint32_t _flags /* [in] */)
4565 : {
4566 0 : struct tevent_req *req;
4567 0 : struct dcerpc_winreg_RestoreKey_state *state;
4568 0 : struct tevent_req *subreq;
4569 :
4570 0 : req = tevent_req_create(mem_ctx, &state,
4571 : struct dcerpc_winreg_RestoreKey_state);
4572 0 : if (req == NULL) {
4573 0 : return NULL;
4574 : }
4575 0 : state->out_mem_ctx = NULL;
4576 :
4577 : /* In parameters */
4578 0 : state->orig.in.handle = _handle;
4579 0 : state->orig.in.filename = _filename;
4580 0 : state->orig.in.flags = _flags;
4581 :
4582 : /* Out parameters */
4583 :
4584 : /* Result */
4585 0 : NDR_ZERO_STRUCT(state->orig.out.result);
4586 :
4587 : /* make a temporary copy, that we pass to the dispatch function */
4588 0 : state->tmp = state->orig;
4589 :
4590 0 : subreq = dcerpc_winreg_RestoreKey_r_send(state, ev, h, &state->tmp);
4591 0 : if (tevent_req_nomem(subreq, req)) {
4592 0 : return tevent_req_post(req, ev);
4593 : }
4594 0 : tevent_req_set_callback(subreq, dcerpc_winreg_RestoreKey_done, req);
4595 0 : return req;
4596 : }
4597 :
4598 0 : static void dcerpc_winreg_RestoreKey_done(struct tevent_req *subreq)
4599 : {
4600 0 : struct tevent_req *req = tevent_req_callback_data(
4601 : subreq, struct tevent_req);
4602 0 : struct dcerpc_winreg_RestoreKey_state *state = tevent_req_data(
4603 : req, struct dcerpc_winreg_RestoreKey_state);
4604 0 : NTSTATUS status;
4605 0 : TALLOC_CTX *mem_ctx;
4606 :
4607 0 : if (state->out_mem_ctx) {
4608 0 : mem_ctx = state->out_mem_ctx;
4609 : } else {
4610 0 : mem_ctx = state;
4611 : }
4612 :
4613 0 : status = dcerpc_winreg_RestoreKey_r_recv(subreq, mem_ctx);
4614 0 : TALLOC_FREE(subreq);
4615 0 : if (tevent_req_nterror(req, status)) {
4616 0 : return;
4617 : }
4618 :
4619 : /* Copy out parameters */
4620 :
4621 : /* Copy result */
4622 0 : state->orig.out.result = state->tmp.out.result;
4623 :
4624 : /* Reset temporary structure */
4625 0 : NDR_ZERO_STRUCT(state->tmp);
4626 :
4627 0 : tevent_req_done(req);
4628 : }
4629 :
4630 0 : NTSTATUS dcerpc_winreg_RestoreKey_recv(struct tevent_req *req,
4631 : TALLOC_CTX *mem_ctx,
4632 : WERROR *result)
4633 : {
4634 0 : struct dcerpc_winreg_RestoreKey_state *state = tevent_req_data(
4635 : req, struct dcerpc_winreg_RestoreKey_state);
4636 0 : NTSTATUS status;
4637 :
4638 0 : if (tevent_req_is_nterror(req, &status)) {
4639 0 : tevent_req_received(req);
4640 0 : return status;
4641 : }
4642 :
4643 : /* Steal possible out parameters to the callers context */
4644 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
4645 :
4646 : /* Return result */
4647 0 : *result = state->orig.out.result;
4648 :
4649 0 : tevent_req_received(req);
4650 0 : return NT_STATUS_OK;
4651 : }
4652 :
4653 0 : NTSTATUS dcerpc_winreg_RestoreKey(struct dcerpc_binding_handle *h,
4654 : TALLOC_CTX *mem_ctx,
4655 : struct policy_handle *_handle /* [in] [ref] */,
4656 : struct winreg_String *_filename /* [in] [ref] */,
4657 : uint32_t _flags /* [in] */,
4658 : WERROR *result)
4659 : {
4660 0 : struct winreg_RestoreKey r;
4661 0 : NTSTATUS status;
4662 :
4663 : /* In parameters */
4664 0 : r.in.handle = _handle;
4665 0 : r.in.filename = _filename;
4666 0 : r.in.flags = _flags;
4667 :
4668 : /* Out parameters */
4669 :
4670 : /* Result */
4671 0 : NDR_ZERO_STRUCT(r.out.result);
4672 :
4673 0 : status = dcerpc_winreg_RestoreKey_r(h, mem_ctx, &r);
4674 0 : if (!NT_STATUS_IS_OK(status)) {
4675 0 : return status;
4676 : }
4677 :
4678 : /* Return variables */
4679 :
4680 : /* Return result */
4681 0 : *result = r.out.result;
4682 :
4683 0 : return NT_STATUS_OK;
4684 : }
4685 :
4686 : struct dcerpc_winreg_SaveKey_r_state {
4687 : TALLOC_CTX *out_mem_ctx;
4688 : };
4689 :
4690 : static void dcerpc_winreg_SaveKey_r_done(struct tevent_req *subreq);
4691 :
4692 0 : struct tevent_req *dcerpc_winreg_SaveKey_r_send(TALLOC_CTX *mem_ctx,
4693 : struct tevent_context *ev,
4694 : struct dcerpc_binding_handle *h,
4695 : struct winreg_SaveKey *r)
4696 : {
4697 0 : struct tevent_req *req;
4698 0 : struct dcerpc_winreg_SaveKey_r_state *state;
4699 0 : struct tevent_req *subreq;
4700 :
4701 0 : req = tevent_req_create(mem_ctx, &state,
4702 : struct dcerpc_winreg_SaveKey_r_state);
4703 0 : if (req == NULL) {
4704 0 : return NULL;
4705 : }
4706 :
4707 0 : state->out_mem_ctx = NULL;
4708 :
4709 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
4710 : NULL, &ndr_table_winreg,
4711 : NDR_WINREG_SAVEKEY, state, r);
4712 0 : if (tevent_req_nomem(subreq, req)) {
4713 0 : return tevent_req_post(req, ev);
4714 : }
4715 0 : tevent_req_set_callback(subreq, dcerpc_winreg_SaveKey_r_done, req);
4716 :
4717 0 : return req;
4718 : }
4719 :
4720 0 : static void dcerpc_winreg_SaveKey_r_done(struct tevent_req *subreq)
4721 : {
4722 0 : struct tevent_req *req =
4723 0 : tevent_req_callback_data(subreq,
4724 : struct tevent_req);
4725 0 : NTSTATUS status;
4726 :
4727 0 : status = dcerpc_binding_handle_call_recv(subreq);
4728 0 : TALLOC_FREE(subreq);
4729 0 : if (tevent_req_nterror(req, status)) {
4730 0 : return;
4731 : }
4732 :
4733 0 : tevent_req_done(req);
4734 : }
4735 :
4736 0 : NTSTATUS dcerpc_winreg_SaveKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
4737 : {
4738 0 : struct dcerpc_winreg_SaveKey_r_state *state =
4739 0 : tevent_req_data(req,
4740 : struct dcerpc_winreg_SaveKey_r_state);
4741 0 : NTSTATUS status;
4742 :
4743 0 : if (tevent_req_is_nterror(req, &status)) {
4744 0 : tevent_req_received(req);
4745 0 : return status;
4746 : }
4747 :
4748 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
4749 :
4750 0 : tevent_req_received(req);
4751 0 : return NT_STATUS_OK;
4752 : }
4753 :
4754 0 : NTSTATUS dcerpc_winreg_SaveKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_SaveKey *r)
4755 : {
4756 0 : NTSTATUS status;
4757 :
4758 0 : status = dcerpc_binding_handle_call(h,
4759 : NULL, &ndr_table_winreg,
4760 : NDR_WINREG_SAVEKEY, mem_ctx, r);
4761 :
4762 0 : return status;
4763 : }
4764 :
4765 : struct dcerpc_winreg_SaveKey_state {
4766 : struct winreg_SaveKey orig;
4767 : struct winreg_SaveKey tmp;
4768 : TALLOC_CTX *out_mem_ctx;
4769 : };
4770 :
4771 : static void dcerpc_winreg_SaveKey_done(struct tevent_req *subreq);
4772 :
4773 0 : struct tevent_req *dcerpc_winreg_SaveKey_send(TALLOC_CTX *mem_ctx,
4774 : struct tevent_context *ev,
4775 : struct dcerpc_binding_handle *h,
4776 : struct policy_handle *_handle /* [in] [ref] */,
4777 : struct winreg_String *_filename /* [in] [ref] */,
4778 : struct KeySecurityAttribute *_sec_attrib /* [in] [unique] */)
4779 : {
4780 0 : struct tevent_req *req;
4781 0 : struct dcerpc_winreg_SaveKey_state *state;
4782 0 : struct tevent_req *subreq;
4783 :
4784 0 : req = tevent_req_create(mem_ctx, &state,
4785 : struct dcerpc_winreg_SaveKey_state);
4786 0 : if (req == NULL) {
4787 0 : return NULL;
4788 : }
4789 0 : state->out_mem_ctx = NULL;
4790 :
4791 : /* In parameters */
4792 0 : state->orig.in.handle = _handle;
4793 0 : state->orig.in.filename = _filename;
4794 0 : state->orig.in.sec_attrib = _sec_attrib;
4795 :
4796 : /* Out parameters */
4797 :
4798 : /* Result */
4799 0 : NDR_ZERO_STRUCT(state->orig.out.result);
4800 :
4801 : /* make a temporary copy, that we pass to the dispatch function */
4802 0 : state->tmp = state->orig;
4803 :
4804 0 : subreq = dcerpc_winreg_SaveKey_r_send(state, ev, h, &state->tmp);
4805 0 : if (tevent_req_nomem(subreq, req)) {
4806 0 : return tevent_req_post(req, ev);
4807 : }
4808 0 : tevent_req_set_callback(subreq, dcerpc_winreg_SaveKey_done, req);
4809 0 : return req;
4810 : }
4811 :
4812 0 : static void dcerpc_winreg_SaveKey_done(struct tevent_req *subreq)
4813 : {
4814 0 : struct tevent_req *req = tevent_req_callback_data(
4815 : subreq, struct tevent_req);
4816 0 : struct dcerpc_winreg_SaveKey_state *state = tevent_req_data(
4817 : req, struct dcerpc_winreg_SaveKey_state);
4818 0 : NTSTATUS status;
4819 0 : TALLOC_CTX *mem_ctx;
4820 :
4821 0 : if (state->out_mem_ctx) {
4822 0 : mem_ctx = state->out_mem_ctx;
4823 : } else {
4824 0 : mem_ctx = state;
4825 : }
4826 :
4827 0 : status = dcerpc_winreg_SaveKey_r_recv(subreq, mem_ctx);
4828 0 : TALLOC_FREE(subreq);
4829 0 : if (tevent_req_nterror(req, status)) {
4830 0 : return;
4831 : }
4832 :
4833 : /* Copy out parameters */
4834 :
4835 : /* Copy result */
4836 0 : state->orig.out.result = state->tmp.out.result;
4837 :
4838 : /* Reset temporary structure */
4839 0 : NDR_ZERO_STRUCT(state->tmp);
4840 :
4841 0 : tevent_req_done(req);
4842 : }
4843 :
4844 0 : NTSTATUS dcerpc_winreg_SaveKey_recv(struct tevent_req *req,
4845 : TALLOC_CTX *mem_ctx,
4846 : WERROR *result)
4847 : {
4848 0 : struct dcerpc_winreg_SaveKey_state *state = tevent_req_data(
4849 : req, struct dcerpc_winreg_SaveKey_state);
4850 0 : NTSTATUS status;
4851 :
4852 0 : if (tevent_req_is_nterror(req, &status)) {
4853 0 : tevent_req_received(req);
4854 0 : return status;
4855 : }
4856 :
4857 : /* Steal possible out parameters to the callers context */
4858 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
4859 :
4860 : /* Return result */
4861 0 : *result = state->orig.out.result;
4862 :
4863 0 : tevent_req_received(req);
4864 0 : return NT_STATUS_OK;
4865 : }
4866 :
4867 0 : NTSTATUS dcerpc_winreg_SaveKey(struct dcerpc_binding_handle *h,
4868 : TALLOC_CTX *mem_ctx,
4869 : struct policy_handle *_handle /* [in] [ref] */,
4870 : struct winreg_String *_filename /* [in] [ref] */,
4871 : struct KeySecurityAttribute *_sec_attrib /* [in] [unique] */,
4872 : WERROR *result)
4873 : {
4874 0 : struct winreg_SaveKey r;
4875 0 : NTSTATUS status;
4876 :
4877 : /* In parameters */
4878 0 : r.in.handle = _handle;
4879 0 : r.in.filename = _filename;
4880 0 : r.in.sec_attrib = _sec_attrib;
4881 :
4882 : /* Out parameters */
4883 :
4884 : /* Result */
4885 0 : NDR_ZERO_STRUCT(r.out.result);
4886 :
4887 0 : status = dcerpc_winreg_SaveKey_r(h, mem_ctx, &r);
4888 0 : if (!NT_STATUS_IS_OK(status)) {
4889 0 : return status;
4890 : }
4891 :
4892 : /* Return variables */
4893 :
4894 : /* Return result */
4895 0 : *result = r.out.result;
4896 :
4897 0 : return NT_STATUS_OK;
4898 : }
4899 :
4900 : struct dcerpc_winreg_SetKeySecurity_r_state {
4901 : TALLOC_CTX *out_mem_ctx;
4902 : };
4903 :
4904 : static void dcerpc_winreg_SetKeySecurity_r_done(struct tevent_req *subreq);
4905 :
4906 0 : struct tevent_req *dcerpc_winreg_SetKeySecurity_r_send(TALLOC_CTX *mem_ctx,
4907 : struct tevent_context *ev,
4908 : struct dcerpc_binding_handle *h,
4909 : struct winreg_SetKeySecurity *r)
4910 : {
4911 0 : struct tevent_req *req;
4912 0 : struct dcerpc_winreg_SetKeySecurity_r_state *state;
4913 0 : struct tevent_req *subreq;
4914 :
4915 0 : req = tevent_req_create(mem_ctx, &state,
4916 : struct dcerpc_winreg_SetKeySecurity_r_state);
4917 0 : if (req == NULL) {
4918 0 : return NULL;
4919 : }
4920 :
4921 0 : state->out_mem_ctx = NULL;
4922 :
4923 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
4924 : NULL, &ndr_table_winreg,
4925 : NDR_WINREG_SETKEYSECURITY, state, r);
4926 0 : if (tevent_req_nomem(subreq, req)) {
4927 0 : return tevent_req_post(req, ev);
4928 : }
4929 0 : tevent_req_set_callback(subreq, dcerpc_winreg_SetKeySecurity_r_done, req);
4930 :
4931 0 : return req;
4932 : }
4933 :
4934 0 : static void dcerpc_winreg_SetKeySecurity_r_done(struct tevent_req *subreq)
4935 : {
4936 0 : struct tevent_req *req =
4937 0 : tevent_req_callback_data(subreq,
4938 : struct tevent_req);
4939 0 : NTSTATUS status;
4940 :
4941 0 : status = dcerpc_binding_handle_call_recv(subreq);
4942 0 : TALLOC_FREE(subreq);
4943 0 : if (tevent_req_nterror(req, status)) {
4944 0 : return;
4945 : }
4946 :
4947 0 : tevent_req_done(req);
4948 : }
4949 :
4950 0 : NTSTATUS dcerpc_winreg_SetKeySecurity_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
4951 : {
4952 0 : struct dcerpc_winreg_SetKeySecurity_r_state *state =
4953 0 : tevent_req_data(req,
4954 : struct dcerpc_winreg_SetKeySecurity_r_state);
4955 0 : NTSTATUS status;
4956 :
4957 0 : if (tevent_req_is_nterror(req, &status)) {
4958 0 : tevent_req_received(req);
4959 0 : return status;
4960 : }
4961 :
4962 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
4963 :
4964 0 : tevent_req_received(req);
4965 0 : return NT_STATUS_OK;
4966 : }
4967 :
4968 0 : NTSTATUS dcerpc_winreg_SetKeySecurity_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_SetKeySecurity *r)
4969 : {
4970 0 : NTSTATUS status;
4971 :
4972 0 : status = dcerpc_binding_handle_call(h,
4973 : NULL, &ndr_table_winreg,
4974 : NDR_WINREG_SETKEYSECURITY, mem_ctx, r);
4975 :
4976 0 : return status;
4977 : }
4978 :
4979 : struct dcerpc_winreg_SetKeySecurity_state {
4980 : struct winreg_SetKeySecurity orig;
4981 : struct winreg_SetKeySecurity tmp;
4982 : TALLOC_CTX *out_mem_ctx;
4983 : };
4984 :
4985 : static void dcerpc_winreg_SetKeySecurity_done(struct tevent_req *subreq);
4986 :
4987 0 : struct tevent_req *dcerpc_winreg_SetKeySecurity_send(TALLOC_CTX *mem_ctx,
4988 : struct tevent_context *ev,
4989 : struct dcerpc_binding_handle *h,
4990 : struct policy_handle *_handle /* [in] [ref] */,
4991 : uint32_t _sec_info /* [in] */,
4992 : struct KeySecurityData *_sd /* [in] [ref] */)
4993 : {
4994 0 : struct tevent_req *req;
4995 0 : struct dcerpc_winreg_SetKeySecurity_state *state;
4996 0 : struct tevent_req *subreq;
4997 :
4998 0 : req = tevent_req_create(mem_ctx, &state,
4999 : struct dcerpc_winreg_SetKeySecurity_state);
5000 0 : if (req == NULL) {
5001 0 : return NULL;
5002 : }
5003 0 : state->out_mem_ctx = NULL;
5004 :
5005 : /* In parameters */
5006 0 : state->orig.in.handle = _handle;
5007 0 : state->orig.in.sec_info = _sec_info;
5008 0 : state->orig.in.sd = _sd;
5009 :
5010 : /* Out parameters */
5011 :
5012 : /* Result */
5013 0 : NDR_ZERO_STRUCT(state->orig.out.result);
5014 :
5015 : /* make a temporary copy, that we pass to the dispatch function */
5016 0 : state->tmp = state->orig;
5017 :
5018 0 : subreq = dcerpc_winreg_SetKeySecurity_r_send(state, ev, h, &state->tmp);
5019 0 : if (tevent_req_nomem(subreq, req)) {
5020 0 : return tevent_req_post(req, ev);
5021 : }
5022 0 : tevent_req_set_callback(subreq, dcerpc_winreg_SetKeySecurity_done, req);
5023 0 : return req;
5024 : }
5025 :
5026 0 : static void dcerpc_winreg_SetKeySecurity_done(struct tevent_req *subreq)
5027 : {
5028 0 : struct tevent_req *req = tevent_req_callback_data(
5029 : subreq, struct tevent_req);
5030 0 : struct dcerpc_winreg_SetKeySecurity_state *state = tevent_req_data(
5031 : req, struct dcerpc_winreg_SetKeySecurity_state);
5032 0 : NTSTATUS status;
5033 0 : TALLOC_CTX *mem_ctx;
5034 :
5035 0 : if (state->out_mem_ctx) {
5036 0 : mem_ctx = state->out_mem_ctx;
5037 : } else {
5038 0 : mem_ctx = state;
5039 : }
5040 :
5041 0 : status = dcerpc_winreg_SetKeySecurity_r_recv(subreq, mem_ctx);
5042 0 : TALLOC_FREE(subreq);
5043 0 : if (tevent_req_nterror(req, status)) {
5044 0 : return;
5045 : }
5046 :
5047 : /* Copy out parameters */
5048 :
5049 : /* Copy result */
5050 0 : state->orig.out.result = state->tmp.out.result;
5051 :
5052 : /* Reset temporary structure */
5053 0 : NDR_ZERO_STRUCT(state->tmp);
5054 :
5055 0 : tevent_req_done(req);
5056 : }
5057 :
5058 0 : NTSTATUS dcerpc_winreg_SetKeySecurity_recv(struct tevent_req *req,
5059 : TALLOC_CTX *mem_ctx,
5060 : WERROR *result)
5061 : {
5062 0 : struct dcerpc_winreg_SetKeySecurity_state *state = tevent_req_data(
5063 : req, struct dcerpc_winreg_SetKeySecurity_state);
5064 0 : NTSTATUS status;
5065 :
5066 0 : if (tevent_req_is_nterror(req, &status)) {
5067 0 : tevent_req_received(req);
5068 0 : return status;
5069 : }
5070 :
5071 : /* Steal possible out parameters to the callers context */
5072 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
5073 :
5074 : /* Return result */
5075 0 : *result = state->orig.out.result;
5076 :
5077 0 : tevent_req_received(req);
5078 0 : return NT_STATUS_OK;
5079 : }
5080 :
5081 0 : NTSTATUS dcerpc_winreg_SetKeySecurity(struct dcerpc_binding_handle *h,
5082 : TALLOC_CTX *mem_ctx,
5083 : struct policy_handle *_handle /* [in] [ref] */,
5084 : uint32_t _sec_info /* [in] */,
5085 : struct KeySecurityData *_sd /* [in] [ref] */,
5086 : WERROR *result)
5087 : {
5088 0 : struct winreg_SetKeySecurity r;
5089 0 : NTSTATUS status;
5090 :
5091 : /* In parameters */
5092 0 : r.in.handle = _handle;
5093 0 : r.in.sec_info = _sec_info;
5094 0 : r.in.sd = _sd;
5095 :
5096 : /* Out parameters */
5097 :
5098 : /* Result */
5099 0 : NDR_ZERO_STRUCT(r.out.result);
5100 :
5101 0 : status = dcerpc_winreg_SetKeySecurity_r(h, mem_ctx, &r);
5102 0 : if (!NT_STATUS_IS_OK(status)) {
5103 0 : return status;
5104 : }
5105 :
5106 : /* Return variables */
5107 :
5108 : /* Return result */
5109 0 : *result = r.out.result;
5110 :
5111 0 : return NT_STATUS_OK;
5112 : }
5113 :
5114 : struct dcerpc_winreg_SetValue_r_state {
5115 : TALLOC_CTX *out_mem_ctx;
5116 : };
5117 :
5118 : static void dcerpc_winreg_SetValue_r_done(struct tevent_req *subreq);
5119 :
5120 0 : struct tevent_req *dcerpc_winreg_SetValue_r_send(TALLOC_CTX *mem_ctx,
5121 : struct tevent_context *ev,
5122 : struct dcerpc_binding_handle *h,
5123 : struct winreg_SetValue *r)
5124 : {
5125 0 : struct tevent_req *req;
5126 0 : struct dcerpc_winreg_SetValue_r_state *state;
5127 0 : struct tevent_req *subreq;
5128 :
5129 0 : req = tevent_req_create(mem_ctx, &state,
5130 : struct dcerpc_winreg_SetValue_r_state);
5131 0 : if (req == NULL) {
5132 0 : return NULL;
5133 : }
5134 :
5135 0 : state->out_mem_ctx = NULL;
5136 :
5137 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
5138 : NULL, &ndr_table_winreg,
5139 : NDR_WINREG_SETVALUE, state, r);
5140 0 : if (tevent_req_nomem(subreq, req)) {
5141 0 : return tevent_req_post(req, ev);
5142 : }
5143 0 : tevent_req_set_callback(subreq, dcerpc_winreg_SetValue_r_done, req);
5144 :
5145 0 : return req;
5146 : }
5147 :
5148 0 : static void dcerpc_winreg_SetValue_r_done(struct tevent_req *subreq)
5149 : {
5150 0 : struct tevent_req *req =
5151 0 : tevent_req_callback_data(subreq,
5152 : struct tevent_req);
5153 0 : NTSTATUS status;
5154 :
5155 0 : status = dcerpc_binding_handle_call_recv(subreq);
5156 0 : TALLOC_FREE(subreq);
5157 0 : if (tevent_req_nterror(req, status)) {
5158 0 : return;
5159 : }
5160 :
5161 0 : tevent_req_done(req);
5162 : }
5163 :
5164 0 : NTSTATUS dcerpc_winreg_SetValue_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
5165 : {
5166 0 : struct dcerpc_winreg_SetValue_r_state *state =
5167 0 : tevent_req_data(req,
5168 : struct dcerpc_winreg_SetValue_r_state);
5169 0 : NTSTATUS status;
5170 :
5171 0 : if (tevent_req_is_nterror(req, &status)) {
5172 0 : tevent_req_received(req);
5173 0 : return status;
5174 : }
5175 :
5176 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
5177 :
5178 0 : tevent_req_received(req);
5179 0 : return NT_STATUS_OK;
5180 : }
5181 :
5182 18652 : NTSTATUS dcerpc_winreg_SetValue_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_SetValue *r)
5183 : {
5184 0 : NTSTATUS status;
5185 :
5186 18652 : status = dcerpc_binding_handle_call(h,
5187 : NULL, &ndr_table_winreg,
5188 : NDR_WINREG_SETVALUE, mem_ctx, r);
5189 :
5190 18652 : return status;
5191 : }
5192 :
5193 : struct dcerpc_winreg_SetValue_state {
5194 : struct winreg_SetValue orig;
5195 : struct winreg_SetValue tmp;
5196 : TALLOC_CTX *out_mem_ctx;
5197 : };
5198 :
5199 : static void dcerpc_winreg_SetValue_done(struct tevent_req *subreq);
5200 :
5201 0 : struct tevent_req *dcerpc_winreg_SetValue_send(TALLOC_CTX *mem_ctx,
5202 : struct tevent_context *ev,
5203 : struct dcerpc_binding_handle *h,
5204 : struct policy_handle *_handle /* [in] [ref] */,
5205 : struct winreg_String _name /* [in] */,
5206 : enum winreg_Type _type /* [in] */,
5207 : uint8_t *_data /* [in] [ref,size_is(size)] */,
5208 : uint32_t _size /* [in] */)
5209 : {
5210 0 : struct tevent_req *req;
5211 0 : struct dcerpc_winreg_SetValue_state *state;
5212 0 : struct tevent_req *subreq;
5213 :
5214 0 : req = tevent_req_create(mem_ctx, &state,
5215 : struct dcerpc_winreg_SetValue_state);
5216 0 : if (req == NULL) {
5217 0 : return NULL;
5218 : }
5219 0 : state->out_mem_ctx = NULL;
5220 :
5221 : /* In parameters */
5222 0 : state->orig.in.handle = _handle;
5223 0 : state->orig.in.name = _name;
5224 0 : state->orig.in.type = _type;
5225 0 : state->orig.in.data = _data;
5226 0 : state->orig.in.size = _size;
5227 :
5228 : /* Out parameters */
5229 :
5230 : /* Result */
5231 0 : NDR_ZERO_STRUCT(state->orig.out.result);
5232 :
5233 : /* make a temporary copy, that we pass to the dispatch function */
5234 0 : state->tmp = state->orig;
5235 :
5236 0 : subreq = dcerpc_winreg_SetValue_r_send(state, ev, h, &state->tmp);
5237 0 : if (tevent_req_nomem(subreq, req)) {
5238 0 : return tevent_req_post(req, ev);
5239 : }
5240 0 : tevent_req_set_callback(subreq, dcerpc_winreg_SetValue_done, req);
5241 0 : return req;
5242 : }
5243 :
5244 0 : static void dcerpc_winreg_SetValue_done(struct tevent_req *subreq)
5245 : {
5246 0 : struct tevent_req *req = tevent_req_callback_data(
5247 : subreq, struct tevent_req);
5248 0 : struct dcerpc_winreg_SetValue_state *state = tevent_req_data(
5249 : req, struct dcerpc_winreg_SetValue_state);
5250 0 : NTSTATUS status;
5251 0 : TALLOC_CTX *mem_ctx;
5252 :
5253 0 : if (state->out_mem_ctx) {
5254 0 : mem_ctx = state->out_mem_ctx;
5255 : } else {
5256 0 : mem_ctx = state;
5257 : }
5258 :
5259 0 : status = dcerpc_winreg_SetValue_r_recv(subreq, mem_ctx);
5260 0 : TALLOC_FREE(subreq);
5261 0 : if (tevent_req_nterror(req, status)) {
5262 0 : return;
5263 : }
5264 :
5265 : /* Copy out parameters */
5266 :
5267 : /* Copy result */
5268 0 : state->orig.out.result = state->tmp.out.result;
5269 :
5270 : /* Reset temporary structure */
5271 0 : NDR_ZERO_STRUCT(state->tmp);
5272 :
5273 0 : tevent_req_done(req);
5274 : }
5275 :
5276 0 : NTSTATUS dcerpc_winreg_SetValue_recv(struct tevent_req *req,
5277 : TALLOC_CTX *mem_ctx,
5278 : WERROR *result)
5279 : {
5280 0 : struct dcerpc_winreg_SetValue_state *state = tevent_req_data(
5281 : req, struct dcerpc_winreg_SetValue_state);
5282 0 : NTSTATUS status;
5283 :
5284 0 : if (tevent_req_is_nterror(req, &status)) {
5285 0 : tevent_req_received(req);
5286 0 : return status;
5287 : }
5288 :
5289 : /* Steal possible out parameters to the callers context */
5290 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
5291 :
5292 : /* Return result */
5293 0 : *result = state->orig.out.result;
5294 :
5295 0 : tevent_req_received(req);
5296 0 : return NT_STATUS_OK;
5297 : }
5298 :
5299 14812 : NTSTATUS dcerpc_winreg_SetValue(struct dcerpc_binding_handle *h,
5300 : TALLOC_CTX *mem_ctx,
5301 : struct policy_handle *_handle /* [in] [ref] */,
5302 : struct winreg_String _name /* [in] */,
5303 : enum winreg_Type _type /* [in] */,
5304 : uint8_t *_data /* [in] [ref,size_is(size)] */,
5305 : uint32_t _size /* [in] */,
5306 : WERROR *result)
5307 : {
5308 0 : struct winreg_SetValue r;
5309 0 : NTSTATUS status;
5310 :
5311 : /* In parameters */
5312 14812 : r.in.handle = _handle;
5313 14812 : r.in.name = _name;
5314 14812 : r.in.type = _type;
5315 14812 : r.in.data = _data;
5316 14812 : r.in.size = _size;
5317 :
5318 : /* Out parameters */
5319 :
5320 : /* Result */
5321 14812 : NDR_ZERO_STRUCT(r.out.result);
5322 :
5323 14812 : status = dcerpc_winreg_SetValue_r(h, mem_ctx, &r);
5324 14812 : if (!NT_STATUS_IS_OK(status)) {
5325 0 : return status;
5326 : }
5327 :
5328 : /* Return variables */
5329 :
5330 : /* Return result */
5331 14812 : *result = r.out.result;
5332 :
5333 14812 : return NT_STATUS_OK;
5334 : }
5335 :
5336 : struct dcerpc_winreg_UnLoadKey_r_state {
5337 : TALLOC_CTX *out_mem_ctx;
5338 : };
5339 :
5340 : static void dcerpc_winreg_UnLoadKey_r_done(struct tevent_req *subreq);
5341 :
5342 0 : struct tevent_req *dcerpc_winreg_UnLoadKey_r_send(TALLOC_CTX *mem_ctx,
5343 : struct tevent_context *ev,
5344 : struct dcerpc_binding_handle *h,
5345 : struct winreg_UnLoadKey *r)
5346 : {
5347 0 : struct tevent_req *req;
5348 0 : struct dcerpc_winreg_UnLoadKey_r_state *state;
5349 0 : struct tevent_req *subreq;
5350 :
5351 0 : req = tevent_req_create(mem_ctx, &state,
5352 : struct dcerpc_winreg_UnLoadKey_r_state);
5353 0 : if (req == NULL) {
5354 0 : return NULL;
5355 : }
5356 :
5357 0 : state->out_mem_ctx = NULL;
5358 :
5359 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
5360 : NULL, &ndr_table_winreg,
5361 : NDR_WINREG_UNLOADKEY, state, r);
5362 0 : if (tevent_req_nomem(subreq, req)) {
5363 0 : return tevent_req_post(req, ev);
5364 : }
5365 0 : tevent_req_set_callback(subreq, dcerpc_winreg_UnLoadKey_r_done, req);
5366 :
5367 0 : return req;
5368 : }
5369 :
5370 0 : static void dcerpc_winreg_UnLoadKey_r_done(struct tevent_req *subreq)
5371 : {
5372 0 : struct tevent_req *req =
5373 0 : tevent_req_callback_data(subreq,
5374 : struct tevent_req);
5375 0 : NTSTATUS status;
5376 :
5377 0 : status = dcerpc_binding_handle_call_recv(subreq);
5378 0 : TALLOC_FREE(subreq);
5379 0 : if (tevent_req_nterror(req, status)) {
5380 0 : return;
5381 : }
5382 :
5383 0 : tevent_req_done(req);
5384 : }
5385 :
5386 0 : NTSTATUS dcerpc_winreg_UnLoadKey_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
5387 : {
5388 0 : struct dcerpc_winreg_UnLoadKey_r_state *state =
5389 0 : tevent_req_data(req,
5390 : struct dcerpc_winreg_UnLoadKey_r_state);
5391 0 : NTSTATUS status;
5392 :
5393 0 : if (tevent_req_is_nterror(req, &status)) {
5394 0 : tevent_req_received(req);
5395 0 : return status;
5396 : }
5397 :
5398 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
5399 :
5400 0 : tevent_req_received(req);
5401 0 : return NT_STATUS_OK;
5402 : }
5403 :
5404 0 : NTSTATUS dcerpc_winreg_UnLoadKey_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_UnLoadKey *r)
5405 : {
5406 0 : NTSTATUS status;
5407 :
5408 0 : status = dcerpc_binding_handle_call(h,
5409 : NULL, &ndr_table_winreg,
5410 : NDR_WINREG_UNLOADKEY, mem_ctx, r);
5411 :
5412 0 : return status;
5413 : }
5414 :
5415 : struct dcerpc_winreg_UnLoadKey_state {
5416 : struct winreg_UnLoadKey orig;
5417 : struct winreg_UnLoadKey tmp;
5418 : TALLOC_CTX *out_mem_ctx;
5419 : };
5420 :
5421 : static void dcerpc_winreg_UnLoadKey_done(struct tevent_req *subreq);
5422 :
5423 0 : struct tevent_req *dcerpc_winreg_UnLoadKey_send(TALLOC_CTX *mem_ctx,
5424 : struct tevent_context *ev,
5425 : struct dcerpc_binding_handle *h,
5426 : struct policy_handle *_handle /* [in] [ref] */,
5427 : struct winreg_String *_subkey /* [in] [ref] */)
5428 : {
5429 0 : struct tevent_req *req;
5430 0 : struct dcerpc_winreg_UnLoadKey_state *state;
5431 0 : struct tevent_req *subreq;
5432 :
5433 0 : req = tevent_req_create(mem_ctx, &state,
5434 : struct dcerpc_winreg_UnLoadKey_state);
5435 0 : if (req == NULL) {
5436 0 : return NULL;
5437 : }
5438 0 : state->out_mem_ctx = NULL;
5439 :
5440 : /* In parameters */
5441 0 : state->orig.in.handle = _handle;
5442 0 : state->orig.in.subkey = _subkey;
5443 :
5444 : /* Out parameters */
5445 :
5446 : /* Result */
5447 0 : NDR_ZERO_STRUCT(state->orig.out.result);
5448 :
5449 : /* make a temporary copy, that we pass to the dispatch function */
5450 0 : state->tmp = state->orig;
5451 :
5452 0 : subreq = dcerpc_winreg_UnLoadKey_r_send(state, ev, h, &state->tmp);
5453 0 : if (tevent_req_nomem(subreq, req)) {
5454 0 : return tevent_req_post(req, ev);
5455 : }
5456 0 : tevent_req_set_callback(subreq, dcerpc_winreg_UnLoadKey_done, req);
5457 0 : return req;
5458 : }
5459 :
5460 0 : static void dcerpc_winreg_UnLoadKey_done(struct tevent_req *subreq)
5461 : {
5462 0 : struct tevent_req *req = tevent_req_callback_data(
5463 : subreq, struct tevent_req);
5464 0 : struct dcerpc_winreg_UnLoadKey_state *state = tevent_req_data(
5465 : req, struct dcerpc_winreg_UnLoadKey_state);
5466 0 : NTSTATUS status;
5467 0 : TALLOC_CTX *mem_ctx;
5468 :
5469 0 : if (state->out_mem_ctx) {
5470 0 : mem_ctx = state->out_mem_ctx;
5471 : } else {
5472 0 : mem_ctx = state;
5473 : }
5474 :
5475 0 : status = dcerpc_winreg_UnLoadKey_r_recv(subreq, mem_ctx);
5476 0 : TALLOC_FREE(subreq);
5477 0 : if (tevent_req_nterror(req, status)) {
5478 0 : return;
5479 : }
5480 :
5481 : /* Copy out parameters */
5482 :
5483 : /* Copy result */
5484 0 : state->orig.out.result = state->tmp.out.result;
5485 :
5486 : /* Reset temporary structure */
5487 0 : NDR_ZERO_STRUCT(state->tmp);
5488 :
5489 0 : tevent_req_done(req);
5490 : }
5491 :
5492 0 : NTSTATUS dcerpc_winreg_UnLoadKey_recv(struct tevent_req *req,
5493 : TALLOC_CTX *mem_ctx,
5494 : WERROR *result)
5495 : {
5496 0 : struct dcerpc_winreg_UnLoadKey_state *state = tevent_req_data(
5497 : req, struct dcerpc_winreg_UnLoadKey_state);
5498 0 : NTSTATUS status;
5499 :
5500 0 : if (tevent_req_is_nterror(req, &status)) {
5501 0 : tevent_req_received(req);
5502 0 : return status;
5503 : }
5504 :
5505 : /* Steal possible out parameters to the callers context */
5506 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
5507 :
5508 : /* Return result */
5509 0 : *result = state->orig.out.result;
5510 :
5511 0 : tevent_req_received(req);
5512 0 : return NT_STATUS_OK;
5513 : }
5514 :
5515 0 : NTSTATUS dcerpc_winreg_UnLoadKey(struct dcerpc_binding_handle *h,
5516 : TALLOC_CTX *mem_ctx,
5517 : struct policy_handle *_handle /* [in] [ref] */,
5518 : struct winreg_String *_subkey /* [in] [ref] */,
5519 : WERROR *result)
5520 : {
5521 0 : struct winreg_UnLoadKey r;
5522 0 : NTSTATUS status;
5523 :
5524 : /* In parameters */
5525 0 : r.in.handle = _handle;
5526 0 : r.in.subkey = _subkey;
5527 :
5528 : /* Out parameters */
5529 :
5530 : /* Result */
5531 0 : NDR_ZERO_STRUCT(r.out.result);
5532 :
5533 0 : status = dcerpc_winreg_UnLoadKey_r(h, mem_ctx, &r);
5534 0 : if (!NT_STATUS_IS_OK(status)) {
5535 0 : return status;
5536 : }
5537 :
5538 : /* Return variables */
5539 :
5540 : /* Return result */
5541 0 : *result = r.out.result;
5542 :
5543 0 : return NT_STATUS_OK;
5544 : }
5545 :
5546 : struct dcerpc_winreg_InitiateSystemShutdown_r_state {
5547 : TALLOC_CTX *out_mem_ctx;
5548 : };
5549 :
5550 : static void dcerpc_winreg_InitiateSystemShutdown_r_done(struct tevent_req *subreq);
5551 :
5552 0 : struct tevent_req *dcerpc_winreg_InitiateSystemShutdown_r_send(TALLOC_CTX *mem_ctx,
5553 : struct tevent_context *ev,
5554 : struct dcerpc_binding_handle *h,
5555 : struct winreg_InitiateSystemShutdown *r)
5556 : {
5557 0 : struct tevent_req *req;
5558 0 : struct dcerpc_winreg_InitiateSystemShutdown_r_state *state;
5559 0 : struct tevent_req *subreq;
5560 :
5561 0 : req = tevent_req_create(mem_ctx, &state,
5562 : struct dcerpc_winreg_InitiateSystemShutdown_r_state);
5563 0 : if (req == NULL) {
5564 0 : return NULL;
5565 : }
5566 :
5567 0 : state->out_mem_ctx = NULL;
5568 :
5569 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
5570 : NULL, &ndr_table_winreg,
5571 : NDR_WINREG_INITIATESYSTEMSHUTDOWN, state, r);
5572 0 : if (tevent_req_nomem(subreq, req)) {
5573 0 : return tevent_req_post(req, ev);
5574 : }
5575 0 : tevent_req_set_callback(subreq, dcerpc_winreg_InitiateSystemShutdown_r_done, req);
5576 :
5577 0 : return req;
5578 : }
5579 :
5580 0 : static void dcerpc_winreg_InitiateSystemShutdown_r_done(struct tevent_req *subreq)
5581 : {
5582 0 : struct tevent_req *req =
5583 0 : tevent_req_callback_data(subreq,
5584 : struct tevent_req);
5585 0 : NTSTATUS status;
5586 :
5587 0 : status = dcerpc_binding_handle_call_recv(subreq);
5588 0 : TALLOC_FREE(subreq);
5589 0 : if (tevent_req_nterror(req, status)) {
5590 0 : return;
5591 : }
5592 :
5593 0 : tevent_req_done(req);
5594 : }
5595 :
5596 0 : NTSTATUS dcerpc_winreg_InitiateSystemShutdown_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
5597 : {
5598 0 : struct dcerpc_winreg_InitiateSystemShutdown_r_state *state =
5599 0 : tevent_req_data(req,
5600 : struct dcerpc_winreg_InitiateSystemShutdown_r_state);
5601 0 : NTSTATUS status;
5602 :
5603 0 : if (tevent_req_is_nterror(req, &status)) {
5604 0 : tevent_req_received(req);
5605 0 : return status;
5606 : }
5607 :
5608 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
5609 :
5610 0 : tevent_req_received(req);
5611 0 : return NT_STATUS_OK;
5612 : }
5613 :
5614 0 : NTSTATUS dcerpc_winreg_InitiateSystemShutdown_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_InitiateSystemShutdown *r)
5615 : {
5616 0 : NTSTATUS status;
5617 :
5618 0 : status = dcerpc_binding_handle_call(h,
5619 : NULL, &ndr_table_winreg,
5620 : NDR_WINREG_INITIATESYSTEMSHUTDOWN, mem_ctx, r);
5621 :
5622 0 : return status;
5623 : }
5624 :
5625 : struct dcerpc_winreg_InitiateSystemShutdown_state {
5626 : struct winreg_InitiateSystemShutdown orig;
5627 : struct winreg_InitiateSystemShutdown tmp;
5628 : TALLOC_CTX *out_mem_ctx;
5629 : };
5630 :
5631 : static void dcerpc_winreg_InitiateSystemShutdown_done(struct tevent_req *subreq);
5632 :
5633 0 : struct tevent_req *dcerpc_winreg_InitiateSystemShutdown_send(TALLOC_CTX *mem_ctx,
5634 : struct tevent_context *ev,
5635 : struct dcerpc_binding_handle *h,
5636 : uint16_t *_hostname /* [in] [unique] */,
5637 : struct lsa_StringLarge *_message /* [in] [unique] */,
5638 : uint32_t _timeout /* [in] */,
5639 : uint8_t _force_apps /* [in] */,
5640 : uint8_t _do_reboot /* [in] */)
5641 : {
5642 0 : struct tevent_req *req;
5643 0 : struct dcerpc_winreg_InitiateSystemShutdown_state *state;
5644 0 : struct tevent_req *subreq;
5645 :
5646 0 : req = tevent_req_create(mem_ctx, &state,
5647 : struct dcerpc_winreg_InitiateSystemShutdown_state);
5648 0 : if (req == NULL) {
5649 0 : return NULL;
5650 : }
5651 0 : state->out_mem_ctx = NULL;
5652 :
5653 : /* In parameters */
5654 0 : state->orig.in.hostname = _hostname;
5655 0 : state->orig.in.message = _message;
5656 0 : state->orig.in.timeout = _timeout;
5657 0 : state->orig.in.force_apps = _force_apps;
5658 0 : state->orig.in.do_reboot = _do_reboot;
5659 :
5660 : /* Out parameters */
5661 :
5662 : /* Result */
5663 0 : NDR_ZERO_STRUCT(state->orig.out.result);
5664 :
5665 : /* make a temporary copy, that we pass to the dispatch function */
5666 0 : state->tmp = state->orig;
5667 :
5668 0 : subreq = dcerpc_winreg_InitiateSystemShutdown_r_send(state, ev, h, &state->tmp);
5669 0 : if (tevent_req_nomem(subreq, req)) {
5670 0 : return tevent_req_post(req, ev);
5671 : }
5672 0 : tevent_req_set_callback(subreq, dcerpc_winreg_InitiateSystemShutdown_done, req);
5673 0 : return req;
5674 : }
5675 :
5676 0 : static void dcerpc_winreg_InitiateSystemShutdown_done(struct tevent_req *subreq)
5677 : {
5678 0 : struct tevent_req *req = tevent_req_callback_data(
5679 : subreq, struct tevent_req);
5680 0 : struct dcerpc_winreg_InitiateSystemShutdown_state *state = tevent_req_data(
5681 : req, struct dcerpc_winreg_InitiateSystemShutdown_state);
5682 0 : NTSTATUS status;
5683 0 : TALLOC_CTX *mem_ctx;
5684 :
5685 0 : if (state->out_mem_ctx) {
5686 0 : mem_ctx = state->out_mem_ctx;
5687 : } else {
5688 0 : mem_ctx = state;
5689 : }
5690 :
5691 0 : status = dcerpc_winreg_InitiateSystemShutdown_r_recv(subreq, mem_ctx);
5692 0 : TALLOC_FREE(subreq);
5693 0 : if (tevent_req_nterror(req, status)) {
5694 0 : return;
5695 : }
5696 :
5697 : /* Copy out parameters */
5698 :
5699 : /* Copy result */
5700 0 : state->orig.out.result = state->tmp.out.result;
5701 :
5702 : /* Reset temporary structure */
5703 0 : NDR_ZERO_STRUCT(state->tmp);
5704 :
5705 0 : tevent_req_done(req);
5706 : }
5707 :
5708 0 : NTSTATUS dcerpc_winreg_InitiateSystemShutdown_recv(struct tevent_req *req,
5709 : TALLOC_CTX *mem_ctx,
5710 : WERROR *result)
5711 : {
5712 0 : struct dcerpc_winreg_InitiateSystemShutdown_state *state = tevent_req_data(
5713 : req, struct dcerpc_winreg_InitiateSystemShutdown_state);
5714 0 : NTSTATUS status;
5715 :
5716 0 : if (tevent_req_is_nterror(req, &status)) {
5717 0 : tevent_req_received(req);
5718 0 : return status;
5719 : }
5720 :
5721 : /* Steal possible out parameters to the callers context */
5722 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
5723 :
5724 : /* Return result */
5725 0 : *result = state->orig.out.result;
5726 :
5727 0 : tevent_req_received(req);
5728 0 : return NT_STATUS_OK;
5729 : }
5730 :
5731 0 : NTSTATUS dcerpc_winreg_InitiateSystemShutdown(struct dcerpc_binding_handle *h,
5732 : TALLOC_CTX *mem_ctx,
5733 : uint16_t *_hostname /* [in] [unique] */,
5734 : struct lsa_StringLarge *_message /* [in] [unique] */,
5735 : uint32_t _timeout /* [in] */,
5736 : uint8_t _force_apps /* [in] */,
5737 : uint8_t _do_reboot /* [in] */,
5738 : WERROR *result)
5739 : {
5740 0 : struct winreg_InitiateSystemShutdown r;
5741 0 : NTSTATUS status;
5742 :
5743 : /* In parameters */
5744 0 : r.in.hostname = _hostname;
5745 0 : r.in.message = _message;
5746 0 : r.in.timeout = _timeout;
5747 0 : r.in.force_apps = _force_apps;
5748 0 : r.in.do_reboot = _do_reboot;
5749 :
5750 : /* Out parameters */
5751 :
5752 : /* Result */
5753 0 : NDR_ZERO_STRUCT(r.out.result);
5754 :
5755 0 : status = dcerpc_winreg_InitiateSystemShutdown_r(h, mem_ctx, &r);
5756 0 : if (!NT_STATUS_IS_OK(status)) {
5757 0 : return status;
5758 : }
5759 :
5760 : /* Return variables */
5761 :
5762 : /* Return result */
5763 0 : *result = r.out.result;
5764 :
5765 0 : return NT_STATUS_OK;
5766 : }
5767 :
5768 : struct dcerpc_winreg_AbortSystemShutdown_r_state {
5769 : TALLOC_CTX *out_mem_ctx;
5770 : };
5771 :
5772 : static void dcerpc_winreg_AbortSystemShutdown_r_done(struct tevent_req *subreq);
5773 :
5774 0 : struct tevent_req *dcerpc_winreg_AbortSystemShutdown_r_send(TALLOC_CTX *mem_ctx,
5775 : struct tevent_context *ev,
5776 : struct dcerpc_binding_handle *h,
5777 : struct winreg_AbortSystemShutdown *r)
5778 : {
5779 0 : struct tevent_req *req;
5780 0 : struct dcerpc_winreg_AbortSystemShutdown_r_state *state;
5781 0 : struct tevent_req *subreq;
5782 :
5783 0 : req = tevent_req_create(mem_ctx, &state,
5784 : struct dcerpc_winreg_AbortSystemShutdown_r_state);
5785 0 : if (req == NULL) {
5786 0 : return NULL;
5787 : }
5788 :
5789 0 : state->out_mem_ctx = NULL;
5790 :
5791 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
5792 : NULL, &ndr_table_winreg,
5793 : NDR_WINREG_ABORTSYSTEMSHUTDOWN, state, r);
5794 0 : if (tevent_req_nomem(subreq, req)) {
5795 0 : return tevent_req_post(req, ev);
5796 : }
5797 0 : tevent_req_set_callback(subreq, dcerpc_winreg_AbortSystemShutdown_r_done, req);
5798 :
5799 0 : return req;
5800 : }
5801 :
5802 0 : static void dcerpc_winreg_AbortSystemShutdown_r_done(struct tevent_req *subreq)
5803 : {
5804 0 : struct tevent_req *req =
5805 0 : tevent_req_callback_data(subreq,
5806 : struct tevent_req);
5807 0 : NTSTATUS status;
5808 :
5809 0 : status = dcerpc_binding_handle_call_recv(subreq);
5810 0 : TALLOC_FREE(subreq);
5811 0 : if (tevent_req_nterror(req, status)) {
5812 0 : return;
5813 : }
5814 :
5815 0 : tevent_req_done(req);
5816 : }
5817 :
5818 0 : NTSTATUS dcerpc_winreg_AbortSystemShutdown_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
5819 : {
5820 0 : struct dcerpc_winreg_AbortSystemShutdown_r_state *state =
5821 0 : tevent_req_data(req,
5822 : struct dcerpc_winreg_AbortSystemShutdown_r_state);
5823 0 : NTSTATUS status;
5824 :
5825 0 : if (tevent_req_is_nterror(req, &status)) {
5826 0 : tevent_req_received(req);
5827 0 : return status;
5828 : }
5829 :
5830 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
5831 :
5832 0 : tevent_req_received(req);
5833 0 : return NT_STATUS_OK;
5834 : }
5835 :
5836 0 : NTSTATUS dcerpc_winreg_AbortSystemShutdown_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_AbortSystemShutdown *r)
5837 : {
5838 0 : NTSTATUS status;
5839 :
5840 0 : status = dcerpc_binding_handle_call(h,
5841 : NULL, &ndr_table_winreg,
5842 : NDR_WINREG_ABORTSYSTEMSHUTDOWN, mem_ctx, r);
5843 :
5844 0 : return status;
5845 : }
5846 :
5847 : struct dcerpc_winreg_AbortSystemShutdown_state {
5848 : struct winreg_AbortSystemShutdown orig;
5849 : struct winreg_AbortSystemShutdown tmp;
5850 : TALLOC_CTX *out_mem_ctx;
5851 : };
5852 :
5853 : static void dcerpc_winreg_AbortSystemShutdown_done(struct tevent_req *subreq);
5854 :
5855 0 : struct tevent_req *dcerpc_winreg_AbortSystemShutdown_send(TALLOC_CTX *mem_ctx,
5856 : struct tevent_context *ev,
5857 : struct dcerpc_binding_handle *h,
5858 : uint16_t *_server /* [in] [unique] */)
5859 : {
5860 0 : struct tevent_req *req;
5861 0 : struct dcerpc_winreg_AbortSystemShutdown_state *state;
5862 0 : struct tevent_req *subreq;
5863 :
5864 0 : req = tevent_req_create(mem_ctx, &state,
5865 : struct dcerpc_winreg_AbortSystemShutdown_state);
5866 0 : if (req == NULL) {
5867 0 : return NULL;
5868 : }
5869 0 : state->out_mem_ctx = NULL;
5870 :
5871 : /* In parameters */
5872 0 : state->orig.in.server = _server;
5873 :
5874 : /* Out parameters */
5875 :
5876 : /* Result */
5877 0 : NDR_ZERO_STRUCT(state->orig.out.result);
5878 :
5879 : /* make a temporary copy, that we pass to the dispatch function */
5880 0 : state->tmp = state->orig;
5881 :
5882 0 : subreq = dcerpc_winreg_AbortSystemShutdown_r_send(state, ev, h, &state->tmp);
5883 0 : if (tevent_req_nomem(subreq, req)) {
5884 0 : return tevent_req_post(req, ev);
5885 : }
5886 0 : tevent_req_set_callback(subreq, dcerpc_winreg_AbortSystemShutdown_done, req);
5887 0 : return req;
5888 : }
5889 :
5890 0 : static void dcerpc_winreg_AbortSystemShutdown_done(struct tevent_req *subreq)
5891 : {
5892 0 : struct tevent_req *req = tevent_req_callback_data(
5893 : subreq, struct tevent_req);
5894 0 : struct dcerpc_winreg_AbortSystemShutdown_state *state = tevent_req_data(
5895 : req, struct dcerpc_winreg_AbortSystemShutdown_state);
5896 0 : NTSTATUS status;
5897 0 : TALLOC_CTX *mem_ctx;
5898 :
5899 0 : if (state->out_mem_ctx) {
5900 0 : mem_ctx = state->out_mem_ctx;
5901 : } else {
5902 0 : mem_ctx = state;
5903 : }
5904 :
5905 0 : status = dcerpc_winreg_AbortSystemShutdown_r_recv(subreq, mem_ctx);
5906 0 : TALLOC_FREE(subreq);
5907 0 : if (tevent_req_nterror(req, status)) {
5908 0 : return;
5909 : }
5910 :
5911 : /* Copy out parameters */
5912 :
5913 : /* Copy result */
5914 0 : state->orig.out.result = state->tmp.out.result;
5915 :
5916 : /* Reset temporary structure */
5917 0 : NDR_ZERO_STRUCT(state->tmp);
5918 :
5919 0 : tevent_req_done(req);
5920 : }
5921 :
5922 0 : NTSTATUS dcerpc_winreg_AbortSystemShutdown_recv(struct tevent_req *req,
5923 : TALLOC_CTX *mem_ctx,
5924 : WERROR *result)
5925 : {
5926 0 : struct dcerpc_winreg_AbortSystemShutdown_state *state = tevent_req_data(
5927 : req, struct dcerpc_winreg_AbortSystemShutdown_state);
5928 0 : NTSTATUS status;
5929 :
5930 0 : if (tevent_req_is_nterror(req, &status)) {
5931 0 : tevent_req_received(req);
5932 0 : return status;
5933 : }
5934 :
5935 : /* Steal possible out parameters to the callers context */
5936 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
5937 :
5938 : /* Return result */
5939 0 : *result = state->orig.out.result;
5940 :
5941 0 : tevent_req_received(req);
5942 0 : return NT_STATUS_OK;
5943 : }
5944 :
5945 0 : NTSTATUS dcerpc_winreg_AbortSystemShutdown(struct dcerpc_binding_handle *h,
5946 : TALLOC_CTX *mem_ctx,
5947 : uint16_t *_server /* [in] [unique] */,
5948 : WERROR *result)
5949 : {
5950 0 : struct winreg_AbortSystemShutdown r;
5951 0 : NTSTATUS status;
5952 :
5953 : /* In parameters */
5954 0 : r.in.server = _server;
5955 :
5956 : /* Out parameters */
5957 :
5958 : /* Result */
5959 0 : NDR_ZERO_STRUCT(r.out.result);
5960 :
5961 0 : status = dcerpc_winreg_AbortSystemShutdown_r(h, mem_ctx, &r);
5962 0 : if (!NT_STATUS_IS_OK(status)) {
5963 0 : return status;
5964 : }
5965 :
5966 : /* Return variables */
5967 :
5968 : /* Return result */
5969 0 : *result = r.out.result;
5970 :
5971 0 : return NT_STATUS_OK;
5972 : }
5973 :
5974 : struct dcerpc_winreg_GetVersion_r_state {
5975 : TALLOC_CTX *out_mem_ctx;
5976 : };
5977 :
5978 : static void dcerpc_winreg_GetVersion_r_done(struct tevent_req *subreq);
5979 :
5980 0 : struct tevent_req *dcerpc_winreg_GetVersion_r_send(TALLOC_CTX *mem_ctx,
5981 : struct tevent_context *ev,
5982 : struct dcerpc_binding_handle *h,
5983 : struct winreg_GetVersion *r)
5984 : {
5985 0 : struct tevent_req *req;
5986 0 : struct dcerpc_winreg_GetVersion_r_state *state;
5987 0 : struct tevent_req *subreq;
5988 :
5989 0 : req = tevent_req_create(mem_ctx, &state,
5990 : struct dcerpc_winreg_GetVersion_r_state);
5991 0 : if (req == NULL) {
5992 0 : return NULL;
5993 : }
5994 :
5995 0 : state->out_mem_ctx = talloc_new(state);
5996 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
5997 0 : return tevent_req_post(req, ev);
5998 : }
5999 :
6000 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
6001 : NULL, &ndr_table_winreg,
6002 0 : NDR_WINREG_GETVERSION, state->out_mem_ctx, r);
6003 0 : if (tevent_req_nomem(subreq, req)) {
6004 0 : return tevent_req_post(req, ev);
6005 : }
6006 0 : tevent_req_set_callback(subreq, dcerpc_winreg_GetVersion_r_done, req);
6007 :
6008 0 : return req;
6009 : }
6010 :
6011 0 : static void dcerpc_winreg_GetVersion_r_done(struct tevent_req *subreq)
6012 : {
6013 0 : struct tevent_req *req =
6014 0 : tevent_req_callback_data(subreq,
6015 : struct tevent_req);
6016 0 : NTSTATUS status;
6017 :
6018 0 : status = dcerpc_binding_handle_call_recv(subreq);
6019 0 : TALLOC_FREE(subreq);
6020 0 : if (tevent_req_nterror(req, status)) {
6021 0 : return;
6022 : }
6023 :
6024 0 : tevent_req_done(req);
6025 : }
6026 :
6027 0 : NTSTATUS dcerpc_winreg_GetVersion_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
6028 : {
6029 0 : struct dcerpc_winreg_GetVersion_r_state *state =
6030 0 : tevent_req_data(req,
6031 : struct dcerpc_winreg_GetVersion_r_state);
6032 0 : NTSTATUS status;
6033 :
6034 0 : if (tevent_req_is_nterror(req, &status)) {
6035 0 : tevent_req_received(req);
6036 0 : return status;
6037 : }
6038 :
6039 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
6040 :
6041 0 : tevent_req_received(req);
6042 0 : return NT_STATUS_OK;
6043 : }
6044 :
6045 349 : NTSTATUS dcerpc_winreg_GetVersion_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_GetVersion *r)
6046 : {
6047 0 : NTSTATUS status;
6048 :
6049 349 : status = dcerpc_binding_handle_call(h,
6050 : NULL, &ndr_table_winreg,
6051 : NDR_WINREG_GETVERSION, mem_ctx, r);
6052 :
6053 349 : return status;
6054 : }
6055 :
6056 : struct dcerpc_winreg_GetVersion_state {
6057 : struct winreg_GetVersion orig;
6058 : struct winreg_GetVersion tmp;
6059 : TALLOC_CTX *out_mem_ctx;
6060 : };
6061 :
6062 : static void dcerpc_winreg_GetVersion_done(struct tevent_req *subreq);
6063 :
6064 0 : struct tevent_req *dcerpc_winreg_GetVersion_send(TALLOC_CTX *mem_ctx,
6065 : struct tevent_context *ev,
6066 : struct dcerpc_binding_handle *h,
6067 : struct policy_handle *_handle /* [in] [ref] */,
6068 : uint32_t *_version /* [out] [ref] */)
6069 : {
6070 0 : struct tevent_req *req;
6071 0 : struct dcerpc_winreg_GetVersion_state *state;
6072 0 : struct tevent_req *subreq;
6073 :
6074 0 : req = tevent_req_create(mem_ctx, &state,
6075 : struct dcerpc_winreg_GetVersion_state);
6076 0 : if (req == NULL) {
6077 0 : return NULL;
6078 : }
6079 0 : state->out_mem_ctx = NULL;
6080 :
6081 : /* In parameters */
6082 0 : state->orig.in.handle = _handle;
6083 :
6084 : /* Out parameters */
6085 0 : state->orig.out.version = _version;
6086 :
6087 : /* Result */
6088 0 : NDR_ZERO_STRUCT(state->orig.out.result);
6089 :
6090 0 : state->out_mem_ctx = talloc_named_const(state, 0,
6091 : "dcerpc_winreg_GetVersion_out_memory");
6092 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
6093 0 : return tevent_req_post(req, ev);
6094 : }
6095 :
6096 : /* make a temporary copy, that we pass to the dispatch function */
6097 0 : state->tmp = state->orig;
6098 :
6099 0 : subreq = dcerpc_winreg_GetVersion_r_send(state, ev, h, &state->tmp);
6100 0 : if (tevent_req_nomem(subreq, req)) {
6101 0 : return tevent_req_post(req, ev);
6102 : }
6103 0 : tevent_req_set_callback(subreq, dcerpc_winreg_GetVersion_done, req);
6104 0 : return req;
6105 : }
6106 :
6107 0 : static void dcerpc_winreg_GetVersion_done(struct tevent_req *subreq)
6108 : {
6109 0 : struct tevent_req *req = tevent_req_callback_data(
6110 : subreq, struct tevent_req);
6111 0 : struct dcerpc_winreg_GetVersion_state *state = tevent_req_data(
6112 : req, struct dcerpc_winreg_GetVersion_state);
6113 0 : NTSTATUS status;
6114 0 : TALLOC_CTX *mem_ctx;
6115 :
6116 0 : if (state->out_mem_ctx) {
6117 0 : mem_ctx = state->out_mem_ctx;
6118 : } else {
6119 0 : mem_ctx = state;
6120 : }
6121 :
6122 0 : status = dcerpc_winreg_GetVersion_r_recv(subreq, mem_ctx);
6123 0 : TALLOC_FREE(subreq);
6124 0 : if (tevent_req_nterror(req, status)) {
6125 0 : return;
6126 : }
6127 :
6128 : /* Copy out parameters */
6129 0 : *state->orig.out.version = *state->tmp.out.version;
6130 :
6131 : /* Copy result */
6132 0 : state->orig.out.result = state->tmp.out.result;
6133 :
6134 : /* Reset temporary structure */
6135 0 : NDR_ZERO_STRUCT(state->tmp);
6136 :
6137 0 : tevent_req_done(req);
6138 : }
6139 :
6140 0 : NTSTATUS dcerpc_winreg_GetVersion_recv(struct tevent_req *req,
6141 : TALLOC_CTX *mem_ctx,
6142 : WERROR *result)
6143 : {
6144 0 : struct dcerpc_winreg_GetVersion_state *state = tevent_req_data(
6145 : req, struct dcerpc_winreg_GetVersion_state);
6146 0 : NTSTATUS status;
6147 :
6148 0 : if (tevent_req_is_nterror(req, &status)) {
6149 0 : tevent_req_received(req);
6150 0 : return status;
6151 : }
6152 :
6153 : /* Steal possible out parameters to the callers context */
6154 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
6155 :
6156 : /* Return result */
6157 0 : *result = state->orig.out.result;
6158 :
6159 0 : tevent_req_received(req);
6160 0 : return NT_STATUS_OK;
6161 : }
6162 :
6163 0 : NTSTATUS dcerpc_winreg_GetVersion(struct dcerpc_binding_handle *h,
6164 : TALLOC_CTX *mem_ctx,
6165 : struct policy_handle *_handle /* [in] [ref] */,
6166 : uint32_t *_version /* [out] [ref] */,
6167 : WERROR *result)
6168 : {
6169 0 : struct winreg_GetVersion r;
6170 0 : NTSTATUS status;
6171 :
6172 : /* In parameters */
6173 0 : r.in.handle = _handle;
6174 :
6175 : /* Out parameters */
6176 0 : r.out.version = _version;
6177 :
6178 : /* Result */
6179 0 : NDR_ZERO_STRUCT(r.out.result);
6180 :
6181 0 : status = dcerpc_winreg_GetVersion_r(h, mem_ctx, &r);
6182 0 : if (!NT_STATUS_IS_OK(status)) {
6183 0 : return status;
6184 : }
6185 :
6186 : /* Return variables */
6187 0 : *_version = *r.out.version;
6188 :
6189 : /* Return result */
6190 0 : *result = r.out.result;
6191 :
6192 0 : return NT_STATUS_OK;
6193 : }
6194 :
6195 : struct dcerpc_winreg_OpenHKCC_r_state {
6196 : TALLOC_CTX *out_mem_ctx;
6197 : };
6198 :
6199 : static void dcerpc_winreg_OpenHKCC_r_done(struct tevent_req *subreq);
6200 :
6201 0 : struct tevent_req *dcerpc_winreg_OpenHKCC_r_send(TALLOC_CTX *mem_ctx,
6202 : struct tevent_context *ev,
6203 : struct dcerpc_binding_handle *h,
6204 : struct winreg_OpenHKCC *r)
6205 : {
6206 0 : struct tevent_req *req;
6207 0 : struct dcerpc_winreg_OpenHKCC_r_state *state;
6208 0 : struct tevent_req *subreq;
6209 :
6210 0 : req = tevent_req_create(mem_ctx, &state,
6211 : struct dcerpc_winreg_OpenHKCC_r_state);
6212 0 : if (req == NULL) {
6213 0 : return NULL;
6214 : }
6215 :
6216 0 : state->out_mem_ctx = talloc_new(state);
6217 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
6218 0 : return tevent_req_post(req, ev);
6219 : }
6220 :
6221 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
6222 : NULL, &ndr_table_winreg,
6223 0 : NDR_WINREG_OPENHKCC, state->out_mem_ctx, r);
6224 0 : if (tevent_req_nomem(subreq, req)) {
6225 0 : return tevent_req_post(req, ev);
6226 : }
6227 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKCC_r_done, req);
6228 :
6229 0 : return req;
6230 : }
6231 :
6232 0 : static void dcerpc_winreg_OpenHKCC_r_done(struct tevent_req *subreq)
6233 : {
6234 0 : struct tevent_req *req =
6235 0 : tevent_req_callback_data(subreq,
6236 : struct tevent_req);
6237 0 : NTSTATUS status;
6238 :
6239 0 : status = dcerpc_binding_handle_call_recv(subreq);
6240 0 : TALLOC_FREE(subreq);
6241 0 : if (tevent_req_nterror(req, status)) {
6242 0 : return;
6243 : }
6244 :
6245 0 : tevent_req_done(req);
6246 : }
6247 :
6248 0 : NTSTATUS dcerpc_winreg_OpenHKCC_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
6249 : {
6250 0 : struct dcerpc_winreg_OpenHKCC_r_state *state =
6251 0 : tevent_req_data(req,
6252 : struct dcerpc_winreg_OpenHKCC_r_state);
6253 0 : NTSTATUS status;
6254 :
6255 0 : if (tevent_req_is_nterror(req, &status)) {
6256 0 : tevent_req_received(req);
6257 0 : return status;
6258 : }
6259 :
6260 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
6261 :
6262 0 : tevent_req_received(req);
6263 0 : return NT_STATUS_OK;
6264 : }
6265 :
6266 0 : NTSTATUS dcerpc_winreg_OpenHKCC_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_OpenHKCC *r)
6267 : {
6268 0 : NTSTATUS status;
6269 :
6270 0 : status = dcerpc_binding_handle_call(h,
6271 : NULL, &ndr_table_winreg,
6272 : NDR_WINREG_OPENHKCC, mem_ctx, r);
6273 :
6274 0 : return status;
6275 : }
6276 :
6277 : struct dcerpc_winreg_OpenHKCC_state {
6278 : struct winreg_OpenHKCC orig;
6279 : struct winreg_OpenHKCC tmp;
6280 : TALLOC_CTX *out_mem_ctx;
6281 : };
6282 :
6283 : static void dcerpc_winreg_OpenHKCC_done(struct tevent_req *subreq);
6284 :
6285 0 : struct tevent_req *dcerpc_winreg_OpenHKCC_send(TALLOC_CTX *mem_ctx,
6286 : struct tevent_context *ev,
6287 : struct dcerpc_binding_handle *h,
6288 : uint16_t *_system_name /* [in] [unique] */,
6289 : uint32_t _access_mask /* [in] */,
6290 : struct policy_handle *_handle /* [out] [ref] */)
6291 : {
6292 0 : struct tevent_req *req;
6293 0 : struct dcerpc_winreg_OpenHKCC_state *state;
6294 0 : struct tevent_req *subreq;
6295 :
6296 0 : req = tevent_req_create(mem_ctx, &state,
6297 : struct dcerpc_winreg_OpenHKCC_state);
6298 0 : if (req == NULL) {
6299 0 : return NULL;
6300 : }
6301 0 : state->out_mem_ctx = NULL;
6302 :
6303 : /* In parameters */
6304 0 : state->orig.in.system_name = _system_name;
6305 0 : state->orig.in.access_mask = _access_mask;
6306 :
6307 : /* Out parameters */
6308 0 : state->orig.out.handle = _handle;
6309 :
6310 : /* Result */
6311 0 : NDR_ZERO_STRUCT(state->orig.out.result);
6312 :
6313 0 : state->out_mem_ctx = talloc_named_const(state, 0,
6314 : "dcerpc_winreg_OpenHKCC_out_memory");
6315 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
6316 0 : return tevent_req_post(req, ev);
6317 : }
6318 :
6319 : /* make a temporary copy, that we pass to the dispatch function */
6320 0 : state->tmp = state->orig;
6321 :
6322 0 : subreq = dcerpc_winreg_OpenHKCC_r_send(state, ev, h, &state->tmp);
6323 0 : if (tevent_req_nomem(subreq, req)) {
6324 0 : return tevent_req_post(req, ev);
6325 : }
6326 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKCC_done, req);
6327 0 : return req;
6328 : }
6329 :
6330 0 : static void dcerpc_winreg_OpenHKCC_done(struct tevent_req *subreq)
6331 : {
6332 0 : struct tevent_req *req = tevent_req_callback_data(
6333 : subreq, struct tevent_req);
6334 0 : struct dcerpc_winreg_OpenHKCC_state *state = tevent_req_data(
6335 : req, struct dcerpc_winreg_OpenHKCC_state);
6336 0 : NTSTATUS status;
6337 0 : TALLOC_CTX *mem_ctx;
6338 :
6339 0 : if (state->out_mem_ctx) {
6340 0 : mem_ctx = state->out_mem_ctx;
6341 : } else {
6342 0 : mem_ctx = state;
6343 : }
6344 :
6345 0 : status = dcerpc_winreg_OpenHKCC_r_recv(subreq, mem_ctx);
6346 0 : TALLOC_FREE(subreq);
6347 0 : if (tevent_req_nterror(req, status)) {
6348 0 : return;
6349 : }
6350 :
6351 : /* Copy out parameters */
6352 0 : *state->orig.out.handle = *state->tmp.out.handle;
6353 :
6354 : /* Copy result */
6355 0 : state->orig.out.result = state->tmp.out.result;
6356 :
6357 : /* Reset temporary structure */
6358 0 : NDR_ZERO_STRUCT(state->tmp);
6359 :
6360 0 : tevent_req_done(req);
6361 : }
6362 :
6363 0 : NTSTATUS dcerpc_winreg_OpenHKCC_recv(struct tevent_req *req,
6364 : TALLOC_CTX *mem_ctx,
6365 : WERROR *result)
6366 : {
6367 0 : struct dcerpc_winreg_OpenHKCC_state *state = tevent_req_data(
6368 : req, struct dcerpc_winreg_OpenHKCC_state);
6369 0 : NTSTATUS status;
6370 :
6371 0 : if (tevent_req_is_nterror(req, &status)) {
6372 0 : tevent_req_received(req);
6373 0 : return status;
6374 : }
6375 :
6376 : /* Steal possible out parameters to the callers context */
6377 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
6378 :
6379 : /* Return result */
6380 0 : *result = state->orig.out.result;
6381 :
6382 0 : tevent_req_received(req);
6383 0 : return NT_STATUS_OK;
6384 : }
6385 :
6386 0 : NTSTATUS dcerpc_winreg_OpenHKCC(struct dcerpc_binding_handle *h,
6387 : TALLOC_CTX *mem_ctx,
6388 : uint16_t *_system_name /* [in] [unique] */,
6389 : uint32_t _access_mask /* [in] */,
6390 : struct policy_handle *_handle /* [out] [ref] */,
6391 : WERROR *result)
6392 : {
6393 0 : struct winreg_OpenHKCC r;
6394 0 : NTSTATUS status;
6395 :
6396 : /* In parameters */
6397 0 : r.in.system_name = _system_name;
6398 0 : r.in.access_mask = _access_mask;
6399 :
6400 : /* Out parameters */
6401 0 : r.out.handle = _handle;
6402 :
6403 : /* Result */
6404 0 : NDR_ZERO_STRUCT(r.out.result);
6405 :
6406 0 : status = dcerpc_winreg_OpenHKCC_r(h, mem_ctx, &r);
6407 0 : if (!NT_STATUS_IS_OK(status)) {
6408 0 : return status;
6409 : }
6410 :
6411 : /* Return variables */
6412 0 : *_handle = *r.out.handle;
6413 :
6414 : /* Return result */
6415 0 : *result = r.out.result;
6416 :
6417 0 : return NT_STATUS_OK;
6418 : }
6419 :
6420 : struct dcerpc_winreg_OpenHKDD_r_state {
6421 : TALLOC_CTX *out_mem_ctx;
6422 : };
6423 :
6424 : static void dcerpc_winreg_OpenHKDD_r_done(struct tevent_req *subreq);
6425 :
6426 0 : struct tevent_req *dcerpc_winreg_OpenHKDD_r_send(TALLOC_CTX *mem_ctx,
6427 : struct tevent_context *ev,
6428 : struct dcerpc_binding_handle *h,
6429 : struct winreg_OpenHKDD *r)
6430 : {
6431 0 : struct tevent_req *req;
6432 0 : struct dcerpc_winreg_OpenHKDD_r_state *state;
6433 0 : struct tevent_req *subreq;
6434 :
6435 0 : req = tevent_req_create(mem_ctx, &state,
6436 : struct dcerpc_winreg_OpenHKDD_r_state);
6437 0 : if (req == NULL) {
6438 0 : return NULL;
6439 : }
6440 :
6441 0 : state->out_mem_ctx = talloc_new(state);
6442 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
6443 0 : return tevent_req_post(req, ev);
6444 : }
6445 :
6446 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
6447 : NULL, &ndr_table_winreg,
6448 0 : NDR_WINREG_OPENHKDD, state->out_mem_ctx, r);
6449 0 : if (tevent_req_nomem(subreq, req)) {
6450 0 : return tevent_req_post(req, ev);
6451 : }
6452 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKDD_r_done, req);
6453 :
6454 0 : return req;
6455 : }
6456 :
6457 0 : static void dcerpc_winreg_OpenHKDD_r_done(struct tevent_req *subreq)
6458 : {
6459 0 : struct tevent_req *req =
6460 0 : tevent_req_callback_data(subreq,
6461 : struct tevent_req);
6462 0 : NTSTATUS status;
6463 :
6464 0 : status = dcerpc_binding_handle_call_recv(subreq);
6465 0 : TALLOC_FREE(subreq);
6466 0 : if (tevent_req_nterror(req, status)) {
6467 0 : return;
6468 : }
6469 :
6470 0 : tevent_req_done(req);
6471 : }
6472 :
6473 0 : NTSTATUS dcerpc_winreg_OpenHKDD_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
6474 : {
6475 0 : struct dcerpc_winreg_OpenHKDD_r_state *state =
6476 0 : tevent_req_data(req,
6477 : struct dcerpc_winreg_OpenHKDD_r_state);
6478 0 : NTSTATUS status;
6479 :
6480 0 : if (tevent_req_is_nterror(req, &status)) {
6481 0 : tevent_req_received(req);
6482 0 : return status;
6483 : }
6484 :
6485 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
6486 :
6487 0 : tevent_req_received(req);
6488 0 : return NT_STATUS_OK;
6489 : }
6490 :
6491 0 : NTSTATUS dcerpc_winreg_OpenHKDD_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_OpenHKDD *r)
6492 : {
6493 0 : NTSTATUS status;
6494 :
6495 0 : status = dcerpc_binding_handle_call(h,
6496 : NULL, &ndr_table_winreg,
6497 : NDR_WINREG_OPENHKDD, mem_ctx, r);
6498 :
6499 0 : return status;
6500 : }
6501 :
6502 : struct dcerpc_winreg_OpenHKDD_state {
6503 : struct winreg_OpenHKDD orig;
6504 : struct winreg_OpenHKDD tmp;
6505 : TALLOC_CTX *out_mem_ctx;
6506 : };
6507 :
6508 : static void dcerpc_winreg_OpenHKDD_done(struct tevent_req *subreq);
6509 :
6510 0 : struct tevent_req *dcerpc_winreg_OpenHKDD_send(TALLOC_CTX *mem_ctx,
6511 : struct tevent_context *ev,
6512 : struct dcerpc_binding_handle *h,
6513 : uint16_t *_system_name /* [in] [unique] */,
6514 : uint32_t _access_mask /* [in] */,
6515 : struct policy_handle *_handle /* [out] [ref] */)
6516 : {
6517 0 : struct tevent_req *req;
6518 0 : struct dcerpc_winreg_OpenHKDD_state *state;
6519 0 : struct tevent_req *subreq;
6520 :
6521 0 : req = tevent_req_create(mem_ctx, &state,
6522 : struct dcerpc_winreg_OpenHKDD_state);
6523 0 : if (req == NULL) {
6524 0 : return NULL;
6525 : }
6526 0 : state->out_mem_ctx = NULL;
6527 :
6528 : /* In parameters */
6529 0 : state->orig.in.system_name = _system_name;
6530 0 : state->orig.in.access_mask = _access_mask;
6531 :
6532 : /* Out parameters */
6533 0 : state->orig.out.handle = _handle;
6534 :
6535 : /* Result */
6536 0 : NDR_ZERO_STRUCT(state->orig.out.result);
6537 :
6538 0 : state->out_mem_ctx = talloc_named_const(state, 0,
6539 : "dcerpc_winreg_OpenHKDD_out_memory");
6540 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
6541 0 : return tevent_req_post(req, ev);
6542 : }
6543 :
6544 : /* make a temporary copy, that we pass to the dispatch function */
6545 0 : state->tmp = state->orig;
6546 :
6547 0 : subreq = dcerpc_winreg_OpenHKDD_r_send(state, ev, h, &state->tmp);
6548 0 : if (tevent_req_nomem(subreq, req)) {
6549 0 : return tevent_req_post(req, ev);
6550 : }
6551 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKDD_done, req);
6552 0 : return req;
6553 : }
6554 :
6555 0 : static void dcerpc_winreg_OpenHKDD_done(struct tevent_req *subreq)
6556 : {
6557 0 : struct tevent_req *req = tevent_req_callback_data(
6558 : subreq, struct tevent_req);
6559 0 : struct dcerpc_winreg_OpenHKDD_state *state = tevent_req_data(
6560 : req, struct dcerpc_winreg_OpenHKDD_state);
6561 0 : NTSTATUS status;
6562 0 : TALLOC_CTX *mem_ctx;
6563 :
6564 0 : if (state->out_mem_ctx) {
6565 0 : mem_ctx = state->out_mem_ctx;
6566 : } else {
6567 0 : mem_ctx = state;
6568 : }
6569 :
6570 0 : status = dcerpc_winreg_OpenHKDD_r_recv(subreq, mem_ctx);
6571 0 : TALLOC_FREE(subreq);
6572 0 : if (tevent_req_nterror(req, status)) {
6573 0 : return;
6574 : }
6575 :
6576 : /* Copy out parameters */
6577 0 : *state->orig.out.handle = *state->tmp.out.handle;
6578 :
6579 : /* Copy result */
6580 0 : state->orig.out.result = state->tmp.out.result;
6581 :
6582 : /* Reset temporary structure */
6583 0 : NDR_ZERO_STRUCT(state->tmp);
6584 :
6585 0 : tevent_req_done(req);
6586 : }
6587 :
6588 0 : NTSTATUS dcerpc_winreg_OpenHKDD_recv(struct tevent_req *req,
6589 : TALLOC_CTX *mem_ctx,
6590 : WERROR *result)
6591 : {
6592 0 : struct dcerpc_winreg_OpenHKDD_state *state = tevent_req_data(
6593 : req, struct dcerpc_winreg_OpenHKDD_state);
6594 0 : NTSTATUS status;
6595 :
6596 0 : if (tevent_req_is_nterror(req, &status)) {
6597 0 : tevent_req_received(req);
6598 0 : return status;
6599 : }
6600 :
6601 : /* Steal possible out parameters to the callers context */
6602 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
6603 :
6604 : /* Return result */
6605 0 : *result = state->orig.out.result;
6606 :
6607 0 : tevent_req_received(req);
6608 0 : return NT_STATUS_OK;
6609 : }
6610 :
6611 0 : NTSTATUS dcerpc_winreg_OpenHKDD(struct dcerpc_binding_handle *h,
6612 : TALLOC_CTX *mem_ctx,
6613 : uint16_t *_system_name /* [in] [unique] */,
6614 : uint32_t _access_mask /* [in] */,
6615 : struct policy_handle *_handle /* [out] [ref] */,
6616 : WERROR *result)
6617 : {
6618 0 : struct winreg_OpenHKDD r;
6619 0 : NTSTATUS status;
6620 :
6621 : /* In parameters */
6622 0 : r.in.system_name = _system_name;
6623 0 : r.in.access_mask = _access_mask;
6624 :
6625 : /* Out parameters */
6626 0 : r.out.handle = _handle;
6627 :
6628 : /* Result */
6629 0 : NDR_ZERO_STRUCT(r.out.result);
6630 :
6631 0 : status = dcerpc_winreg_OpenHKDD_r(h, mem_ctx, &r);
6632 0 : if (!NT_STATUS_IS_OK(status)) {
6633 0 : return status;
6634 : }
6635 :
6636 : /* Return variables */
6637 0 : *_handle = *r.out.handle;
6638 :
6639 : /* Return result */
6640 0 : *result = r.out.result;
6641 :
6642 0 : return NT_STATUS_OK;
6643 : }
6644 :
6645 : struct dcerpc_winreg_QueryMultipleValues_r_state {
6646 : TALLOC_CTX *out_mem_ctx;
6647 : };
6648 :
6649 : static void dcerpc_winreg_QueryMultipleValues_r_done(struct tevent_req *subreq);
6650 :
6651 0 : struct tevent_req *dcerpc_winreg_QueryMultipleValues_r_send(TALLOC_CTX *mem_ctx,
6652 : struct tevent_context *ev,
6653 : struct dcerpc_binding_handle *h,
6654 : struct winreg_QueryMultipleValues *r)
6655 : {
6656 0 : struct tevent_req *req;
6657 0 : struct dcerpc_winreg_QueryMultipleValues_r_state *state;
6658 0 : struct tevent_req *subreq;
6659 :
6660 0 : req = tevent_req_create(mem_ctx, &state,
6661 : struct dcerpc_winreg_QueryMultipleValues_r_state);
6662 0 : if (req == NULL) {
6663 0 : return NULL;
6664 : }
6665 :
6666 0 : state->out_mem_ctx = talloc_new(state);
6667 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
6668 0 : return tevent_req_post(req, ev);
6669 : }
6670 :
6671 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
6672 : NULL, &ndr_table_winreg,
6673 0 : NDR_WINREG_QUERYMULTIPLEVALUES, state->out_mem_ctx, r);
6674 0 : if (tevent_req_nomem(subreq, req)) {
6675 0 : return tevent_req_post(req, ev);
6676 : }
6677 0 : tevent_req_set_callback(subreq, dcerpc_winreg_QueryMultipleValues_r_done, req);
6678 :
6679 0 : return req;
6680 : }
6681 :
6682 0 : static void dcerpc_winreg_QueryMultipleValues_r_done(struct tevent_req *subreq)
6683 : {
6684 0 : struct tevent_req *req =
6685 0 : tevent_req_callback_data(subreq,
6686 : struct tevent_req);
6687 0 : NTSTATUS status;
6688 :
6689 0 : status = dcerpc_binding_handle_call_recv(subreq);
6690 0 : TALLOC_FREE(subreq);
6691 0 : if (tevent_req_nterror(req, status)) {
6692 0 : return;
6693 : }
6694 :
6695 0 : tevent_req_done(req);
6696 : }
6697 :
6698 0 : NTSTATUS dcerpc_winreg_QueryMultipleValues_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
6699 : {
6700 0 : struct dcerpc_winreg_QueryMultipleValues_r_state *state =
6701 0 : tevent_req_data(req,
6702 : struct dcerpc_winreg_QueryMultipleValues_r_state);
6703 0 : NTSTATUS status;
6704 :
6705 0 : if (tevent_req_is_nterror(req, &status)) {
6706 0 : tevent_req_received(req);
6707 0 : return status;
6708 : }
6709 :
6710 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
6711 :
6712 0 : tevent_req_received(req);
6713 0 : return NT_STATUS_OK;
6714 : }
6715 :
6716 88 : NTSTATUS dcerpc_winreg_QueryMultipleValues_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_QueryMultipleValues *r)
6717 : {
6718 0 : NTSTATUS status;
6719 :
6720 88 : status = dcerpc_binding_handle_call(h,
6721 : NULL, &ndr_table_winreg,
6722 : NDR_WINREG_QUERYMULTIPLEVALUES, mem_ctx, r);
6723 :
6724 88 : return status;
6725 : }
6726 :
6727 : struct dcerpc_winreg_QueryMultipleValues_state {
6728 : struct winreg_QueryMultipleValues orig;
6729 : struct winreg_QueryMultipleValues tmp;
6730 : TALLOC_CTX *out_mem_ctx;
6731 : };
6732 :
6733 : static void dcerpc_winreg_QueryMultipleValues_done(struct tevent_req *subreq);
6734 :
6735 0 : struct tevent_req *dcerpc_winreg_QueryMultipleValues_send(TALLOC_CTX *mem_ctx,
6736 : struct tevent_context *ev,
6737 : struct dcerpc_binding_handle *h,
6738 : struct policy_handle *_key_handle /* [in] [ref] */,
6739 : struct QueryMultipleValue *_values_in /* [in] [length_is(num_values),ref,size_is(num_values)] */,
6740 : struct QueryMultipleValue *_values_out /* [out] [length_is(num_values),ref,size_is(num_values)] */,
6741 : uint32_t _num_values /* [in] */,
6742 : uint8_t *_buffer /* [in,out] [length_is(*buffer_size),size_is(*buffer_size),unique] */,
6743 : uint32_t *_buffer_size /* [in,out] [ref] */)
6744 : {
6745 0 : struct tevent_req *req;
6746 0 : struct dcerpc_winreg_QueryMultipleValues_state *state;
6747 0 : struct tevent_req *subreq;
6748 :
6749 0 : req = tevent_req_create(mem_ctx, &state,
6750 : struct dcerpc_winreg_QueryMultipleValues_state);
6751 0 : if (req == NULL) {
6752 0 : return NULL;
6753 : }
6754 0 : state->out_mem_ctx = NULL;
6755 :
6756 : /* In parameters */
6757 0 : state->orig.in.key_handle = _key_handle;
6758 0 : state->orig.in.values_in = _values_in;
6759 0 : state->orig.in.num_values = _num_values;
6760 0 : state->orig.in.buffer = _buffer;
6761 0 : state->orig.in.buffer_size = _buffer_size;
6762 :
6763 : /* Out parameters */
6764 0 : state->orig.out.values_out = _values_out;
6765 0 : state->orig.out.buffer = _buffer;
6766 0 : state->orig.out.buffer_size = _buffer_size;
6767 :
6768 : /* Result */
6769 0 : NDR_ZERO_STRUCT(state->orig.out.result);
6770 :
6771 0 : state->out_mem_ctx = talloc_named_const(state, 0,
6772 : "dcerpc_winreg_QueryMultipleValues_out_memory");
6773 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
6774 0 : return tevent_req_post(req, ev);
6775 : }
6776 :
6777 : /* make a temporary copy, that we pass to the dispatch function */
6778 0 : state->tmp = state->orig;
6779 :
6780 0 : subreq = dcerpc_winreg_QueryMultipleValues_r_send(state, ev, h, &state->tmp);
6781 0 : if (tevent_req_nomem(subreq, req)) {
6782 0 : return tevent_req_post(req, ev);
6783 : }
6784 0 : tevent_req_set_callback(subreq, dcerpc_winreg_QueryMultipleValues_done, req);
6785 0 : return req;
6786 : }
6787 :
6788 0 : static void dcerpc_winreg_QueryMultipleValues_done(struct tevent_req *subreq)
6789 : {
6790 0 : struct tevent_req *req = tevent_req_callback_data(
6791 : subreq, struct tevent_req);
6792 0 : struct dcerpc_winreg_QueryMultipleValues_state *state = tevent_req_data(
6793 : req, struct dcerpc_winreg_QueryMultipleValues_state);
6794 0 : NTSTATUS status;
6795 0 : TALLOC_CTX *mem_ctx;
6796 :
6797 0 : if (state->out_mem_ctx) {
6798 0 : mem_ctx = state->out_mem_ctx;
6799 : } else {
6800 0 : mem_ctx = state;
6801 : }
6802 :
6803 0 : status = dcerpc_winreg_QueryMultipleValues_r_recv(subreq, mem_ctx);
6804 0 : TALLOC_FREE(subreq);
6805 0 : if (tevent_req_nterror(req, status)) {
6806 0 : return;
6807 : }
6808 :
6809 : /* Copy out parameters */
6810 : {
6811 0 : size_t _copy_len_values_out;
6812 0 : _copy_len_values_out = state->tmp.in.num_values;
6813 0 : if (state->orig.out.values_out != state->tmp.out.values_out) {
6814 0 : memcpy(state->orig.out.values_out, state->tmp.out.values_out, _copy_len_values_out * sizeof(*state->orig.out.values_out));
6815 : }
6816 : }
6817 0 : if (state->orig.out.buffer && state->tmp.out.buffer) {
6818 : {
6819 0 : size_t _copy_len_buffer;
6820 0 : if ((*state->tmp.out.buffer_size) > (*state->tmp.in.buffer_size)) {
6821 0 : tevent_req_nterror(req, NT_STATUS_INVALID_NETWORK_RESPONSE);
6822 0 : return;
6823 : }
6824 0 : _copy_len_buffer = *state->tmp.out.buffer_size;
6825 0 : if (state->orig.out.buffer != state->tmp.out.buffer) {
6826 0 : memcpy(state->orig.out.buffer, state->tmp.out.buffer, _copy_len_buffer * sizeof(*state->orig.out.buffer));
6827 : }
6828 : }
6829 : }
6830 0 : *state->orig.out.buffer_size = *state->tmp.out.buffer_size;
6831 :
6832 : /* Copy result */
6833 0 : state->orig.out.result = state->tmp.out.result;
6834 :
6835 : /* Reset temporary structure */
6836 0 : NDR_ZERO_STRUCT(state->tmp);
6837 :
6838 0 : tevent_req_done(req);
6839 : }
6840 :
6841 0 : NTSTATUS dcerpc_winreg_QueryMultipleValues_recv(struct tevent_req *req,
6842 : TALLOC_CTX *mem_ctx,
6843 : WERROR *result)
6844 : {
6845 0 : struct dcerpc_winreg_QueryMultipleValues_state *state = tevent_req_data(
6846 : req, struct dcerpc_winreg_QueryMultipleValues_state);
6847 0 : NTSTATUS status;
6848 :
6849 0 : if (tevent_req_is_nterror(req, &status)) {
6850 0 : tevent_req_received(req);
6851 0 : return status;
6852 : }
6853 :
6854 : /* Steal possible out parameters to the callers context */
6855 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
6856 :
6857 : /* Return result */
6858 0 : *result = state->orig.out.result;
6859 :
6860 0 : tevent_req_received(req);
6861 0 : return NT_STATUS_OK;
6862 : }
6863 :
6864 0 : NTSTATUS dcerpc_winreg_QueryMultipleValues(struct dcerpc_binding_handle *h,
6865 : TALLOC_CTX *mem_ctx,
6866 : struct policy_handle *_key_handle /* [in] [ref] */,
6867 : struct QueryMultipleValue *_values_in /* [in] [length_is(num_values),ref,size_is(num_values)] */,
6868 : struct QueryMultipleValue *_values_out /* [out] [length_is(num_values),ref,size_is(num_values)] */,
6869 : uint32_t _num_values /* [in] */,
6870 : uint8_t *_buffer /* [in,out] [length_is(*buffer_size),size_is(*buffer_size),unique] */,
6871 : uint32_t *_buffer_size /* [in,out] [ref] */,
6872 : WERROR *result)
6873 : {
6874 0 : struct winreg_QueryMultipleValues r;
6875 0 : NTSTATUS status;
6876 :
6877 : /* In parameters */
6878 0 : r.in.key_handle = _key_handle;
6879 0 : r.in.values_in = _values_in;
6880 0 : r.in.num_values = _num_values;
6881 0 : r.in.buffer = _buffer;
6882 0 : r.in.buffer_size = _buffer_size;
6883 :
6884 : /* Out parameters */
6885 0 : r.out.values_out = _values_out;
6886 0 : r.out.buffer = _buffer;
6887 0 : r.out.buffer_size = _buffer_size;
6888 :
6889 : /* Result */
6890 0 : NDR_ZERO_STRUCT(r.out.result);
6891 :
6892 0 : status = dcerpc_winreg_QueryMultipleValues_r(h, mem_ctx, &r);
6893 0 : if (!NT_STATUS_IS_OK(status)) {
6894 0 : return status;
6895 : }
6896 :
6897 : /* Return variables */
6898 : {
6899 0 : size_t _copy_len_values_out;
6900 0 : _copy_len_values_out = r.in.num_values;
6901 0 : if (_values_out != r.out.values_out) {
6902 0 : memcpy(_values_out, r.out.values_out, _copy_len_values_out * sizeof(*_values_out));
6903 : }
6904 : }
6905 0 : if (_buffer && r.out.buffer) {
6906 : {
6907 0 : size_t _copy_len_buffer;
6908 0 : if ((*r.out.buffer_size) > (*r.in.buffer_size)) {
6909 0 : return NT_STATUS_INVALID_NETWORK_RESPONSE;
6910 : }
6911 0 : _copy_len_buffer = *r.out.buffer_size;
6912 0 : if (_buffer != r.out.buffer) {
6913 0 : memcpy(_buffer, r.out.buffer, _copy_len_buffer * sizeof(*_buffer));
6914 : }
6915 : }
6916 : }
6917 0 : *_buffer_size = *r.out.buffer_size;
6918 :
6919 : /* Return result */
6920 0 : *result = r.out.result;
6921 :
6922 0 : return NT_STATUS_OK;
6923 : }
6924 :
6925 : struct dcerpc_winreg_InitiateSystemShutdownEx_r_state {
6926 : TALLOC_CTX *out_mem_ctx;
6927 : };
6928 :
6929 : static void dcerpc_winreg_InitiateSystemShutdownEx_r_done(struct tevent_req *subreq);
6930 :
6931 0 : struct tevent_req *dcerpc_winreg_InitiateSystemShutdownEx_r_send(TALLOC_CTX *mem_ctx,
6932 : struct tevent_context *ev,
6933 : struct dcerpc_binding_handle *h,
6934 : struct winreg_InitiateSystemShutdownEx *r)
6935 : {
6936 0 : struct tevent_req *req;
6937 0 : struct dcerpc_winreg_InitiateSystemShutdownEx_r_state *state;
6938 0 : struct tevent_req *subreq;
6939 :
6940 0 : req = tevent_req_create(mem_ctx, &state,
6941 : struct dcerpc_winreg_InitiateSystemShutdownEx_r_state);
6942 0 : if (req == NULL) {
6943 0 : return NULL;
6944 : }
6945 :
6946 0 : state->out_mem_ctx = NULL;
6947 :
6948 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
6949 : NULL, &ndr_table_winreg,
6950 : NDR_WINREG_INITIATESYSTEMSHUTDOWNEX, state, r);
6951 0 : if (tevent_req_nomem(subreq, req)) {
6952 0 : return tevent_req_post(req, ev);
6953 : }
6954 0 : tevent_req_set_callback(subreq, dcerpc_winreg_InitiateSystemShutdownEx_r_done, req);
6955 :
6956 0 : return req;
6957 : }
6958 :
6959 0 : static void dcerpc_winreg_InitiateSystemShutdownEx_r_done(struct tevent_req *subreq)
6960 : {
6961 0 : struct tevent_req *req =
6962 0 : tevent_req_callback_data(subreq,
6963 : struct tevent_req);
6964 0 : NTSTATUS status;
6965 :
6966 0 : status = dcerpc_binding_handle_call_recv(subreq);
6967 0 : TALLOC_FREE(subreq);
6968 0 : if (tevent_req_nterror(req, status)) {
6969 0 : return;
6970 : }
6971 :
6972 0 : tevent_req_done(req);
6973 : }
6974 :
6975 0 : NTSTATUS dcerpc_winreg_InitiateSystemShutdownEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
6976 : {
6977 0 : struct dcerpc_winreg_InitiateSystemShutdownEx_r_state *state =
6978 0 : tevent_req_data(req,
6979 : struct dcerpc_winreg_InitiateSystemShutdownEx_r_state);
6980 0 : NTSTATUS status;
6981 :
6982 0 : if (tevent_req_is_nterror(req, &status)) {
6983 0 : tevent_req_received(req);
6984 0 : return status;
6985 : }
6986 :
6987 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
6988 :
6989 0 : tevent_req_received(req);
6990 0 : return NT_STATUS_OK;
6991 : }
6992 :
6993 0 : NTSTATUS dcerpc_winreg_InitiateSystemShutdownEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_InitiateSystemShutdownEx *r)
6994 : {
6995 0 : NTSTATUS status;
6996 :
6997 0 : status = dcerpc_binding_handle_call(h,
6998 : NULL, &ndr_table_winreg,
6999 : NDR_WINREG_INITIATESYSTEMSHUTDOWNEX, mem_ctx, r);
7000 :
7001 0 : return status;
7002 : }
7003 :
7004 : struct dcerpc_winreg_InitiateSystemShutdownEx_state {
7005 : struct winreg_InitiateSystemShutdownEx orig;
7006 : struct winreg_InitiateSystemShutdownEx tmp;
7007 : TALLOC_CTX *out_mem_ctx;
7008 : };
7009 :
7010 : static void dcerpc_winreg_InitiateSystemShutdownEx_done(struct tevent_req *subreq);
7011 :
7012 0 : struct tevent_req *dcerpc_winreg_InitiateSystemShutdownEx_send(TALLOC_CTX *mem_ctx,
7013 : struct tevent_context *ev,
7014 : struct dcerpc_binding_handle *h,
7015 : uint16_t *_hostname /* [in] [unique] */,
7016 : struct lsa_StringLarge *_message /* [in] [unique] */,
7017 : uint32_t _timeout /* [in] */,
7018 : uint8_t _force_apps /* [in] */,
7019 : uint8_t _do_reboot /* [in] */,
7020 : uint32_t _reason /* [in] */)
7021 : {
7022 0 : struct tevent_req *req;
7023 0 : struct dcerpc_winreg_InitiateSystemShutdownEx_state *state;
7024 0 : struct tevent_req *subreq;
7025 :
7026 0 : req = tevent_req_create(mem_ctx, &state,
7027 : struct dcerpc_winreg_InitiateSystemShutdownEx_state);
7028 0 : if (req == NULL) {
7029 0 : return NULL;
7030 : }
7031 0 : state->out_mem_ctx = NULL;
7032 :
7033 : /* In parameters */
7034 0 : state->orig.in.hostname = _hostname;
7035 0 : state->orig.in.message = _message;
7036 0 : state->orig.in.timeout = _timeout;
7037 0 : state->orig.in.force_apps = _force_apps;
7038 0 : state->orig.in.do_reboot = _do_reboot;
7039 0 : state->orig.in.reason = _reason;
7040 :
7041 : /* Out parameters */
7042 :
7043 : /* Result */
7044 0 : NDR_ZERO_STRUCT(state->orig.out.result);
7045 :
7046 : /* make a temporary copy, that we pass to the dispatch function */
7047 0 : state->tmp = state->orig;
7048 :
7049 0 : subreq = dcerpc_winreg_InitiateSystemShutdownEx_r_send(state, ev, h, &state->tmp);
7050 0 : if (tevent_req_nomem(subreq, req)) {
7051 0 : return tevent_req_post(req, ev);
7052 : }
7053 0 : tevent_req_set_callback(subreq, dcerpc_winreg_InitiateSystemShutdownEx_done, req);
7054 0 : return req;
7055 : }
7056 :
7057 0 : static void dcerpc_winreg_InitiateSystemShutdownEx_done(struct tevent_req *subreq)
7058 : {
7059 0 : struct tevent_req *req = tevent_req_callback_data(
7060 : subreq, struct tevent_req);
7061 0 : struct dcerpc_winreg_InitiateSystemShutdownEx_state *state = tevent_req_data(
7062 : req, struct dcerpc_winreg_InitiateSystemShutdownEx_state);
7063 0 : NTSTATUS status;
7064 0 : TALLOC_CTX *mem_ctx;
7065 :
7066 0 : if (state->out_mem_ctx) {
7067 0 : mem_ctx = state->out_mem_ctx;
7068 : } else {
7069 0 : mem_ctx = state;
7070 : }
7071 :
7072 0 : status = dcerpc_winreg_InitiateSystemShutdownEx_r_recv(subreq, mem_ctx);
7073 0 : TALLOC_FREE(subreq);
7074 0 : if (tevent_req_nterror(req, status)) {
7075 0 : return;
7076 : }
7077 :
7078 : /* Copy out parameters */
7079 :
7080 : /* Copy result */
7081 0 : state->orig.out.result = state->tmp.out.result;
7082 :
7083 : /* Reset temporary structure */
7084 0 : NDR_ZERO_STRUCT(state->tmp);
7085 :
7086 0 : tevent_req_done(req);
7087 : }
7088 :
7089 0 : NTSTATUS dcerpc_winreg_InitiateSystemShutdownEx_recv(struct tevent_req *req,
7090 : TALLOC_CTX *mem_ctx,
7091 : WERROR *result)
7092 : {
7093 0 : struct dcerpc_winreg_InitiateSystemShutdownEx_state *state = tevent_req_data(
7094 : req, struct dcerpc_winreg_InitiateSystemShutdownEx_state);
7095 0 : NTSTATUS status;
7096 :
7097 0 : if (tevent_req_is_nterror(req, &status)) {
7098 0 : tevent_req_received(req);
7099 0 : return status;
7100 : }
7101 :
7102 : /* Steal possible out parameters to the callers context */
7103 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
7104 :
7105 : /* Return result */
7106 0 : *result = state->orig.out.result;
7107 :
7108 0 : tevent_req_received(req);
7109 0 : return NT_STATUS_OK;
7110 : }
7111 :
7112 0 : NTSTATUS dcerpc_winreg_InitiateSystemShutdownEx(struct dcerpc_binding_handle *h,
7113 : TALLOC_CTX *mem_ctx,
7114 : uint16_t *_hostname /* [in] [unique] */,
7115 : struct lsa_StringLarge *_message /* [in] [unique] */,
7116 : uint32_t _timeout /* [in] */,
7117 : uint8_t _force_apps /* [in] */,
7118 : uint8_t _do_reboot /* [in] */,
7119 : uint32_t _reason /* [in] */,
7120 : WERROR *result)
7121 : {
7122 0 : struct winreg_InitiateSystemShutdownEx r;
7123 0 : NTSTATUS status;
7124 :
7125 : /* In parameters */
7126 0 : r.in.hostname = _hostname;
7127 0 : r.in.message = _message;
7128 0 : r.in.timeout = _timeout;
7129 0 : r.in.force_apps = _force_apps;
7130 0 : r.in.do_reboot = _do_reboot;
7131 0 : r.in.reason = _reason;
7132 :
7133 : /* Out parameters */
7134 :
7135 : /* Result */
7136 0 : NDR_ZERO_STRUCT(r.out.result);
7137 :
7138 0 : status = dcerpc_winreg_InitiateSystemShutdownEx_r(h, mem_ctx, &r);
7139 0 : if (!NT_STATUS_IS_OK(status)) {
7140 0 : return status;
7141 : }
7142 :
7143 : /* Return variables */
7144 :
7145 : /* Return result */
7146 0 : *result = r.out.result;
7147 :
7148 0 : return NT_STATUS_OK;
7149 : }
7150 :
7151 : struct dcerpc_winreg_SaveKeyEx_r_state {
7152 : TALLOC_CTX *out_mem_ctx;
7153 : };
7154 :
7155 : static void dcerpc_winreg_SaveKeyEx_r_done(struct tevent_req *subreq);
7156 :
7157 0 : struct tevent_req *dcerpc_winreg_SaveKeyEx_r_send(TALLOC_CTX *mem_ctx,
7158 : struct tevent_context *ev,
7159 : struct dcerpc_binding_handle *h,
7160 : struct winreg_SaveKeyEx *r)
7161 : {
7162 0 : struct tevent_req *req;
7163 0 : struct dcerpc_winreg_SaveKeyEx_r_state *state;
7164 0 : struct tevent_req *subreq;
7165 :
7166 0 : req = tevent_req_create(mem_ctx, &state,
7167 : struct dcerpc_winreg_SaveKeyEx_r_state);
7168 0 : if (req == NULL) {
7169 0 : return NULL;
7170 : }
7171 :
7172 0 : state->out_mem_ctx = NULL;
7173 :
7174 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
7175 : NULL, &ndr_table_winreg,
7176 : NDR_WINREG_SAVEKEYEX, state, r);
7177 0 : if (tevent_req_nomem(subreq, req)) {
7178 0 : return tevent_req_post(req, ev);
7179 : }
7180 0 : tevent_req_set_callback(subreq, dcerpc_winreg_SaveKeyEx_r_done, req);
7181 :
7182 0 : return req;
7183 : }
7184 :
7185 0 : static void dcerpc_winreg_SaveKeyEx_r_done(struct tevent_req *subreq)
7186 : {
7187 0 : struct tevent_req *req =
7188 0 : tevent_req_callback_data(subreq,
7189 : struct tevent_req);
7190 0 : NTSTATUS status;
7191 :
7192 0 : status = dcerpc_binding_handle_call_recv(subreq);
7193 0 : TALLOC_FREE(subreq);
7194 0 : if (tevent_req_nterror(req, status)) {
7195 0 : return;
7196 : }
7197 :
7198 0 : tevent_req_done(req);
7199 : }
7200 :
7201 0 : NTSTATUS dcerpc_winreg_SaveKeyEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
7202 : {
7203 0 : struct dcerpc_winreg_SaveKeyEx_r_state *state =
7204 0 : tevent_req_data(req,
7205 : struct dcerpc_winreg_SaveKeyEx_r_state);
7206 0 : NTSTATUS status;
7207 :
7208 0 : if (tevent_req_is_nterror(req, &status)) {
7209 0 : tevent_req_received(req);
7210 0 : return status;
7211 : }
7212 :
7213 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
7214 :
7215 0 : tevent_req_received(req);
7216 0 : return NT_STATUS_OK;
7217 : }
7218 :
7219 0 : NTSTATUS dcerpc_winreg_SaveKeyEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_SaveKeyEx *r)
7220 : {
7221 0 : NTSTATUS status;
7222 :
7223 0 : status = dcerpc_binding_handle_call(h,
7224 : NULL, &ndr_table_winreg,
7225 : NDR_WINREG_SAVEKEYEX, mem_ctx, r);
7226 :
7227 0 : return status;
7228 : }
7229 :
7230 : struct dcerpc_winreg_SaveKeyEx_state {
7231 : struct winreg_SaveKeyEx orig;
7232 : struct winreg_SaveKeyEx tmp;
7233 : TALLOC_CTX *out_mem_ctx;
7234 : };
7235 :
7236 : static void dcerpc_winreg_SaveKeyEx_done(struct tevent_req *subreq);
7237 :
7238 0 : struct tevent_req *dcerpc_winreg_SaveKeyEx_send(TALLOC_CTX *mem_ctx,
7239 : struct tevent_context *ev,
7240 : struct dcerpc_binding_handle *h,
7241 : struct policy_handle *_handle /* [in] [ref] */,
7242 : struct winreg_String *_filename /* [in] [ref] */,
7243 : struct KeySecurityAttribute *_sec_attrib /* [in] [unique] */,
7244 : uint32_t _flags /* [in] */)
7245 : {
7246 0 : struct tevent_req *req;
7247 0 : struct dcerpc_winreg_SaveKeyEx_state *state;
7248 0 : struct tevent_req *subreq;
7249 :
7250 0 : req = tevent_req_create(mem_ctx, &state,
7251 : struct dcerpc_winreg_SaveKeyEx_state);
7252 0 : if (req == NULL) {
7253 0 : return NULL;
7254 : }
7255 0 : state->out_mem_ctx = NULL;
7256 :
7257 : /* In parameters */
7258 0 : state->orig.in.handle = _handle;
7259 0 : state->orig.in.filename = _filename;
7260 0 : state->orig.in.sec_attrib = _sec_attrib;
7261 0 : state->orig.in.flags = _flags;
7262 :
7263 : /* Out parameters */
7264 :
7265 : /* Result */
7266 0 : NDR_ZERO_STRUCT(state->orig.out.result);
7267 :
7268 : /* make a temporary copy, that we pass to the dispatch function */
7269 0 : state->tmp = state->orig;
7270 :
7271 0 : subreq = dcerpc_winreg_SaveKeyEx_r_send(state, ev, h, &state->tmp);
7272 0 : if (tevent_req_nomem(subreq, req)) {
7273 0 : return tevent_req_post(req, ev);
7274 : }
7275 0 : tevent_req_set_callback(subreq, dcerpc_winreg_SaveKeyEx_done, req);
7276 0 : return req;
7277 : }
7278 :
7279 0 : static void dcerpc_winreg_SaveKeyEx_done(struct tevent_req *subreq)
7280 : {
7281 0 : struct tevent_req *req = tevent_req_callback_data(
7282 : subreq, struct tevent_req);
7283 0 : struct dcerpc_winreg_SaveKeyEx_state *state = tevent_req_data(
7284 : req, struct dcerpc_winreg_SaveKeyEx_state);
7285 0 : NTSTATUS status;
7286 0 : TALLOC_CTX *mem_ctx;
7287 :
7288 0 : if (state->out_mem_ctx) {
7289 0 : mem_ctx = state->out_mem_ctx;
7290 : } else {
7291 0 : mem_ctx = state;
7292 : }
7293 :
7294 0 : status = dcerpc_winreg_SaveKeyEx_r_recv(subreq, mem_ctx);
7295 0 : TALLOC_FREE(subreq);
7296 0 : if (tevent_req_nterror(req, status)) {
7297 0 : return;
7298 : }
7299 :
7300 : /* Copy out parameters */
7301 :
7302 : /* Copy result */
7303 0 : state->orig.out.result = state->tmp.out.result;
7304 :
7305 : /* Reset temporary structure */
7306 0 : NDR_ZERO_STRUCT(state->tmp);
7307 :
7308 0 : tevent_req_done(req);
7309 : }
7310 :
7311 0 : NTSTATUS dcerpc_winreg_SaveKeyEx_recv(struct tevent_req *req,
7312 : TALLOC_CTX *mem_ctx,
7313 : WERROR *result)
7314 : {
7315 0 : struct dcerpc_winreg_SaveKeyEx_state *state = tevent_req_data(
7316 : req, struct dcerpc_winreg_SaveKeyEx_state);
7317 0 : NTSTATUS status;
7318 :
7319 0 : if (tevent_req_is_nterror(req, &status)) {
7320 0 : tevent_req_received(req);
7321 0 : return status;
7322 : }
7323 :
7324 : /* Steal possible out parameters to the callers context */
7325 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
7326 :
7327 : /* Return result */
7328 0 : *result = state->orig.out.result;
7329 :
7330 0 : tevent_req_received(req);
7331 0 : return NT_STATUS_OK;
7332 : }
7333 :
7334 0 : NTSTATUS dcerpc_winreg_SaveKeyEx(struct dcerpc_binding_handle *h,
7335 : TALLOC_CTX *mem_ctx,
7336 : struct policy_handle *_handle /* [in] [ref] */,
7337 : struct winreg_String *_filename /* [in] [ref] */,
7338 : struct KeySecurityAttribute *_sec_attrib /* [in] [unique] */,
7339 : uint32_t _flags /* [in] */,
7340 : WERROR *result)
7341 : {
7342 0 : struct winreg_SaveKeyEx r;
7343 0 : NTSTATUS status;
7344 :
7345 : /* In parameters */
7346 0 : r.in.handle = _handle;
7347 0 : r.in.filename = _filename;
7348 0 : r.in.sec_attrib = _sec_attrib;
7349 0 : r.in.flags = _flags;
7350 :
7351 : /* Out parameters */
7352 :
7353 : /* Result */
7354 0 : NDR_ZERO_STRUCT(r.out.result);
7355 :
7356 0 : status = dcerpc_winreg_SaveKeyEx_r(h, mem_ctx, &r);
7357 0 : if (!NT_STATUS_IS_OK(status)) {
7358 0 : return status;
7359 : }
7360 :
7361 : /* Return variables */
7362 :
7363 : /* Return result */
7364 0 : *result = r.out.result;
7365 :
7366 0 : return NT_STATUS_OK;
7367 : }
7368 :
7369 : struct dcerpc_winreg_OpenHKPT_r_state {
7370 : TALLOC_CTX *out_mem_ctx;
7371 : };
7372 :
7373 : static void dcerpc_winreg_OpenHKPT_r_done(struct tevent_req *subreq);
7374 :
7375 0 : struct tevent_req *dcerpc_winreg_OpenHKPT_r_send(TALLOC_CTX *mem_ctx,
7376 : struct tevent_context *ev,
7377 : struct dcerpc_binding_handle *h,
7378 : struct winreg_OpenHKPT *r)
7379 : {
7380 0 : struct tevent_req *req;
7381 0 : struct dcerpc_winreg_OpenHKPT_r_state *state;
7382 0 : struct tevent_req *subreq;
7383 :
7384 0 : req = tevent_req_create(mem_ctx, &state,
7385 : struct dcerpc_winreg_OpenHKPT_r_state);
7386 0 : if (req == NULL) {
7387 0 : return NULL;
7388 : }
7389 :
7390 0 : state->out_mem_ctx = talloc_new(state);
7391 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
7392 0 : return tevent_req_post(req, ev);
7393 : }
7394 :
7395 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
7396 : NULL, &ndr_table_winreg,
7397 0 : NDR_WINREG_OPENHKPT, state->out_mem_ctx, r);
7398 0 : if (tevent_req_nomem(subreq, req)) {
7399 0 : return tevent_req_post(req, ev);
7400 : }
7401 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKPT_r_done, req);
7402 :
7403 0 : return req;
7404 : }
7405 :
7406 0 : static void dcerpc_winreg_OpenHKPT_r_done(struct tevent_req *subreq)
7407 : {
7408 0 : struct tevent_req *req =
7409 0 : tevent_req_callback_data(subreq,
7410 : struct tevent_req);
7411 0 : NTSTATUS status;
7412 :
7413 0 : status = dcerpc_binding_handle_call_recv(subreq);
7414 0 : TALLOC_FREE(subreq);
7415 0 : if (tevent_req_nterror(req, status)) {
7416 0 : return;
7417 : }
7418 :
7419 0 : tevent_req_done(req);
7420 : }
7421 :
7422 0 : NTSTATUS dcerpc_winreg_OpenHKPT_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
7423 : {
7424 0 : struct dcerpc_winreg_OpenHKPT_r_state *state =
7425 0 : tevent_req_data(req,
7426 : struct dcerpc_winreg_OpenHKPT_r_state);
7427 0 : NTSTATUS status;
7428 :
7429 0 : if (tevent_req_is_nterror(req, &status)) {
7430 0 : tevent_req_received(req);
7431 0 : return status;
7432 : }
7433 :
7434 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
7435 :
7436 0 : tevent_req_received(req);
7437 0 : return NT_STATUS_OK;
7438 : }
7439 :
7440 0 : NTSTATUS dcerpc_winreg_OpenHKPT_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_OpenHKPT *r)
7441 : {
7442 0 : NTSTATUS status;
7443 :
7444 0 : status = dcerpc_binding_handle_call(h,
7445 : NULL, &ndr_table_winreg,
7446 : NDR_WINREG_OPENHKPT, mem_ctx, r);
7447 :
7448 0 : return status;
7449 : }
7450 :
7451 : struct dcerpc_winreg_OpenHKPT_state {
7452 : struct winreg_OpenHKPT orig;
7453 : struct winreg_OpenHKPT tmp;
7454 : TALLOC_CTX *out_mem_ctx;
7455 : };
7456 :
7457 : static void dcerpc_winreg_OpenHKPT_done(struct tevent_req *subreq);
7458 :
7459 0 : struct tevent_req *dcerpc_winreg_OpenHKPT_send(TALLOC_CTX *mem_ctx,
7460 : struct tevent_context *ev,
7461 : struct dcerpc_binding_handle *h,
7462 : uint16_t *_system_name /* [in] [unique] */,
7463 : uint32_t _access_mask /* [in] */,
7464 : struct policy_handle *_handle /* [out] [ref] */)
7465 : {
7466 0 : struct tevent_req *req;
7467 0 : struct dcerpc_winreg_OpenHKPT_state *state;
7468 0 : struct tevent_req *subreq;
7469 :
7470 0 : req = tevent_req_create(mem_ctx, &state,
7471 : struct dcerpc_winreg_OpenHKPT_state);
7472 0 : if (req == NULL) {
7473 0 : return NULL;
7474 : }
7475 0 : state->out_mem_ctx = NULL;
7476 :
7477 : /* In parameters */
7478 0 : state->orig.in.system_name = _system_name;
7479 0 : state->orig.in.access_mask = _access_mask;
7480 :
7481 : /* Out parameters */
7482 0 : state->orig.out.handle = _handle;
7483 :
7484 : /* Result */
7485 0 : NDR_ZERO_STRUCT(state->orig.out.result);
7486 :
7487 0 : state->out_mem_ctx = talloc_named_const(state, 0,
7488 : "dcerpc_winreg_OpenHKPT_out_memory");
7489 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
7490 0 : return tevent_req_post(req, ev);
7491 : }
7492 :
7493 : /* make a temporary copy, that we pass to the dispatch function */
7494 0 : state->tmp = state->orig;
7495 :
7496 0 : subreq = dcerpc_winreg_OpenHKPT_r_send(state, ev, h, &state->tmp);
7497 0 : if (tevent_req_nomem(subreq, req)) {
7498 0 : return tevent_req_post(req, ev);
7499 : }
7500 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKPT_done, req);
7501 0 : return req;
7502 : }
7503 :
7504 0 : static void dcerpc_winreg_OpenHKPT_done(struct tevent_req *subreq)
7505 : {
7506 0 : struct tevent_req *req = tevent_req_callback_data(
7507 : subreq, struct tevent_req);
7508 0 : struct dcerpc_winreg_OpenHKPT_state *state = tevent_req_data(
7509 : req, struct dcerpc_winreg_OpenHKPT_state);
7510 0 : NTSTATUS status;
7511 0 : TALLOC_CTX *mem_ctx;
7512 :
7513 0 : if (state->out_mem_ctx) {
7514 0 : mem_ctx = state->out_mem_ctx;
7515 : } else {
7516 0 : mem_ctx = state;
7517 : }
7518 :
7519 0 : status = dcerpc_winreg_OpenHKPT_r_recv(subreq, mem_ctx);
7520 0 : TALLOC_FREE(subreq);
7521 0 : if (tevent_req_nterror(req, status)) {
7522 0 : return;
7523 : }
7524 :
7525 : /* Copy out parameters */
7526 0 : *state->orig.out.handle = *state->tmp.out.handle;
7527 :
7528 : /* Copy result */
7529 0 : state->orig.out.result = state->tmp.out.result;
7530 :
7531 : /* Reset temporary structure */
7532 0 : NDR_ZERO_STRUCT(state->tmp);
7533 :
7534 0 : tevent_req_done(req);
7535 : }
7536 :
7537 0 : NTSTATUS dcerpc_winreg_OpenHKPT_recv(struct tevent_req *req,
7538 : TALLOC_CTX *mem_ctx,
7539 : WERROR *result)
7540 : {
7541 0 : struct dcerpc_winreg_OpenHKPT_state *state = tevent_req_data(
7542 : req, struct dcerpc_winreg_OpenHKPT_state);
7543 0 : NTSTATUS status;
7544 :
7545 0 : if (tevent_req_is_nterror(req, &status)) {
7546 0 : tevent_req_received(req);
7547 0 : return status;
7548 : }
7549 :
7550 : /* Steal possible out parameters to the callers context */
7551 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
7552 :
7553 : /* Return result */
7554 0 : *result = state->orig.out.result;
7555 :
7556 0 : tevent_req_received(req);
7557 0 : return NT_STATUS_OK;
7558 : }
7559 :
7560 0 : NTSTATUS dcerpc_winreg_OpenHKPT(struct dcerpc_binding_handle *h,
7561 : TALLOC_CTX *mem_ctx,
7562 : uint16_t *_system_name /* [in] [unique] */,
7563 : uint32_t _access_mask /* [in] */,
7564 : struct policy_handle *_handle /* [out] [ref] */,
7565 : WERROR *result)
7566 : {
7567 0 : struct winreg_OpenHKPT r;
7568 0 : NTSTATUS status;
7569 :
7570 : /* In parameters */
7571 0 : r.in.system_name = _system_name;
7572 0 : r.in.access_mask = _access_mask;
7573 :
7574 : /* Out parameters */
7575 0 : r.out.handle = _handle;
7576 :
7577 : /* Result */
7578 0 : NDR_ZERO_STRUCT(r.out.result);
7579 :
7580 0 : status = dcerpc_winreg_OpenHKPT_r(h, mem_ctx, &r);
7581 0 : if (!NT_STATUS_IS_OK(status)) {
7582 0 : return status;
7583 : }
7584 :
7585 : /* Return variables */
7586 0 : *_handle = *r.out.handle;
7587 :
7588 : /* Return result */
7589 0 : *result = r.out.result;
7590 :
7591 0 : return NT_STATUS_OK;
7592 : }
7593 :
7594 : struct dcerpc_winreg_OpenHKPN_r_state {
7595 : TALLOC_CTX *out_mem_ctx;
7596 : };
7597 :
7598 : static void dcerpc_winreg_OpenHKPN_r_done(struct tevent_req *subreq);
7599 :
7600 0 : struct tevent_req *dcerpc_winreg_OpenHKPN_r_send(TALLOC_CTX *mem_ctx,
7601 : struct tevent_context *ev,
7602 : struct dcerpc_binding_handle *h,
7603 : struct winreg_OpenHKPN *r)
7604 : {
7605 0 : struct tevent_req *req;
7606 0 : struct dcerpc_winreg_OpenHKPN_r_state *state;
7607 0 : struct tevent_req *subreq;
7608 :
7609 0 : req = tevent_req_create(mem_ctx, &state,
7610 : struct dcerpc_winreg_OpenHKPN_r_state);
7611 0 : if (req == NULL) {
7612 0 : return NULL;
7613 : }
7614 :
7615 0 : state->out_mem_ctx = talloc_new(state);
7616 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
7617 0 : return tevent_req_post(req, ev);
7618 : }
7619 :
7620 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
7621 : NULL, &ndr_table_winreg,
7622 0 : NDR_WINREG_OPENHKPN, state->out_mem_ctx, r);
7623 0 : if (tevent_req_nomem(subreq, req)) {
7624 0 : return tevent_req_post(req, ev);
7625 : }
7626 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKPN_r_done, req);
7627 :
7628 0 : return req;
7629 : }
7630 :
7631 0 : static void dcerpc_winreg_OpenHKPN_r_done(struct tevent_req *subreq)
7632 : {
7633 0 : struct tevent_req *req =
7634 0 : tevent_req_callback_data(subreq,
7635 : struct tevent_req);
7636 0 : NTSTATUS status;
7637 :
7638 0 : status = dcerpc_binding_handle_call_recv(subreq);
7639 0 : TALLOC_FREE(subreq);
7640 0 : if (tevent_req_nterror(req, status)) {
7641 0 : return;
7642 : }
7643 :
7644 0 : tevent_req_done(req);
7645 : }
7646 :
7647 0 : NTSTATUS dcerpc_winreg_OpenHKPN_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
7648 : {
7649 0 : struct dcerpc_winreg_OpenHKPN_r_state *state =
7650 0 : tevent_req_data(req,
7651 : struct dcerpc_winreg_OpenHKPN_r_state);
7652 0 : NTSTATUS status;
7653 :
7654 0 : if (tevent_req_is_nterror(req, &status)) {
7655 0 : tevent_req_received(req);
7656 0 : return status;
7657 : }
7658 :
7659 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
7660 :
7661 0 : tevent_req_received(req);
7662 0 : return NT_STATUS_OK;
7663 : }
7664 :
7665 0 : NTSTATUS dcerpc_winreg_OpenHKPN_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_OpenHKPN *r)
7666 : {
7667 0 : NTSTATUS status;
7668 :
7669 0 : status = dcerpc_binding_handle_call(h,
7670 : NULL, &ndr_table_winreg,
7671 : NDR_WINREG_OPENHKPN, mem_ctx, r);
7672 :
7673 0 : return status;
7674 : }
7675 :
7676 : struct dcerpc_winreg_OpenHKPN_state {
7677 : struct winreg_OpenHKPN orig;
7678 : struct winreg_OpenHKPN tmp;
7679 : TALLOC_CTX *out_mem_ctx;
7680 : };
7681 :
7682 : static void dcerpc_winreg_OpenHKPN_done(struct tevent_req *subreq);
7683 :
7684 0 : struct tevent_req *dcerpc_winreg_OpenHKPN_send(TALLOC_CTX *mem_ctx,
7685 : struct tevent_context *ev,
7686 : struct dcerpc_binding_handle *h,
7687 : uint16_t *_system_name /* [in] [unique] */,
7688 : uint32_t _access_mask /* [in] */,
7689 : struct policy_handle *_handle /* [out] [ref] */)
7690 : {
7691 0 : struct tevent_req *req;
7692 0 : struct dcerpc_winreg_OpenHKPN_state *state;
7693 0 : struct tevent_req *subreq;
7694 :
7695 0 : req = tevent_req_create(mem_ctx, &state,
7696 : struct dcerpc_winreg_OpenHKPN_state);
7697 0 : if (req == NULL) {
7698 0 : return NULL;
7699 : }
7700 0 : state->out_mem_ctx = NULL;
7701 :
7702 : /* In parameters */
7703 0 : state->orig.in.system_name = _system_name;
7704 0 : state->orig.in.access_mask = _access_mask;
7705 :
7706 : /* Out parameters */
7707 0 : state->orig.out.handle = _handle;
7708 :
7709 : /* Result */
7710 0 : NDR_ZERO_STRUCT(state->orig.out.result);
7711 :
7712 0 : state->out_mem_ctx = talloc_named_const(state, 0,
7713 : "dcerpc_winreg_OpenHKPN_out_memory");
7714 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
7715 0 : return tevent_req_post(req, ev);
7716 : }
7717 :
7718 : /* make a temporary copy, that we pass to the dispatch function */
7719 0 : state->tmp = state->orig;
7720 :
7721 0 : subreq = dcerpc_winreg_OpenHKPN_r_send(state, ev, h, &state->tmp);
7722 0 : if (tevent_req_nomem(subreq, req)) {
7723 0 : return tevent_req_post(req, ev);
7724 : }
7725 0 : tevent_req_set_callback(subreq, dcerpc_winreg_OpenHKPN_done, req);
7726 0 : return req;
7727 : }
7728 :
7729 0 : static void dcerpc_winreg_OpenHKPN_done(struct tevent_req *subreq)
7730 : {
7731 0 : struct tevent_req *req = tevent_req_callback_data(
7732 : subreq, struct tevent_req);
7733 0 : struct dcerpc_winreg_OpenHKPN_state *state = tevent_req_data(
7734 : req, struct dcerpc_winreg_OpenHKPN_state);
7735 0 : NTSTATUS status;
7736 0 : TALLOC_CTX *mem_ctx;
7737 :
7738 0 : if (state->out_mem_ctx) {
7739 0 : mem_ctx = state->out_mem_ctx;
7740 : } else {
7741 0 : mem_ctx = state;
7742 : }
7743 :
7744 0 : status = dcerpc_winreg_OpenHKPN_r_recv(subreq, mem_ctx);
7745 0 : TALLOC_FREE(subreq);
7746 0 : if (tevent_req_nterror(req, status)) {
7747 0 : return;
7748 : }
7749 :
7750 : /* Copy out parameters */
7751 0 : *state->orig.out.handle = *state->tmp.out.handle;
7752 :
7753 : /* Copy result */
7754 0 : state->orig.out.result = state->tmp.out.result;
7755 :
7756 : /* Reset temporary structure */
7757 0 : NDR_ZERO_STRUCT(state->tmp);
7758 :
7759 0 : tevent_req_done(req);
7760 : }
7761 :
7762 0 : NTSTATUS dcerpc_winreg_OpenHKPN_recv(struct tevent_req *req,
7763 : TALLOC_CTX *mem_ctx,
7764 : WERROR *result)
7765 : {
7766 0 : struct dcerpc_winreg_OpenHKPN_state *state = tevent_req_data(
7767 : req, struct dcerpc_winreg_OpenHKPN_state);
7768 0 : NTSTATUS status;
7769 :
7770 0 : if (tevent_req_is_nterror(req, &status)) {
7771 0 : tevent_req_received(req);
7772 0 : return status;
7773 : }
7774 :
7775 : /* Steal possible out parameters to the callers context */
7776 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
7777 :
7778 : /* Return result */
7779 0 : *result = state->orig.out.result;
7780 :
7781 0 : tevent_req_received(req);
7782 0 : return NT_STATUS_OK;
7783 : }
7784 :
7785 0 : NTSTATUS dcerpc_winreg_OpenHKPN(struct dcerpc_binding_handle *h,
7786 : TALLOC_CTX *mem_ctx,
7787 : uint16_t *_system_name /* [in] [unique] */,
7788 : uint32_t _access_mask /* [in] */,
7789 : struct policy_handle *_handle /* [out] [ref] */,
7790 : WERROR *result)
7791 : {
7792 0 : struct winreg_OpenHKPN r;
7793 0 : NTSTATUS status;
7794 :
7795 : /* In parameters */
7796 0 : r.in.system_name = _system_name;
7797 0 : r.in.access_mask = _access_mask;
7798 :
7799 : /* Out parameters */
7800 0 : r.out.handle = _handle;
7801 :
7802 : /* Result */
7803 0 : NDR_ZERO_STRUCT(r.out.result);
7804 :
7805 0 : status = dcerpc_winreg_OpenHKPN_r(h, mem_ctx, &r);
7806 0 : if (!NT_STATUS_IS_OK(status)) {
7807 0 : return status;
7808 : }
7809 :
7810 : /* Return variables */
7811 0 : *_handle = *r.out.handle;
7812 :
7813 : /* Return result */
7814 0 : *result = r.out.result;
7815 :
7816 0 : return NT_STATUS_OK;
7817 : }
7818 :
7819 : struct dcerpc_winreg_QueryMultipleValues2_r_state {
7820 : TALLOC_CTX *out_mem_ctx;
7821 : };
7822 :
7823 : static void dcerpc_winreg_QueryMultipleValues2_r_done(struct tevent_req *subreq);
7824 :
7825 0 : struct tevent_req *dcerpc_winreg_QueryMultipleValues2_r_send(TALLOC_CTX *mem_ctx,
7826 : struct tevent_context *ev,
7827 : struct dcerpc_binding_handle *h,
7828 : struct winreg_QueryMultipleValues2 *r)
7829 : {
7830 0 : struct tevent_req *req;
7831 0 : struct dcerpc_winreg_QueryMultipleValues2_r_state *state;
7832 0 : struct tevent_req *subreq;
7833 :
7834 0 : req = tevent_req_create(mem_ctx, &state,
7835 : struct dcerpc_winreg_QueryMultipleValues2_r_state);
7836 0 : if (req == NULL) {
7837 0 : return NULL;
7838 : }
7839 :
7840 0 : state->out_mem_ctx = talloc_new(state);
7841 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
7842 0 : return tevent_req_post(req, ev);
7843 : }
7844 :
7845 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
7846 : NULL, &ndr_table_winreg,
7847 0 : NDR_WINREG_QUERYMULTIPLEVALUES2, state->out_mem_ctx, r);
7848 0 : if (tevent_req_nomem(subreq, req)) {
7849 0 : return tevent_req_post(req, ev);
7850 : }
7851 0 : tevent_req_set_callback(subreq, dcerpc_winreg_QueryMultipleValues2_r_done, req);
7852 :
7853 0 : return req;
7854 : }
7855 :
7856 0 : static void dcerpc_winreg_QueryMultipleValues2_r_done(struct tevent_req *subreq)
7857 : {
7858 0 : struct tevent_req *req =
7859 0 : tevent_req_callback_data(subreq,
7860 : struct tevent_req);
7861 0 : NTSTATUS status;
7862 :
7863 0 : status = dcerpc_binding_handle_call_recv(subreq);
7864 0 : TALLOC_FREE(subreq);
7865 0 : if (tevent_req_nterror(req, status)) {
7866 0 : return;
7867 : }
7868 :
7869 0 : tevent_req_done(req);
7870 : }
7871 :
7872 0 : NTSTATUS dcerpc_winreg_QueryMultipleValues2_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
7873 : {
7874 0 : struct dcerpc_winreg_QueryMultipleValues2_r_state *state =
7875 0 : tevent_req_data(req,
7876 : struct dcerpc_winreg_QueryMultipleValues2_r_state);
7877 0 : NTSTATUS status;
7878 :
7879 0 : if (tevent_req_is_nterror(req, &status)) {
7880 0 : tevent_req_received(req);
7881 0 : return status;
7882 : }
7883 :
7884 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
7885 :
7886 0 : tevent_req_received(req);
7887 0 : return NT_STATUS_OK;
7888 : }
7889 :
7890 88 : NTSTATUS dcerpc_winreg_QueryMultipleValues2_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_QueryMultipleValues2 *r)
7891 : {
7892 0 : NTSTATUS status;
7893 :
7894 88 : status = dcerpc_binding_handle_call(h,
7895 : NULL, &ndr_table_winreg,
7896 : NDR_WINREG_QUERYMULTIPLEVALUES2, mem_ctx, r);
7897 :
7898 88 : return status;
7899 : }
7900 :
7901 : struct dcerpc_winreg_QueryMultipleValues2_state {
7902 : struct winreg_QueryMultipleValues2 orig;
7903 : struct winreg_QueryMultipleValues2 tmp;
7904 : TALLOC_CTX *out_mem_ctx;
7905 : };
7906 :
7907 : static void dcerpc_winreg_QueryMultipleValues2_done(struct tevent_req *subreq);
7908 :
7909 0 : struct tevent_req *dcerpc_winreg_QueryMultipleValues2_send(TALLOC_CTX *mem_ctx,
7910 : struct tevent_context *ev,
7911 : struct dcerpc_binding_handle *h,
7912 : struct policy_handle *_key_handle /* [in] [ref] */,
7913 : struct QueryMultipleValue *_values_in /* [in] [length_is(num_values),ref,size_is(num_values)] */,
7914 : struct QueryMultipleValue *_values_out /* [out] [length_is(num_values),ref,size_is(num_values)] */,
7915 : uint32_t _num_values /* [in] */,
7916 : uint8_t *_buffer /* [in,out] [length_is(*offered),size_is(*offered),unique] */,
7917 : uint32_t *_offered /* [in] [ref] */,
7918 : uint32_t *_needed /* [out] [ref] */)
7919 : {
7920 0 : struct tevent_req *req;
7921 0 : struct dcerpc_winreg_QueryMultipleValues2_state *state;
7922 0 : struct tevent_req *subreq;
7923 :
7924 0 : req = tevent_req_create(mem_ctx, &state,
7925 : struct dcerpc_winreg_QueryMultipleValues2_state);
7926 0 : if (req == NULL) {
7927 0 : return NULL;
7928 : }
7929 0 : state->out_mem_ctx = NULL;
7930 :
7931 : /* In parameters */
7932 0 : state->orig.in.key_handle = _key_handle;
7933 0 : state->orig.in.values_in = _values_in;
7934 0 : state->orig.in.num_values = _num_values;
7935 0 : state->orig.in.buffer = _buffer;
7936 0 : state->orig.in.offered = _offered;
7937 :
7938 : /* Out parameters */
7939 0 : state->orig.out.values_out = _values_out;
7940 0 : state->orig.out.buffer = _buffer;
7941 0 : state->orig.out.needed = _needed;
7942 :
7943 : /* Result */
7944 0 : NDR_ZERO_STRUCT(state->orig.out.result);
7945 :
7946 0 : state->out_mem_ctx = talloc_named_const(state, 0,
7947 : "dcerpc_winreg_QueryMultipleValues2_out_memory");
7948 0 : if (tevent_req_nomem(state->out_mem_ctx, req)) {
7949 0 : return tevent_req_post(req, ev);
7950 : }
7951 :
7952 : /* make a temporary copy, that we pass to the dispatch function */
7953 0 : state->tmp = state->orig;
7954 :
7955 0 : subreq = dcerpc_winreg_QueryMultipleValues2_r_send(state, ev, h, &state->tmp);
7956 0 : if (tevent_req_nomem(subreq, req)) {
7957 0 : return tevent_req_post(req, ev);
7958 : }
7959 0 : tevent_req_set_callback(subreq, dcerpc_winreg_QueryMultipleValues2_done, req);
7960 0 : return req;
7961 : }
7962 :
7963 0 : static void dcerpc_winreg_QueryMultipleValues2_done(struct tevent_req *subreq)
7964 : {
7965 0 : struct tevent_req *req = tevent_req_callback_data(
7966 : subreq, struct tevent_req);
7967 0 : struct dcerpc_winreg_QueryMultipleValues2_state *state = tevent_req_data(
7968 : req, struct dcerpc_winreg_QueryMultipleValues2_state);
7969 0 : NTSTATUS status;
7970 0 : TALLOC_CTX *mem_ctx;
7971 :
7972 0 : if (state->out_mem_ctx) {
7973 0 : mem_ctx = state->out_mem_ctx;
7974 : } else {
7975 0 : mem_ctx = state;
7976 : }
7977 :
7978 0 : status = dcerpc_winreg_QueryMultipleValues2_r_recv(subreq, mem_ctx);
7979 0 : TALLOC_FREE(subreq);
7980 0 : if (tevent_req_nterror(req, status)) {
7981 0 : return;
7982 : }
7983 :
7984 : /* Copy out parameters */
7985 : {
7986 0 : size_t _copy_len_values_out;
7987 0 : _copy_len_values_out = state->tmp.in.num_values;
7988 0 : if (state->orig.out.values_out != state->tmp.out.values_out) {
7989 0 : memcpy(state->orig.out.values_out, state->tmp.out.values_out, _copy_len_values_out * sizeof(*state->orig.out.values_out));
7990 : }
7991 : }
7992 0 : if (state->orig.out.buffer && state->tmp.out.buffer) {
7993 : {
7994 0 : size_t _copy_len_buffer;
7995 0 : _copy_len_buffer = *state->tmp.in.offered;
7996 0 : if (state->orig.out.buffer != state->tmp.out.buffer) {
7997 0 : memcpy(state->orig.out.buffer, state->tmp.out.buffer, _copy_len_buffer * sizeof(*state->orig.out.buffer));
7998 : }
7999 : }
8000 : }
8001 0 : *state->orig.out.needed = *state->tmp.out.needed;
8002 :
8003 : /* Copy result */
8004 0 : state->orig.out.result = state->tmp.out.result;
8005 :
8006 : /* Reset temporary structure */
8007 0 : NDR_ZERO_STRUCT(state->tmp);
8008 :
8009 0 : tevent_req_done(req);
8010 : }
8011 :
8012 0 : NTSTATUS dcerpc_winreg_QueryMultipleValues2_recv(struct tevent_req *req,
8013 : TALLOC_CTX *mem_ctx,
8014 : WERROR *result)
8015 : {
8016 0 : struct dcerpc_winreg_QueryMultipleValues2_state *state = tevent_req_data(
8017 : req, struct dcerpc_winreg_QueryMultipleValues2_state);
8018 0 : NTSTATUS status;
8019 :
8020 0 : if (tevent_req_is_nterror(req, &status)) {
8021 0 : tevent_req_received(req);
8022 0 : return status;
8023 : }
8024 :
8025 : /* Steal possible out parameters to the callers context */
8026 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
8027 :
8028 : /* Return result */
8029 0 : *result = state->orig.out.result;
8030 :
8031 0 : tevent_req_received(req);
8032 0 : return NT_STATUS_OK;
8033 : }
8034 :
8035 0 : NTSTATUS dcerpc_winreg_QueryMultipleValues2(struct dcerpc_binding_handle *h,
8036 : TALLOC_CTX *mem_ctx,
8037 : struct policy_handle *_key_handle /* [in] [ref] */,
8038 : struct QueryMultipleValue *_values_in /* [in] [length_is(num_values),ref,size_is(num_values)] */,
8039 : struct QueryMultipleValue *_values_out /* [out] [length_is(num_values),ref,size_is(num_values)] */,
8040 : uint32_t _num_values /* [in] */,
8041 : uint8_t *_buffer /* [in,out] [length_is(*offered),size_is(*offered),unique] */,
8042 : uint32_t *_offered /* [in] [ref] */,
8043 : uint32_t *_needed /* [out] [ref] */,
8044 : WERROR *result)
8045 : {
8046 0 : struct winreg_QueryMultipleValues2 r;
8047 0 : NTSTATUS status;
8048 :
8049 : /* In parameters */
8050 0 : r.in.key_handle = _key_handle;
8051 0 : r.in.values_in = _values_in;
8052 0 : r.in.num_values = _num_values;
8053 0 : r.in.buffer = _buffer;
8054 0 : r.in.offered = _offered;
8055 :
8056 : /* Out parameters */
8057 0 : r.out.values_out = _values_out;
8058 0 : r.out.buffer = _buffer;
8059 0 : r.out.needed = _needed;
8060 :
8061 : /* Result */
8062 0 : NDR_ZERO_STRUCT(r.out.result);
8063 :
8064 0 : status = dcerpc_winreg_QueryMultipleValues2_r(h, mem_ctx, &r);
8065 0 : if (!NT_STATUS_IS_OK(status)) {
8066 0 : return status;
8067 : }
8068 :
8069 : /* Return variables */
8070 : {
8071 0 : size_t _copy_len_values_out;
8072 0 : _copy_len_values_out = r.in.num_values;
8073 0 : if (_values_out != r.out.values_out) {
8074 0 : memcpy(_values_out, r.out.values_out, _copy_len_values_out * sizeof(*_values_out));
8075 : }
8076 : }
8077 0 : if (_buffer && r.out.buffer) {
8078 : {
8079 0 : size_t _copy_len_buffer;
8080 0 : _copy_len_buffer = *r.in.offered;
8081 0 : if (_buffer != r.out.buffer) {
8082 0 : memcpy(_buffer, r.out.buffer, _copy_len_buffer * sizeof(*_buffer));
8083 : }
8084 : }
8085 : }
8086 0 : *_needed = *r.out.needed;
8087 :
8088 : /* Return result */
8089 0 : *result = r.out.result;
8090 :
8091 0 : return NT_STATUS_OK;
8092 : }
8093 :
8094 : struct dcerpc_winreg_DeleteKeyEx_r_state {
8095 : TALLOC_CTX *out_mem_ctx;
8096 : };
8097 :
8098 : static void dcerpc_winreg_DeleteKeyEx_r_done(struct tevent_req *subreq);
8099 :
8100 0 : struct tevent_req *dcerpc_winreg_DeleteKeyEx_r_send(TALLOC_CTX *mem_ctx,
8101 : struct tevent_context *ev,
8102 : struct dcerpc_binding_handle *h,
8103 : struct winreg_DeleteKeyEx *r)
8104 : {
8105 0 : struct tevent_req *req;
8106 0 : struct dcerpc_winreg_DeleteKeyEx_r_state *state;
8107 0 : struct tevent_req *subreq;
8108 :
8109 0 : req = tevent_req_create(mem_ctx, &state,
8110 : struct dcerpc_winreg_DeleteKeyEx_r_state);
8111 0 : if (req == NULL) {
8112 0 : return NULL;
8113 : }
8114 :
8115 0 : state->out_mem_ctx = NULL;
8116 :
8117 0 : subreq = dcerpc_binding_handle_call_send(state, ev, h,
8118 : NULL, &ndr_table_winreg,
8119 : NDR_WINREG_DELETEKEYEX, state, r);
8120 0 : if (tevent_req_nomem(subreq, req)) {
8121 0 : return tevent_req_post(req, ev);
8122 : }
8123 0 : tevent_req_set_callback(subreq, dcerpc_winreg_DeleteKeyEx_r_done, req);
8124 :
8125 0 : return req;
8126 : }
8127 :
8128 0 : static void dcerpc_winreg_DeleteKeyEx_r_done(struct tevent_req *subreq)
8129 : {
8130 0 : struct tevent_req *req =
8131 0 : tevent_req_callback_data(subreq,
8132 : struct tevent_req);
8133 0 : NTSTATUS status;
8134 :
8135 0 : status = dcerpc_binding_handle_call_recv(subreq);
8136 0 : TALLOC_FREE(subreq);
8137 0 : if (tevent_req_nterror(req, status)) {
8138 0 : return;
8139 : }
8140 :
8141 0 : tevent_req_done(req);
8142 : }
8143 :
8144 0 : NTSTATUS dcerpc_winreg_DeleteKeyEx_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
8145 : {
8146 0 : struct dcerpc_winreg_DeleteKeyEx_r_state *state =
8147 0 : tevent_req_data(req,
8148 : struct dcerpc_winreg_DeleteKeyEx_r_state);
8149 0 : NTSTATUS status;
8150 :
8151 0 : if (tevent_req_is_nterror(req, &status)) {
8152 0 : tevent_req_received(req);
8153 0 : return status;
8154 : }
8155 :
8156 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
8157 :
8158 0 : tevent_req_received(req);
8159 0 : return NT_STATUS_OK;
8160 : }
8161 :
8162 0 : NTSTATUS dcerpc_winreg_DeleteKeyEx_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct winreg_DeleteKeyEx *r)
8163 : {
8164 0 : NTSTATUS status;
8165 :
8166 0 : status = dcerpc_binding_handle_call(h,
8167 : NULL, &ndr_table_winreg,
8168 : NDR_WINREG_DELETEKEYEX, mem_ctx, r);
8169 :
8170 0 : return status;
8171 : }
8172 :
8173 : struct dcerpc_winreg_DeleteKeyEx_state {
8174 : struct winreg_DeleteKeyEx orig;
8175 : struct winreg_DeleteKeyEx tmp;
8176 : TALLOC_CTX *out_mem_ctx;
8177 : };
8178 :
8179 : static void dcerpc_winreg_DeleteKeyEx_done(struct tevent_req *subreq);
8180 :
8181 0 : struct tevent_req *dcerpc_winreg_DeleteKeyEx_send(TALLOC_CTX *mem_ctx,
8182 : struct tevent_context *ev,
8183 : struct dcerpc_binding_handle *h,
8184 : struct policy_handle *_handle /* [in] [ref] */,
8185 : struct winreg_String *_key /* [in] [ref] */,
8186 : uint32_t _access_mask /* [in] */,
8187 : uint32_t _reserved /* [in] */)
8188 : {
8189 0 : struct tevent_req *req;
8190 0 : struct dcerpc_winreg_DeleteKeyEx_state *state;
8191 0 : struct tevent_req *subreq;
8192 :
8193 0 : req = tevent_req_create(mem_ctx, &state,
8194 : struct dcerpc_winreg_DeleteKeyEx_state);
8195 0 : if (req == NULL) {
8196 0 : return NULL;
8197 : }
8198 0 : state->out_mem_ctx = NULL;
8199 :
8200 : /* In parameters */
8201 0 : state->orig.in.handle = _handle;
8202 0 : state->orig.in.key = _key;
8203 0 : state->orig.in.access_mask = _access_mask;
8204 0 : state->orig.in.reserved = _reserved;
8205 :
8206 : /* Out parameters */
8207 :
8208 : /* Result */
8209 0 : NDR_ZERO_STRUCT(state->orig.out.result);
8210 :
8211 : /* make a temporary copy, that we pass to the dispatch function */
8212 0 : state->tmp = state->orig;
8213 :
8214 0 : subreq = dcerpc_winreg_DeleteKeyEx_r_send(state, ev, h, &state->tmp);
8215 0 : if (tevent_req_nomem(subreq, req)) {
8216 0 : return tevent_req_post(req, ev);
8217 : }
8218 0 : tevent_req_set_callback(subreq, dcerpc_winreg_DeleteKeyEx_done, req);
8219 0 : return req;
8220 : }
8221 :
8222 0 : static void dcerpc_winreg_DeleteKeyEx_done(struct tevent_req *subreq)
8223 : {
8224 0 : struct tevent_req *req = tevent_req_callback_data(
8225 : subreq, struct tevent_req);
8226 0 : struct dcerpc_winreg_DeleteKeyEx_state *state = tevent_req_data(
8227 : req, struct dcerpc_winreg_DeleteKeyEx_state);
8228 0 : NTSTATUS status;
8229 0 : TALLOC_CTX *mem_ctx;
8230 :
8231 0 : if (state->out_mem_ctx) {
8232 0 : mem_ctx = state->out_mem_ctx;
8233 : } else {
8234 0 : mem_ctx = state;
8235 : }
8236 :
8237 0 : status = dcerpc_winreg_DeleteKeyEx_r_recv(subreq, mem_ctx);
8238 0 : TALLOC_FREE(subreq);
8239 0 : if (tevent_req_nterror(req, status)) {
8240 0 : return;
8241 : }
8242 :
8243 : /* Copy out parameters */
8244 :
8245 : /* Copy result */
8246 0 : state->orig.out.result = state->tmp.out.result;
8247 :
8248 : /* Reset temporary structure */
8249 0 : NDR_ZERO_STRUCT(state->tmp);
8250 :
8251 0 : tevent_req_done(req);
8252 : }
8253 :
8254 0 : NTSTATUS dcerpc_winreg_DeleteKeyEx_recv(struct tevent_req *req,
8255 : TALLOC_CTX *mem_ctx,
8256 : WERROR *result)
8257 : {
8258 0 : struct dcerpc_winreg_DeleteKeyEx_state *state = tevent_req_data(
8259 : req, struct dcerpc_winreg_DeleteKeyEx_state);
8260 0 : NTSTATUS status;
8261 :
8262 0 : if (tevent_req_is_nterror(req, &status)) {
8263 0 : tevent_req_received(req);
8264 0 : return status;
8265 : }
8266 :
8267 : /* Steal possible out parameters to the callers context */
8268 0 : talloc_steal(mem_ctx, state->out_mem_ctx);
8269 :
8270 : /* Return result */
8271 0 : *result = state->orig.out.result;
8272 :
8273 0 : tevent_req_received(req);
8274 0 : return NT_STATUS_OK;
8275 : }
8276 :
8277 0 : NTSTATUS dcerpc_winreg_DeleteKeyEx(struct dcerpc_binding_handle *h,
8278 : TALLOC_CTX *mem_ctx,
8279 : struct policy_handle *_handle /* [in] [ref] */,
8280 : struct winreg_String *_key /* [in] [ref] */,
8281 : uint32_t _access_mask /* [in] */,
8282 : uint32_t _reserved /* [in] */,
8283 : WERROR *result)
8284 : {
8285 0 : struct winreg_DeleteKeyEx r;
8286 0 : NTSTATUS status;
8287 :
8288 : /* In parameters */
8289 0 : r.in.handle = _handle;
8290 0 : r.in.key = _key;
8291 0 : r.in.access_mask = _access_mask;
8292 0 : r.in.reserved = _reserved;
8293 :
8294 : /* Out parameters */
8295 :
8296 : /* Result */
8297 0 : NDR_ZERO_STRUCT(r.out.result);
8298 :
8299 0 : status = dcerpc_winreg_DeleteKeyEx_r(h, mem_ctx, &r);
8300 0 : if (!NT_STATUS_IS_OK(status)) {
8301 0 : return status;
8302 : }
8303 :
8304 : /* Return variables */
8305 :
8306 : /* Return result */
8307 0 : *result = r.out.result;
8308 :
8309 0 : return NT_STATUS_OK;
8310 : }
8311 :
|