2 * Unix SMB/CIFS implementation.
3 * server auto-generated by pidl. DO NOT MODIFY!
7 #include "librpc/gen_ndr/srv_winreg.h"
9 static BOOL api_winreg_OpenHKCR(pipes_struct *p)
11 struct ndr_pull *pull;
12 struct ndr_push *push;
15 struct winreg_OpenHKCR r;
16 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKCR");
18 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
23 pull = ndr_pull_init_blob(&blob, mem_ctx);
27 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
28 status = ndr_pull_winreg_OpenHKCR(pull, NDR_IN, &r);
29 if (NT_STATUS_IS_ERR(status)) {
35 NDR_PRINT_IN_DEBUG(winreg_OpenHKCR, &r);
38 r.out.handle = talloc_zero_size(mem_ctx, sizeof(*r.out.handle));
39 if (r.out.handle == NULL) {
44 r.out.result = _winreg_OpenHKCR(p, r.in.system_name, r.in.access_mask, r.out.handle);
47 NDR_PRINT_OUT_DEBUG(winreg_OpenHKCR, &r);
49 push = ndr_push_init_ctx(mem_ctx);
55 status = ndr_push_winreg_OpenHKCR(push, NDR_OUT, &r);
56 if (NT_STATUS_IS_ERR(status)) {
61 blob = ndr_push_blob(push);
62 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
72 static BOOL api_winreg_OpenHKCU(pipes_struct *p)
74 struct ndr_pull *pull;
75 struct ndr_push *push;
78 struct winreg_OpenHKCU r;
79 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKCU");
81 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
86 pull = ndr_pull_init_blob(&blob, mem_ctx);
90 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
91 status = ndr_pull_winreg_OpenHKCU(pull, NDR_IN, &r);
92 if (NT_STATUS_IS_ERR(status)) {
98 NDR_PRINT_IN_DEBUG(winreg_OpenHKCU, &r);
101 r.out.handle = talloc_zero_size(mem_ctx, sizeof(*r.out.handle));
102 if (r.out.handle == NULL) {
103 talloc_free(mem_ctx);
107 r.out.result = _winreg_OpenHKCU(p, r.in.system_name, r.in.access_mask, r.out.handle);
109 if (DEBUGLEVEL >= 10)
110 NDR_PRINT_OUT_DEBUG(winreg_OpenHKCU, &r);
112 push = ndr_push_init_ctx(mem_ctx);
114 talloc_free(mem_ctx);
118 status = ndr_push_winreg_OpenHKCU(push, NDR_OUT, &r);
119 if (NT_STATUS_IS_ERR(status)) {
120 talloc_free(mem_ctx);
124 blob = ndr_push_blob(push);
125 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
126 talloc_free(mem_ctx);
130 talloc_free(mem_ctx);
135 static BOOL api_winreg_OpenHKLM(pipes_struct *p)
137 struct ndr_pull *pull;
138 struct ndr_push *push;
141 struct winreg_OpenHKLM r;
142 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKLM");
144 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
145 talloc_free(mem_ctx);
149 pull = ndr_pull_init_blob(&blob, mem_ctx);
153 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
154 status = ndr_pull_winreg_OpenHKLM(pull, NDR_IN, &r);
155 if (NT_STATUS_IS_ERR(status)) {
156 talloc_free(mem_ctx);
160 if (DEBUGLEVEL >= 10)
161 NDR_PRINT_IN_DEBUG(winreg_OpenHKLM, &r);
164 r.out.handle = talloc_zero_size(mem_ctx, sizeof(*r.out.handle));
165 if (r.out.handle == NULL) {
166 talloc_free(mem_ctx);
170 r.out.result = _winreg_OpenHKLM(p, r.in.system_name, r.in.access_mask, r.out.handle);
172 if (DEBUGLEVEL >= 10)
173 NDR_PRINT_OUT_DEBUG(winreg_OpenHKLM, &r);
175 push = ndr_push_init_ctx(mem_ctx);
177 talloc_free(mem_ctx);
181 status = ndr_push_winreg_OpenHKLM(push, NDR_OUT, &r);
182 if (NT_STATUS_IS_ERR(status)) {
183 talloc_free(mem_ctx);
187 blob = ndr_push_blob(push);
188 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
189 talloc_free(mem_ctx);
193 talloc_free(mem_ctx);
198 static BOOL api_winreg_OpenHKPD(pipes_struct *p)
200 struct ndr_pull *pull;
201 struct ndr_push *push;
204 struct winreg_OpenHKPD r;
205 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKPD");
207 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
208 talloc_free(mem_ctx);
212 pull = ndr_pull_init_blob(&blob, mem_ctx);
216 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
217 status = ndr_pull_winreg_OpenHKPD(pull, NDR_IN, &r);
218 if (NT_STATUS_IS_ERR(status)) {
219 talloc_free(mem_ctx);
223 if (DEBUGLEVEL >= 10)
224 NDR_PRINT_IN_DEBUG(winreg_OpenHKPD, &r);
227 r.out.handle = talloc_zero_size(mem_ctx, sizeof(*r.out.handle));
228 if (r.out.handle == NULL) {
229 talloc_free(mem_ctx);
233 r.out.result = _winreg_OpenHKPD(p, r.in.system_name, r.in.access_mask, r.out.handle);
235 if (DEBUGLEVEL >= 10)
236 NDR_PRINT_OUT_DEBUG(winreg_OpenHKPD, &r);
238 push = ndr_push_init_ctx(mem_ctx);
240 talloc_free(mem_ctx);
244 status = ndr_push_winreg_OpenHKPD(push, NDR_OUT, &r);
245 if (NT_STATUS_IS_ERR(status)) {
246 talloc_free(mem_ctx);
250 blob = ndr_push_blob(push);
251 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
252 talloc_free(mem_ctx);
256 talloc_free(mem_ctx);
261 static BOOL api_winreg_OpenHKU(pipes_struct *p)
263 struct ndr_pull *pull;
264 struct ndr_push *push;
267 struct winreg_OpenHKU r;
268 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKU");
270 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
271 talloc_free(mem_ctx);
275 pull = ndr_pull_init_blob(&blob, mem_ctx);
279 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
280 status = ndr_pull_winreg_OpenHKU(pull, NDR_IN, &r);
281 if (NT_STATUS_IS_ERR(status)) {
282 talloc_free(mem_ctx);
286 if (DEBUGLEVEL >= 10)
287 NDR_PRINT_IN_DEBUG(winreg_OpenHKU, &r);
290 r.out.handle = talloc_zero_size(mem_ctx, sizeof(*r.out.handle));
291 if (r.out.handle == NULL) {
292 talloc_free(mem_ctx);
296 r.out.result = _winreg_OpenHKU(p, r.in.system_name, r.in.access_mask, r.out.handle);
298 if (DEBUGLEVEL >= 10)
299 NDR_PRINT_OUT_DEBUG(winreg_OpenHKU, &r);
301 push = ndr_push_init_ctx(mem_ctx);
303 talloc_free(mem_ctx);
307 status = ndr_push_winreg_OpenHKU(push, NDR_OUT, &r);
308 if (NT_STATUS_IS_ERR(status)) {
309 talloc_free(mem_ctx);
313 blob = ndr_push_blob(push);
314 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
315 talloc_free(mem_ctx);
319 talloc_free(mem_ctx);
324 static BOOL api_winreg_CloseKey(pipes_struct *p)
326 struct ndr_pull *pull;
327 struct ndr_push *push;
330 struct winreg_CloseKey r;
331 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_CloseKey");
333 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
334 talloc_free(mem_ctx);
338 pull = ndr_pull_init_blob(&blob, mem_ctx);
342 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
343 status = ndr_pull_winreg_CloseKey(pull, NDR_IN, &r);
344 if (NT_STATUS_IS_ERR(status)) {
345 talloc_free(mem_ctx);
349 if (DEBUGLEVEL >= 10)
350 NDR_PRINT_IN_DEBUG(winreg_CloseKey, &r);
353 r.out.handle = r.in.handle;
354 r.out.result = _winreg_CloseKey(p, r.in.handle);
356 if (DEBUGLEVEL >= 10)
357 NDR_PRINT_OUT_DEBUG(winreg_CloseKey, &r);
359 push = ndr_push_init_ctx(mem_ctx);
361 talloc_free(mem_ctx);
365 status = ndr_push_winreg_CloseKey(push, NDR_OUT, &r);
366 if (NT_STATUS_IS_ERR(status)) {
367 talloc_free(mem_ctx);
371 blob = ndr_push_blob(push);
372 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
373 talloc_free(mem_ctx);
377 talloc_free(mem_ctx);
382 static BOOL api_winreg_CreateKey(pipes_struct *p)
384 struct ndr_pull *pull;
385 struct ndr_push *push;
388 struct winreg_CreateKey r;
389 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_CreateKey");
391 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
392 talloc_free(mem_ctx);
396 pull = ndr_pull_init_blob(&blob, mem_ctx);
400 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
401 status = ndr_pull_winreg_CreateKey(pull, NDR_IN, &r);
402 if (NT_STATUS_IS_ERR(status)) {
403 talloc_free(mem_ctx);
407 if (DEBUGLEVEL >= 10)
408 NDR_PRINT_IN_DEBUG(winreg_CreateKey, &r);
411 r.out.new_handle = talloc_zero_size(mem_ctx, sizeof(*r.out.new_handle));
412 if (r.out.new_handle == NULL) {
413 talloc_free(mem_ctx);
417 r.out.action_taken = r.in.action_taken;
418 r.out.result = _winreg_CreateKey(p, r.in.handle, r.in.name, r.in.keyclass, r.in.options, r.in.access_mask, r.in.secdesc, r.out.new_handle, r.in.action_taken);
420 if (DEBUGLEVEL >= 10)
421 NDR_PRINT_OUT_DEBUG(winreg_CreateKey, &r);
423 push = ndr_push_init_ctx(mem_ctx);
425 talloc_free(mem_ctx);
429 status = ndr_push_winreg_CreateKey(push, NDR_OUT, &r);
430 if (NT_STATUS_IS_ERR(status)) {
431 talloc_free(mem_ctx);
435 blob = ndr_push_blob(push);
436 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
437 talloc_free(mem_ctx);
441 talloc_free(mem_ctx);
446 static BOOL api_winreg_DeleteKey(pipes_struct *p)
448 struct ndr_pull *pull;
449 struct ndr_push *push;
452 struct winreg_DeleteKey r;
453 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_DeleteKey");
455 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
456 talloc_free(mem_ctx);
460 pull = ndr_pull_init_blob(&blob, mem_ctx);
464 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
465 status = ndr_pull_winreg_DeleteKey(pull, NDR_IN, &r);
466 if (NT_STATUS_IS_ERR(status)) {
467 talloc_free(mem_ctx);
471 if (DEBUGLEVEL >= 10)
472 NDR_PRINT_IN_DEBUG(winreg_DeleteKey, &r);
474 r.out.result = _winreg_DeleteKey(p, r.in.handle, r.in.key);
476 if (DEBUGLEVEL >= 10)
477 NDR_PRINT_OUT_DEBUG(winreg_DeleteKey, &r);
479 push = ndr_push_init_ctx(mem_ctx);
481 talloc_free(mem_ctx);
485 status = ndr_push_winreg_DeleteKey(push, NDR_OUT, &r);
486 if (NT_STATUS_IS_ERR(status)) {
487 talloc_free(mem_ctx);
491 blob = ndr_push_blob(push);
492 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
493 talloc_free(mem_ctx);
497 talloc_free(mem_ctx);
502 static BOOL api_winreg_DeleteValue(pipes_struct *p)
504 struct ndr_pull *pull;
505 struct ndr_push *push;
508 struct winreg_DeleteValue r;
509 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_DeleteValue");
511 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
512 talloc_free(mem_ctx);
516 pull = ndr_pull_init_blob(&blob, mem_ctx);
520 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
521 status = ndr_pull_winreg_DeleteValue(pull, NDR_IN, &r);
522 if (NT_STATUS_IS_ERR(status)) {
523 talloc_free(mem_ctx);
527 if (DEBUGLEVEL >= 10)
528 NDR_PRINT_IN_DEBUG(winreg_DeleteValue, &r);
530 r.out.result = _winreg_DeleteValue(p, r.in.handle, r.in.value);
532 if (DEBUGLEVEL >= 10)
533 NDR_PRINT_OUT_DEBUG(winreg_DeleteValue, &r);
535 push = ndr_push_init_ctx(mem_ctx);
537 talloc_free(mem_ctx);
541 status = ndr_push_winreg_DeleteValue(push, NDR_OUT, &r);
542 if (NT_STATUS_IS_ERR(status)) {
543 talloc_free(mem_ctx);
547 blob = ndr_push_blob(push);
548 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
549 talloc_free(mem_ctx);
553 talloc_free(mem_ctx);
558 static BOOL api_winreg_EnumKey(pipes_struct *p)
560 struct ndr_pull *pull;
561 struct ndr_push *push;
564 struct winreg_EnumKey r;
565 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_EnumKey");
567 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
568 talloc_free(mem_ctx);
572 pull = ndr_pull_init_blob(&blob, mem_ctx);
576 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
577 status = ndr_pull_winreg_EnumKey(pull, NDR_IN, &r);
578 if (NT_STATUS_IS_ERR(status)) {
579 talloc_free(mem_ctx);
583 if (DEBUGLEVEL >= 10)
584 NDR_PRINT_IN_DEBUG(winreg_EnumKey, &r);
587 r.out.name = r.in.name;
588 r.out.keyclass = r.in.keyclass;
589 r.out.last_changed_time = r.in.last_changed_time;
590 r.out.result = _winreg_EnumKey(p, r.in.handle, r.in.enum_index, r.in.name, r.in.keyclass, r.in.last_changed_time);
592 if (DEBUGLEVEL >= 10)
593 NDR_PRINT_OUT_DEBUG(winreg_EnumKey, &r);
595 push = ndr_push_init_ctx(mem_ctx);
597 talloc_free(mem_ctx);
601 status = ndr_push_winreg_EnumKey(push, NDR_OUT, &r);
602 if (NT_STATUS_IS_ERR(status)) {
603 talloc_free(mem_ctx);
607 blob = ndr_push_blob(push);
608 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
609 talloc_free(mem_ctx);
613 talloc_free(mem_ctx);
618 static BOOL api_winreg_EnumValue(pipes_struct *p)
620 struct ndr_pull *pull;
621 struct ndr_push *push;
624 struct winreg_EnumValue r;
625 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_EnumValue");
627 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
628 talloc_free(mem_ctx);
632 pull = ndr_pull_init_blob(&blob, mem_ctx);
636 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
637 status = ndr_pull_winreg_EnumValue(pull, NDR_IN, &r);
638 if (NT_STATUS_IS_ERR(status)) {
639 talloc_free(mem_ctx);
643 if (DEBUGLEVEL >= 10)
644 NDR_PRINT_IN_DEBUG(winreg_EnumValue, &r);
647 r.out.name = r.in.name;
648 r.out.type = r.in.type;
649 r.out.value = r.in.value;
650 r.out.size = r.in.size;
651 r.out.length = r.in.length;
652 r.out.result = _winreg_EnumValue(p, r.in.handle, r.in.enum_index, r.in.name, r.in.type, r.in.value, r.in.size, r.in.length);
654 if (DEBUGLEVEL >= 10)
655 NDR_PRINT_OUT_DEBUG(winreg_EnumValue, &r);
657 push = ndr_push_init_ctx(mem_ctx);
659 talloc_free(mem_ctx);
663 status = ndr_push_winreg_EnumValue(push, NDR_OUT, &r);
664 if (NT_STATUS_IS_ERR(status)) {
665 talloc_free(mem_ctx);
669 blob = ndr_push_blob(push);
670 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
671 talloc_free(mem_ctx);
675 talloc_free(mem_ctx);
680 static BOOL api_winreg_FlushKey(pipes_struct *p)
682 struct ndr_pull *pull;
683 struct ndr_push *push;
686 struct winreg_FlushKey r;
687 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_FlushKey");
689 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
690 talloc_free(mem_ctx);
694 pull = ndr_pull_init_blob(&blob, mem_ctx);
698 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
699 status = ndr_pull_winreg_FlushKey(pull, NDR_IN, &r);
700 if (NT_STATUS_IS_ERR(status)) {
701 talloc_free(mem_ctx);
705 if (DEBUGLEVEL >= 10)
706 NDR_PRINT_IN_DEBUG(winreg_FlushKey, &r);
708 r.out.result = _winreg_FlushKey(p, r.in.handle);
710 if (DEBUGLEVEL >= 10)
711 NDR_PRINT_OUT_DEBUG(winreg_FlushKey, &r);
713 push = ndr_push_init_ctx(mem_ctx);
715 talloc_free(mem_ctx);
719 status = ndr_push_winreg_FlushKey(push, NDR_OUT, &r);
720 if (NT_STATUS_IS_ERR(status)) {
721 talloc_free(mem_ctx);
725 blob = ndr_push_blob(push);
726 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
727 talloc_free(mem_ctx);
731 talloc_free(mem_ctx);
736 static BOOL api_winreg_GetKeySecurity(pipes_struct *p)
738 struct ndr_pull *pull;
739 struct ndr_push *push;
742 struct winreg_GetKeySecurity r;
743 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_GetKeySecurity");
745 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
746 talloc_free(mem_ctx);
750 pull = ndr_pull_init_blob(&blob, mem_ctx);
754 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
755 status = ndr_pull_winreg_GetKeySecurity(pull, NDR_IN, &r);
756 if (NT_STATUS_IS_ERR(status)) {
757 talloc_free(mem_ctx);
761 if (DEBUGLEVEL >= 10)
762 NDR_PRINT_IN_DEBUG(winreg_GetKeySecurity, &r);
766 r.out.result = _winreg_GetKeySecurity(p, r.in.handle, r.in.sec_info, r.in.sd);
768 if (DEBUGLEVEL >= 10)
769 NDR_PRINT_OUT_DEBUG(winreg_GetKeySecurity, &r);
771 push = ndr_push_init_ctx(mem_ctx);
773 talloc_free(mem_ctx);
777 status = ndr_push_winreg_GetKeySecurity(push, NDR_OUT, &r);
778 if (NT_STATUS_IS_ERR(status)) {
779 talloc_free(mem_ctx);
783 blob = ndr_push_blob(push);
784 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
785 talloc_free(mem_ctx);
789 talloc_free(mem_ctx);
794 static BOOL api_winreg_LoadKey(pipes_struct *p)
796 struct ndr_pull *pull;
797 struct ndr_push *push;
800 struct winreg_LoadKey r;
801 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_LoadKey");
803 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
804 talloc_free(mem_ctx);
808 pull = ndr_pull_init_blob(&blob, mem_ctx);
812 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
813 status = ndr_pull_winreg_LoadKey(pull, NDR_IN, &r);
814 if (NT_STATUS_IS_ERR(status)) {
815 talloc_free(mem_ctx);
819 if (DEBUGLEVEL >= 10)
820 NDR_PRINT_IN_DEBUG(winreg_LoadKey, &r);
822 r.out.result = _winreg_LoadKey(p, r.in.handle, r.in.keyname, r.in.filename);
824 if (DEBUGLEVEL >= 10)
825 NDR_PRINT_OUT_DEBUG(winreg_LoadKey, &r);
827 push = ndr_push_init_ctx(mem_ctx);
829 talloc_free(mem_ctx);
833 status = ndr_push_winreg_LoadKey(push, NDR_OUT, &r);
834 if (NT_STATUS_IS_ERR(status)) {
835 talloc_free(mem_ctx);
839 blob = ndr_push_blob(push);
840 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
841 talloc_free(mem_ctx);
845 talloc_free(mem_ctx);
850 static BOOL api_winreg_NotifyChangeKeyValue(pipes_struct *p)
852 struct ndr_pull *pull;
853 struct ndr_push *push;
856 struct winreg_NotifyChangeKeyValue r;
857 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_NotifyChangeKeyValue");
859 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
860 talloc_free(mem_ctx);
864 pull = ndr_pull_init_blob(&blob, mem_ctx);
868 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
869 status = ndr_pull_winreg_NotifyChangeKeyValue(pull, NDR_IN, &r);
870 if (NT_STATUS_IS_ERR(status)) {
871 talloc_free(mem_ctx);
875 if (DEBUGLEVEL >= 10)
876 NDR_PRINT_IN_DEBUG(winreg_NotifyChangeKeyValue, &r);
878 r.out.result = _winreg_NotifyChangeKeyValue(p, r.in.handle, r.in.watch_subtree, r.in.notify_filter, r.in.unknown, r.in.string1, r.in.string2, r.in.unknown2);
880 if (DEBUGLEVEL >= 10)
881 NDR_PRINT_OUT_DEBUG(winreg_NotifyChangeKeyValue, &r);
883 push = ndr_push_init_ctx(mem_ctx);
885 talloc_free(mem_ctx);
889 status = ndr_push_winreg_NotifyChangeKeyValue(push, NDR_OUT, &r);
890 if (NT_STATUS_IS_ERR(status)) {
891 talloc_free(mem_ctx);
895 blob = ndr_push_blob(push);
896 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
897 talloc_free(mem_ctx);
901 talloc_free(mem_ctx);
906 static BOOL api_winreg_OpenKey(pipes_struct *p)
908 struct ndr_pull *pull;
909 struct ndr_push *push;
912 struct winreg_OpenKey r;
913 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenKey");
915 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
916 talloc_free(mem_ctx);
920 pull = ndr_pull_init_blob(&blob, mem_ctx);
924 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
925 status = ndr_pull_winreg_OpenKey(pull, NDR_IN, &r);
926 if (NT_STATUS_IS_ERR(status)) {
927 talloc_free(mem_ctx);
931 if (DEBUGLEVEL >= 10)
932 NDR_PRINT_IN_DEBUG(winreg_OpenKey, &r);
935 r.out.handle = talloc_zero_size(mem_ctx, sizeof(*r.out.handle));
936 if (r.out.handle == NULL) {
937 talloc_free(mem_ctx);
941 r.out.result = _winreg_OpenKey(p, r.in.parent_handle, r.in.keyname, r.in.unknown, r.in.access_mask, r.out.handle);
943 if (DEBUGLEVEL >= 10)
944 NDR_PRINT_OUT_DEBUG(winreg_OpenKey, &r);
946 push = ndr_push_init_ctx(mem_ctx);
948 talloc_free(mem_ctx);
952 status = ndr_push_winreg_OpenKey(push, NDR_OUT, &r);
953 if (NT_STATUS_IS_ERR(status)) {
954 talloc_free(mem_ctx);
958 blob = ndr_push_blob(push);
959 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
960 talloc_free(mem_ctx);
964 talloc_free(mem_ctx);
969 static BOOL api_winreg_QueryInfoKey(pipes_struct *p)
971 struct ndr_pull *pull;
972 struct ndr_push *push;
975 struct winreg_QueryInfoKey r;
976 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_QueryInfoKey");
978 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
979 talloc_free(mem_ctx);
983 pull = ndr_pull_init_blob(&blob, mem_ctx);
987 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
988 status = ndr_pull_winreg_QueryInfoKey(pull, NDR_IN, &r);
989 if (NT_STATUS_IS_ERR(status)) {
990 talloc_free(mem_ctx);
994 if (DEBUGLEVEL >= 10)
995 NDR_PRINT_IN_DEBUG(winreg_QueryInfoKey, &r);
998 r.out.class_out = talloc_zero_size(mem_ctx, sizeof(*r.out.class_out));
999 if (r.out.class_out == NULL) {
1000 talloc_free(mem_ctx);
1004 r.out.num_subkeys = talloc_zero_size(mem_ctx, sizeof(*r.out.num_subkeys));
1005 if (r.out.num_subkeys == NULL) {
1006 talloc_free(mem_ctx);
1010 r.out.max_subkeylen = talloc_zero_size(mem_ctx, sizeof(*r.out.max_subkeylen));
1011 if (r.out.max_subkeylen == NULL) {
1012 talloc_free(mem_ctx);
1016 r.out.max_subkeysize = talloc_zero_size(mem_ctx, sizeof(*r.out.max_subkeysize));
1017 if (r.out.max_subkeysize == NULL) {
1018 talloc_free(mem_ctx);
1022 r.out.num_values = talloc_zero_size(mem_ctx, sizeof(*r.out.num_values));
1023 if (r.out.num_values == NULL) {
1024 talloc_free(mem_ctx);
1028 r.out.max_valnamelen = talloc_zero_size(mem_ctx, sizeof(*r.out.max_valnamelen));
1029 if (r.out.max_valnamelen == NULL) {
1030 talloc_free(mem_ctx);
1034 r.out.max_valbufsize = talloc_zero_size(mem_ctx, sizeof(*r.out.max_valbufsize));
1035 if (r.out.max_valbufsize == NULL) {
1036 talloc_free(mem_ctx);
1040 r.out.secdescsize = talloc_zero_size(mem_ctx, sizeof(*r.out.secdescsize));
1041 if (r.out.secdescsize == NULL) {
1042 talloc_free(mem_ctx);
1046 r.out.last_changed_time = talloc_zero_size(mem_ctx, sizeof(*r.out.last_changed_time));
1047 if (r.out.last_changed_time == NULL) {
1048 talloc_free(mem_ctx);
1052 r.out.result = _winreg_QueryInfoKey(p, r.in.handle, r.in.class_in, r.out.class_out, r.out.num_subkeys, r.out.max_subkeylen, r.out.max_subkeysize, r.out.num_values, r.out.max_valnamelen, r.out.max_valbufsize, r.out.secdescsize, r.out.last_changed_time);
1054 if (DEBUGLEVEL >= 10)
1055 NDR_PRINT_OUT_DEBUG(winreg_QueryInfoKey, &r);
1057 push = ndr_push_init_ctx(mem_ctx);
1059 talloc_free(mem_ctx);
1063 status = ndr_push_winreg_QueryInfoKey(push, NDR_OUT, &r);
1064 if (NT_STATUS_IS_ERR(status)) {
1065 talloc_free(mem_ctx);
1069 blob = ndr_push_blob(push);
1070 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1071 talloc_free(mem_ctx);
1075 talloc_free(mem_ctx);
1080 static BOOL api_winreg_QueryValue(pipes_struct *p)
1082 struct ndr_pull *pull;
1083 struct ndr_push *push;
1086 struct winreg_QueryValue r;
1087 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_QueryValue");
1089 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1090 talloc_free(mem_ctx);
1094 pull = ndr_pull_init_blob(&blob, mem_ctx);
1098 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1099 status = ndr_pull_winreg_QueryValue(pull, NDR_IN, &r);
1100 if (NT_STATUS_IS_ERR(status)) {
1101 talloc_free(mem_ctx);
1105 if (DEBUGLEVEL >= 10)
1106 NDR_PRINT_IN_DEBUG(winreg_QueryValue, &r);
1109 r.out.type = r.in.type;
1110 r.out.data = r.in.data;
1111 r.out.data_size = r.in.data_size;
1112 r.out.value_length = r.in.value_length;
1113 r.out.result = _winreg_QueryValue(p, r.in.handle, r.in.value_name, r.in.type, r.in.data, r.in.data_size, r.in.value_length);
1115 if (DEBUGLEVEL >= 10)
1116 NDR_PRINT_OUT_DEBUG(winreg_QueryValue, &r);
1118 push = ndr_push_init_ctx(mem_ctx);
1120 talloc_free(mem_ctx);
1124 status = ndr_push_winreg_QueryValue(push, NDR_OUT, &r);
1125 if (NT_STATUS_IS_ERR(status)) {
1126 talloc_free(mem_ctx);
1130 blob = ndr_push_blob(push);
1131 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1132 talloc_free(mem_ctx);
1136 talloc_free(mem_ctx);
1141 static BOOL api_winreg_ReplaceKey(pipes_struct *p)
1143 struct ndr_pull *pull;
1144 struct ndr_push *push;
1147 struct winreg_ReplaceKey r;
1148 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_ReplaceKey");
1150 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1151 talloc_free(mem_ctx);
1155 pull = ndr_pull_init_blob(&blob, mem_ctx);
1159 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1160 status = ndr_pull_winreg_ReplaceKey(pull, NDR_IN, &r);
1161 if (NT_STATUS_IS_ERR(status)) {
1162 talloc_free(mem_ctx);
1166 if (DEBUGLEVEL >= 10)
1167 NDR_PRINT_IN_DEBUG(winreg_ReplaceKey, &r);
1169 r.out.result = _winreg_ReplaceKey(p);
1171 if (DEBUGLEVEL >= 10)
1172 NDR_PRINT_OUT_DEBUG(winreg_ReplaceKey, &r);
1174 push = ndr_push_init_ctx(mem_ctx);
1176 talloc_free(mem_ctx);
1180 status = ndr_push_winreg_ReplaceKey(push, NDR_OUT, &r);
1181 if (NT_STATUS_IS_ERR(status)) {
1182 talloc_free(mem_ctx);
1186 blob = ndr_push_blob(push);
1187 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1188 talloc_free(mem_ctx);
1192 talloc_free(mem_ctx);
1197 static BOOL api_winreg_RestoreKey(pipes_struct *p)
1199 struct ndr_pull *pull;
1200 struct ndr_push *push;
1203 struct winreg_RestoreKey r;
1204 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_RestoreKey");
1206 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1207 talloc_free(mem_ctx);
1211 pull = ndr_pull_init_blob(&blob, mem_ctx);
1215 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1216 status = ndr_pull_winreg_RestoreKey(pull, NDR_IN, &r);
1217 if (NT_STATUS_IS_ERR(status)) {
1218 talloc_free(mem_ctx);
1222 if (DEBUGLEVEL >= 10)
1223 NDR_PRINT_IN_DEBUG(winreg_RestoreKey, &r);
1225 r.out.result = _winreg_RestoreKey(p);
1227 if (DEBUGLEVEL >= 10)
1228 NDR_PRINT_OUT_DEBUG(winreg_RestoreKey, &r);
1230 push = ndr_push_init_ctx(mem_ctx);
1232 talloc_free(mem_ctx);
1236 status = ndr_push_winreg_RestoreKey(push, NDR_OUT, &r);
1237 if (NT_STATUS_IS_ERR(status)) {
1238 talloc_free(mem_ctx);
1242 blob = ndr_push_blob(push);
1243 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1244 talloc_free(mem_ctx);
1248 talloc_free(mem_ctx);
1253 static BOOL api_winreg_SaveKey(pipes_struct *p)
1255 struct ndr_pull *pull;
1256 struct ndr_push *push;
1259 struct winreg_SaveKey r;
1260 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_SaveKey");
1262 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1263 talloc_free(mem_ctx);
1267 pull = ndr_pull_init_blob(&blob, mem_ctx);
1271 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1272 status = ndr_pull_winreg_SaveKey(pull, NDR_IN, &r);
1273 if (NT_STATUS_IS_ERR(status)) {
1274 talloc_free(mem_ctx);
1278 if (DEBUGLEVEL >= 10)
1279 NDR_PRINT_IN_DEBUG(winreg_SaveKey, &r);
1281 r.out.result = _winreg_SaveKey(p);
1283 if (DEBUGLEVEL >= 10)
1284 NDR_PRINT_OUT_DEBUG(winreg_SaveKey, &r);
1286 push = ndr_push_init_ctx(mem_ctx);
1288 talloc_free(mem_ctx);
1292 status = ndr_push_winreg_SaveKey(push, NDR_OUT, &r);
1293 if (NT_STATUS_IS_ERR(status)) {
1294 talloc_free(mem_ctx);
1298 blob = ndr_push_blob(push);
1299 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1300 talloc_free(mem_ctx);
1304 talloc_free(mem_ctx);
1309 static BOOL api_winreg_SetKeySecurity(pipes_struct *p)
1311 struct ndr_pull *pull;
1312 struct ndr_push *push;
1315 struct winreg_SetKeySecurity r;
1316 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_SetKeySecurity");
1318 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1319 talloc_free(mem_ctx);
1323 pull = ndr_pull_init_blob(&blob, mem_ctx);
1327 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1328 status = ndr_pull_winreg_SetKeySecurity(pull, NDR_IN, &r);
1329 if (NT_STATUS_IS_ERR(status)) {
1330 talloc_free(mem_ctx);
1334 if (DEBUGLEVEL >= 10)
1335 NDR_PRINT_IN_DEBUG(winreg_SetKeySecurity, &r);
1339 r.out.result = _winreg_SetKeySecurity(p, r.in.handle, r.in.access_mask, r.in.sd);
1341 if (DEBUGLEVEL >= 10)
1342 NDR_PRINT_OUT_DEBUG(winreg_SetKeySecurity, &r);
1344 push = ndr_push_init_ctx(mem_ctx);
1346 talloc_free(mem_ctx);
1350 status = ndr_push_winreg_SetKeySecurity(push, NDR_OUT, &r);
1351 if (NT_STATUS_IS_ERR(status)) {
1352 talloc_free(mem_ctx);
1356 blob = ndr_push_blob(push);
1357 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1358 talloc_free(mem_ctx);
1362 talloc_free(mem_ctx);
1367 static BOOL api_winreg_SetValue(pipes_struct *p)
1369 struct ndr_pull *pull;
1370 struct ndr_push *push;
1373 struct winreg_SetValue r;
1374 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_SetValue");
1376 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1377 talloc_free(mem_ctx);
1381 pull = ndr_pull_init_blob(&blob, mem_ctx);
1385 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1386 status = ndr_pull_winreg_SetValue(pull, NDR_IN, &r);
1387 if (NT_STATUS_IS_ERR(status)) {
1388 talloc_free(mem_ctx);
1392 if (DEBUGLEVEL >= 10)
1393 NDR_PRINT_IN_DEBUG(winreg_SetValue, &r);
1395 r.out.result = _winreg_SetValue(p, r.in.handle, r.in.name, r.in.type, r.in.data, r.in.size);
1397 if (DEBUGLEVEL >= 10)
1398 NDR_PRINT_OUT_DEBUG(winreg_SetValue, &r);
1400 push = ndr_push_init_ctx(mem_ctx);
1402 talloc_free(mem_ctx);
1406 status = ndr_push_winreg_SetValue(push, NDR_OUT, &r);
1407 if (NT_STATUS_IS_ERR(status)) {
1408 talloc_free(mem_ctx);
1412 blob = ndr_push_blob(push);
1413 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1414 talloc_free(mem_ctx);
1418 talloc_free(mem_ctx);
1423 static BOOL api_winreg_UnLoadKey(pipes_struct *p)
1425 struct ndr_pull *pull;
1426 struct ndr_push *push;
1429 struct winreg_UnLoadKey r;
1430 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_UnLoadKey");
1432 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1433 talloc_free(mem_ctx);
1437 pull = ndr_pull_init_blob(&blob, mem_ctx);
1441 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1442 status = ndr_pull_winreg_UnLoadKey(pull, NDR_IN, &r);
1443 if (NT_STATUS_IS_ERR(status)) {
1444 talloc_free(mem_ctx);
1448 if (DEBUGLEVEL >= 10)
1449 NDR_PRINT_IN_DEBUG(winreg_UnLoadKey, &r);
1451 r.out.result = _winreg_UnLoadKey(p);
1453 if (DEBUGLEVEL >= 10)
1454 NDR_PRINT_OUT_DEBUG(winreg_UnLoadKey, &r);
1456 push = ndr_push_init_ctx(mem_ctx);
1458 talloc_free(mem_ctx);
1462 status = ndr_push_winreg_UnLoadKey(push, NDR_OUT, &r);
1463 if (NT_STATUS_IS_ERR(status)) {
1464 talloc_free(mem_ctx);
1468 blob = ndr_push_blob(push);
1469 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1470 talloc_free(mem_ctx);
1474 talloc_free(mem_ctx);
1479 static BOOL api_winreg_InitiateSystemShutdown(pipes_struct *p)
1481 struct ndr_pull *pull;
1482 struct ndr_push *push;
1485 struct winreg_InitiateSystemShutdown r;
1486 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_InitiateSystemShutdown");
1488 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1489 talloc_free(mem_ctx);
1493 pull = ndr_pull_init_blob(&blob, mem_ctx);
1497 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1498 status = ndr_pull_winreg_InitiateSystemShutdown(pull, NDR_IN, &r);
1499 if (NT_STATUS_IS_ERR(status)) {
1500 talloc_free(mem_ctx);
1504 if (DEBUGLEVEL >= 10)
1505 NDR_PRINT_IN_DEBUG(winreg_InitiateSystemShutdown, &r);
1507 r.out.result = _winreg_InitiateSystemShutdown(p, r.in.hostname, r.in.message, r.in.timeout, r.in.force_apps, r.in.reboot);
1509 if (DEBUGLEVEL >= 10)
1510 NDR_PRINT_OUT_DEBUG(winreg_InitiateSystemShutdown, &r);
1512 push = ndr_push_init_ctx(mem_ctx);
1514 talloc_free(mem_ctx);
1518 status = ndr_push_winreg_InitiateSystemShutdown(push, NDR_OUT, &r);
1519 if (NT_STATUS_IS_ERR(status)) {
1520 talloc_free(mem_ctx);
1524 blob = ndr_push_blob(push);
1525 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1526 talloc_free(mem_ctx);
1530 talloc_free(mem_ctx);
1535 static BOOL api_winreg_AbortSystemShutdown(pipes_struct *p)
1537 struct ndr_pull *pull;
1538 struct ndr_push *push;
1541 struct winreg_AbortSystemShutdown r;
1542 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_AbortSystemShutdown");
1544 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1545 talloc_free(mem_ctx);
1549 pull = ndr_pull_init_blob(&blob, mem_ctx);
1553 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1554 status = ndr_pull_winreg_AbortSystemShutdown(pull, NDR_IN, &r);
1555 if (NT_STATUS_IS_ERR(status)) {
1556 talloc_free(mem_ctx);
1560 if (DEBUGLEVEL >= 10)
1561 NDR_PRINT_IN_DEBUG(winreg_AbortSystemShutdown, &r);
1563 r.out.result = _winreg_AbortSystemShutdown(p, r.in.server);
1565 if (DEBUGLEVEL >= 10)
1566 NDR_PRINT_OUT_DEBUG(winreg_AbortSystemShutdown, &r);
1568 push = ndr_push_init_ctx(mem_ctx);
1570 talloc_free(mem_ctx);
1574 status = ndr_push_winreg_AbortSystemShutdown(push, NDR_OUT, &r);
1575 if (NT_STATUS_IS_ERR(status)) {
1576 talloc_free(mem_ctx);
1580 blob = ndr_push_blob(push);
1581 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1582 talloc_free(mem_ctx);
1586 talloc_free(mem_ctx);
1591 static BOOL api_winreg_GetVersion(pipes_struct *p)
1593 struct ndr_pull *pull;
1594 struct ndr_push *push;
1597 struct winreg_GetVersion r;
1598 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_GetVersion");
1600 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1601 talloc_free(mem_ctx);
1605 pull = ndr_pull_init_blob(&blob, mem_ctx);
1609 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1610 status = ndr_pull_winreg_GetVersion(pull, NDR_IN, &r);
1611 if (NT_STATUS_IS_ERR(status)) {
1612 talloc_free(mem_ctx);
1616 if (DEBUGLEVEL >= 10)
1617 NDR_PRINT_IN_DEBUG(winreg_GetVersion, &r);
1620 r.out.version = talloc_zero_size(mem_ctx, sizeof(*r.out.version));
1621 if (r.out.version == NULL) {
1622 talloc_free(mem_ctx);
1626 r.out.result = _winreg_GetVersion(p, r.in.handle, r.out.version);
1628 if (DEBUGLEVEL >= 10)
1629 NDR_PRINT_OUT_DEBUG(winreg_GetVersion, &r);
1631 push = ndr_push_init_ctx(mem_ctx);
1633 talloc_free(mem_ctx);
1637 status = ndr_push_winreg_GetVersion(push, NDR_OUT, &r);
1638 if (NT_STATUS_IS_ERR(status)) {
1639 talloc_free(mem_ctx);
1643 blob = ndr_push_blob(push);
1644 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1645 talloc_free(mem_ctx);
1649 talloc_free(mem_ctx);
1654 static BOOL api_winreg_OpenHKCC(pipes_struct *p)
1656 struct ndr_pull *pull;
1657 struct ndr_push *push;
1660 struct winreg_OpenHKCC r;
1661 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKCC");
1663 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1664 talloc_free(mem_ctx);
1668 pull = ndr_pull_init_blob(&blob, mem_ctx);
1672 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1673 status = ndr_pull_winreg_OpenHKCC(pull, NDR_IN, &r);
1674 if (NT_STATUS_IS_ERR(status)) {
1675 talloc_free(mem_ctx);
1679 if (DEBUGLEVEL >= 10)
1680 NDR_PRINT_IN_DEBUG(winreg_OpenHKCC, &r);
1683 r.out.handle = talloc_zero_size(mem_ctx, sizeof(*r.out.handle));
1684 if (r.out.handle == NULL) {
1685 talloc_free(mem_ctx);
1689 r.out.result = _winreg_OpenHKCC(p, r.in.system_name, r.in.access_mask, r.out.handle);
1691 if (DEBUGLEVEL >= 10)
1692 NDR_PRINT_OUT_DEBUG(winreg_OpenHKCC, &r);
1694 push = ndr_push_init_ctx(mem_ctx);
1696 talloc_free(mem_ctx);
1700 status = ndr_push_winreg_OpenHKCC(push, NDR_OUT, &r);
1701 if (NT_STATUS_IS_ERR(status)) {
1702 talloc_free(mem_ctx);
1706 blob = ndr_push_blob(push);
1707 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1708 talloc_free(mem_ctx);
1712 talloc_free(mem_ctx);
1717 static BOOL api_winreg_OpenHKDD(pipes_struct *p)
1719 struct ndr_pull *pull;
1720 struct ndr_push *push;
1723 struct winreg_OpenHKDD r;
1724 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKDD");
1726 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1727 talloc_free(mem_ctx);
1731 pull = ndr_pull_init_blob(&blob, mem_ctx);
1735 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1736 status = ndr_pull_winreg_OpenHKDD(pull, NDR_IN, &r);
1737 if (NT_STATUS_IS_ERR(status)) {
1738 talloc_free(mem_ctx);
1742 if (DEBUGLEVEL >= 10)
1743 NDR_PRINT_IN_DEBUG(winreg_OpenHKDD, &r);
1746 r.out.handle = talloc_zero_size(mem_ctx, sizeof(*r.out.handle));
1747 if (r.out.handle == NULL) {
1748 talloc_free(mem_ctx);
1752 r.out.result = _winreg_OpenHKDD(p, r.in.system_name, r.in.access_mask, r.out.handle);
1754 if (DEBUGLEVEL >= 10)
1755 NDR_PRINT_OUT_DEBUG(winreg_OpenHKDD, &r);
1757 push = ndr_push_init_ctx(mem_ctx);
1759 talloc_free(mem_ctx);
1763 status = ndr_push_winreg_OpenHKDD(push, NDR_OUT, &r);
1764 if (NT_STATUS_IS_ERR(status)) {
1765 talloc_free(mem_ctx);
1769 blob = ndr_push_blob(push);
1770 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1771 talloc_free(mem_ctx);
1775 talloc_free(mem_ctx);
1780 static BOOL api_winreg_QueryMultipleValues(pipes_struct *p)
1782 struct ndr_pull *pull;
1783 struct ndr_push *push;
1786 struct winreg_QueryMultipleValues r;
1787 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_QueryMultipleValues");
1789 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1790 talloc_free(mem_ctx);
1794 pull = ndr_pull_init_blob(&blob, mem_ctx);
1798 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1799 status = ndr_pull_winreg_QueryMultipleValues(pull, NDR_IN, &r);
1800 if (NT_STATUS_IS_ERR(status)) {
1801 talloc_free(mem_ctx);
1805 if (DEBUGLEVEL >= 10)
1806 NDR_PRINT_IN_DEBUG(winreg_QueryMultipleValues, &r);
1809 r.out.values = r.in.values;
1810 r.out.buffer = r.in.buffer;
1811 r.out.buffer_size = r.in.buffer_size;
1812 r.out.result = _winreg_QueryMultipleValues(p, r.in.key_handle, r.in.values, r.in.num_values, r.in.buffer, r.in.buffer_size);
1814 if (DEBUGLEVEL >= 10)
1815 NDR_PRINT_OUT_DEBUG(winreg_QueryMultipleValues, &r);
1817 push = ndr_push_init_ctx(mem_ctx);
1819 talloc_free(mem_ctx);
1823 status = ndr_push_winreg_QueryMultipleValues(push, NDR_OUT, &r);
1824 if (NT_STATUS_IS_ERR(status)) {
1825 talloc_free(mem_ctx);
1829 blob = ndr_push_blob(push);
1830 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1831 talloc_free(mem_ctx);
1835 talloc_free(mem_ctx);
1840 static BOOL api_winreg_InitiateSystemShutdownEx(pipes_struct *p)
1842 struct ndr_pull *pull;
1843 struct ndr_push *push;
1846 struct winreg_InitiateSystemShutdownEx r;
1847 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_InitiateSystemShutdownEx");
1849 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1850 talloc_free(mem_ctx);
1854 pull = ndr_pull_init_blob(&blob, mem_ctx);
1858 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1859 status = ndr_pull_winreg_InitiateSystemShutdownEx(pull, NDR_IN, &r);
1860 if (NT_STATUS_IS_ERR(status)) {
1861 talloc_free(mem_ctx);
1865 if (DEBUGLEVEL >= 10)
1866 NDR_PRINT_IN_DEBUG(winreg_InitiateSystemShutdownEx, &r);
1868 r.out.result = _winreg_InitiateSystemShutdownEx(p, r.in.hostname, r.in.message, r.in.timeout, r.in.force_apps, r.in.reboot, r.in.reason);
1870 if (DEBUGLEVEL >= 10)
1871 NDR_PRINT_OUT_DEBUG(winreg_InitiateSystemShutdownEx, &r);
1873 push = ndr_push_init_ctx(mem_ctx);
1875 talloc_free(mem_ctx);
1879 status = ndr_push_winreg_InitiateSystemShutdownEx(push, NDR_OUT, &r);
1880 if (NT_STATUS_IS_ERR(status)) {
1881 talloc_free(mem_ctx);
1885 blob = ndr_push_blob(push);
1886 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1887 talloc_free(mem_ctx);
1891 talloc_free(mem_ctx);
1896 static BOOL api_winreg_SaveKeyEx(pipes_struct *p)
1898 struct ndr_pull *pull;
1899 struct ndr_push *push;
1902 struct winreg_SaveKeyEx r;
1903 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_SaveKeyEx");
1905 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1906 talloc_free(mem_ctx);
1910 pull = ndr_pull_init_blob(&blob, mem_ctx);
1914 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1915 status = ndr_pull_winreg_SaveKeyEx(pull, NDR_IN, &r);
1916 if (NT_STATUS_IS_ERR(status)) {
1917 talloc_free(mem_ctx);
1921 if (DEBUGLEVEL >= 10)
1922 NDR_PRINT_IN_DEBUG(winreg_SaveKeyEx, &r);
1924 r.out.result = _winreg_SaveKeyEx(p);
1926 if (DEBUGLEVEL >= 10)
1927 NDR_PRINT_OUT_DEBUG(winreg_SaveKeyEx, &r);
1929 push = ndr_push_init_ctx(mem_ctx);
1931 talloc_free(mem_ctx);
1935 status = ndr_push_winreg_SaveKeyEx(push, NDR_OUT, &r);
1936 if (NT_STATUS_IS_ERR(status)) {
1937 talloc_free(mem_ctx);
1941 blob = ndr_push_blob(push);
1942 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1943 talloc_free(mem_ctx);
1947 talloc_free(mem_ctx);
1952 static BOOL api_winreg_OpenHKPT(pipes_struct *p)
1954 struct ndr_pull *pull;
1955 struct ndr_push *push;
1958 struct winreg_OpenHKPT r;
1959 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKPT");
1961 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1962 talloc_free(mem_ctx);
1966 pull = ndr_pull_init_blob(&blob, mem_ctx);
1970 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1971 status = ndr_pull_winreg_OpenHKPT(pull, NDR_IN, &r);
1972 if (NT_STATUS_IS_ERR(status)) {
1973 talloc_free(mem_ctx);
1977 if (DEBUGLEVEL >= 10)
1978 NDR_PRINT_IN_DEBUG(winreg_OpenHKPT, &r);
1981 r.out.handle = talloc_zero_size(mem_ctx, sizeof(*r.out.handle));
1982 if (r.out.handle == NULL) {
1983 talloc_free(mem_ctx);
1987 r.out.result = _winreg_OpenHKPT(p, r.in.system_name, r.in.access_mask, r.out.handle);
1989 if (DEBUGLEVEL >= 10)
1990 NDR_PRINT_OUT_DEBUG(winreg_OpenHKPT, &r);
1992 push = ndr_push_init_ctx(mem_ctx);
1994 talloc_free(mem_ctx);
1998 status = ndr_push_winreg_OpenHKPT(push, NDR_OUT, &r);
1999 if (NT_STATUS_IS_ERR(status)) {
2000 talloc_free(mem_ctx);
2004 blob = ndr_push_blob(push);
2005 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
2006 talloc_free(mem_ctx);
2010 talloc_free(mem_ctx);
2015 static BOOL api_winreg_OpenHKPN(pipes_struct *p)
2017 struct ndr_pull *pull;
2018 struct ndr_push *push;
2021 struct winreg_OpenHKPN r;
2022 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKPN");
2024 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
2025 talloc_free(mem_ctx);
2029 pull = ndr_pull_init_blob(&blob, mem_ctx);
2033 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2034 status = ndr_pull_winreg_OpenHKPN(pull, NDR_IN, &r);
2035 if (NT_STATUS_IS_ERR(status)) {
2036 talloc_free(mem_ctx);
2040 if (DEBUGLEVEL >= 10)
2041 NDR_PRINT_IN_DEBUG(winreg_OpenHKPN, &r);
2044 r.out.handle = talloc_zero_size(mem_ctx, sizeof(*r.out.handle));
2045 if (r.out.handle == NULL) {
2046 talloc_free(mem_ctx);
2050 r.out.result = _winreg_OpenHKPN(p, r.in.system_name, r.in.access_mask, r.out.handle);
2052 if (DEBUGLEVEL >= 10)
2053 NDR_PRINT_OUT_DEBUG(winreg_OpenHKPN, &r);
2055 push = ndr_push_init_ctx(mem_ctx);
2057 talloc_free(mem_ctx);
2061 status = ndr_push_winreg_OpenHKPN(push, NDR_OUT, &r);
2062 if (NT_STATUS_IS_ERR(status)) {
2063 talloc_free(mem_ctx);
2067 blob = ndr_push_blob(push);
2068 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
2069 talloc_free(mem_ctx);
2073 talloc_free(mem_ctx);
2078 static BOOL api_winreg_QueryMultipleValues2(pipes_struct *p)
2080 struct ndr_pull *pull;
2081 struct ndr_push *push;
2084 struct winreg_QueryMultipleValues2 r;
2085 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_QueryMultipleValues2");
2087 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
2088 talloc_free(mem_ctx);
2092 pull = ndr_pull_init_blob(&blob, mem_ctx);
2096 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2097 status = ndr_pull_winreg_QueryMultipleValues2(pull, NDR_IN, &r);
2098 if (NT_STATUS_IS_ERR(status)) {
2099 talloc_free(mem_ctx);
2103 if (DEBUGLEVEL >= 10)
2104 NDR_PRINT_IN_DEBUG(winreg_QueryMultipleValues2, &r);
2106 r.out.result = _winreg_QueryMultipleValues2(p);
2108 if (DEBUGLEVEL >= 10)
2109 NDR_PRINT_OUT_DEBUG(winreg_QueryMultipleValues2, &r);
2111 push = ndr_push_init_ctx(mem_ctx);
2113 talloc_free(mem_ctx);
2117 status = ndr_push_winreg_QueryMultipleValues2(push, NDR_OUT, &r);
2118 if (NT_STATUS_IS_ERR(status)) {
2119 talloc_free(mem_ctx);
2123 blob = ndr_push_blob(push);
2124 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
2125 talloc_free(mem_ctx);
2129 talloc_free(mem_ctx);
2136 static struct api_struct api_winreg_cmds[] =
2138 {"WINREG_OPENHKCR", DCERPC_WINREG_OPENHKCR, api_winreg_OpenHKCR},
2139 {"WINREG_OPENHKCU", DCERPC_WINREG_OPENHKCU, api_winreg_OpenHKCU},
2140 {"WINREG_OPENHKLM", DCERPC_WINREG_OPENHKLM, api_winreg_OpenHKLM},
2141 {"WINREG_OPENHKPD", DCERPC_WINREG_OPENHKPD, api_winreg_OpenHKPD},
2142 {"WINREG_OPENHKU", DCERPC_WINREG_OPENHKU, api_winreg_OpenHKU},
2143 {"WINREG_CLOSEKEY", DCERPC_WINREG_CLOSEKEY, api_winreg_CloseKey},
2144 {"WINREG_CREATEKEY", DCERPC_WINREG_CREATEKEY, api_winreg_CreateKey},
2145 {"WINREG_DELETEKEY", DCERPC_WINREG_DELETEKEY, api_winreg_DeleteKey},
2146 {"WINREG_DELETEVALUE", DCERPC_WINREG_DELETEVALUE, api_winreg_DeleteValue},
2147 {"WINREG_ENUMKEY", DCERPC_WINREG_ENUMKEY, api_winreg_EnumKey},
2148 {"WINREG_ENUMVALUE", DCERPC_WINREG_ENUMVALUE, api_winreg_EnumValue},
2149 {"WINREG_FLUSHKEY", DCERPC_WINREG_FLUSHKEY, api_winreg_FlushKey},
2150 {"WINREG_GETKEYSECURITY", DCERPC_WINREG_GETKEYSECURITY, api_winreg_GetKeySecurity},
2151 {"WINREG_LOADKEY", DCERPC_WINREG_LOADKEY, api_winreg_LoadKey},
2152 {"WINREG_NOTIFYCHANGEKEYVALUE", DCERPC_WINREG_NOTIFYCHANGEKEYVALUE, api_winreg_NotifyChangeKeyValue},
2153 {"WINREG_OPENKEY", DCERPC_WINREG_OPENKEY, api_winreg_OpenKey},
2154 {"WINREG_QUERYINFOKEY", DCERPC_WINREG_QUERYINFOKEY, api_winreg_QueryInfoKey},
2155 {"WINREG_QUERYVALUE", DCERPC_WINREG_QUERYVALUE, api_winreg_QueryValue},
2156 {"WINREG_REPLACEKEY", DCERPC_WINREG_REPLACEKEY, api_winreg_ReplaceKey},
2157 {"WINREG_RESTOREKEY", DCERPC_WINREG_RESTOREKEY, api_winreg_RestoreKey},
2158 {"WINREG_SAVEKEY", DCERPC_WINREG_SAVEKEY, api_winreg_SaveKey},
2159 {"WINREG_SETKEYSECURITY", DCERPC_WINREG_SETKEYSECURITY, api_winreg_SetKeySecurity},
2160 {"WINREG_SETVALUE", DCERPC_WINREG_SETVALUE, api_winreg_SetValue},
2161 {"WINREG_UNLOADKEY", DCERPC_WINREG_UNLOADKEY, api_winreg_UnLoadKey},
2162 {"WINREG_INITIATESYSTEMSHUTDOWN", DCERPC_WINREG_INITIATESYSTEMSHUTDOWN, api_winreg_InitiateSystemShutdown},
2163 {"WINREG_ABORTSYSTEMSHUTDOWN", DCERPC_WINREG_ABORTSYSTEMSHUTDOWN, api_winreg_AbortSystemShutdown},
2164 {"WINREG_GETVERSION", DCERPC_WINREG_GETVERSION, api_winreg_GetVersion},
2165 {"WINREG_OPENHKCC", DCERPC_WINREG_OPENHKCC, api_winreg_OpenHKCC},
2166 {"WINREG_OPENHKDD", DCERPC_WINREG_OPENHKDD, api_winreg_OpenHKDD},
2167 {"WINREG_QUERYMULTIPLEVALUES", DCERPC_WINREG_QUERYMULTIPLEVALUES, api_winreg_QueryMultipleValues},
2168 {"WINREG_INITIATESYSTEMSHUTDOWNEX", DCERPC_WINREG_INITIATESYSTEMSHUTDOWNEX, api_winreg_InitiateSystemShutdownEx},
2169 {"WINREG_SAVEKEYEX", DCERPC_WINREG_SAVEKEYEX, api_winreg_SaveKeyEx},
2170 {"WINREG_OPENHKPT", DCERPC_WINREG_OPENHKPT, api_winreg_OpenHKPT},
2171 {"WINREG_OPENHKPN", DCERPC_WINREG_OPENHKPN, api_winreg_OpenHKPN},
2172 {"WINREG_QUERYMULTIPLEVALUES2", DCERPC_WINREG_QUERYMULTIPLEVALUES2, api_winreg_QueryMultipleValues2},
2175 void winreg_get_pipe_fns(struct api_struct **fns, int *n_fns)
2177 *fns = api_winreg_cmds;
2178 *n_fns = sizeof(api_winreg_cmds) / sizeof(struct api_struct);
2181 NTSTATUS rpc_winreg_init(void)
2183 return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "winreg", "winreg", api_winreg_cmds, sizeof(api_winreg_cmds) / sizeof(struct api_struct));