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.data = r.in.data;
650 r.out.data_size = r.in.data_size;
651 r.out.value_length = r.in.value_length;
652 r.out.result = _winreg_EnumValue(p, r.in.handle, r.in.enum_index, r.in.name, r.in.type, r.in.data, r.in.data_size, r.in.value_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.classname = r.in.classname;
999 r.out.num_subkeys = talloc_zero_size(mem_ctx, sizeof(*r.out.num_subkeys));
1000 if (r.out.num_subkeys == NULL) {
1001 talloc_free(mem_ctx);
1005 r.out.max_subkeylen = talloc_zero_size(mem_ctx, sizeof(*r.out.max_subkeylen));
1006 if (r.out.max_subkeylen == NULL) {
1007 talloc_free(mem_ctx);
1011 r.out.max_subkeysize = talloc_zero_size(mem_ctx, sizeof(*r.out.max_subkeysize));
1012 if (r.out.max_subkeysize == NULL) {
1013 talloc_free(mem_ctx);
1017 r.out.num_values = talloc_zero_size(mem_ctx, sizeof(*r.out.num_values));
1018 if (r.out.num_values == NULL) {
1019 talloc_free(mem_ctx);
1023 r.out.max_valnamelen = talloc_zero_size(mem_ctx, sizeof(*r.out.max_valnamelen));
1024 if (r.out.max_valnamelen == NULL) {
1025 talloc_free(mem_ctx);
1029 r.out.max_valbufsize = talloc_zero_size(mem_ctx, sizeof(*r.out.max_valbufsize));
1030 if (r.out.max_valbufsize == NULL) {
1031 talloc_free(mem_ctx);
1035 r.out.secdescsize = talloc_zero_size(mem_ctx, sizeof(*r.out.secdescsize));
1036 if (r.out.secdescsize == NULL) {
1037 talloc_free(mem_ctx);
1041 r.out.last_changed_time = talloc_zero_size(mem_ctx, sizeof(*r.out.last_changed_time));
1042 if (r.out.last_changed_time == NULL) {
1043 talloc_free(mem_ctx);
1047 r.out.result = _winreg_QueryInfoKey(p, r.in.handle, r.in.classname, 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);
1049 if (DEBUGLEVEL >= 10)
1050 NDR_PRINT_OUT_DEBUG(winreg_QueryInfoKey, &r);
1052 push = ndr_push_init_ctx(mem_ctx);
1054 talloc_free(mem_ctx);
1058 status = ndr_push_winreg_QueryInfoKey(push, NDR_OUT, &r);
1059 if (NT_STATUS_IS_ERR(status)) {
1060 talloc_free(mem_ctx);
1064 blob = ndr_push_blob(push);
1065 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1066 talloc_free(mem_ctx);
1070 talloc_free(mem_ctx);
1075 static BOOL api_winreg_QueryValue(pipes_struct *p)
1077 struct ndr_pull *pull;
1078 struct ndr_push *push;
1081 struct winreg_QueryValue r;
1082 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_QueryValue");
1084 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1085 talloc_free(mem_ctx);
1089 pull = ndr_pull_init_blob(&blob, mem_ctx);
1093 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1094 status = ndr_pull_winreg_QueryValue(pull, NDR_IN, &r);
1095 if (NT_STATUS_IS_ERR(status)) {
1096 talloc_free(mem_ctx);
1100 if (DEBUGLEVEL >= 10)
1101 NDR_PRINT_IN_DEBUG(winreg_QueryValue, &r);
1104 r.out.type = r.in.type;
1105 r.out.data = r.in.data;
1106 r.out.data_size = r.in.data_size;
1107 r.out.value_length = r.in.value_length;
1108 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);
1110 if (DEBUGLEVEL >= 10)
1111 NDR_PRINT_OUT_DEBUG(winreg_QueryValue, &r);
1113 push = ndr_push_init_ctx(mem_ctx);
1115 talloc_free(mem_ctx);
1119 status = ndr_push_winreg_QueryValue(push, NDR_OUT, &r);
1120 if (NT_STATUS_IS_ERR(status)) {
1121 talloc_free(mem_ctx);
1125 blob = ndr_push_blob(push);
1126 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1127 talloc_free(mem_ctx);
1131 talloc_free(mem_ctx);
1136 static BOOL api_winreg_ReplaceKey(pipes_struct *p)
1138 struct ndr_pull *pull;
1139 struct ndr_push *push;
1142 struct winreg_ReplaceKey r;
1143 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_ReplaceKey");
1145 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1146 talloc_free(mem_ctx);
1150 pull = ndr_pull_init_blob(&blob, mem_ctx);
1154 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1155 status = ndr_pull_winreg_ReplaceKey(pull, NDR_IN, &r);
1156 if (NT_STATUS_IS_ERR(status)) {
1157 talloc_free(mem_ctx);
1161 if (DEBUGLEVEL >= 10)
1162 NDR_PRINT_IN_DEBUG(winreg_ReplaceKey, &r);
1164 r.out.result = _winreg_ReplaceKey(p);
1166 if (DEBUGLEVEL >= 10)
1167 NDR_PRINT_OUT_DEBUG(winreg_ReplaceKey, &r);
1169 push = ndr_push_init_ctx(mem_ctx);
1171 talloc_free(mem_ctx);
1175 status = ndr_push_winreg_ReplaceKey(push, NDR_OUT, &r);
1176 if (NT_STATUS_IS_ERR(status)) {
1177 talloc_free(mem_ctx);
1181 blob = ndr_push_blob(push);
1182 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1183 talloc_free(mem_ctx);
1187 talloc_free(mem_ctx);
1192 static BOOL api_winreg_RestoreKey(pipes_struct *p)
1194 struct ndr_pull *pull;
1195 struct ndr_push *push;
1198 struct winreg_RestoreKey r;
1199 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_RestoreKey");
1201 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1202 talloc_free(mem_ctx);
1206 pull = ndr_pull_init_blob(&blob, mem_ctx);
1210 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1211 status = ndr_pull_winreg_RestoreKey(pull, NDR_IN, &r);
1212 if (NT_STATUS_IS_ERR(status)) {
1213 talloc_free(mem_ctx);
1217 if (DEBUGLEVEL >= 10)
1218 NDR_PRINT_IN_DEBUG(winreg_RestoreKey, &r);
1220 r.out.result = _winreg_RestoreKey(p);
1222 if (DEBUGLEVEL >= 10)
1223 NDR_PRINT_OUT_DEBUG(winreg_RestoreKey, &r);
1225 push = ndr_push_init_ctx(mem_ctx);
1227 talloc_free(mem_ctx);
1231 status = ndr_push_winreg_RestoreKey(push, NDR_OUT, &r);
1232 if (NT_STATUS_IS_ERR(status)) {
1233 talloc_free(mem_ctx);
1237 blob = ndr_push_blob(push);
1238 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1239 talloc_free(mem_ctx);
1243 talloc_free(mem_ctx);
1248 static BOOL api_winreg_SaveKey(pipes_struct *p)
1250 struct ndr_pull *pull;
1251 struct ndr_push *push;
1254 struct winreg_SaveKey r;
1255 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_SaveKey");
1257 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1258 talloc_free(mem_ctx);
1262 pull = ndr_pull_init_blob(&blob, mem_ctx);
1266 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1267 status = ndr_pull_winreg_SaveKey(pull, NDR_IN, &r);
1268 if (NT_STATUS_IS_ERR(status)) {
1269 talloc_free(mem_ctx);
1273 if (DEBUGLEVEL >= 10)
1274 NDR_PRINT_IN_DEBUG(winreg_SaveKey, &r);
1276 r.out.result = _winreg_SaveKey(p);
1278 if (DEBUGLEVEL >= 10)
1279 NDR_PRINT_OUT_DEBUG(winreg_SaveKey, &r);
1281 push = ndr_push_init_ctx(mem_ctx);
1283 talloc_free(mem_ctx);
1287 status = ndr_push_winreg_SaveKey(push, NDR_OUT, &r);
1288 if (NT_STATUS_IS_ERR(status)) {
1289 talloc_free(mem_ctx);
1293 blob = ndr_push_blob(push);
1294 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1295 talloc_free(mem_ctx);
1299 talloc_free(mem_ctx);
1304 static BOOL api_winreg_SetKeySecurity(pipes_struct *p)
1306 struct ndr_pull *pull;
1307 struct ndr_push *push;
1310 struct winreg_SetKeySecurity r;
1311 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_SetKeySecurity");
1313 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1314 talloc_free(mem_ctx);
1318 pull = ndr_pull_init_blob(&blob, mem_ctx);
1322 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1323 status = ndr_pull_winreg_SetKeySecurity(pull, NDR_IN, &r);
1324 if (NT_STATUS_IS_ERR(status)) {
1325 talloc_free(mem_ctx);
1329 if (DEBUGLEVEL >= 10)
1330 NDR_PRINT_IN_DEBUG(winreg_SetKeySecurity, &r);
1334 r.out.result = _winreg_SetKeySecurity(p, r.in.handle, r.in.access_mask, r.in.sd);
1336 if (DEBUGLEVEL >= 10)
1337 NDR_PRINT_OUT_DEBUG(winreg_SetKeySecurity, &r);
1339 push = ndr_push_init_ctx(mem_ctx);
1341 talloc_free(mem_ctx);
1345 status = ndr_push_winreg_SetKeySecurity(push, NDR_OUT, &r);
1346 if (NT_STATUS_IS_ERR(status)) {
1347 talloc_free(mem_ctx);
1351 blob = ndr_push_blob(push);
1352 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1353 talloc_free(mem_ctx);
1357 talloc_free(mem_ctx);
1362 static BOOL api_winreg_SetValue(pipes_struct *p)
1364 struct ndr_pull *pull;
1365 struct ndr_push *push;
1368 struct winreg_SetValue r;
1369 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_SetValue");
1371 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1372 talloc_free(mem_ctx);
1376 pull = ndr_pull_init_blob(&blob, mem_ctx);
1380 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1381 status = ndr_pull_winreg_SetValue(pull, NDR_IN, &r);
1382 if (NT_STATUS_IS_ERR(status)) {
1383 talloc_free(mem_ctx);
1387 if (DEBUGLEVEL >= 10)
1388 NDR_PRINT_IN_DEBUG(winreg_SetValue, &r);
1390 r.out.result = _winreg_SetValue(p, r.in.handle, r.in.name, r.in.type, r.in.data, r.in.size);
1392 if (DEBUGLEVEL >= 10)
1393 NDR_PRINT_OUT_DEBUG(winreg_SetValue, &r);
1395 push = ndr_push_init_ctx(mem_ctx);
1397 talloc_free(mem_ctx);
1401 status = ndr_push_winreg_SetValue(push, NDR_OUT, &r);
1402 if (NT_STATUS_IS_ERR(status)) {
1403 talloc_free(mem_ctx);
1407 blob = ndr_push_blob(push);
1408 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1409 talloc_free(mem_ctx);
1413 talloc_free(mem_ctx);
1418 static BOOL api_winreg_UnLoadKey(pipes_struct *p)
1420 struct ndr_pull *pull;
1421 struct ndr_push *push;
1424 struct winreg_UnLoadKey r;
1425 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_UnLoadKey");
1427 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1428 talloc_free(mem_ctx);
1432 pull = ndr_pull_init_blob(&blob, mem_ctx);
1436 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1437 status = ndr_pull_winreg_UnLoadKey(pull, NDR_IN, &r);
1438 if (NT_STATUS_IS_ERR(status)) {
1439 talloc_free(mem_ctx);
1443 if (DEBUGLEVEL >= 10)
1444 NDR_PRINT_IN_DEBUG(winreg_UnLoadKey, &r);
1446 r.out.result = _winreg_UnLoadKey(p);
1448 if (DEBUGLEVEL >= 10)
1449 NDR_PRINT_OUT_DEBUG(winreg_UnLoadKey, &r);
1451 push = ndr_push_init_ctx(mem_ctx);
1453 talloc_free(mem_ctx);
1457 status = ndr_push_winreg_UnLoadKey(push, NDR_OUT, &r);
1458 if (NT_STATUS_IS_ERR(status)) {
1459 talloc_free(mem_ctx);
1463 blob = ndr_push_blob(push);
1464 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1465 talloc_free(mem_ctx);
1469 talloc_free(mem_ctx);
1474 static BOOL api_winreg_InitiateSystemShutdown(pipes_struct *p)
1476 struct ndr_pull *pull;
1477 struct ndr_push *push;
1480 struct winreg_InitiateSystemShutdown r;
1481 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_InitiateSystemShutdown");
1483 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1484 talloc_free(mem_ctx);
1488 pull = ndr_pull_init_blob(&blob, mem_ctx);
1492 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1493 status = ndr_pull_winreg_InitiateSystemShutdown(pull, NDR_IN, &r);
1494 if (NT_STATUS_IS_ERR(status)) {
1495 talloc_free(mem_ctx);
1499 if (DEBUGLEVEL >= 10)
1500 NDR_PRINT_IN_DEBUG(winreg_InitiateSystemShutdown, &r);
1502 r.out.result = _winreg_InitiateSystemShutdown(p, r.in.hostname, r.in.message, r.in.timeout, r.in.force_apps, r.in.reboot);
1504 if (DEBUGLEVEL >= 10)
1505 NDR_PRINT_OUT_DEBUG(winreg_InitiateSystemShutdown, &r);
1507 push = ndr_push_init_ctx(mem_ctx);
1509 talloc_free(mem_ctx);
1513 status = ndr_push_winreg_InitiateSystemShutdown(push, NDR_OUT, &r);
1514 if (NT_STATUS_IS_ERR(status)) {
1515 talloc_free(mem_ctx);
1519 blob = ndr_push_blob(push);
1520 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1521 talloc_free(mem_ctx);
1525 talloc_free(mem_ctx);
1530 static BOOL api_winreg_AbortSystemShutdown(pipes_struct *p)
1532 struct ndr_pull *pull;
1533 struct ndr_push *push;
1536 struct winreg_AbortSystemShutdown r;
1537 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_AbortSystemShutdown");
1539 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1540 talloc_free(mem_ctx);
1544 pull = ndr_pull_init_blob(&blob, mem_ctx);
1548 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1549 status = ndr_pull_winreg_AbortSystemShutdown(pull, NDR_IN, &r);
1550 if (NT_STATUS_IS_ERR(status)) {
1551 talloc_free(mem_ctx);
1555 if (DEBUGLEVEL >= 10)
1556 NDR_PRINT_IN_DEBUG(winreg_AbortSystemShutdown, &r);
1558 r.out.result = _winreg_AbortSystemShutdown(p, r.in.server);
1560 if (DEBUGLEVEL >= 10)
1561 NDR_PRINT_OUT_DEBUG(winreg_AbortSystemShutdown, &r);
1563 push = ndr_push_init_ctx(mem_ctx);
1565 talloc_free(mem_ctx);
1569 status = ndr_push_winreg_AbortSystemShutdown(push, NDR_OUT, &r);
1570 if (NT_STATUS_IS_ERR(status)) {
1571 talloc_free(mem_ctx);
1575 blob = ndr_push_blob(push);
1576 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1577 talloc_free(mem_ctx);
1581 talloc_free(mem_ctx);
1586 static BOOL api_winreg_GetVersion(pipes_struct *p)
1588 struct ndr_pull *pull;
1589 struct ndr_push *push;
1592 struct winreg_GetVersion r;
1593 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_GetVersion");
1595 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1596 talloc_free(mem_ctx);
1600 pull = ndr_pull_init_blob(&blob, mem_ctx);
1604 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1605 status = ndr_pull_winreg_GetVersion(pull, NDR_IN, &r);
1606 if (NT_STATUS_IS_ERR(status)) {
1607 talloc_free(mem_ctx);
1611 if (DEBUGLEVEL >= 10)
1612 NDR_PRINT_IN_DEBUG(winreg_GetVersion, &r);
1615 r.out.version = talloc_zero_size(mem_ctx, sizeof(*r.out.version));
1616 if (r.out.version == NULL) {
1617 talloc_free(mem_ctx);
1621 r.out.result = _winreg_GetVersion(p, r.in.handle, r.out.version);
1623 if (DEBUGLEVEL >= 10)
1624 NDR_PRINT_OUT_DEBUG(winreg_GetVersion, &r);
1626 push = ndr_push_init_ctx(mem_ctx);
1628 talloc_free(mem_ctx);
1632 status = ndr_push_winreg_GetVersion(push, NDR_OUT, &r);
1633 if (NT_STATUS_IS_ERR(status)) {
1634 talloc_free(mem_ctx);
1638 blob = ndr_push_blob(push);
1639 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1640 talloc_free(mem_ctx);
1644 talloc_free(mem_ctx);
1649 static BOOL api_winreg_OpenHKCC(pipes_struct *p)
1651 struct ndr_pull *pull;
1652 struct ndr_push *push;
1655 struct winreg_OpenHKCC r;
1656 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKCC");
1658 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1659 talloc_free(mem_ctx);
1663 pull = ndr_pull_init_blob(&blob, mem_ctx);
1667 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1668 status = ndr_pull_winreg_OpenHKCC(pull, NDR_IN, &r);
1669 if (NT_STATUS_IS_ERR(status)) {
1670 talloc_free(mem_ctx);
1674 if (DEBUGLEVEL >= 10)
1675 NDR_PRINT_IN_DEBUG(winreg_OpenHKCC, &r);
1678 r.out.handle = talloc_zero_size(mem_ctx, sizeof(*r.out.handle));
1679 if (r.out.handle == NULL) {
1680 talloc_free(mem_ctx);
1684 r.out.result = _winreg_OpenHKCC(p, r.in.system_name, r.in.access_mask, r.out.handle);
1686 if (DEBUGLEVEL >= 10)
1687 NDR_PRINT_OUT_DEBUG(winreg_OpenHKCC, &r);
1689 push = ndr_push_init_ctx(mem_ctx);
1691 talloc_free(mem_ctx);
1695 status = ndr_push_winreg_OpenHKCC(push, NDR_OUT, &r);
1696 if (NT_STATUS_IS_ERR(status)) {
1697 talloc_free(mem_ctx);
1701 blob = ndr_push_blob(push);
1702 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1703 talloc_free(mem_ctx);
1707 talloc_free(mem_ctx);
1712 static BOOL api_winreg_OpenHKDD(pipes_struct *p)
1714 struct ndr_pull *pull;
1715 struct ndr_push *push;
1718 struct winreg_OpenHKDD r;
1719 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKDD");
1721 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1722 talloc_free(mem_ctx);
1726 pull = ndr_pull_init_blob(&blob, mem_ctx);
1730 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1731 status = ndr_pull_winreg_OpenHKDD(pull, NDR_IN, &r);
1732 if (NT_STATUS_IS_ERR(status)) {
1733 talloc_free(mem_ctx);
1737 if (DEBUGLEVEL >= 10)
1738 NDR_PRINT_IN_DEBUG(winreg_OpenHKDD, &r);
1741 r.out.handle = talloc_zero_size(mem_ctx, sizeof(*r.out.handle));
1742 if (r.out.handle == NULL) {
1743 talloc_free(mem_ctx);
1747 r.out.result = _winreg_OpenHKDD(p, r.in.system_name, r.in.access_mask, r.out.handle);
1749 if (DEBUGLEVEL >= 10)
1750 NDR_PRINT_OUT_DEBUG(winreg_OpenHKDD, &r);
1752 push = ndr_push_init_ctx(mem_ctx);
1754 talloc_free(mem_ctx);
1758 status = ndr_push_winreg_OpenHKDD(push, NDR_OUT, &r);
1759 if (NT_STATUS_IS_ERR(status)) {
1760 talloc_free(mem_ctx);
1764 blob = ndr_push_blob(push);
1765 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1766 talloc_free(mem_ctx);
1770 talloc_free(mem_ctx);
1775 static BOOL api_winreg_QueryMultipleValues(pipes_struct *p)
1777 struct ndr_pull *pull;
1778 struct ndr_push *push;
1781 struct winreg_QueryMultipleValues r;
1782 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_QueryMultipleValues");
1784 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1785 talloc_free(mem_ctx);
1789 pull = ndr_pull_init_blob(&blob, mem_ctx);
1793 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1794 status = ndr_pull_winreg_QueryMultipleValues(pull, NDR_IN, &r);
1795 if (NT_STATUS_IS_ERR(status)) {
1796 talloc_free(mem_ctx);
1800 if (DEBUGLEVEL >= 10)
1801 NDR_PRINT_IN_DEBUG(winreg_QueryMultipleValues, &r);
1804 r.out.values = r.in.values;
1805 r.out.buffer = r.in.buffer;
1806 r.out.buffer_size = r.in.buffer_size;
1807 r.out.result = _winreg_QueryMultipleValues(p, r.in.key_handle, r.in.values, r.in.num_values, r.in.buffer, r.in.buffer_size);
1809 if (DEBUGLEVEL >= 10)
1810 NDR_PRINT_OUT_DEBUG(winreg_QueryMultipleValues, &r);
1812 push = ndr_push_init_ctx(mem_ctx);
1814 talloc_free(mem_ctx);
1818 status = ndr_push_winreg_QueryMultipleValues(push, NDR_OUT, &r);
1819 if (NT_STATUS_IS_ERR(status)) {
1820 talloc_free(mem_ctx);
1824 blob = ndr_push_blob(push);
1825 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1826 talloc_free(mem_ctx);
1830 talloc_free(mem_ctx);
1835 static BOOL api_winreg_InitiateSystemShutdownEx(pipes_struct *p)
1837 struct ndr_pull *pull;
1838 struct ndr_push *push;
1841 struct winreg_InitiateSystemShutdownEx r;
1842 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_InitiateSystemShutdownEx");
1844 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1845 talloc_free(mem_ctx);
1849 pull = ndr_pull_init_blob(&blob, mem_ctx);
1853 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1854 status = ndr_pull_winreg_InitiateSystemShutdownEx(pull, NDR_IN, &r);
1855 if (NT_STATUS_IS_ERR(status)) {
1856 talloc_free(mem_ctx);
1860 if (DEBUGLEVEL >= 10)
1861 NDR_PRINT_IN_DEBUG(winreg_InitiateSystemShutdownEx, &r);
1863 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);
1865 if (DEBUGLEVEL >= 10)
1866 NDR_PRINT_OUT_DEBUG(winreg_InitiateSystemShutdownEx, &r);
1868 push = ndr_push_init_ctx(mem_ctx);
1870 talloc_free(mem_ctx);
1874 status = ndr_push_winreg_InitiateSystemShutdownEx(push, NDR_OUT, &r);
1875 if (NT_STATUS_IS_ERR(status)) {
1876 talloc_free(mem_ctx);
1880 blob = ndr_push_blob(push);
1881 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1882 talloc_free(mem_ctx);
1886 talloc_free(mem_ctx);
1891 static BOOL api_winreg_SaveKeyEx(pipes_struct *p)
1893 struct ndr_pull *pull;
1894 struct ndr_push *push;
1897 struct winreg_SaveKeyEx r;
1898 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_SaveKeyEx");
1900 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1901 talloc_free(mem_ctx);
1905 pull = ndr_pull_init_blob(&blob, mem_ctx);
1909 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1910 status = ndr_pull_winreg_SaveKeyEx(pull, NDR_IN, &r);
1911 if (NT_STATUS_IS_ERR(status)) {
1912 talloc_free(mem_ctx);
1916 if (DEBUGLEVEL >= 10)
1917 NDR_PRINT_IN_DEBUG(winreg_SaveKeyEx, &r);
1919 r.out.result = _winreg_SaveKeyEx(p);
1921 if (DEBUGLEVEL >= 10)
1922 NDR_PRINT_OUT_DEBUG(winreg_SaveKeyEx, &r);
1924 push = ndr_push_init_ctx(mem_ctx);
1926 talloc_free(mem_ctx);
1930 status = ndr_push_winreg_SaveKeyEx(push, NDR_OUT, &r);
1931 if (NT_STATUS_IS_ERR(status)) {
1932 talloc_free(mem_ctx);
1936 blob = ndr_push_blob(push);
1937 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
1938 talloc_free(mem_ctx);
1942 talloc_free(mem_ctx);
1947 static BOOL api_winreg_OpenHKPT(pipes_struct *p)
1949 struct ndr_pull *pull;
1950 struct ndr_push *push;
1953 struct winreg_OpenHKPT r;
1954 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKPT");
1956 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
1957 talloc_free(mem_ctx);
1961 pull = ndr_pull_init_blob(&blob, mem_ctx);
1965 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1966 status = ndr_pull_winreg_OpenHKPT(pull, NDR_IN, &r);
1967 if (NT_STATUS_IS_ERR(status)) {
1968 talloc_free(mem_ctx);
1972 if (DEBUGLEVEL >= 10)
1973 NDR_PRINT_IN_DEBUG(winreg_OpenHKPT, &r);
1976 r.out.handle = talloc_zero_size(mem_ctx, sizeof(*r.out.handle));
1977 if (r.out.handle == NULL) {
1978 talloc_free(mem_ctx);
1982 r.out.result = _winreg_OpenHKPT(p, r.in.system_name, r.in.access_mask, r.out.handle);
1984 if (DEBUGLEVEL >= 10)
1985 NDR_PRINT_OUT_DEBUG(winreg_OpenHKPT, &r);
1987 push = ndr_push_init_ctx(mem_ctx);
1989 talloc_free(mem_ctx);
1993 status = ndr_push_winreg_OpenHKPT(push, NDR_OUT, &r);
1994 if (NT_STATUS_IS_ERR(status)) {
1995 talloc_free(mem_ctx);
1999 blob = ndr_push_blob(push);
2000 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
2001 talloc_free(mem_ctx);
2005 talloc_free(mem_ctx);
2010 static BOOL api_winreg_OpenHKPN(pipes_struct *p)
2012 struct ndr_pull *pull;
2013 struct ndr_push *push;
2016 struct winreg_OpenHKPN r;
2017 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_OpenHKPN");
2019 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
2020 talloc_free(mem_ctx);
2024 pull = ndr_pull_init_blob(&blob, mem_ctx);
2028 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2029 status = ndr_pull_winreg_OpenHKPN(pull, NDR_IN, &r);
2030 if (NT_STATUS_IS_ERR(status)) {
2031 talloc_free(mem_ctx);
2035 if (DEBUGLEVEL >= 10)
2036 NDR_PRINT_IN_DEBUG(winreg_OpenHKPN, &r);
2039 r.out.handle = talloc_zero_size(mem_ctx, sizeof(*r.out.handle));
2040 if (r.out.handle == NULL) {
2041 talloc_free(mem_ctx);
2045 r.out.result = _winreg_OpenHKPN(p, r.in.system_name, r.in.access_mask, r.out.handle);
2047 if (DEBUGLEVEL >= 10)
2048 NDR_PRINT_OUT_DEBUG(winreg_OpenHKPN, &r);
2050 push = ndr_push_init_ctx(mem_ctx);
2052 talloc_free(mem_ctx);
2056 status = ndr_push_winreg_OpenHKPN(push, NDR_OUT, &r);
2057 if (NT_STATUS_IS_ERR(status)) {
2058 talloc_free(mem_ctx);
2062 blob = ndr_push_blob(push);
2063 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
2064 talloc_free(mem_ctx);
2068 talloc_free(mem_ctx);
2073 static BOOL api_winreg_QueryMultipleValues2(pipes_struct *p)
2075 struct ndr_pull *pull;
2076 struct ndr_push *push;
2079 struct winreg_QueryMultipleValues2 r;
2080 TALLOC_CTX *mem_ctx = talloc_init("api_winreg_QueryMultipleValues2");
2082 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
2083 talloc_free(mem_ctx);
2087 pull = ndr_pull_init_blob(&blob, mem_ctx);
2091 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2092 status = ndr_pull_winreg_QueryMultipleValues2(pull, NDR_IN, &r);
2093 if (NT_STATUS_IS_ERR(status)) {
2094 talloc_free(mem_ctx);
2098 if (DEBUGLEVEL >= 10)
2099 NDR_PRINT_IN_DEBUG(winreg_QueryMultipleValues2, &r);
2101 r.out.result = _winreg_QueryMultipleValues2(p);
2103 if (DEBUGLEVEL >= 10)
2104 NDR_PRINT_OUT_DEBUG(winreg_QueryMultipleValues2, &r);
2106 push = ndr_push_init_ctx(mem_ctx);
2108 talloc_free(mem_ctx);
2112 status = ndr_push_winreg_QueryMultipleValues2(push, NDR_OUT, &r);
2113 if (NT_STATUS_IS_ERR(status)) {
2114 talloc_free(mem_ctx);
2118 blob = ndr_push_blob(push);
2119 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
2120 talloc_free(mem_ctx);
2124 talloc_free(mem_ctx);
2131 static struct api_struct api_winreg_cmds[] =
2133 {"WINREG_OPENHKCR", DCERPC_WINREG_OPENHKCR, api_winreg_OpenHKCR},
2134 {"WINREG_OPENHKCU", DCERPC_WINREG_OPENHKCU, api_winreg_OpenHKCU},
2135 {"WINREG_OPENHKLM", DCERPC_WINREG_OPENHKLM, api_winreg_OpenHKLM},
2136 {"WINREG_OPENHKPD", DCERPC_WINREG_OPENHKPD, api_winreg_OpenHKPD},
2137 {"WINREG_OPENHKU", DCERPC_WINREG_OPENHKU, api_winreg_OpenHKU},
2138 {"WINREG_CLOSEKEY", DCERPC_WINREG_CLOSEKEY, api_winreg_CloseKey},
2139 {"WINREG_CREATEKEY", DCERPC_WINREG_CREATEKEY, api_winreg_CreateKey},
2140 {"WINREG_DELETEKEY", DCERPC_WINREG_DELETEKEY, api_winreg_DeleteKey},
2141 {"WINREG_DELETEVALUE", DCERPC_WINREG_DELETEVALUE, api_winreg_DeleteValue},
2142 {"WINREG_ENUMKEY", DCERPC_WINREG_ENUMKEY, api_winreg_EnumKey},
2143 {"WINREG_ENUMVALUE", DCERPC_WINREG_ENUMVALUE, api_winreg_EnumValue},
2144 {"WINREG_FLUSHKEY", DCERPC_WINREG_FLUSHKEY, api_winreg_FlushKey},
2145 {"WINREG_GETKEYSECURITY", DCERPC_WINREG_GETKEYSECURITY, api_winreg_GetKeySecurity},
2146 {"WINREG_LOADKEY", DCERPC_WINREG_LOADKEY, api_winreg_LoadKey},
2147 {"WINREG_NOTIFYCHANGEKEYVALUE", DCERPC_WINREG_NOTIFYCHANGEKEYVALUE, api_winreg_NotifyChangeKeyValue},
2148 {"WINREG_OPENKEY", DCERPC_WINREG_OPENKEY, api_winreg_OpenKey},
2149 {"WINREG_QUERYINFOKEY", DCERPC_WINREG_QUERYINFOKEY, api_winreg_QueryInfoKey},
2150 {"WINREG_QUERYVALUE", DCERPC_WINREG_QUERYVALUE, api_winreg_QueryValue},
2151 {"WINREG_REPLACEKEY", DCERPC_WINREG_REPLACEKEY, api_winreg_ReplaceKey},
2152 {"WINREG_RESTOREKEY", DCERPC_WINREG_RESTOREKEY, api_winreg_RestoreKey},
2153 {"WINREG_SAVEKEY", DCERPC_WINREG_SAVEKEY, api_winreg_SaveKey},
2154 {"WINREG_SETKEYSECURITY", DCERPC_WINREG_SETKEYSECURITY, api_winreg_SetKeySecurity},
2155 {"WINREG_SETVALUE", DCERPC_WINREG_SETVALUE, api_winreg_SetValue},
2156 {"WINREG_UNLOADKEY", DCERPC_WINREG_UNLOADKEY, api_winreg_UnLoadKey},
2157 {"WINREG_INITIATESYSTEMSHUTDOWN", DCERPC_WINREG_INITIATESYSTEMSHUTDOWN, api_winreg_InitiateSystemShutdown},
2158 {"WINREG_ABORTSYSTEMSHUTDOWN", DCERPC_WINREG_ABORTSYSTEMSHUTDOWN, api_winreg_AbortSystemShutdown},
2159 {"WINREG_GETVERSION", DCERPC_WINREG_GETVERSION, api_winreg_GetVersion},
2160 {"WINREG_OPENHKCC", DCERPC_WINREG_OPENHKCC, api_winreg_OpenHKCC},
2161 {"WINREG_OPENHKDD", DCERPC_WINREG_OPENHKDD, api_winreg_OpenHKDD},
2162 {"WINREG_QUERYMULTIPLEVALUES", DCERPC_WINREG_QUERYMULTIPLEVALUES, api_winreg_QueryMultipleValues},
2163 {"WINREG_INITIATESYSTEMSHUTDOWNEX", DCERPC_WINREG_INITIATESYSTEMSHUTDOWNEX, api_winreg_InitiateSystemShutdownEx},
2164 {"WINREG_SAVEKEYEX", DCERPC_WINREG_SAVEKEYEX, api_winreg_SaveKeyEx},
2165 {"WINREG_OPENHKPT", DCERPC_WINREG_OPENHKPT, api_winreg_OpenHKPT},
2166 {"WINREG_OPENHKPN", DCERPC_WINREG_OPENHKPN, api_winreg_OpenHKPN},
2167 {"WINREG_QUERYMULTIPLEVALUES2", DCERPC_WINREG_QUERYMULTIPLEVALUES2, api_winreg_QueryMultipleValues2},
2170 void winreg_get_pipe_fns(struct api_struct **fns, int *n_fns)
2172 *fns = api_winreg_cmds;
2173 *n_fns = sizeof(api_winreg_cmds) / sizeof(struct api_struct);
2176 NTSTATUS rpc_winreg_init(void)
2178 return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "winreg", "winreg", api_winreg_cmds, sizeof(api_winreg_cmds) / sizeof(struct api_struct));