root/librpc/gen_ndr/ndr_winreg.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. ndr_push_winreg_AccessMask
  2. ndr_pull_winreg_AccessMask
  3. ndr_print_winreg_AccessMask
  4. ndr_push_winreg_Type
  5. ndr_pull_winreg_Type
  6. ndr_print_winreg_Type
  7. ndr_push_winreg_String
  8. ndr_pull_winreg_String
  9. ndr_print_winreg_String
  10. ndr_push_KeySecurityData
  11. ndr_pull_KeySecurityData
  12. ndr_print_KeySecurityData
  13. ndr_push_winreg_SecBuf
  14. ndr_pull_winreg_SecBuf
  15. ndr_print_winreg_SecBuf
  16. ndr_push_winreg_CreateAction
  17. ndr_pull_winreg_CreateAction
  18. ndr_print_winreg_CreateAction
  19. ndr_push_winreg_StringBuf
  20. ndr_pull_winreg_StringBuf
  21. ndr_print_winreg_StringBuf
  22. ndr_push_winreg_ValNameBuf
  23. ndr_pull_winreg_ValNameBuf
  24. ndr_print_winreg_ValNameBuf
  25. ndr_push_winreg_NotifyChangeType
  26. ndr_pull_winreg_NotifyChangeType
  27. ndr_print_winreg_NotifyChangeType
  28. ndr_push_KeySecurityAttribute
  29. ndr_pull_KeySecurityAttribute
  30. ndr_print_KeySecurityAttribute
  31. ndr_push_QueryMultipleValue
  32. ndr_pull_QueryMultipleValue
  33. ndr_print_QueryMultipleValue
  34. ndr_push_winreg_OpenHKCR
  35. ndr_pull_winreg_OpenHKCR
  36. ndr_print_winreg_OpenHKCR
  37. ndr_push_winreg_OpenHKCU
  38. ndr_pull_winreg_OpenHKCU
  39. ndr_print_winreg_OpenHKCU
  40. ndr_push_winreg_OpenHKLM
  41. ndr_pull_winreg_OpenHKLM
  42. ndr_print_winreg_OpenHKLM
  43. ndr_push_winreg_OpenHKPD
  44. ndr_pull_winreg_OpenHKPD
  45. ndr_print_winreg_OpenHKPD
  46. ndr_push_winreg_OpenHKU
  47. ndr_pull_winreg_OpenHKU
  48. ndr_print_winreg_OpenHKU
  49. ndr_push_winreg_CloseKey
  50. ndr_pull_winreg_CloseKey
  51. ndr_print_winreg_CloseKey
  52. ndr_push_winreg_CreateKey
  53. ndr_pull_winreg_CreateKey
  54. ndr_print_winreg_CreateKey
  55. ndr_push_winreg_DeleteKey
  56. ndr_pull_winreg_DeleteKey
  57. ndr_print_winreg_DeleteKey
  58. ndr_push_winreg_DeleteValue
  59. ndr_pull_winreg_DeleteValue
  60. ndr_print_winreg_DeleteValue
  61. ndr_push_winreg_EnumKey
  62. ndr_pull_winreg_EnumKey
  63. ndr_print_winreg_EnumKey
  64. ndr_push_winreg_EnumValue
  65. ndr_pull_winreg_EnumValue
  66. ndr_print_winreg_EnumValue
  67. ndr_push_winreg_FlushKey
  68. ndr_pull_winreg_FlushKey
  69. ndr_print_winreg_FlushKey
  70. ndr_push_winreg_GetKeySecurity
  71. ndr_pull_winreg_GetKeySecurity
  72. ndr_print_winreg_GetKeySecurity
  73. ndr_push_winreg_LoadKey
  74. ndr_pull_winreg_LoadKey
  75. ndr_print_winreg_LoadKey
  76. ndr_push_winreg_NotifyChangeKeyValue
  77. ndr_pull_winreg_NotifyChangeKeyValue
  78. ndr_print_winreg_NotifyChangeKeyValue
  79. ndr_push_winreg_OpenKey
  80. ndr_pull_winreg_OpenKey
  81. ndr_print_winreg_OpenKey
  82. ndr_push_winreg_QueryInfoKey
  83. ndr_pull_winreg_QueryInfoKey
  84. ndr_print_winreg_QueryInfoKey
  85. ndr_push_winreg_QueryValue
  86. ndr_pull_winreg_QueryValue
  87. ndr_print_winreg_QueryValue
  88. ndr_push_winreg_ReplaceKey
  89. ndr_pull_winreg_ReplaceKey
  90. ndr_print_winreg_ReplaceKey
  91. ndr_push_winreg_RestoreKey
  92. ndr_pull_winreg_RestoreKey
  93. ndr_print_winreg_RestoreKey
  94. ndr_push_winreg_SaveKey
  95. ndr_pull_winreg_SaveKey
  96. ndr_print_winreg_SaveKey
  97. ndr_push_winreg_SetKeySecurity
  98. ndr_pull_winreg_SetKeySecurity
  99. ndr_print_winreg_SetKeySecurity
  100. ndr_push_winreg_SetValue
  101. ndr_pull_winreg_SetValue
  102. ndr_print_winreg_SetValue
  103. ndr_push_winreg_UnLoadKey
  104. ndr_pull_winreg_UnLoadKey
  105. ndr_print_winreg_UnLoadKey
  106. ndr_push_winreg_InitiateSystemShutdown
  107. ndr_pull_winreg_InitiateSystemShutdown
  108. ndr_print_winreg_InitiateSystemShutdown
  109. ndr_push_winreg_AbortSystemShutdown
  110. ndr_pull_winreg_AbortSystemShutdown
  111. ndr_print_winreg_AbortSystemShutdown
  112. ndr_push_winreg_GetVersion
  113. ndr_pull_winreg_GetVersion
  114. ndr_print_winreg_GetVersion
  115. ndr_push_winreg_OpenHKCC
  116. ndr_pull_winreg_OpenHKCC
  117. ndr_print_winreg_OpenHKCC
  118. ndr_push_winreg_OpenHKDD
  119. ndr_pull_winreg_OpenHKDD
  120. ndr_print_winreg_OpenHKDD
  121. ndr_push_winreg_QueryMultipleValues
  122. ndr_pull_winreg_QueryMultipleValues
  123. ndr_print_winreg_QueryMultipleValues
  124. ndr_push_winreg_InitiateSystemShutdownEx
  125. ndr_pull_winreg_InitiateSystemShutdownEx
  126. ndr_print_winreg_InitiateSystemShutdownEx
  127. ndr_push_winreg_SaveKeyEx
  128. ndr_pull_winreg_SaveKeyEx
  129. ndr_print_winreg_SaveKeyEx
  130. ndr_push_winreg_OpenHKPT
  131. ndr_pull_winreg_OpenHKPT
  132. ndr_print_winreg_OpenHKPT
  133. ndr_push_winreg_OpenHKPN
  134. ndr_pull_winreg_OpenHKPN
  135. ndr_print_winreg_OpenHKPN
  136. ndr_push_winreg_QueryMultipleValues2
  137. ndr_pull_winreg_QueryMultipleValues2
  138. ndr_print_winreg_QueryMultipleValues2

   1 /* parser auto-generated by pidl */
   2 
   3 #include "includes.h"
   4 #include "../librpc/gen_ndr/ndr_winreg.h"
   5 
   6 #include "librpc/gen_ndr/ndr_lsa.h"
   7 #include "librpc/gen_ndr/ndr_security.h"
   8 static enum ndr_err_code ndr_push_winreg_AccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
     /* [<][>][^][v][top][bottom][index][help] */
   9 {
  10         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
  11         return NDR_ERR_SUCCESS;
  12 }
  13 
  14 static enum ndr_err_code ndr_pull_winreg_AccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
     /* [<][>][^][v][top][bottom][index][help] */
  15 {
  16         uint32_t v;
  17         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
  18         *r = v;
  19         return NDR_ERR_SUCCESS;
  20 }
  21 
  22 _PUBLIC_ void ndr_print_winreg_AccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
     /* [<][>][^][v][top][bottom][index][help] */
  23 {
  24         ndr_print_uint32(ndr, name, r);
  25         ndr->depth++;
  26         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_QUERY_VALUE", KEY_QUERY_VALUE, r);
  27         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_SET_VALUE", KEY_SET_VALUE, r);
  28         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_CREATE_SUB_KEY", KEY_CREATE_SUB_KEY, r);
  29         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_ENUMERATE_SUB_KEYS", KEY_ENUMERATE_SUB_KEYS, r);
  30         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_NOTIFY", KEY_NOTIFY, r);
  31         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_CREATE_LINK", KEY_CREATE_LINK, r);
  32         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_WOW64_64KEY", KEY_WOW64_64KEY, r);
  33         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "KEY_WOW64_32KEY", KEY_WOW64_32KEY, r);
  34         ndr->depth--;
  35 }
  36 
  37 _PUBLIC_ enum ndr_err_code ndr_push_winreg_Type(struct ndr_push *ndr, int ndr_flags, enum winreg_Type r)
     /* [<][>][^][v][top][bottom][index][help] */
  38 {
  39         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
  40         return NDR_ERR_SUCCESS;
  41 }
  42 
  43 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_Type(struct ndr_pull *ndr, int ndr_flags, enum winreg_Type *r)
     /* [<][>][^][v][top][bottom][index][help] */
  44 {
  45         uint32_t v;
  46         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
  47         *r = v;
  48         return NDR_ERR_SUCCESS;
  49 }
  50 
  51 _PUBLIC_ void ndr_print_winreg_Type(struct ndr_print *ndr, const char *name, enum winreg_Type r)
     /* [<][>][^][v][top][bottom][index][help] */
  52 {
  53         const char *val = NULL;
  54 
  55         switch (r) {
  56                 case REG_NONE: val = "REG_NONE"; break;
  57                 case REG_SZ: val = "REG_SZ"; break;
  58                 case REG_EXPAND_SZ: val = "REG_EXPAND_SZ"; break;
  59                 case REG_BINARY: val = "REG_BINARY"; break;
  60                 case REG_DWORD: val = "REG_DWORD"; break;
  61                 case REG_DWORD_BIG_ENDIAN: val = "REG_DWORD_BIG_ENDIAN"; break;
  62                 case REG_LINK: val = "REG_LINK"; break;
  63                 case REG_MULTI_SZ: val = "REG_MULTI_SZ"; break;
  64                 case REG_RESOURCE_LIST: val = "REG_RESOURCE_LIST"; break;
  65                 case REG_FULL_RESOURCE_DESCRIPTOR: val = "REG_FULL_RESOURCE_DESCRIPTOR"; break;
  66                 case REG_RESOURCE_REQUIREMENTS_LIST: val = "REG_RESOURCE_REQUIREMENTS_LIST"; break;
  67                 case REG_QWORD: val = "REG_QWORD"; break;
  68         }
  69         ndr_print_enum(ndr, name, "ENUM", val, r);
  70 }
  71 
  72 _PUBLIC_ enum ndr_err_code ndr_push_winreg_String(struct ndr_push *ndr, int ndr_flags, const struct winreg_String *r)
     /* [<][>][^][v][top][bottom][index][help] */
  73 {
  74         if (ndr_flags & NDR_SCALARS) {
  75                 NDR_CHECK(ndr_push_align(ndr, 4));
  76                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m_term(r->name) * 2));
  77                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m_term(r->name) * 2));
  78                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
  79         }
  80         if (ndr_flags & NDR_BUFFERS) {
  81                 if (r->name) {
  82                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
  83                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
  84                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
  85                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
  86                 }
  87         }
  88         return NDR_ERR_SUCCESS;
  89 }
  90 
  91 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_String(struct ndr_pull *ndr, int ndr_flags, struct winreg_String *r)
     /* [<][>][^][v][top][bottom][index][help] */
  92 {
  93         uint32_t _ptr_name;
  94         TALLOC_CTX *_mem_save_name_0;
  95         if (ndr_flags & NDR_SCALARS) {
  96                 NDR_CHECK(ndr_pull_align(ndr, 4));
  97                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->name_len));
  98                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->name_size));
  99                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
 100                 if (_ptr_name) {
 101                         NDR_PULL_ALLOC(ndr, r->name);
 102                 } else {
 103                         r->name = NULL;
 104                 }
 105         }
 106         if (ndr_flags & NDR_BUFFERS) {
 107                 if (r->name) {
 108                         _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 109                         NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
 110                         NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
 111                         NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
 112                         if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
 113                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
 114                         }
 115                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
 116                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
 117                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
 118                 }
 119         }
 120         return NDR_ERR_SUCCESS;
 121 }
 122 
 123 _PUBLIC_ void ndr_print_winreg_String(struct ndr_print *ndr, const char *name, const struct winreg_String *r)
     /* [<][>][^][v][top][bottom][index][help] */
 124 {
 125         ndr_print_struct(ndr, name, "winreg_String");
 126         ndr->depth++;
 127         ndr_print_uint16(ndr, "name_len", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m_term(r->name) * 2:r->name_len);
 128         ndr_print_uint16(ndr, "name_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m_term(r->name) * 2:r->name_size);
 129         ndr_print_ptr(ndr, "name", r->name);
 130         ndr->depth++;
 131         if (r->name) {
 132                 ndr_print_string(ndr, "name", r->name);
 133         }
 134         ndr->depth--;
 135         ndr->depth--;
 136 }
 137 
 138 static enum ndr_err_code ndr_push_KeySecurityData(struct ndr_push *ndr, int ndr_flags, const struct KeySecurityData *r)
     /* [<][>][^][v][top][bottom][index][help] */
 139 {
 140         if (ndr_flags & NDR_SCALARS) {
 141                 NDR_CHECK(ndr_push_align(ndr, 4));
 142                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
 143                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
 144                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->len));
 145         }
 146         if (ndr_flags & NDR_BUFFERS) {
 147                 if (r->data) {
 148                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
 149                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
 150                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->len));
 151                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->len));
 152                 }
 153         }
 154         return NDR_ERR_SUCCESS;
 155 }
 156 
 157 static enum ndr_err_code ndr_pull_KeySecurityData(struct ndr_pull *ndr, int ndr_flags, struct KeySecurityData *r)
     /* [<][>][^][v][top][bottom][index][help] */
 158 {
 159         uint32_t _ptr_data;
 160         TALLOC_CTX *_mem_save_data_0;
 161         if (ndr_flags & NDR_SCALARS) {
 162                 NDR_CHECK(ndr_pull_align(ndr, 4));
 163                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
 164                 if (_ptr_data) {
 165                         NDR_PULL_ALLOC(ndr, r->data);
 166                 } else {
 167                         r->data = NULL;
 168                 }
 169                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
 170                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->len));
 171         }
 172         if (ndr_flags & NDR_BUFFERS) {
 173                 if (r->data) {
 174                         _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
 175                         NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
 176                         NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
 177                         NDR_CHECK(ndr_pull_array_length(ndr, &r->data));
 178                         if (ndr_get_array_length(ndr, &r->data) > ndr_get_array_size(ndr, &r->data)) {
 179                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->data), ndr_get_array_length(ndr, &r->data));
 180                         }
 181                         NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
 182                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_length(ndr, &r->data)));
 183                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
 184                 }
 185                 if (r->data) {
 186                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->size));
 187                 }
 188                 if (r->data) {
 189                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->data, r->len));
 190                 }
 191         }
 192         return NDR_ERR_SUCCESS;
 193 }
 194 
 195 _PUBLIC_ void ndr_print_KeySecurityData(struct ndr_print *ndr, const char *name, const struct KeySecurityData *r)
     /* [<][>][^][v][top][bottom][index][help] */
 196 {
 197         ndr_print_struct(ndr, name, "KeySecurityData");
 198         ndr->depth++;
 199         ndr_print_ptr(ndr, "data", r->data);
 200         ndr->depth++;
 201         if (r->data) {
 202                 ndr_print_array_uint8(ndr, "data", r->data, r->len);
 203         }
 204         ndr->depth--;
 205         ndr_print_uint32(ndr, "size", r->size);
 206         ndr_print_uint32(ndr, "len", r->len);
 207         ndr->depth--;
 208 }
 209 
 210 static enum ndr_err_code ndr_push_winreg_SecBuf(struct ndr_push *ndr, int ndr_flags, const struct winreg_SecBuf *r)
     /* [<][>][^][v][top][bottom][index][help] */
 211 {
 212         if (ndr_flags & NDR_SCALARS) {
 213                 NDR_CHECK(ndr_push_align(ndr, 4));
 214                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
 215                 NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_SCALARS, &r->sd));
 216                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->inherit));
 217         }
 218         if (ndr_flags & NDR_BUFFERS) {
 219                 NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_BUFFERS, &r->sd));
 220         }
 221         return NDR_ERR_SUCCESS;
 222 }
 223 
 224 static enum ndr_err_code ndr_pull_winreg_SecBuf(struct ndr_pull *ndr, int ndr_flags, struct winreg_SecBuf *r)
     /* [<][>][^][v][top][bottom][index][help] */
 225 {
 226         if (ndr_flags & NDR_SCALARS) {
 227                 NDR_CHECK(ndr_pull_align(ndr, 4));
 228                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
 229                 NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_SCALARS, &r->sd));
 230                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->inherit));
 231         }
 232         if (ndr_flags & NDR_BUFFERS) {
 233                 NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_BUFFERS, &r->sd));
 234         }
 235         return NDR_ERR_SUCCESS;
 236 }
 237 
 238 _PUBLIC_ void ndr_print_winreg_SecBuf(struct ndr_print *ndr, const char *name, const struct winreg_SecBuf *r)
     /* [<][>][^][v][top][bottom][index][help] */
 239 {
 240         ndr_print_struct(ndr, name, "winreg_SecBuf");
 241         ndr->depth++;
 242         ndr_print_uint32(ndr, "length", r->length);
 243         ndr_print_KeySecurityData(ndr, "sd", &r->sd);
 244         ndr_print_uint8(ndr, "inherit", r->inherit);
 245         ndr->depth--;
 246 }
 247 
 248 static enum ndr_err_code ndr_push_winreg_CreateAction(struct ndr_push *ndr, int ndr_flags, enum winreg_CreateAction r)
     /* [<][>][^][v][top][bottom][index][help] */
 249 {
 250         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 251         return NDR_ERR_SUCCESS;
 252 }
 253 
 254 static enum ndr_err_code ndr_pull_winreg_CreateAction(struct ndr_pull *ndr, int ndr_flags, enum winreg_CreateAction *r)
     /* [<][>][^][v][top][bottom][index][help] */
 255 {
 256         uint32_t v;
 257         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 258         *r = v;
 259         return NDR_ERR_SUCCESS;
 260 }
 261 
 262 _PUBLIC_ void ndr_print_winreg_CreateAction(struct ndr_print *ndr, const char *name, enum winreg_CreateAction r)
     /* [<][>][^][v][top][bottom][index][help] */
 263 {
 264         const char *val = NULL;
 265 
 266         switch (r) {
 267                 case REG_ACTION_NONE: val = "REG_ACTION_NONE"; break;
 268                 case REG_CREATED_NEW_KEY: val = "REG_CREATED_NEW_KEY"; break;
 269                 case REG_OPENED_EXISTING_KEY: val = "REG_OPENED_EXISTING_KEY"; break;
 270         }
 271         ndr_print_enum(ndr, name, "ENUM", val, r);
 272 }
 273 
 274 static enum ndr_err_code ndr_push_winreg_StringBuf(struct ndr_push *ndr, int ndr_flags, const struct winreg_StringBuf *r)
     /* [<][>][^][v][top][bottom][index][help] */
 275 {
 276         if (ndr_flags & NDR_SCALARS) {
 277                 NDR_CHECK(ndr_push_align(ndr, 4));
 278                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m_term_null(r->name) * 2));
 279                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->size));
 280                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
 281         }
 282         if (ndr_flags & NDR_BUFFERS) {
 283                 if (r->name) {
 284                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size / 2));
 285                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
 286                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen_m_term_null(r->name) * 2 / 2));
 287                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, strlen_m_term_null(r->name) * 2 / 2, sizeof(uint16_t), CH_UTF16));
 288                 }
 289         }
 290         return NDR_ERR_SUCCESS;
 291 }
 292 
 293 static enum ndr_err_code ndr_pull_winreg_StringBuf(struct ndr_pull *ndr, int ndr_flags, struct winreg_StringBuf *r)
     /* [<][>][^][v][top][bottom][index][help] */
 294 {
 295         uint32_t _ptr_name;
 296         TALLOC_CTX *_mem_save_name_0;
 297         if (ndr_flags & NDR_SCALARS) {
 298                 NDR_CHECK(ndr_pull_align(ndr, 4));
 299                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
 300                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
 301                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
 302                 if (_ptr_name) {
 303                         NDR_PULL_ALLOC(ndr, r->name);
 304                 } else {
 305                         r->name = NULL;
 306                 }
 307         }
 308         if (ndr_flags & NDR_BUFFERS) {
 309                 if (r->name) {
 310                         _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 311                         NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
 312                         NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
 313                         NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
 314                         if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
 315                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
 316                         }
 317                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
 318                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
 319                 }
 320                 if (r->name) {
 321                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->name, r->size / 2));
 322                 }
 323                 if (r->name) {
 324                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->name, r->length / 2));
 325                 }
 326         }
 327         return NDR_ERR_SUCCESS;
 328 }
 329 
 330 _PUBLIC_ void ndr_print_winreg_StringBuf(struct ndr_print *ndr, const char *name, const struct winreg_StringBuf *r)
     /* [<][>][^][v][top][bottom][index][help] */
 331 {
 332         ndr_print_struct(ndr, name, "winreg_StringBuf");
 333         ndr->depth++;
 334         ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m_term_null(r->name) * 2:r->length);
 335         ndr_print_uint16(ndr, "size", r->size);
 336         ndr_print_ptr(ndr, "name", r->name);
 337         ndr->depth++;
 338         if (r->name) {
 339                 ndr_print_string(ndr, "name", r->name);
 340         }
 341         ndr->depth--;
 342         ndr->depth--;
 343 }
 344 
 345 static enum ndr_err_code ndr_push_winreg_ValNameBuf(struct ndr_push *ndr, int ndr_flags, const struct winreg_ValNameBuf *r)
     /* [<][>][^][v][top][bottom][index][help] */
 346 {
 347         if (ndr_flags & NDR_SCALARS) {
 348                 NDR_CHECK(ndr_push_align(ndr, 4));
 349                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m_term(r->name) * 2));
 350                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->size));
 351                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
 352         }
 353         if (ndr_flags & NDR_BUFFERS) {
 354                 if (r->name) {
 355                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size / 2));
 356                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
 357                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen_m_term(r->name) * 2 / 2));
 358                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, strlen_m_term(r->name) * 2 / 2, sizeof(uint16_t), CH_UTF16));
 359                 }
 360         }
 361         return NDR_ERR_SUCCESS;
 362 }
 363 
 364 static enum ndr_err_code ndr_pull_winreg_ValNameBuf(struct ndr_pull *ndr, int ndr_flags, struct winreg_ValNameBuf *r)
     /* [<][>][^][v][top][bottom][index][help] */
 365 {
 366         uint32_t _ptr_name;
 367         TALLOC_CTX *_mem_save_name_0;
 368         if (ndr_flags & NDR_SCALARS) {
 369                 NDR_CHECK(ndr_pull_align(ndr, 4));
 370                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
 371                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
 372                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
 373                 if (_ptr_name) {
 374                         NDR_PULL_ALLOC(ndr, r->name);
 375                 } else {
 376                         r->name = NULL;
 377                 }
 378         }
 379         if (ndr_flags & NDR_BUFFERS) {
 380                 if (r->name) {
 381                         _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 382                         NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
 383                         NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
 384                         NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
 385                         if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
 386                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
 387                         }
 388                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
 389                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
 390                 }
 391                 if (r->name) {
 392                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->name, r->size / 2));
 393                 }
 394                 if (r->name) {
 395                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->name, r->length / 2));
 396                 }
 397         }
 398         return NDR_ERR_SUCCESS;
 399 }
 400 
 401 _PUBLIC_ void ndr_print_winreg_ValNameBuf(struct ndr_print *ndr, const char *name, const struct winreg_ValNameBuf *r)
     /* [<][>][^][v][top][bottom][index][help] */
 402 {
 403         ndr_print_struct(ndr, name, "winreg_ValNameBuf");
 404         ndr->depth++;
 405         ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m_term(r->name) * 2:r->length);
 406         ndr_print_uint16(ndr, "size", r->size);
 407         ndr_print_ptr(ndr, "name", r->name);
 408         ndr->depth++;
 409         if (r->name) {
 410                 ndr_print_string(ndr, "name", r->name);
 411         }
 412         ndr->depth--;
 413         ndr->depth--;
 414 }
 415 
 416 _PUBLIC_ enum ndr_err_code ndr_push_winreg_NotifyChangeType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
     /* [<][>][^][v][top][bottom][index][help] */
 417 {
 418         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 419         return NDR_ERR_SUCCESS;
 420 }
 421 
 422 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_NotifyChangeType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
     /* [<][>][^][v][top][bottom][index][help] */
 423 {
 424         uint32_t v;
 425         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 426         *r = v;
 427         return NDR_ERR_SUCCESS;
 428 }
 429 
 430 _PUBLIC_ void ndr_print_winreg_NotifyChangeType(struct ndr_print *ndr, const char *name, uint32_t r)
     /* [<][>][^][v][top][bottom][index][help] */
 431 {
 432         ndr_print_uint32(ndr, name, r);
 433         ndr->depth++;
 434         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "REG_NOTIFY_CHANGE_NAME", REG_NOTIFY_CHANGE_NAME, r);
 435         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "REG_NOTIFY_CHANGE_ATTRIBUTES", REG_NOTIFY_CHANGE_ATTRIBUTES, r);
 436         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "REG_NOTIFY_CHANGE_LAST_SET", REG_NOTIFY_CHANGE_LAST_SET, r);
 437         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "REG_NOTIFY_CHANGE_SECURITY", REG_NOTIFY_CHANGE_SECURITY, r);
 438         ndr->depth--;
 439 }
 440 
 441 static enum ndr_err_code ndr_push_KeySecurityAttribute(struct ndr_push *ndr, int ndr_flags, const struct KeySecurityAttribute *r)
     /* [<][>][^][v][top][bottom][index][help] */
 442 {
 443         if (ndr_flags & NDR_SCALARS) {
 444                 NDR_CHECK(ndr_push_align(ndr, 4));
 445                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->data_size));
 446                 NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_SCALARS, &r->sec_data));
 447                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->inherit));
 448         }
 449         if (ndr_flags & NDR_BUFFERS) {
 450                 NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_BUFFERS, &r->sec_data));
 451         }
 452         return NDR_ERR_SUCCESS;
 453 }
 454 
 455 static enum ndr_err_code ndr_pull_KeySecurityAttribute(struct ndr_pull *ndr, int ndr_flags, struct KeySecurityAttribute *r)
     /* [<][>][^][v][top][bottom][index][help] */
 456 {
 457         if (ndr_flags & NDR_SCALARS) {
 458                 NDR_CHECK(ndr_pull_align(ndr, 4));
 459                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->data_size));
 460                 NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_SCALARS, &r->sec_data));
 461                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->inherit));
 462         }
 463         if (ndr_flags & NDR_BUFFERS) {
 464                 NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_BUFFERS, &r->sec_data));
 465         }
 466         return NDR_ERR_SUCCESS;
 467 }
 468 
 469 _PUBLIC_ void ndr_print_KeySecurityAttribute(struct ndr_print *ndr, const char *name, const struct KeySecurityAttribute *r)
     /* [<][>][^][v][top][bottom][index][help] */
 470 {
 471         ndr_print_struct(ndr, name, "KeySecurityAttribute");
 472         ndr->depth++;
 473         ndr_print_uint32(ndr, "data_size", r->data_size);
 474         ndr_print_KeySecurityData(ndr, "sec_data", &r->sec_data);
 475         ndr_print_uint8(ndr, "inherit", r->inherit);
 476         ndr->depth--;
 477 }
 478 
 479 static enum ndr_err_code ndr_push_QueryMultipleValue(struct ndr_push *ndr, int ndr_flags, const struct QueryMultipleValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
 480 {
 481         if (ndr_flags & NDR_SCALARS) {
 482                 NDR_CHECK(ndr_push_align(ndr, 4));
 483                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
 484                 NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, r->type));
 485                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->offset));
 486                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
 487         }
 488         if (ndr_flags & NDR_BUFFERS) {
 489                 if (r->name) {
 490                         NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->name));
 491                 }
 492         }
 493         return NDR_ERR_SUCCESS;
 494 }
 495 
 496 static enum ndr_err_code ndr_pull_QueryMultipleValue(struct ndr_pull *ndr, int ndr_flags, struct QueryMultipleValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
 497 {
 498         uint32_t _ptr_name;
 499         TALLOC_CTX *_mem_save_name_0;
 500         if (ndr_flags & NDR_SCALARS) {
 501                 NDR_CHECK(ndr_pull_align(ndr, 4));
 502                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
 503                 if (_ptr_name) {
 504                         NDR_PULL_ALLOC(ndr, r->name);
 505                 } else {
 506                         r->name = NULL;
 507                 }
 508                 NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, &r->type));
 509                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->offset));
 510                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
 511         }
 512         if (ndr_flags & NDR_BUFFERS) {
 513                 if (r->name) {
 514                         _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 515                         NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
 516                         NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->name));
 517                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
 518                 }
 519         }
 520         return NDR_ERR_SUCCESS;
 521 }
 522 
 523 _PUBLIC_ void ndr_print_QueryMultipleValue(struct ndr_print *ndr, const char *name, const struct QueryMultipleValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
 524 {
 525         ndr_print_struct(ndr, name, "QueryMultipleValue");
 526         ndr->depth++;
 527         ndr_print_ptr(ndr, "name", r->name);
 528         ndr->depth++;
 529         if (r->name) {
 530                 ndr_print_winreg_String(ndr, "name", r->name);
 531         }
 532         ndr->depth--;
 533         ndr_print_winreg_Type(ndr, "type", r->type);
 534         ndr_print_uint32(ndr, "offset", r->offset);
 535         ndr_print_uint32(ndr, "length", r->length);
 536         ndr->depth--;
 537 }
 538 
 539 static enum ndr_err_code ndr_push_winreg_OpenHKCR(struct ndr_push *ndr, int flags, const struct winreg_OpenHKCR *r)
     /* [<][>][^][v][top][bottom][index][help] */
 540 {
 541         if (flags & NDR_IN) {
 542                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
 543                 if (r->in.system_name) {
 544                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
 545                 }
 546                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
 547         }
 548         if (flags & NDR_OUT) {
 549                 if (r->out.handle == NULL) {
 550                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 551                 }
 552                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 553                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 554         }
 555         return NDR_ERR_SUCCESS;
 556 }
 557 
 558 static enum ndr_err_code ndr_pull_winreg_OpenHKCR(struct ndr_pull *ndr, int flags, struct winreg_OpenHKCR *r)
     /* [<][>][^][v][top][bottom][index][help] */
 559 {
 560         uint32_t _ptr_system_name;
 561         TALLOC_CTX *_mem_save_system_name_0;
 562         TALLOC_CTX *_mem_save_handle_0;
 563         if (flags & NDR_IN) {
 564                 ZERO_STRUCT(r->out);
 565 
 566                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
 567                 if (_ptr_system_name) {
 568                         NDR_PULL_ALLOC(ndr, r->in.system_name);
 569                 } else {
 570                         r->in.system_name = NULL;
 571                 }
 572                 if (r->in.system_name) {
 573                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 574                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
 575                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
 576                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
 577                 }
 578                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
 579                 NDR_PULL_ALLOC(ndr, r->out.handle);
 580                 ZERO_STRUCTP(r->out.handle);
 581         }
 582         if (flags & NDR_OUT) {
 583                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 584                         NDR_PULL_ALLOC(ndr, r->out.handle);
 585                 }
 586                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 587                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
 588                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 589                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 590                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 591         }
 592         return NDR_ERR_SUCCESS;
 593 }
 594 
 595 _PUBLIC_ void ndr_print_winreg_OpenHKCR(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKCR *r)
     /* [<][>][^][v][top][bottom][index][help] */
 596 {
 597         ndr_print_struct(ndr, name, "winreg_OpenHKCR");
 598         ndr->depth++;
 599         if (flags & NDR_SET_VALUES) {
 600                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 601         }
 602         if (flags & NDR_IN) {
 603                 ndr_print_struct(ndr, "in", "winreg_OpenHKCR");
 604                 ndr->depth++;
 605                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
 606                 ndr->depth++;
 607                 if (r->in.system_name) {
 608                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
 609                 }
 610                 ndr->depth--;
 611                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
 612                 ndr->depth--;
 613         }
 614         if (flags & NDR_OUT) {
 615                 ndr_print_struct(ndr, "out", "winreg_OpenHKCR");
 616                 ndr->depth++;
 617                 ndr_print_ptr(ndr, "handle", r->out.handle);
 618                 ndr->depth++;
 619                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
 620                 ndr->depth--;
 621                 ndr_print_WERROR(ndr, "result", r->out.result);
 622                 ndr->depth--;
 623         }
 624         ndr->depth--;
 625 }
 626 
 627 static enum ndr_err_code ndr_push_winreg_OpenHKCU(struct ndr_push *ndr, int flags, const struct winreg_OpenHKCU *r)
     /* [<][>][^][v][top][bottom][index][help] */
 628 {
 629         if (flags & NDR_IN) {
 630                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
 631                 if (r->in.system_name) {
 632                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
 633                 }
 634                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
 635         }
 636         if (flags & NDR_OUT) {
 637                 if (r->out.handle == NULL) {
 638                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 639                 }
 640                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 641                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 642         }
 643         return NDR_ERR_SUCCESS;
 644 }
 645 
 646 static enum ndr_err_code ndr_pull_winreg_OpenHKCU(struct ndr_pull *ndr, int flags, struct winreg_OpenHKCU *r)
     /* [<][>][^][v][top][bottom][index][help] */
 647 {
 648         uint32_t _ptr_system_name;
 649         TALLOC_CTX *_mem_save_system_name_0;
 650         TALLOC_CTX *_mem_save_handle_0;
 651         if (flags & NDR_IN) {
 652                 ZERO_STRUCT(r->out);
 653 
 654                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
 655                 if (_ptr_system_name) {
 656                         NDR_PULL_ALLOC(ndr, r->in.system_name);
 657                 } else {
 658                         r->in.system_name = NULL;
 659                 }
 660                 if (r->in.system_name) {
 661                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 662                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
 663                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
 664                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
 665                 }
 666                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
 667                 NDR_PULL_ALLOC(ndr, r->out.handle);
 668                 ZERO_STRUCTP(r->out.handle);
 669         }
 670         if (flags & NDR_OUT) {
 671                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 672                         NDR_PULL_ALLOC(ndr, r->out.handle);
 673                 }
 674                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 675                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
 676                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 677                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 678                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 679         }
 680         return NDR_ERR_SUCCESS;
 681 }
 682 
 683 _PUBLIC_ void ndr_print_winreg_OpenHKCU(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKCU *r)
     /* [<][>][^][v][top][bottom][index][help] */
 684 {
 685         ndr_print_struct(ndr, name, "winreg_OpenHKCU");
 686         ndr->depth++;
 687         if (flags & NDR_SET_VALUES) {
 688                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 689         }
 690         if (flags & NDR_IN) {
 691                 ndr_print_struct(ndr, "in", "winreg_OpenHKCU");
 692                 ndr->depth++;
 693                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
 694                 ndr->depth++;
 695                 if (r->in.system_name) {
 696                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
 697                 }
 698                 ndr->depth--;
 699                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
 700                 ndr->depth--;
 701         }
 702         if (flags & NDR_OUT) {
 703                 ndr_print_struct(ndr, "out", "winreg_OpenHKCU");
 704                 ndr->depth++;
 705                 ndr_print_ptr(ndr, "handle", r->out.handle);
 706                 ndr->depth++;
 707                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
 708                 ndr->depth--;
 709                 ndr_print_WERROR(ndr, "result", r->out.result);
 710                 ndr->depth--;
 711         }
 712         ndr->depth--;
 713 }
 714 
 715 _PUBLIC_ enum ndr_err_code ndr_push_winreg_OpenHKLM(struct ndr_push *ndr, int flags, const struct winreg_OpenHKLM *r)
     /* [<][>][^][v][top][bottom][index][help] */
 716 {
 717         if (flags & NDR_IN) {
 718                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
 719                 if (r->in.system_name) {
 720                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
 721                 }
 722                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
 723         }
 724         if (flags & NDR_OUT) {
 725                 if (r->out.handle == NULL) {
 726                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 727                 }
 728                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 729                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 730         }
 731         return NDR_ERR_SUCCESS;
 732 }
 733 
 734 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_OpenHKLM(struct ndr_pull *ndr, int flags, struct winreg_OpenHKLM *r)
     /* [<][>][^][v][top][bottom][index][help] */
 735 {
 736         uint32_t _ptr_system_name;
 737         TALLOC_CTX *_mem_save_system_name_0;
 738         TALLOC_CTX *_mem_save_handle_0;
 739         if (flags & NDR_IN) {
 740                 ZERO_STRUCT(r->out);
 741 
 742                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
 743                 if (_ptr_system_name) {
 744                         NDR_PULL_ALLOC(ndr, r->in.system_name);
 745                 } else {
 746                         r->in.system_name = NULL;
 747                 }
 748                 if (r->in.system_name) {
 749                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 750                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
 751                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
 752                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
 753                 }
 754                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
 755                 NDR_PULL_ALLOC(ndr, r->out.handle);
 756                 ZERO_STRUCTP(r->out.handle);
 757         }
 758         if (flags & NDR_OUT) {
 759                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 760                         NDR_PULL_ALLOC(ndr, r->out.handle);
 761                 }
 762                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 763                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
 764                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 765                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 766                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 767         }
 768         return NDR_ERR_SUCCESS;
 769 }
 770 
 771 _PUBLIC_ void ndr_print_winreg_OpenHKLM(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKLM *r)
     /* [<][>][^][v][top][bottom][index][help] */
 772 {
 773         ndr_print_struct(ndr, name, "winreg_OpenHKLM");
 774         ndr->depth++;
 775         if (flags & NDR_SET_VALUES) {
 776                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 777         }
 778         if (flags & NDR_IN) {
 779                 ndr_print_struct(ndr, "in", "winreg_OpenHKLM");
 780                 ndr->depth++;
 781                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
 782                 ndr->depth++;
 783                 if (r->in.system_name) {
 784                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
 785                 }
 786                 ndr->depth--;
 787                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
 788                 ndr->depth--;
 789         }
 790         if (flags & NDR_OUT) {
 791                 ndr_print_struct(ndr, "out", "winreg_OpenHKLM");
 792                 ndr->depth++;
 793                 ndr_print_ptr(ndr, "handle", r->out.handle);
 794                 ndr->depth++;
 795                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
 796                 ndr->depth--;
 797                 ndr_print_WERROR(ndr, "result", r->out.result);
 798                 ndr->depth--;
 799         }
 800         ndr->depth--;
 801 }
 802 
 803 static enum ndr_err_code ndr_push_winreg_OpenHKPD(struct ndr_push *ndr, int flags, const struct winreg_OpenHKPD *r)
     /* [<][>][^][v][top][bottom][index][help] */
 804 {
 805         if (flags & NDR_IN) {
 806                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
 807                 if (r->in.system_name) {
 808                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
 809                 }
 810                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
 811         }
 812         if (flags & NDR_OUT) {
 813                 if (r->out.handle == NULL) {
 814                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 815                 }
 816                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 817                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 818         }
 819         return NDR_ERR_SUCCESS;
 820 }
 821 
 822 static enum ndr_err_code ndr_pull_winreg_OpenHKPD(struct ndr_pull *ndr, int flags, struct winreg_OpenHKPD *r)
     /* [<][>][^][v][top][bottom][index][help] */
 823 {
 824         uint32_t _ptr_system_name;
 825         TALLOC_CTX *_mem_save_system_name_0;
 826         TALLOC_CTX *_mem_save_handle_0;
 827         if (flags & NDR_IN) {
 828                 ZERO_STRUCT(r->out);
 829 
 830                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
 831                 if (_ptr_system_name) {
 832                         NDR_PULL_ALLOC(ndr, r->in.system_name);
 833                 } else {
 834                         r->in.system_name = NULL;
 835                 }
 836                 if (r->in.system_name) {
 837                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 838                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
 839                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
 840                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
 841                 }
 842                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
 843                 NDR_PULL_ALLOC(ndr, r->out.handle);
 844                 ZERO_STRUCTP(r->out.handle);
 845         }
 846         if (flags & NDR_OUT) {
 847                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 848                         NDR_PULL_ALLOC(ndr, r->out.handle);
 849                 }
 850                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 851                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
 852                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 853                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 854                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 855         }
 856         return NDR_ERR_SUCCESS;
 857 }
 858 
 859 _PUBLIC_ void ndr_print_winreg_OpenHKPD(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKPD *r)
     /* [<][>][^][v][top][bottom][index][help] */
 860 {
 861         ndr_print_struct(ndr, name, "winreg_OpenHKPD");
 862         ndr->depth++;
 863         if (flags & NDR_SET_VALUES) {
 864                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 865         }
 866         if (flags & NDR_IN) {
 867                 ndr_print_struct(ndr, "in", "winreg_OpenHKPD");
 868                 ndr->depth++;
 869                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
 870                 ndr->depth++;
 871                 if (r->in.system_name) {
 872                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
 873                 }
 874                 ndr->depth--;
 875                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
 876                 ndr->depth--;
 877         }
 878         if (flags & NDR_OUT) {
 879                 ndr_print_struct(ndr, "out", "winreg_OpenHKPD");
 880                 ndr->depth++;
 881                 ndr_print_ptr(ndr, "handle", r->out.handle);
 882                 ndr->depth++;
 883                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
 884                 ndr->depth--;
 885                 ndr_print_WERROR(ndr, "result", r->out.result);
 886                 ndr->depth--;
 887         }
 888         ndr->depth--;
 889 }
 890 
 891 static enum ndr_err_code ndr_push_winreg_OpenHKU(struct ndr_push *ndr, int flags, const struct winreg_OpenHKU *r)
     /* [<][>][^][v][top][bottom][index][help] */
 892 {
 893         if (flags & NDR_IN) {
 894                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
 895                 if (r->in.system_name) {
 896                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
 897                 }
 898                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
 899         }
 900         if (flags & NDR_OUT) {
 901                 if (r->out.handle == NULL) {
 902                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 903                 }
 904                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 905                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 906         }
 907         return NDR_ERR_SUCCESS;
 908 }
 909 
 910 static enum ndr_err_code ndr_pull_winreg_OpenHKU(struct ndr_pull *ndr, int flags, struct winreg_OpenHKU *r)
     /* [<][>][^][v][top][bottom][index][help] */
 911 {
 912         uint32_t _ptr_system_name;
 913         TALLOC_CTX *_mem_save_system_name_0;
 914         TALLOC_CTX *_mem_save_handle_0;
 915         if (flags & NDR_IN) {
 916                 ZERO_STRUCT(r->out);
 917 
 918                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
 919                 if (_ptr_system_name) {
 920                         NDR_PULL_ALLOC(ndr, r->in.system_name);
 921                 } else {
 922                         r->in.system_name = NULL;
 923                 }
 924                 if (r->in.system_name) {
 925                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 926                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
 927                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
 928                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
 929                 }
 930                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
 931                 NDR_PULL_ALLOC(ndr, r->out.handle);
 932                 ZERO_STRUCTP(r->out.handle);
 933         }
 934         if (flags & NDR_OUT) {
 935                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 936                         NDR_PULL_ALLOC(ndr, r->out.handle);
 937                 }
 938                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
 939                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
 940                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 941                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
 942                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 943         }
 944         return NDR_ERR_SUCCESS;
 945 }
 946 
 947 _PUBLIC_ void ndr_print_winreg_OpenHKU(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKU *r)
     /* [<][>][^][v][top][bottom][index][help] */
 948 {
 949         ndr_print_struct(ndr, name, "winreg_OpenHKU");
 950         ndr->depth++;
 951         if (flags & NDR_SET_VALUES) {
 952                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
 953         }
 954         if (flags & NDR_IN) {
 955                 ndr_print_struct(ndr, "in", "winreg_OpenHKU");
 956                 ndr->depth++;
 957                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
 958                 ndr->depth++;
 959                 if (r->in.system_name) {
 960                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
 961                 }
 962                 ndr->depth--;
 963                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
 964                 ndr->depth--;
 965         }
 966         if (flags & NDR_OUT) {
 967                 ndr_print_struct(ndr, "out", "winreg_OpenHKU");
 968                 ndr->depth++;
 969                 ndr_print_ptr(ndr, "handle", r->out.handle);
 970                 ndr->depth++;
 971                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
 972                 ndr->depth--;
 973                 ndr_print_WERROR(ndr, "result", r->out.result);
 974                 ndr->depth--;
 975         }
 976         ndr->depth--;
 977 }
 978 
 979 _PUBLIC_ enum ndr_err_code ndr_push_winreg_CloseKey(struct ndr_push *ndr, int flags, const struct winreg_CloseKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
 980 {
 981         if (flags & NDR_IN) {
 982                 if (r->in.handle == NULL) {
 983                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 984                 }
 985                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
 986         }
 987         if (flags & NDR_OUT) {
 988                 if (r->out.handle == NULL) {
 989                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 990                 }
 991                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
 992                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 993         }
 994         return NDR_ERR_SUCCESS;
 995 }
 996 
 997 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_CloseKey(struct ndr_pull *ndr, int flags, struct winreg_CloseKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
 998 {
 999         TALLOC_CTX *_mem_save_handle_0;
1000         if (flags & NDR_IN) {
1001                 ZERO_STRUCT(r->out);
1002 
1003                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1004                         NDR_PULL_ALLOC(ndr, r->in.handle);
1005                 }
1006                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1007                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1008                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1009                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1010                 NDR_PULL_ALLOC(ndr, r->out.handle);
1011                 *r->out.handle = *r->in.handle;
1012         }
1013         if (flags & NDR_OUT) {
1014                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1015                         NDR_PULL_ALLOC(ndr, r->out.handle);
1016                 }
1017                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1018                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
1019                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1020                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1021                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1022         }
1023         return NDR_ERR_SUCCESS;
1024 }
1025 
1026 _PUBLIC_ void ndr_print_winreg_CloseKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_CloseKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
1027 {
1028         ndr_print_struct(ndr, name, "winreg_CloseKey");
1029         ndr->depth++;
1030         if (flags & NDR_SET_VALUES) {
1031                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1032         }
1033         if (flags & NDR_IN) {
1034                 ndr_print_struct(ndr, "in", "winreg_CloseKey");
1035                 ndr->depth++;
1036                 ndr_print_ptr(ndr, "handle", r->in.handle);
1037                 ndr->depth++;
1038                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1039                 ndr->depth--;
1040                 ndr->depth--;
1041         }
1042         if (flags & NDR_OUT) {
1043                 ndr_print_struct(ndr, "out", "winreg_CloseKey");
1044                 ndr->depth++;
1045                 ndr_print_ptr(ndr, "handle", r->out.handle);
1046                 ndr->depth++;
1047                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
1048                 ndr->depth--;
1049                 ndr_print_WERROR(ndr, "result", r->out.result);
1050                 ndr->depth--;
1051         }
1052         ndr->depth--;
1053 }
1054 
1055 _PUBLIC_ enum ndr_err_code ndr_push_winreg_CreateKey(struct ndr_push *ndr, int flags, const struct winreg_CreateKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
1056 {
1057         if (flags & NDR_IN) {
1058                 if (r->in.handle == NULL) {
1059                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1060                 }
1061                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1062                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
1063                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.keyclass));
1064                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.options));
1065                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
1066                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.secdesc));
1067                 if (r->in.secdesc) {
1068                         NDR_CHECK(ndr_push_winreg_SecBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.secdesc));
1069                 }
1070                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.action_taken));
1071                 if (r->in.action_taken) {
1072                         NDR_CHECK(ndr_push_winreg_CreateAction(ndr, NDR_SCALARS, *r->in.action_taken));
1073                 }
1074         }
1075         if (flags & NDR_OUT) {
1076                 if (r->out.new_handle == NULL) {
1077                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1078                 }
1079                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.new_handle));
1080                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.action_taken));
1081                 if (r->out.action_taken) {
1082                         NDR_CHECK(ndr_push_winreg_CreateAction(ndr, NDR_SCALARS, *r->out.action_taken));
1083                 }
1084                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1085         }
1086         return NDR_ERR_SUCCESS;
1087 }
1088 
1089 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_CreateKey(struct ndr_pull *ndr, int flags, struct winreg_CreateKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
1090 {
1091         uint32_t _ptr_secdesc;
1092         uint32_t _ptr_action_taken;
1093         TALLOC_CTX *_mem_save_handle_0;
1094         TALLOC_CTX *_mem_save_secdesc_0;
1095         TALLOC_CTX *_mem_save_new_handle_0;
1096         TALLOC_CTX *_mem_save_action_taken_0;
1097         if (flags & NDR_IN) {
1098                 ZERO_STRUCT(r->out);
1099 
1100                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1101                         NDR_PULL_ALLOC(ndr, r->in.handle);
1102                 }
1103                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1104                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1105                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1106                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1107                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
1108                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.keyclass));
1109                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.options));
1110                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
1111                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_secdesc));
1112                 if (_ptr_secdesc) {
1113                         NDR_PULL_ALLOC(ndr, r->in.secdesc);
1114                 } else {
1115                         r->in.secdesc = NULL;
1116                 }
1117                 if (r->in.secdesc) {
1118                         _mem_save_secdesc_0 = NDR_PULL_GET_MEM_CTX(ndr);
1119                         NDR_PULL_SET_MEM_CTX(ndr, r->in.secdesc, 0);
1120                         NDR_CHECK(ndr_pull_winreg_SecBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.secdesc));
1121                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdesc_0, 0);
1122                 }
1123                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_action_taken));
1124                 if (_ptr_action_taken) {
1125                         NDR_PULL_ALLOC(ndr, r->in.action_taken);
1126                 } else {
1127                         r->in.action_taken = NULL;
1128                 }
1129                 if (r->in.action_taken) {
1130                         _mem_save_action_taken_0 = NDR_PULL_GET_MEM_CTX(ndr);
1131                         NDR_PULL_SET_MEM_CTX(ndr, r->in.action_taken, 0);
1132                         NDR_CHECK(ndr_pull_winreg_CreateAction(ndr, NDR_SCALARS, r->in.action_taken));
1133                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_action_taken_0, 0);
1134                 }
1135                 NDR_PULL_ALLOC(ndr, r->out.new_handle);
1136                 ZERO_STRUCTP(r->out.new_handle);
1137         }
1138         if (flags & NDR_OUT) {
1139                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1140                         NDR_PULL_ALLOC(ndr, r->out.new_handle);
1141                 }
1142                 _mem_save_new_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1143                 NDR_PULL_SET_MEM_CTX(ndr, r->out.new_handle, LIBNDR_FLAG_REF_ALLOC);
1144                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.new_handle));
1145                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_new_handle_0, LIBNDR_FLAG_REF_ALLOC);
1146                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_action_taken));
1147                 if (_ptr_action_taken) {
1148                         NDR_PULL_ALLOC(ndr, r->out.action_taken);
1149                 } else {
1150                         r->out.action_taken = NULL;
1151                 }
1152                 if (r->out.action_taken) {
1153                         _mem_save_action_taken_0 = NDR_PULL_GET_MEM_CTX(ndr);
1154                         NDR_PULL_SET_MEM_CTX(ndr, r->out.action_taken, 0);
1155                         NDR_CHECK(ndr_pull_winreg_CreateAction(ndr, NDR_SCALARS, r->out.action_taken));
1156                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_action_taken_0, 0);
1157                 }
1158                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1159         }
1160         return NDR_ERR_SUCCESS;
1161 }
1162 
1163 _PUBLIC_ void ndr_print_winreg_CreateKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_CreateKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
1164 {
1165         ndr_print_struct(ndr, name, "winreg_CreateKey");
1166         ndr->depth++;
1167         if (flags & NDR_SET_VALUES) {
1168                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1169         }
1170         if (flags & NDR_IN) {
1171                 ndr_print_struct(ndr, "in", "winreg_CreateKey");
1172                 ndr->depth++;
1173                 ndr_print_ptr(ndr, "handle", r->in.handle);
1174                 ndr->depth++;
1175                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1176                 ndr->depth--;
1177                 ndr_print_winreg_String(ndr, "name", &r->in.name);
1178                 ndr_print_winreg_String(ndr, "keyclass", &r->in.keyclass);
1179                 ndr_print_uint32(ndr, "options", r->in.options);
1180                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
1181                 ndr_print_ptr(ndr, "secdesc", r->in.secdesc);
1182                 ndr->depth++;
1183                 if (r->in.secdesc) {
1184                         ndr_print_winreg_SecBuf(ndr, "secdesc", r->in.secdesc);
1185                 }
1186                 ndr->depth--;
1187                 ndr_print_ptr(ndr, "action_taken", r->in.action_taken);
1188                 ndr->depth++;
1189                 if (r->in.action_taken) {
1190                         ndr_print_winreg_CreateAction(ndr, "action_taken", *r->in.action_taken);
1191                 }
1192                 ndr->depth--;
1193                 ndr->depth--;
1194         }
1195         if (flags & NDR_OUT) {
1196                 ndr_print_struct(ndr, "out", "winreg_CreateKey");
1197                 ndr->depth++;
1198                 ndr_print_ptr(ndr, "new_handle", r->out.new_handle);
1199                 ndr->depth++;
1200                 ndr_print_policy_handle(ndr, "new_handle", r->out.new_handle);
1201                 ndr->depth--;
1202                 ndr_print_ptr(ndr, "action_taken", r->out.action_taken);
1203                 ndr->depth++;
1204                 if (r->out.action_taken) {
1205                         ndr_print_winreg_CreateAction(ndr, "action_taken", *r->out.action_taken);
1206                 }
1207                 ndr->depth--;
1208                 ndr_print_WERROR(ndr, "result", r->out.result);
1209                 ndr->depth--;
1210         }
1211         ndr->depth--;
1212 }
1213 
1214 _PUBLIC_ enum ndr_err_code ndr_push_winreg_DeleteKey(struct ndr_push *ndr, int flags, const struct winreg_DeleteKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
1215 {
1216         if (flags & NDR_IN) {
1217                 if (r->in.handle == NULL) {
1218                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1219                 }
1220                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1221                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.key));
1222         }
1223         if (flags & NDR_OUT) {
1224                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1225         }
1226         return NDR_ERR_SUCCESS;
1227 }
1228 
1229 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_DeleteKey(struct ndr_pull *ndr, int flags, struct winreg_DeleteKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
1230 {
1231         TALLOC_CTX *_mem_save_handle_0;
1232         if (flags & NDR_IN) {
1233                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1234                         NDR_PULL_ALLOC(ndr, r->in.handle);
1235                 }
1236                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1237                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1238                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1239                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1240                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.key));
1241         }
1242         if (flags & NDR_OUT) {
1243                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1244         }
1245         return NDR_ERR_SUCCESS;
1246 }
1247 
1248 _PUBLIC_ void ndr_print_winreg_DeleteKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_DeleteKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
1249 {
1250         ndr_print_struct(ndr, name, "winreg_DeleteKey");
1251         ndr->depth++;
1252         if (flags & NDR_SET_VALUES) {
1253                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1254         }
1255         if (flags & NDR_IN) {
1256                 ndr_print_struct(ndr, "in", "winreg_DeleteKey");
1257                 ndr->depth++;
1258                 ndr_print_ptr(ndr, "handle", r->in.handle);
1259                 ndr->depth++;
1260                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1261                 ndr->depth--;
1262                 ndr_print_winreg_String(ndr, "key", &r->in.key);
1263                 ndr->depth--;
1264         }
1265         if (flags & NDR_OUT) {
1266                 ndr_print_struct(ndr, "out", "winreg_DeleteKey");
1267                 ndr->depth++;
1268                 ndr_print_WERROR(ndr, "result", r->out.result);
1269                 ndr->depth--;
1270         }
1271         ndr->depth--;
1272 }
1273 
1274 static enum ndr_err_code ndr_push_winreg_DeleteValue(struct ndr_push *ndr, int flags, const struct winreg_DeleteValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
1275 {
1276         if (flags & NDR_IN) {
1277                 if (r->in.handle == NULL) {
1278                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1279                 }
1280                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1281                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.value));
1282         }
1283         if (flags & NDR_OUT) {
1284                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1285         }
1286         return NDR_ERR_SUCCESS;
1287 }
1288 
1289 static enum ndr_err_code ndr_pull_winreg_DeleteValue(struct ndr_pull *ndr, int flags, struct winreg_DeleteValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
1290 {
1291         TALLOC_CTX *_mem_save_handle_0;
1292         if (flags & NDR_IN) {
1293                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1294                         NDR_PULL_ALLOC(ndr, r->in.handle);
1295                 }
1296                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1297                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1298                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1299                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1300                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.value));
1301         }
1302         if (flags & NDR_OUT) {
1303                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1304         }
1305         return NDR_ERR_SUCCESS;
1306 }
1307 
1308 _PUBLIC_ void ndr_print_winreg_DeleteValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_DeleteValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
1309 {
1310         ndr_print_struct(ndr, name, "winreg_DeleteValue");
1311         ndr->depth++;
1312         if (flags & NDR_SET_VALUES) {
1313                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1314         }
1315         if (flags & NDR_IN) {
1316                 ndr_print_struct(ndr, "in", "winreg_DeleteValue");
1317                 ndr->depth++;
1318                 ndr_print_ptr(ndr, "handle", r->in.handle);
1319                 ndr->depth++;
1320                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1321                 ndr->depth--;
1322                 ndr_print_winreg_String(ndr, "value", &r->in.value);
1323                 ndr->depth--;
1324         }
1325         if (flags & NDR_OUT) {
1326                 ndr_print_struct(ndr, "out", "winreg_DeleteValue");
1327                 ndr->depth++;
1328                 ndr_print_WERROR(ndr, "result", r->out.result);
1329                 ndr->depth--;
1330         }
1331         ndr->depth--;
1332 }
1333 
1334 _PUBLIC_ enum ndr_err_code ndr_push_winreg_EnumKey(struct ndr_push *ndr, int flags, const struct winreg_EnumKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
1335 {
1336         if (flags & NDR_IN) {
1337                 if (r->in.handle == NULL) {
1338                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1339                 }
1340                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1341                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.enum_index));
1342                 if (r->in.name == NULL) {
1343                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1344                 }
1345                 NDR_CHECK(ndr_push_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
1346                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.keyclass));
1347                 if (r->in.keyclass) {
1348                         NDR_CHECK(ndr_push_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.keyclass));
1349                 }
1350                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.last_changed_time));
1351                 if (r->in.last_changed_time) {
1352                         NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, *r->in.last_changed_time));
1353                 }
1354         }
1355         if (flags & NDR_OUT) {
1356                 if (r->out.name == NULL) {
1357                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1358                 }
1359                 NDR_CHECK(ndr_push_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.name));
1360                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.keyclass));
1361                 if (r->out.keyclass) {
1362                         NDR_CHECK(ndr_push_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.keyclass));
1363                 }
1364                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.last_changed_time));
1365                 if (r->out.last_changed_time) {
1366                         NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, *r->out.last_changed_time));
1367                 }
1368                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1369         }
1370         return NDR_ERR_SUCCESS;
1371 }
1372 
1373 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_EnumKey(struct ndr_pull *ndr, int flags, struct winreg_EnumKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
1374 {
1375         uint32_t _ptr_keyclass;
1376         uint32_t _ptr_last_changed_time;
1377         TALLOC_CTX *_mem_save_handle_0;
1378         TALLOC_CTX *_mem_save_name_0;
1379         TALLOC_CTX *_mem_save_keyclass_0;
1380         TALLOC_CTX *_mem_save_last_changed_time_0;
1381         if (flags & NDR_IN) {
1382                 ZERO_STRUCT(r->out);
1383 
1384                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1385                         NDR_PULL_ALLOC(ndr, r->in.handle);
1386                 }
1387                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1388                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1389                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1390                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1391                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.enum_index));
1392                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1393                         NDR_PULL_ALLOC(ndr, r->in.name);
1394                 }
1395                 _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1396                 NDR_PULL_SET_MEM_CTX(ndr, r->in.name, LIBNDR_FLAG_REF_ALLOC);
1397                 NDR_CHECK(ndr_pull_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
1398                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
1399                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_keyclass));
1400                 if (_ptr_keyclass) {
1401                         NDR_PULL_ALLOC(ndr, r->in.keyclass);
1402                 } else {
1403                         r->in.keyclass = NULL;
1404                 }
1405                 if (r->in.keyclass) {
1406                         _mem_save_keyclass_0 = NDR_PULL_GET_MEM_CTX(ndr);
1407                         NDR_PULL_SET_MEM_CTX(ndr, r->in.keyclass, 0);
1408                         NDR_CHECK(ndr_pull_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.keyclass));
1409                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_keyclass_0, 0);
1410                 }
1411                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_last_changed_time));
1412                 if (_ptr_last_changed_time) {
1413                         NDR_PULL_ALLOC(ndr, r->in.last_changed_time);
1414                 } else {
1415                         r->in.last_changed_time = NULL;
1416                 }
1417                 if (r->in.last_changed_time) {
1418                         _mem_save_last_changed_time_0 = NDR_PULL_GET_MEM_CTX(ndr);
1419                         NDR_PULL_SET_MEM_CTX(ndr, r->in.last_changed_time, 0);
1420                         NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, r->in.last_changed_time));
1421                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_last_changed_time_0, 0);
1422                 }
1423                 NDR_PULL_ALLOC(ndr, r->out.name);
1424                 *r->out.name = *r->in.name;
1425         }
1426         if (flags & NDR_OUT) {
1427                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1428                         NDR_PULL_ALLOC(ndr, r->out.name);
1429                 }
1430                 _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1431                 NDR_PULL_SET_MEM_CTX(ndr, r->out.name, LIBNDR_FLAG_REF_ALLOC);
1432                 NDR_CHECK(ndr_pull_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.name));
1433                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
1434                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_keyclass));
1435                 if (_ptr_keyclass) {
1436                         NDR_PULL_ALLOC(ndr, r->out.keyclass);
1437                 } else {
1438                         r->out.keyclass = NULL;
1439                 }
1440                 if (r->out.keyclass) {
1441                         _mem_save_keyclass_0 = NDR_PULL_GET_MEM_CTX(ndr);
1442                         NDR_PULL_SET_MEM_CTX(ndr, r->out.keyclass, 0);
1443                         NDR_CHECK(ndr_pull_winreg_StringBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.keyclass));
1444                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_keyclass_0, 0);
1445                 }
1446                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_last_changed_time));
1447                 if (_ptr_last_changed_time) {
1448                         NDR_PULL_ALLOC(ndr, r->out.last_changed_time);
1449                 } else {
1450                         r->out.last_changed_time = NULL;
1451                 }
1452                 if (r->out.last_changed_time) {
1453                         _mem_save_last_changed_time_0 = NDR_PULL_GET_MEM_CTX(ndr);
1454                         NDR_PULL_SET_MEM_CTX(ndr, r->out.last_changed_time, 0);
1455                         NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, r->out.last_changed_time));
1456                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_last_changed_time_0, 0);
1457                 }
1458                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1459         }
1460         return NDR_ERR_SUCCESS;
1461 }
1462 
1463 _PUBLIC_ void ndr_print_winreg_EnumKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_EnumKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
1464 {
1465         ndr_print_struct(ndr, name, "winreg_EnumKey");
1466         ndr->depth++;
1467         if (flags & NDR_SET_VALUES) {
1468                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1469         }
1470         if (flags & NDR_IN) {
1471                 ndr_print_struct(ndr, "in", "winreg_EnumKey");
1472                 ndr->depth++;
1473                 ndr_print_ptr(ndr, "handle", r->in.handle);
1474                 ndr->depth++;
1475                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1476                 ndr->depth--;
1477                 ndr_print_uint32(ndr, "enum_index", r->in.enum_index);
1478                 ndr_print_ptr(ndr, "name", r->in.name);
1479                 ndr->depth++;
1480                 ndr_print_winreg_StringBuf(ndr, "name", r->in.name);
1481                 ndr->depth--;
1482                 ndr_print_ptr(ndr, "keyclass", r->in.keyclass);
1483                 ndr->depth++;
1484                 if (r->in.keyclass) {
1485                         ndr_print_winreg_StringBuf(ndr, "keyclass", r->in.keyclass);
1486                 }
1487                 ndr->depth--;
1488                 ndr_print_ptr(ndr, "last_changed_time", r->in.last_changed_time);
1489                 ndr->depth++;
1490                 if (r->in.last_changed_time) {
1491                         ndr_print_NTTIME(ndr, "last_changed_time", *r->in.last_changed_time);
1492                 }
1493                 ndr->depth--;
1494                 ndr->depth--;
1495         }
1496         if (flags & NDR_OUT) {
1497                 ndr_print_struct(ndr, "out", "winreg_EnumKey");
1498                 ndr->depth++;
1499                 ndr_print_ptr(ndr, "name", r->out.name);
1500                 ndr->depth++;
1501                 ndr_print_winreg_StringBuf(ndr, "name", r->out.name);
1502                 ndr->depth--;
1503                 ndr_print_ptr(ndr, "keyclass", r->out.keyclass);
1504                 ndr->depth++;
1505                 if (r->out.keyclass) {
1506                         ndr_print_winreg_StringBuf(ndr, "keyclass", r->out.keyclass);
1507                 }
1508                 ndr->depth--;
1509                 ndr_print_ptr(ndr, "last_changed_time", r->out.last_changed_time);
1510                 ndr->depth++;
1511                 if (r->out.last_changed_time) {
1512                         ndr_print_NTTIME(ndr, "last_changed_time", *r->out.last_changed_time);
1513                 }
1514                 ndr->depth--;
1515                 ndr_print_WERROR(ndr, "result", r->out.result);
1516                 ndr->depth--;
1517         }
1518         ndr->depth--;
1519 }
1520 
1521 _PUBLIC_ enum ndr_err_code ndr_push_winreg_EnumValue(struct ndr_push *ndr, int flags, const struct winreg_EnumValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
1522 {
1523         if (flags & NDR_IN) {
1524                 if (r->in.handle == NULL) {
1525                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1526                 }
1527                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1528                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.enum_index));
1529                 if (r->in.name == NULL) {
1530                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1531                 }
1532                 NDR_CHECK(ndr_push_winreg_ValNameBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
1533                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.type));
1534                 if (r->in.type) {
1535                         NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->in.type));
1536                 }
1537                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.value));
1538                 if (r->in.value) {
1539                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.size));
1540                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1541                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.length));
1542                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.value, *r->in.length));
1543                 }
1544                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.size));
1545                 if (r->in.size) {
1546                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.size));
1547                 }
1548                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.length));
1549                 if (r->in.length) {
1550                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.length));
1551                 }
1552         }
1553         if (flags & NDR_OUT) {
1554                 if (r->out.name == NULL) {
1555                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1556                 }
1557                 NDR_CHECK(ndr_push_winreg_ValNameBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.name));
1558                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.type));
1559                 if (r->out.type) {
1560                         NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->out.type));
1561                 }
1562                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.value));
1563                 if (r->out.value) {
1564                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.size));
1565                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1566                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.length));
1567                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.value, *r->out.length));
1568                 }
1569                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.size));
1570                 if (r->out.size) {
1571                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.size));
1572                 }
1573                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.length));
1574                 if (r->out.length) {
1575                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.length));
1576                 }
1577                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1578         }
1579         return NDR_ERR_SUCCESS;
1580 }
1581 
1582 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_EnumValue(struct ndr_pull *ndr, int flags, struct winreg_EnumValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
1583 {
1584         uint32_t _ptr_type;
1585         uint32_t _ptr_value;
1586         uint32_t _ptr_size;
1587         uint32_t _ptr_length;
1588         TALLOC_CTX *_mem_save_handle_0;
1589         TALLOC_CTX *_mem_save_name_0;
1590         TALLOC_CTX *_mem_save_type_0;
1591         TALLOC_CTX *_mem_save_value_0;
1592         TALLOC_CTX *_mem_save_size_0;
1593         TALLOC_CTX *_mem_save_length_0;
1594         if (flags & NDR_IN) {
1595                 ZERO_STRUCT(r->out);
1596 
1597                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1598                         NDR_PULL_ALLOC(ndr, r->in.handle);
1599                 }
1600                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1601                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1602                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1603                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1604                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.enum_index));
1605                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1606                         NDR_PULL_ALLOC(ndr, r->in.name);
1607                 }
1608                 _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1609                 NDR_PULL_SET_MEM_CTX(ndr, r->in.name, LIBNDR_FLAG_REF_ALLOC);
1610                 NDR_CHECK(ndr_pull_winreg_ValNameBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
1611                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
1612                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_type));
1613                 if (_ptr_type) {
1614                         NDR_PULL_ALLOC(ndr, r->in.type);
1615                 } else {
1616                         r->in.type = NULL;
1617                 }
1618                 if (r->in.type) {
1619                         _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
1620                         NDR_PULL_SET_MEM_CTX(ndr, r->in.type, 0);
1621                         NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->in.type));
1622                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, 0);
1623                 }
1624                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value));
1625                 if (_ptr_value) {
1626                         NDR_PULL_ALLOC(ndr, r->in.value);
1627                 } else {
1628                         r->in.value = NULL;
1629                 }
1630                 if (r->in.value) {
1631                         _mem_save_value_0 = NDR_PULL_GET_MEM_CTX(ndr);
1632                         NDR_PULL_SET_MEM_CTX(ndr, r->in.value, 0);
1633                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.value));
1634                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.value));
1635                         if (ndr_get_array_length(ndr, &r->in.value) > ndr_get_array_size(ndr, &r->in.value)) {
1636                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.value), ndr_get_array_length(ndr, &r->in.value));
1637                         }
1638                         NDR_PULL_ALLOC_N(ndr, r->in.value, ndr_get_array_size(ndr, &r->in.value));
1639                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.value, ndr_get_array_length(ndr, &r->in.value)));
1640                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_0, 0);
1641                 }
1642                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_size));
1643                 if (_ptr_size) {
1644                         NDR_PULL_ALLOC(ndr, r->in.size);
1645                 } else {
1646                         r->in.size = NULL;
1647                 }
1648                 if (r->in.size) {
1649                         _mem_save_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
1650                         NDR_PULL_SET_MEM_CTX(ndr, r->in.size, 0);
1651                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.size));
1652                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_size_0, 0);
1653                 }
1654                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_length));
1655                 if (_ptr_length) {
1656                         NDR_PULL_ALLOC(ndr, r->in.length);
1657                 } else {
1658                         r->in.length = NULL;
1659                 }
1660                 if (r->in.length) {
1661                         _mem_save_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
1662                         NDR_PULL_SET_MEM_CTX(ndr, r->in.length, 0);
1663                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.length));
1664                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_length_0, 0);
1665                 }
1666                 NDR_PULL_ALLOC(ndr, r->out.name);
1667                 *r->out.name = *r->in.name;
1668                 if (r->in.value) {
1669                         if (r->in.size == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for size_is()");
1670                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.value, *r->in.size));
1671                 }
1672                 if (r->in.value) {
1673                         if (r->in.length == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for length_is()");
1674                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.value, *r->in.length));
1675                 }
1676         }
1677         if (flags & NDR_OUT) {
1678                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1679                         NDR_PULL_ALLOC(ndr, r->out.name);
1680                 }
1681                 _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1682                 NDR_PULL_SET_MEM_CTX(ndr, r->out.name, LIBNDR_FLAG_REF_ALLOC);
1683                 NDR_CHECK(ndr_pull_winreg_ValNameBuf(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.name));
1684                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
1685                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_type));
1686                 if (_ptr_type) {
1687                         NDR_PULL_ALLOC(ndr, r->out.type);
1688                 } else {
1689                         r->out.type = NULL;
1690                 }
1691                 if (r->out.type) {
1692                         _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
1693                         NDR_PULL_SET_MEM_CTX(ndr, r->out.type, 0);
1694                         NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->out.type));
1695                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, 0);
1696                 }
1697                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_value));
1698                 if (_ptr_value) {
1699                         NDR_PULL_ALLOC(ndr, r->out.value);
1700                 } else {
1701                         r->out.value = NULL;
1702                 }
1703                 if (r->out.value) {
1704                         _mem_save_value_0 = NDR_PULL_GET_MEM_CTX(ndr);
1705                         NDR_PULL_SET_MEM_CTX(ndr, r->out.value, 0);
1706                         NDR_CHECK(ndr_pull_array_size(ndr, &r->out.value));
1707                         NDR_CHECK(ndr_pull_array_length(ndr, &r->out.value));
1708                         if (ndr_get_array_length(ndr, &r->out.value) > ndr_get_array_size(ndr, &r->out.value)) {
1709                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.value), ndr_get_array_length(ndr, &r->out.value));
1710                         }
1711                         NDR_PULL_ALLOC_N(ndr, r->out.value, ndr_get_array_size(ndr, &r->out.value));
1712                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.value, ndr_get_array_length(ndr, &r->out.value)));
1713                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_0, 0);
1714                 }
1715                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_size));
1716                 if (_ptr_size) {
1717                         NDR_PULL_ALLOC(ndr, r->out.size);
1718                 } else {
1719                         r->out.size = NULL;
1720                 }
1721                 if (r->out.size) {
1722                         _mem_save_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
1723                         NDR_PULL_SET_MEM_CTX(ndr, r->out.size, 0);
1724                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.size));
1725                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_size_0, 0);
1726                 }
1727                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_length));
1728                 if (_ptr_length) {
1729                         NDR_PULL_ALLOC(ndr, r->out.length);
1730                 } else {
1731                         r->out.length = NULL;
1732                 }
1733                 if (r->out.length) {
1734                         _mem_save_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
1735                         NDR_PULL_SET_MEM_CTX(ndr, r->out.length, 0);
1736                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.length));
1737                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_length_0, 0);
1738                 }
1739                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1740                 if (r->out.value) {
1741                         if (r->out.size == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for size_is()");
1742                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.value, *r->out.size));
1743                 }
1744                 if (r->out.value) {
1745                         if (r->out.length == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for length_is()");
1746                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.value, *r->out.length));
1747                 }
1748         }
1749         return NDR_ERR_SUCCESS;
1750 }
1751 
1752 _PUBLIC_ void ndr_print_winreg_EnumValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_EnumValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
1753 {
1754         ndr_print_struct(ndr, name, "winreg_EnumValue");
1755         ndr->depth++;
1756         if (flags & NDR_SET_VALUES) {
1757                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1758         }
1759         if (flags & NDR_IN) {
1760                 ndr_print_struct(ndr, "in", "winreg_EnumValue");
1761                 ndr->depth++;
1762                 ndr_print_ptr(ndr, "handle", r->in.handle);
1763                 ndr->depth++;
1764                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1765                 ndr->depth--;
1766                 ndr_print_uint32(ndr, "enum_index", r->in.enum_index);
1767                 ndr_print_ptr(ndr, "name", r->in.name);
1768                 ndr->depth++;
1769                 ndr_print_winreg_ValNameBuf(ndr, "name", r->in.name);
1770                 ndr->depth--;
1771                 ndr_print_ptr(ndr, "type", r->in.type);
1772                 ndr->depth++;
1773                 if (r->in.type) {
1774                         ndr_print_winreg_Type(ndr, "type", *r->in.type);
1775                 }
1776                 ndr->depth--;
1777                 ndr_print_ptr(ndr, "value", r->in.value);
1778                 ndr->depth++;
1779                 if (r->in.value) {
1780                         if (r->in.length == NULL) return;
1781                         ndr_print_array_uint8(ndr, "value", r->in.value, *r->in.length);
1782                 }
1783                 ndr->depth--;
1784                 ndr_print_ptr(ndr, "size", r->in.size);
1785                 ndr->depth++;
1786                 if (r->in.size) {
1787                         ndr_print_uint32(ndr, "size", *r->in.size);
1788                 }
1789                 ndr->depth--;
1790                 ndr_print_ptr(ndr, "length", r->in.length);
1791                 ndr->depth++;
1792                 if (r->in.length) {
1793                         ndr_print_uint32(ndr, "length", *r->in.length);
1794                 }
1795                 ndr->depth--;
1796                 ndr->depth--;
1797         }
1798         if (flags & NDR_OUT) {
1799                 ndr_print_struct(ndr, "out", "winreg_EnumValue");
1800                 ndr->depth++;
1801                 ndr_print_ptr(ndr, "name", r->out.name);
1802                 ndr->depth++;
1803                 ndr_print_winreg_ValNameBuf(ndr, "name", r->out.name);
1804                 ndr->depth--;
1805                 ndr_print_ptr(ndr, "type", r->out.type);
1806                 ndr->depth++;
1807                 if (r->out.type) {
1808                         ndr_print_winreg_Type(ndr, "type", *r->out.type);
1809                 }
1810                 ndr->depth--;
1811                 ndr_print_ptr(ndr, "value", r->out.value);
1812                 ndr->depth++;
1813                 if (r->out.value) {
1814                         if (r->out.length == NULL) return;
1815                         ndr_print_array_uint8(ndr, "value", r->out.value, *r->out.length);
1816                 }
1817                 ndr->depth--;
1818                 ndr_print_ptr(ndr, "size", r->out.size);
1819                 ndr->depth++;
1820                 if (r->out.size) {
1821                         ndr_print_uint32(ndr, "size", *r->out.size);
1822                 }
1823                 ndr->depth--;
1824                 ndr_print_ptr(ndr, "length", r->out.length);
1825                 ndr->depth++;
1826                 if (r->out.length) {
1827                         ndr_print_uint32(ndr, "length", *r->out.length);
1828                 }
1829                 ndr->depth--;
1830                 ndr_print_WERROR(ndr, "result", r->out.result);
1831                 ndr->depth--;
1832         }
1833         ndr->depth--;
1834 }
1835 
1836 _PUBLIC_ enum ndr_err_code ndr_push_winreg_FlushKey(struct ndr_push *ndr, int flags, const struct winreg_FlushKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
1837 {
1838         if (flags & NDR_IN) {
1839                 if (r->in.handle == NULL) {
1840                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1841                 }
1842                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1843         }
1844         if (flags & NDR_OUT) {
1845                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1846         }
1847         return NDR_ERR_SUCCESS;
1848 }
1849 
1850 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_FlushKey(struct ndr_pull *ndr, int flags, struct winreg_FlushKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
1851 {
1852         TALLOC_CTX *_mem_save_handle_0;
1853         if (flags & NDR_IN) {
1854                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1855                         NDR_PULL_ALLOC(ndr, r->in.handle);
1856                 }
1857                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1858                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1859                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1860                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1861         }
1862         if (flags & NDR_OUT) {
1863                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1864         }
1865         return NDR_ERR_SUCCESS;
1866 }
1867 
1868 _PUBLIC_ void ndr_print_winreg_FlushKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_FlushKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
1869 {
1870         ndr_print_struct(ndr, name, "winreg_FlushKey");
1871         ndr->depth++;
1872         if (flags & NDR_SET_VALUES) {
1873                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1874         }
1875         if (flags & NDR_IN) {
1876                 ndr_print_struct(ndr, "in", "winreg_FlushKey");
1877                 ndr->depth++;
1878                 ndr_print_ptr(ndr, "handle", r->in.handle);
1879                 ndr->depth++;
1880                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1881                 ndr->depth--;
1882                 ndr->depth--;
1883         }
1884         if (flags & NDR_OUT) {
1885                 ndr_print_struct(ndr, "out", "winreg_FlushKey");
1886                 ndr->depth++;
1887                 ndr_print_WERROR(ndr, "result", r->out.result);
1888                 ndr->depth--;
1889         }
1890         ndr->depth--;
1891 }
1892 
1893 _PUBLIC_ enum ndr_err_code ndr_push_winreg_GetKeySecurity(struct ndr_push *ndr, int flags, const struct winreg_GetKeySecurity *r)
     /* [<][>][^][v][top][bottom][index][help] */
1894 {
1895         if (flags & NDR_IN) {
1896                 if (r->in.handle == NULL) {
1897                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1898                 }
1899                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1900                 NDR_CHECK(ndr_push_security_secinfo(ndr, NDR_SCALARS, r->in.sec_info));
1901                 if (r->in.sd == NULL) {
1902                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1903                 }
1904                 NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sd));
1905         }
1906         if (flags & NDR_OUT) {
1907                 if (r->out.sd == NULL) {
1908                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1909                 }
1910                 NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sd));
1911                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1912         }
1913         return NDR_ERR_SUCCESS;
1914 }
1915 
1916 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_GetKeySecurity(struct ndr_pull *ndr, int flags, struct winreg_GetKeySecurity *r)
     /* [<][>][^][v][top][bottom][index][help] */
1917 {
1918         TALLOC_CTX *_mem_save_handle_0;
1919         TALLOC_CTX *_mem_save_sd_0;
1920         if (flags & NDR_IN) {
1921                 ZERO_STRUCT(r->out);
1922 
1923                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1924                         NDR_PULL_ALLOC(ndr, r->in.handle);
1925                 }
1926                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1927                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1928                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1929                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1930                 NDR_CHECK(ndr_pull_security_secinfo(ndr, NDR_SCALARS, &r->in.sec_info));
1931                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1932                         NDR_PULL_ALLOC(ndr, r->in.sd);
1933                 }
1934                 _mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
1935                 NDR_PULL_SET_MEM_CTX(ndr, r->in.sd, LIBNDR_FLAG_REF_ALLOC);
1936                 NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sd));
1937                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, LIBNDR_FLAG_REF_ALLOC);
1938                 NDR_PULL_ALLOC(ndr, r->out.sd);
1939                 *r->out.sd = *r->in.sd;
1940         }
1941         if (flags & NDR_OUT) {
1942                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1943                         NDR_PULL_ALLOC(ndr, r->out.sd);
1944                 }
1945                 _mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
1946                 NDR_PULL_SET_MEM_CTX(ndr, r->out.sd, LIBNDR_FLAG_REF_ALLOC);
1947                 NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.sd));
1948                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, LIBNDR_FLAG_REF_ALLOC);
1949                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1950         }
1951         return NDR_ERR_SUCCESS;
1952 }
1953 
1954 _PUBLIC_ void ndr_print_winreg_GetKeySecurity(struct ndr_print *ndr, const char *name, int flags, const struct winreg_GetKeySecurity *r)
     /* [<][>][^][v][top][bottom][index][help] */
1955 {
1956         ndr_print_struct(ndr, name, "winreg_GetKeySecurity");
1957         ndr->depth++;
1958         if (flags & NDR_SET_VALUES) {
1959                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1960         }
1961         if (flags & NDR_IN) {
1962                 ndr_print_struct(ndr, "in", "winreg_GetKeySecurity");
1963                 ndr->depth++;
1964                 ndr_print_ptr(ndr, "handle", r->in.handle);
1965                 ndr->depth++;
1966                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1967                 ndr->depth--;
1968                 ndr_print_security_secinfo(ndr, "sec_info", r->in.sec_info);
1969                 ndr_print_ptr(ndr, "sd", r->in.sd);
1970                 ndr->depth++;
1971                 ndr_print_KeySecurityData(ndr, "sd", r->in.sd);
1972                 ndr->depth--;
1973                 ndr->depth--;
1974         }
1975         if (flags & NDR_OUT) {
1976                 ndr_print_struct(ndr, "out", "winreg_GetKeySecurity");
1977                 ndr->depth++;
1978                 ndr_print_ptr(ndr, "sd", r->out.sd);
1979                 ndr->depth++;
1980                 ndr_print_KeySecurityData(ndr, "sd", r->out.sd);
1981                 ndr->depth--;
1982                 ndr_print_WERROR(ndr, "result", r->out.result);
1983                 ndr->depth--;
1984         }
1985         ndr->depth--;
1986 }
1987 
1988 static enum ndr_err_code ndr_push_winreg_LoadKey(struct ndr_push *ndr, int flags, const struct winreg_LoadKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
1989 {
1990         if (flags & NDR_IN) {
1991                 if (r->in.handle == NULL) {
1992                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1993                 }
1994                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1995                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.keyname));
1996                 if (r->in.keyname) {
1997                         NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.keyname));
1998                 }
1999                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.filename));
2000                 if (r->in.filename) {
2001                         NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
2002                 }
2003         }
2004         if (flags & NDR_OUT) {
2005                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2006         }
2007         return NDR_ERR_SUCCESS;
2008 }
2009 
2010 static enum ndr_err_code ndr_pull_winreg_LoadKey(struct ndr_pull *ndr, int flags, struct winreg_LoadKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2011 {
2012         uint32_t _ptr_keyname;
2013         uint32_t _ptr_filename;
2014         TALLOC_CTX *_mem_save_handle_0;
2015         TALLOC_CTX *_mem_save_keyname_0;
2016         TALLOC_CTX *_mem_save_filename_0;
2017         if (flags & NDR_IN) {
2018                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2019                         NDR_PULL_ALLOC(ndr, r->in.handle);
2020                 }
2021                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2022                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2023                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2024                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2025                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_keyname));
2026                 if (_ptr_keyname) {
2027                         NDR_PULL_ALLOC(ndr, r->in.keyname);
2028                 } else {
2029                         r->in.keyname = NULL;
2030                 }
2031                 if (r->in.keyname) {
2032                         _mem_save_keyname_0 = NDR_PULL_GET_MEM_CTX(ndr);
2033                         NDR_PULL_SET_MEM_CTX(ndr, r->in.keyname, 0);
2034                         NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.keyname));
2035                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_keyname_0, 0);
2036                 }
2037                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_filename));
2038                 if (_ptr_filename) {
2039                         NDR_PULL_ALLOC(ndr, r->in.filename);
2040                 } else {
2041                         r->in.filename = NULL;
2042                 }
2043                 if (r->in.filename) {
2044                         _mem_save_filename_0 = NDR_PULL_GET_MEM_CTX(ndr);
2045                         NDR_PULL_SET_MEM_CTX(ndr, r->in.filename, 0);
2046                         NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
2047                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_filename_0, 0);
2048                 }
2049         }
2050         if (flags & NDR_OUT) {
2051                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2052         }
2053         return NDR_ERR_SUCCESS;
2054 }
2055 
2056 _PUBLIC_ void ndr_print_winreg_LoadKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_LoadKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2057 {
2058         ndr_print_struct(ndr, name, "winreg_LoadKey");
2059         ndr->depth++;
2060         if (flags & NDR_SET_VALUES) {
2061                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2062         }
2063         if (flags & NDR_IN) {
2064                 ndr_print_struct(ndr, "in", "winreg_LoadKey");
2065                 ndr->depth++;
2066                 ndr_print_ptr(ndr, "handle", r->in.handle);
2067                 ndr->depth++;
2068                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2069                 ndr->depth--;
2070                 ndr_print_ptr(ndr, "keyname", r->in.keyname);
2071                 ndr->depth++;
2072                 if (r->in.keyname) {
2073                         ndr_print_winreg_String(ndr, "keyname", r->in.keyname);
2074                 }
2075                 ndr->depth--;
2076                 ndr_print_ptr(ndr, "filename", r->in.filename);
2077                 ndr->depth++;
2078                 if (r->in.filename) {
2079                         ndr_print_winreg_String(ndr, "filename", r->in.filename);
2080                 }
2081                 ndr->depth--;
2082                 ndr->depth--;
2083         }
2084         if (flags & NDR_OUT) {
2085                 ndr_print_struct(ndr, "out", "winreg_LoadKey");
2086                 ndr->depth++;
2087                 ndr_print_WERROR(ndr, "result", r->out.result);
2088                 ndr->depth--;
2089         }
2090         ndr->depth--;
2091 }
2092 
2093 _PUBLIC_ enum ndr_err_code ndr_push_winreg_NotifyChangeKeyValue(struct ndr_push *ndr, int flags, const struct winreg_NotifyChangeKeyValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
2094 {
2095         if (flags & NDR_IN) {
2096                 if (r->in.handle == NULL) {
2097                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2098                 }
2099                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2100                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.watch_subtree));
2101                 NDR_CHECK(ndr_push_winreg_NotifyChangeType(ndr, NDR_SCALARS, r->in.notify_filter));
2102                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown));
2103                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.string1));
2104                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.string2));
2105                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown2));
2106         }
2107         if (flags & NDR_OUT) {
2108                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2109         }
2110         return NDR_ERR_SUCCESS;
2111 }
2112 
2113 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_NotifyChangeKeyValue(struct ndr_pull *ndr, int flags, struct winreg_NotifyChangeKeyValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
2114 {
2115         TALLOC_CTX *_mem_save_handle_0;
2116         if (flags & NDR_IN) {
2117                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2118                         NDR_PULL_ALLOC(ndr, r->in.handle);
2119                 }
2120                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2121                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2122                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2123                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2124                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.watch_subtree));
2125                 NDR_CHECK(ndr_pull_winreg_NotifyChangeType(ndr, NDR_SCALARS, &r->in.notify_filter));
2126                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown));
2127                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.string1));
2128                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.string2));
2129                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown2));
2130         }
2131         if (flags & NDR_OUT) {
2132                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2133         }
2134         return NDR_ERR_SUCCESS;
2135 }
2136 
2137 _PUBLIC_ void ndr_print_winreg_NotifyChangeKeyValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_NotifyChangeKeyValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
2138 {
2139         ndr_print_struct(ndr, name, "winreg_NotifyChangeKeyValue");
2140         ndr->depth++;
2141         if (flags & NDR_SET_VALUES) {
2142                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2143         }
2144         if (flags & NDR_IN) {
2145                 ndr_print_struct(ndr, "in", "winreg_NotifyChangeKeyValue");
2146                 ndr->depth++;
2147                 ndr_print_ptr(ndr, "handle", r->in.handle);
2148                 ndr->depth++;
2149                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2150                 ndr->depth--;
2151                 ndr_print_uint8(ndr, "watch_subtree", r->in.watch_subtree);
2152                 ndr_print_winreg_NotifyChangeType(ndr, "notify_filter", r->in.notify_filter);
2153                 ndr_print_uint32(ndr, "unknown", r->in.unknown);
2154                 ndr_print_winreg_String(ndr, "string1", &r->in.string1);
2155                 ndr_print_winreg_String(ndr, "string2", &r->in.string2);
2156                 ndr_print_uint32(ndr, "unknown2", r->in.unknown2);
2157                 ndr->depth--;
2158         }
2159         if (flags & NDR_OUT) {
2160                 ndr_print_struct(ndr, "out", "winreg_NotifyChangeKeyValue");
2161                 ndr->depth++;
2162                 ndr_print_WERROR(ndr, "result", r->out.result);
2163                 ndr->depth--;
2164         }
2165         ndr->depth--;
2166 }
2167 
2168 _PUBLIC_ enum ndr_err_code ndr_push_winreg_OpenKey(struct ndr_push *ndr, int flags, const struct winreg_OpenKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2169 {
2170         if (flags & NDR_IN) {
2171                 if (r->in.parent_handle == NULL) {
2172                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2173                 }
2174                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.parent_handle));
2175                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.keyname));
2176                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown));
2177                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
2178         }
2179         if (flags & NDR_OUT) {
2180                 if (r->out.handle == NULL) {
2181                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2182                 }
2183                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2184                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2185         }
2186         return NDR_ERR_SUCCESS;
2187 }
2188 
2189 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_OpenKey(struct ndr_pull *ndr, int flags, struct winreg_OpenKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2190 {
2191         TALLOC_CTX *_mem_save_parent_handle_0;
2192         TALLOC_CTX *_mem_save_handle_0;
2193         if (flags & NDR_IN) {
2194                 ZERO_STRUCT(r->out);
2195 
2196                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2197                         NDR_PULL_ALLOC(ndr, r->in.parent_handle);
2198                 }
2199                 _mem_save_parent_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2200                 NDR_PULL_SET_MEM_CTX(ndr, r->in.parent_handle, LIBNDR_FLAG_REF_ALLOC);
2201                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.parent_handle));
2202                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_parent_handle_0, LIBNDR_FLAG_REF_ALLOC);
2203                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.keyname));
2204                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown));
2205                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
2206                 NDR_PULL_ALLOC(ndr, r->out.handle);
2207                 ZERO_STRUCTP(r->out.handle);
2208         }
2209         if (flags & NDR_OUT) {
2210                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2211                         NDR_PULL_ALLOC(ndr, r->out.handle);
2212                 }
2213                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2214                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2215                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2216                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2217                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2218         }
2219         return NDR_ERR_SUCCESS;
2220 }
2221 
2222 _PUBLIC_ void ndr_print_winreg_OpenKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2223 {
2224         ndr_print_struct(ndr, name, "winreg_OpenKey");
2225         ndr->depth++;
2226         if (flags & NDR_SET_VALUES) {
2227                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2228         }
2229         if (flags & NDR_IN) {
2230                 ndr_print_struct(ndr, "in", "winreg_OpenKey");
2231                 ndr->depth++;
2232                 ndr_print_ptr(ndr, "parent_handle", r->in.parent_handle);
2233                 ndr->depth++;
2234                 ndr_print_policy_handle(ndr, "parent_handle", r->in.parent_handle);
2235                 ndr->depth--;
2236                 ndr_print_winreg_String(ndr, "keyname", &r->in.keyname);
2237                 ndr_print_uint32(ndr, "unknown", r->in.unknown);
2238                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
2239                 ndr->depth--;
2240         }
2241         if (flags & NDR_OUT) {
2242                 ndr_print_struct(ndr, "out", "winreg_OpenKey");
2243                 ndr->depth++;
2244                 ndr_print_ptr(ndr, "handle", r->out.handle);
2245                 ndr->depth++;
2246                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2247                 ndr->depth--;
2248                 ndr_print_WERROR(ndr, "result", r->out.result);
2249                 ndr->depth--;
2250         }
2251         ndr->depth--;
2252 }
2253 
2254 _PUBLIC_ enum ndr_err_code ndr_push_winreg_QueryInfoKey(struct ndr_push *ndr, int flags, const struct winreg_QueryInfoKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2255 {
2256         if (flags & NDR_IN) {
2257                 if (r->in.handle == NULL) {
2258                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2259                 }
2260                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2261                 if (r->in.classname == NULL) {
2262                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2263                 }
2264                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.classname));
2265         }
2266         if (flags & NDR_OUT) {
2267                 if (r->out.classname == NULL) {
2268                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2269                 }
2270                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.classname));
2271                 if (r->out.num_subkeys == NULL) {
2272                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2273                 }
2274                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.num_subkeys));
2275                 if (r->out.max_subkeylen == NULL) {
2276                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2277                 }
2278                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.max_subkeylen));
2279                 if (r->out.max_classlen == NULL) {
2280                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2281                 }
2282                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.max_classlen));
2283                 if (r->out.num_values == NULL) {
2284                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2285                 }
2286                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.num_values));
2287                 if (r->out.max_valnamelen == NULL) {
2288                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2289                 }
2290                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.max_valnamelen));
2291                 if (r->out.max_valbufsize == NULL) {
2292                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2293                 }
2294                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.max_valbufsize));
2295                 if (r->out.secdescsize == NULL) {
2296                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2297                 }
2298                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.secdescsize));
2299                 if (r->out.last_changed_time == NULL) {
2300                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2301                 }
2302                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, *r->out.last_changed_time));
2303                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2304         }
2305         return NDR_ERR_SUCCESS;
2306 }
2307 
2308 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_QueryInfoKey(struct ndr_pull *ndr, int flags, struct winreg_QueryInfoKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2309 {
2310         TALLOC_CTX *_mem_save_handle_0;
2311         TALLOC_CTX *_mem_save_classname_0;
2312         TALLOC_CTX *_mem_save_num_subkeys_0;
2313         TALLOC_CTX *_mem_save_max_subkeylen_0;
2314         TALLOC_CTX *_mem_save_max_classlen_0;
2315         TALLOC_CTX *_mem_save_num_values_0;
2316         TALLOC_CTX *_mem_save_max_valnamelen_0;
2317         TALLOC_CTX *_mem_save_max_valbufsize_0;
2318         TALLOC_CTX *_mem_save_secdescsize_0;
2319         TALLOC_CTX *_mem_save_last_changed_time_0;
2320         if (flags & NDR_IN) {
2321                 ZERO_STRUCT(r->out);
2322 
2323                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2324                         NDR_PULL_ALLOC(ndr, r->in.handle);
2325                 }
2326                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2327                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2328                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2329                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2330                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2331                         NDR_PULL_ALLOC(ndr, r->in.classname);
2332                 }
2333                 _mem_save_classname_0 = NDR_PULL_GET_MEM_CTX(ndr);
2334                 NDR_PULL_SET_MEM_CTX(ndr, r->in.classname, LIBNDR_FLAG_REF_ALLOC);
2335                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.classname));
2336                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_classname_0, LIBNDR_FLAG_REF_ALLOC);
2337                 NDR_PULL_ALLOC(ndr, r->out.classname);
2338                 *r->out.classname = *r->in.classname;
2339                 NDR_PULL_ALLOC(ndr, r->out.num_subkeys);
2340                 ZERO_STRUCTP(r->out.num_subkeys);
2341                 NDR_PULL_ALLOC(ndr, r->out.max_subkeylen);
2342                 ZERO_STRUCTP(r->out.max_subkeylen);
2343                 NDR_PULL_ALLOC(ndr, r->out.max_classlen);
2344                 ZERO_STRUCTP(r->out.max_classlen);
2345                 NDR_PULL_ALLOC(ndr, r->out.num_values);
2346                 ZERO_STRUCTP(r->out.num_values);
2347                 NDR_PULL_ALLOC(ndr, r->out.max_valnamelen);
2348                 ZERO_STRUCTP(r->out.max_valnamelen);
2349                 NDR_PULL_ALLOC(ndr, r->out.max_valbufsize);
2350                 ZERO_STRUCTP(r->out.max_valbufsize);
2351                 NDR_PULL_ALLOC(ndr, r->out.secdescsize);
2352                 ZERO_STRUCTP(r->out.secdescsize);
2353                 NDR_PULL_ALLOC(ndr, r->out.last_changed_time);
2354                 ZERO_STRUCTP(r->out.last_changed_time);
2355         }
2356         if (flags & NDR_OUT) {
2357                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2358                         NDR_PULL_ALLOC(ndr, r->out.classname);
2359                 }
2360                 _mem_save_classname_0 = NDR_PULL_GET_MEM_CTX(ndr);
2361                 NDR_PULL_SET_MEM_CTX(ndr, r->out.classname, LIBNDR_FLAG_REF_ALLOC);
2362                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.classname));
2363                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_classname_0, LIBNDR_FLAG_REF_ALLOC);
2364                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2365                         NDR_PULL_ALLOC(ndr, r->out.num_subkeys);
2366                 }
2367                 _mem_save_num_subkeys_0 = NDR_PULL_GET_MEM_CTX(ndr);
2368                 NDR_PULL_SET_MEM_CTX(ndr, r->out.num_subkeys, LIBNDR_FLAG_REF_ALLOC);
2369                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.num_subkeys));
2370                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_num_subkeys_0, LIBNDR_FLAG_REF_ALLOC);
2371                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2372                         NDR_PULL_ALLOC(ndr, r->out.max_subkeylen);
2373                 }
2374                 _mem_save_max_subkeylen_0 = NDR_PULL_GET_MEM_CTX(ndr);
2375                 NDR_PULL_SET_MEM_CTX(ndr, r->out.max_subkeylen, LIBNDR_FLAG_REF_ALLOC);
2376                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.max_subkeylen));
2377                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_max_subkeylen_0, LIBNDR_FLAG_REF_ALLOC);
2378                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2379                         NDR_PULL_ALLOC(ndr, r->out.max_classlen);
2380                 }
2381                 _mem_save_max_classlen_0 = NDR_PULL_GET_MEM_CTX(ndr);
2382                 NDR_PULL_SET_MEM_CTX(ndr, r->out.max_classlen, LIBNDR_FLAG_REF_ALLOC);
2383                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.max_classlen));
2384                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_max_classlen_0, LIBNDR_FLAG_REF_ALLOC);
2385                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2386                         NDR_PULL_ALLOC(ndr, r->out.num_values);
2387                 }
2388                 _mem_save_num_values_0 = NDR_PULL_GET_MEM_CTX(ndr);
2389                 NDR_PULL_SET_MEM_CTX(ndr, r->out.num_values, LIBNDR_FLAG_REF_ALLOC);
2390                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.num_values));
2391                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_num_values_0, LIBNDR_FLAG_REF_ALLOC);
2392                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2393                         NDR_PULL_ALLOC(ndr, r->out.max_valnamelen);
2394                 }
2395                 _mem_save_max_valnamelen_0 = NDR_PULL_GET_MEM_CTX(ndr);
2396                 NDR_PULL_SET_MEM_CTX(ndr, r->out.max_valnamelen, LIBNDR_FLAG_REF_ALLOC);
2397                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.max_valnamelen));
2398                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_max_valnamelen_0, LIBNDR_FLAG_REF_ALLOC);
2399                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2400                         NDR_PULL_ALLOC(ndr, r->out.max_valbufsize);
2401                 }
2402                 _mem_save_max_valbufsize_0 = NDR_PULL_GET_MEM_CTX(ndr);
2403                 NDR_PULL_SET_MEM_CTX(ndr, r->out.max_valbufsize, LIBNDR_FLAG_REF_ALLOC);
2404                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.max_valbufsize));
2405                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_max_valbufsize_0, LIBNDR_FLAG_REF_ALLOC);
2406                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2407                         NDR_PULL_ALLOC(ndr, r->out.secdescsize);
2408                 }
2409                 _mem_save_secdescsize_0 = NDR_PULL_GET_MEM_CTX(ndr);
2410                 NDR_PULL_SET_MEM_CTX(ndr, r->out.secdescsize, LIBNDR_FLAG_REF_ALLOC);
2411                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.secdescsize));
2412                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secdescsize_0, LIBNDR_FLAG_REF_ALLOC);
2413                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2414                         NDR_PULL_ALLOC(ndr, r->out.last_changed_time);
2415                 }
2416                 _mem_save_last_changed_time_0 = NDR_PULL_GET_MEM_CTX(ndr);
2417                 NDR_PULL_SET_MEM_CTX(ndr, r->out.last_changed_time, LIBNDR_FLAG_REF_ALLOC);
2418                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, r->out.last_changed_time));
2419                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_last_changed_time_0, LIBNDR_FLAG_REF_ALLOC);
2420                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2421         }
2422         return NDR_ERR_SUCCESS;
2423 }
2424 
2425 _PUBLIC_ void ndr_print_winreg_QueryInfoKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryInfoKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2426 {
2427         ndr_print_struct(ndr, name, "winreg_QueryInfoKey");
2428         ndr->depth++;
2429         if (flags & NDR_SET_VALUES) {
2430                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2431         }
2432         if (flags & NDR_IN) {
2433                 ndr_print_struct(ndr, "in", "winreg_QueryInfoKey");
2434                 ndr->depth++;
2435                 ndr_print_ptr(ndr, "handle", r->in.handle);
2436                 ndr->depth++;
2437                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2438                 ndr->depth--;
2439                 ndr_print_ptr(ndr, "classname", r->in.classname);
2440                 ndr->depth++;
2441                 ndr_print_winreg_String(ndr, "classname", r->in.classname);
2442                 ndr->depth--;
2443                 ndr->depth--;
2444         }
2445         if (flags & NDR_OUT) {
2446                 ndr_print_struct(ndr, "out", "winreg_QueryInfoKey");
2447                 ndr->depth++;
2448                 ndr_print_ptr(ndr, "classname", r->out.classname);
2449                 ndr->depth++;
2450                 ndr_print_winreg_String(ndr, "classname", r->out.classname);
2451                 ndr->depth--;
2452                 ndr_print_ptr(ndr, "num_subkeys", r->out.num_subkeys);
2453                 ndr->depth++;
2454                 ndr_print_uint32(ndr, "num_subkeys", *r->out.num_subkeys);
2455                 ndr->depth--;
2456                 ndr_print_ptr(ndr, "max_subkeylen", r->out.max_subkeylen);
2457                 ndr->depth++;
2458                 ndr_print_uint32(ndr, "max_subkeylen", *r->out.max_subkeylen);
2459                 ndr->depth--;
2460                 ndr_print_ptr(ndr, "max_classlen", r->out.max_classlen);
2461                 ndr->depth++;
2462                 ndr_print_uint32(ndr, "max_classlen", *r->out.max_classlen);
2463                 ndr->depth--;
2464                 ndr_print_ptr(ndr, "num_values", r->out.num_values);
2465                 ndr->depth++;
2466                 ndr_print_uint32(ndr, "num_values", *r->out.num_values);
2467                 ndr->depth--;
2468                 ndr_print_ptr(ndr, "max_valnamelen", r->out.max_valnamelen);
2469                 ndr->depth++;
2470                 ndr_print_uint32(ndr, "max_valnamelen", *r->out.max_valnamelen);
2471                 ndr->depth--;
2472                 ndr_print_ptr(ndr, "max_valbufsize", r->out.max_valbufsize);
2473                 ndr->depth++;
2474                 ndr_print_uint32(ndr, "max_valbufsize", *r->out.max_valbufsize);
2475                 ndr->depth--;
2476                 ndr_print_ptr(ndr, "secdescsize", r->out.secdescsize);
2477                 ndr->depth++;
2478                 ndr_print_uint32(ndr, "secdescsize", *r->out.secdescsize);
2479                 ndr->depth--;
2480                 ndr_print_ptr(ndr, "last_changed_time", r->out.last_changed_time);
2481                 ndr->depth++;
2482                 ndr_print_NTTIME(ndr, "last_changed_time", *r->out.last_changed_time);
2483                 ndr->depth--;
2484                 ndr_print_WERROR(ndr, "result", r->out.result);
2485                 ndr->depth--;
2486         }
2487         ndr->depth--;
2488 }
2489 
2490 _PUBLIC_ enum ndr_err_code ndr_push_winreg_QueryValue(struct ndr_push *ndr, int flags, const struct winreg_QueryValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
2491 {
2492         if (flags & NDR_IN) {
2493                 if (r->in.handle == NULL) {
2494                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2495                 }
2496                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2497                 if (r->in.value_name == NULL) {
2498                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2499                 }
2500                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.value_name));
2501                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.type));
2502                 if (r->in.type) {
2503                         NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->in.type));
2504                 }
2505                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.data));
2506                 if (r->in.data) {
2507                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.data_size));
2508                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2509                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.data_length));
2510                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.data, *r->in.data_length));
2511                 }
2512                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.data_size));
2513                 if (r->in.data_size) {
2514                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.data_size));
2515                 }
2516                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.data_length));
2517                 if (r->in.data_length) {
2518                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.data_length));
2519                 }
2520         }
2521         if (flags & NDR_OUT) {
2522                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.type));
2523                 if (r->out.type) {
2524                         NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->out.type));
2525                 }
2526                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.data));
2527                 if (r->out.data) {
2528                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.data_size));
2529                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2530                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.data_length));
2531                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.data, *r->out.data_length));
2532                 }
2533                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.data_size));
2534                 if (r->out.data_size) {
2535                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.data_size));
2536                 }
2537                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.data_length));
2538                 if (r->out.data_length) {
2539                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.data_length));
2540                 }
2541                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2542         }
2543         return NDR_ERR_SUCCESS;
2544 }
2545 
2546 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_QueryValue(struct ndr_pull *ndr, int flags, struct winreg_QueryValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
2547 {
2548         uint32_t _ptr_type;
2549         uint32_t _ptr_data;
2550         uint32_t _ptr_data_size;
2551         uint32_t _ptr_data_length;
2552         TALLOC_CTX *_mem_save_handle_0;
2553         TALLOC_CTX *_mem_save_value_name_0;
2554         TALLOC_CTX *_mem_save_type_0;
2555         TALLOC_CTX *_mem_save_data_0;
2556         TALLOC_CTX *_mem_save_data_size_0;
2557         TALLOC_CTX *_mem_save_data_length_0;
2558         if (flags & NDR_IN) {
2559                 ZERO_STRUCT(r->out);
2560 
2561                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2562                         NDR_PULL_ALLOC(ndr, r->in.handle);
2563                 }
2564                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2565                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2566                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2567                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2568                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2569                         NDR_PULL_ALLOC(ndr, r->in.value_name);
2570                 }
2571                 _mem_save_value_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2572                 NDR_PULL_SET_MEM_CTX(ndr, r->in.value_name, LIBNDR_FLAG_REF_ALLOC);
2573                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.value_name));
2574                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_value_name_0, LIBNDR_FLAG_REF_ALLOC);
2575                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_type));
2576                 if (_ptr_type) {
2577                         NDR_PULL_ALLOC(ndr, r->in.type);
2578                 } else {
2579                         r->in.type = NULL;
2580                 }
2581                 if (r->in.type) {
2582                         _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
2583                         NDR_PULL_SET_MEM_CTX(ndr, r->in.type, 0);
2584                         NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->in.type));
2585                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, 0);
2586                 }
2587                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
2588                 if (_ptr_data) {
2589                         NDR_PULL_ALLOC(ndr, r->in.data);
2590                 } else {
2591                         r->in.data = NULL;
2592                 }
2593                 if (r->in.data) {
2594                         _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
2595                         NDR_PULL_SET_MEM_CTX(ndr, r->in.data, 0);
2596                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.data));
2597                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.data));
2598                         if (ndr_get_array_length(ndr, &r->in.data) > ndr_get_array_size(ndr, &r->in.data)) {
2599                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.data), ndr_get_array_length(ndr, &r->in.data));
2600                         }
2601                         NDR_PULL_ALLOC_N(ndr, r->in.data, ndr_get_array_size(ndr, &r->in.data));
2602                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.data, ndr_get_array_length(ndr, &r->in.data)));
2603                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
2604                 }
2605                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_size));
2606                 if (_ptr_data_size) {
2607                         NDR_PULL_ALLOC(ndr, r->in.data_size);
2608                 } else {
2609                         r->in.data_size = NULL;
2610                 }
2611                 if (r->in.data_size) {
2612                         _mem_save_data_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
2613                         NDR_PULL_SET_MEM_CTX(ndr, r->in.data_size, 0);
2614                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.data_size));
2615                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_size_0, 0);
2616                 }
2617                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_length));
2618                 if (_ptr_data_length) {
2619                         NDR_PULL_ALLOC(ndr, r->in.data_length);
2620                 } else {
2621                         r->in.data_length = NULL;
2622                 }
2623                 if (r->in.data_length) {
2624                         _mem_save_data_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2625                         NDR_PULL_SET_MEM_CTX(ndr, r->in.data_length, 0);
2626                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.data_length));
2627                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_length_0, 0);
2628                 }
2629                 if (r->in.data) {
2630                         if (r->in.data_size == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for size_is()");
2631                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, *r->in.data_size));
2632                 }
2633                 if (r->in.data) {
2634                         if (r->in.data_length == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for length_is()");
2635                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.data, *r->in.data_length));
2636                 }
2637         }
2638         if (flags & NDR_OUT) {
2639                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_type));
2640                 if (_ptr_type) {
2641                         NDR_PULL_ALLOC(ndr, r->out.type);
2642                 } else {
2643                         r->out.type = NULL;
2644                 }
2645                 if (r->out.type) {
2646                         _mem_save_type_0 = NDR_PULL_GET_MEM_CTX(ndr);
2647                         NDR_PULL_SET_MEM_CTX(ndr, r->out.type, 0);
2648                         NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->out.type));
2649                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, 0);
2650                 }
2651                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
2652                 if (_ptr_data) {
2653                         NDR_PULL_ALLOC(ndr, r->out.data);
2654                 } else {
2655                         r->out.data = NULL;
2656                 }
2657                 if (r->out.data) {
2658                         _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
2659                         NDR_PULL_SET_MEM_CTX(ndr, r->out.data, 0);
2660                         NDR_CHECK(ndr_pull_array_size(ndr, &r->out.data));
2661                         NDR_CHECK(ndr_pull_array_length(ndr, &r->out.data));
2662                         if (ndr_get_array_length(ndr, &r->out.data) > ndr_get_array_size(ndr, &r->out.data)) {
2663                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.data), ndr_get_array_length(ndr, &r->out.data));
2664                         }
2665                         NDR_PULL_ALLOC_N(ndr, r->out.data, ndr_get_array_size(ndr, &r->out.data));
2666                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.data, ndr_get_array_length(ndr, &r->out.data)));
2667                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
2668                 }
2669                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_size));
2670                 if (_ptr_data_size) {
2671                         NDR_PULL_ALLOC(ndr, r->out.data_size);
2672                 } else {
2673                         r->out.data_size = NULL;
2674                 }
2675                 if (r->out.data_size) {
2676                         _mem_save_data_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
2677                         NDR_PULL_SET_MEM_CTX(ndr, r->out.data_size, 0);
2678                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.data_size));
2679                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_size_0, 0);
2680                 }
2681                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_length));
2682                 if (_ptr_data_length) {
2683                         NDR_PULL_ALLOC(ndr, r->out.data_length);
2684                 } else {
2685                         r->out.data_length = NULL;
2686                 }
2687                 if (r->out.data_length) {
2688                         _mem_save_data_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
2689                         NDR_PULL_SET_MEM_CTX(ndr, r->out.data_length, 0);
2690                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.data_length));
2691                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_length_0, 0);
2692                 }
2693                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2694                 if (r->out.data) {
2695                         if (r->out.data_size == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for size_is()");
2696                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.data, *r->out.data_size));
2697                 }
2698                 if (r->out.data) {
2699                         if (r->out.data_length == NULL) return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, "NULL Pointer for length_is()");
2700                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.data, *r->out.data_length));
2701                 }
2702         }
2703         return NDR_ERR_SUCCESS;
2704 }
2705 
2706 _PUBLIC_ void ndr_print_winreg_QueryValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
2707 {
2708         ndr_print_struct(ndr, name, "winreg_QueryValue");
2709         ndr->depth++;
2710         if (flags & NDR_SET_VALUES) {
2711                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2712         }
2713         if (flags & NDR_IN) {
2714                 ndr_print_struct(ndr, "in", "winreg_QueryValue");
2715                 ndr->depth++;
2716                 ndr_print_ptr(ndr, "handle", r->in.handle);
2717                 ndr->depth++;
2718                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2719                 ndr->depth--;
2720                 ndr_print_ptr(ndr, "value_name", r->in.value_name);
2721                 ndr->depth++;
2722                 ndr_print_winreg_String(ndr, "value_name", r->in.value_name);
2723                 ndr->depth--;
2724                 ndr_print_ptr(ndr, "type", r->in.type);
2725                 ndr->depth++;
2726                 if (r->in.type) {
2727                         ndr_print_winreg_Type(ndr, "type", *r->in.type);
2728                 }
2729                 ndr->depth--;
2730                 ndr_print_ptr(ndr, "data", r->in.data);
2731                 ndr->depth++;
2732                 if (r->in.data) {
2733                         if (r->in.data_length == NULL) return;
2734                         ndr_print_array_uint8(ndr, "data", r->in.data, *r->in.data_length);
2735                 }
2736                 ndr->depth--;
2737                 ndr_print_ptr(ndr, "data_size", r->in.data_size);
2738                 ndr->depth++;
2739                 if (r->in.data_size) {
2740                         ndr_print_uint32(ndr, "data_size", *r->in.data_size);
2741                 }
2742                 ndr->depth--;
2743                 ndr_print_ptr(ndr, "data_length", r->in.data_length);
2744                 ndr->depth++;
2745                 if (r->in.data_length) {
2746                         ndr_print_uint32(ndr, "data_length", *r->in.data_length);
2747                 }
2748                 ndr->depth--;
2749                 ndr->depth--;
2750         }
2751         if (flags & NDR_OUT) {
2752                 ndr_print_struct(ndr, "out", "winreg_QueryValue");
2753                 ndr->depth++;
2754                 ndr_print_ptr(ndr, "type", r->out.type);
2755                 ndr->depth++;
2756                 if (r->out.type) {
2757                         ndr_print_winreg_Type(ndr, "type", *r->out.type);
2758                 }
2759                 ndr->depth--;
2760                 ndr_print_ptr(ndr, "data", r->out.data);
2761                 ndr->depth++;
2762                 if (r->out.data) {
2763                         if (r->out.data_length == NULL) return;
2764                         ndr_print_array_uint8(ndr, "data", r->out.data, *r->out.data_length);
2765                 }
2766                 ndr->depth--;
2767                 ndr_print_ptr(ndr, "data_size", r->out.data_size);
2768                 ndr->depth++;
2769                 if (r->out.data_size) {
2770                         ndr_print_uint32(ndr, "data_size", *r->out.data_size);
2771                 }
2772                 ndr->depth--;
2773                 ndr_print_ptr(ndr, "data_length", r->out.data_length);
2774                 ndr->depth++;
2775                 if (r->out.data_length) {
2776                         ndr_print_uint32(ndr, "data_length", *r->out.data_length);
2777                 }
2778                 ndr->depth--;
2779                 ndr_print_WERROR(ndr, "result", r->out.result);
2780                 ndr->depth--;
2781         }
2782         ndr->depth--;
2783 }
2784 
2785 static enum ndr_err_code ndr_push_winreg_ReplaceKey(struct ndr_push *ndr, int flags, const struct winreg_ReplaceKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2786 {
2787         if (flags & NDR_IN) {
2788         }
2789         if (flags & NDR_OUT) {
2790                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2791         }
2792         return NDR_ERR_SUCCESS;
2793 }
2794 
2795 static enum ndr_err_code ndr_pull_winreg_ReplaceKey(struct ndr_pull *ndr, int flags, struct winreg_ReplaceKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2796 {
2797         if (flags & NDR_IN) {
2798         }
2799         if (flags & NDR_OUT) {
2800                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2801         }
2802         return NDR_ERR_SUCCESS;
2803 }
2804 
2805 _PUBLIC_ void ndr_print_winreg_ReplaceKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_ReplaceKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2806 {
2807         ndr_print_struct(ndr, name, "winreg_ReplaceKey");
2808         ndr->depth++;
2809         if (flags & NDR_SET_VALUES) {
2810                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2811         }
2812         if (flags & NDR_IN) {
2813                 ndr_print_struct(ndr, "in", "winreg_ReplaceKey");
2814                 ndr->depth++;
2815                 ndr->depth--;
2816         }
2817         if (flags & NDR_OUT) {
2818                 ndr_print_struct(ndr, "out", "winreg_ReplaceKey");
2819                 ndr->depth++;
2820                 ndr_print_WERROR(ndr, "result", r->out.result);
2821                 ndr->depth--;
2822         }
2823         ndr->depth--;
2824 }
2825 
2826 static enum ndr_err_code ndr_push_winreg_RestoreKey(struct ndr_push *ndr, int flags, const struct winreg_RestoreKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2827 {
2828         if (flags & NDR_IN) {
2829                 if (r->in.handle == NULL) {
2830                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2831                 }
2832                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2833                 if (r->in.filename == NULL) {
2834                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2835                 }
2836                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
2837                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
2838         }
2839         if (flags & NDR_OUT) {
2840                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2841         }
2842         return NDR_ERR_SUCCESS;
2843 }
2844 
2845 static enum ndr_err_code ndr_pull_winreg_RestoreKey(struct ndr_pull *ndr, int flags, struct winreg_RestoreKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2846 {
2847         TALLOC_CTX *_mem_save_handle_0;
2848         TALLOC_CTX *_mem_save_filename_0;
2849         if (flags & NDR_IN) {
2850                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2851                         NDR_PULL_ALLOC(ndr, r->in.handle);
2852                 }
2853                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2854                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2855                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2856                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2857                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2858                         NDR_PULL_ALLOC(ndr, r->in.filename);
2859                 }
2860                 _mem_save_filename_0 = NDR_PULL_GET_MEM_CTX(ndr);
2861                 NDR_PULL_SET_MEM_CTX(ndr, r->in.filename, LIBNDR_FLAG_REF_ALLOC);
2862                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
2863                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_filename_0, LIBNDR_FLAG_REF_ALLOC);
2864                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
2865         }
2866         if (flags & NDR_OUT) {
2867                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2868         }
2869         return NDR_ERR_SUCCESS;
2870 }
2871 
2872 _PUBLIC_ void ndr_print_winreg_RestoreKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_RestoreKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2873 {
2874         ndr_print_struct(ndr, name, "winreg_RestoreKey");
2875         ndr->depth++;
2876         if (flags & NDR_SET_VALUES) {
2877                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2878         }
2879         if (flags & NDR_IN) {
2880                 ndr_print_struct(ndr, "in", "winreg_RestoreKey");
2881                 ndr->depth++;
2882                 ndr_print_ptr(ndr, "handle", r->in.handle);
2883                 ndr->depth++;
2884                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2885                 ndr->depth--;
2886                 ndr_print_ptr(ndr, "filename", r->in.filename);
2887                 ndr->depth++;
2888                 ndr_print_winreg_String(ndr, "filename", r->in.filename);
2889                 ndr->depth--;
2890                 ndr_print_uint32(ndr, "flags", r->in.flags);
2891                 ndr->depth--;
2892         }
2893         if (flags & NDR_OUT) {
2894                 ndr_print_struct(ndr, "out", "winreg_RestoreKey");
2895                 ndr->depth++;
2896                 ndr_print_WERROR(ndr, "result", r->out.result);
2897                 ndr->depth--;
2898         }
2899         ndr->depth--;
2900 }
2901 
2902 static enum ndr_err_code ndr_push_winreg_SaveKey(struct ndr_push *ndr, int flags, const struct winreg_SaveKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2903 {
2904         if (flags & NDR_IN) {
2905                 if (r->in.handle == NULL) {
2906                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2907                 }
2908                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2909                 if (r->in.filename == NULL) {
2910                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2911                 }
2912                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
2913                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.sec_attrib));
2914                 if (r->in.sec_attrib) {
2915                         NDR_CHECK(ndr_push_KeySecurityAttribute(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sec_attrib));
2916                 }
2917         }
2918         if (flags & NDR_OUT) {
2919                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2920         }
2921         return NDR_ERR_SUCCESS;
2922 }
2923 
2924 static enum ndr_err_code ndr_pull_winreg_SaveKey(struct ndr_pull *ndr, int flags, struct winreg_SaveKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2925 {
2926         uint32_t _ptr_sec_attrib;
2927         TALLOC_CTX *_mem_save_handle_0;
2928         TALLOC_CTX *_mem_save_filename_0;
2929         TALLOC_CTX *_mem_save_sec_attrib_0;
2930         if (flags & NDR_IN) {
2931                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2932                         NDR_PULL_ALLOC(ndr, r->in.handle);
2933                 }
2934                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2935                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2936                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2937                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2938                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2939                         NDR_PULL_ALLOC(ndr, r->in.filename);
2940                 }
2941                 _mem_save_filename_0 = NDR_PULL_GET_MEM_CTX(ndr);
2942                 NDR_PULL_SET_MEM_CTX(ndr, r->in.filename, LIBNDR_FLAG_REF_ALLOC);
2943                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.filename));
2944                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_filename_0, LIBNDR_FLAG_REF_ALLOC);
2945                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sec_attrib));
2946                 if (_ptr_sec_attrib) {
2947                         NDR_PULL_ALLOC(ndr, r->in.sec_attrib);
2948                 } else {
2949                         r->in.sec_attrib = NULL;
2950                 }
2951                 if (r->in.sec_attrib) {
2952                         _mem_save_sec_attrib_0 = NDR_PULL_GET_MEM_CTX(ndr);
2953                         NDR_PULL_SET_MEM_CTX(ndr, r->in.sec_attrib, 0);
2954                         NDR_CHECK(ndr_pull_KeySecurityAttribute(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sec_attrib));
2955                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sec_attrib_0, 0);
2956                 }
2957         }
2958         if (flags & NDR_OUT) {
2959                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2960         }
2961         return NDR_ERR_SUCCESS;
2962 }
2963 
2964 _PUBLIC_ void ndr_print_winreg_SaveKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SaveKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
2965 {
2966         ndr_print_struct(ndr, name, "winreg_SaveKey");
2967         ndr->depth++;
2968         if (flags & NDR_SET_VALUES) {
2969                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2970         }
2971         if (flags & NDR_IN) {
2972                 ndr_print_struct(ndr, "in", "winreg_SaveKey");
2973                 ndr->depth++;
2974                 ndr_print_ptr(ndr, "handle", r->in.handle);
2975                 ndr->depth++;
2976                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2977                 ndr->depth--;
2978                 ndr_print_ptr(ndr, "filename", r->in.filename);
2979                 ndr->depth++;
2980                 ndr_print_winreg_String(ndr, "filename", r->in.filename);
2981                 ndr->depth--;
2982                 ndr_print_ptr(ndr, "sec_attrib", r->in.sec_attrib);
2983                 ndr->depth++;
2984                 if (r->in.sec_attrib) {
2985                         ndr_print_KeySecurityAttribute(ndr, "sec_attrib", r->in.sec_attrib);
2986                 }
2987                 ndr->depth--;
2988                 ndr->depth--;
2989         }
2990         if (flags & NDR_OUT) {
2991                 ndr_print_struct(ndr, "out", "winreg_SaveKey");
2992                 ndr->depth++;
2993                 ndr_print_WERROR(ndr, "result", r->out.result);
2994                 ndr->depth--;
2995         }
2996         ndr->depth--;
2997 }
2998 
2999 static enum ndr_err_code ndr_push_winreg_SetKeySecurity(struct ndr_push *ndr, int flags, const struct winreg_SetKeySecurity *r)
     /* [<][>][^][v][top][bottom][index][help] */
3000 {
3001         if (flags & NDR_IN) {
3002                 if (r->in.handle == NULL) {
3003                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3004                 }
3005                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3006                 NDR_CHECK(ndr_push_security_secinfo(ndr, NDR_SCALARS, r->in.sec_info));
3007                 if (r->in.sd == NULL) {
3008                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3009                 }
3010                 NDR_CHECK(ndr_push_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sd));
3011         }
3012         if (flags & NDR_OUT) {
3013                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3014         }
3015         return NDR_ERR_SUCCESS;
3016 }
3017 
3018 static enum ndr_err_code ndr_pull_winreg_SetKeySecurity(struct ndr_pull *ndr, int flags, struct winreg_SetKeySecurity *r)
     /* [<][>][^][v][top][bottom][index][help] */
3019 {
3020         TALLOC_CTX *_mem_save_handle_0;
3021         TALLOC_CTX *_mem_save_sd_0;
3022         if (flags & NDR_IN) {
3023                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3024                         NDR_PULL_ALLOC(ndr, r->in.handle);
3025                 }
3026                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3027                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3028                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3029                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3030                 NDR_CHECK(ndr_pull_security_secinfo(ndr, NDR_SCALARS, &r->in.sec_info));
3031                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3032                         NDR_PULL_ALLOC(ndr, r->in.sd);
3033                 }
3034                 _mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
3035                 NDR_PULL_SET_MEM_CTX(ndr, r->in.sd, LIBNDR_FLAG_REF_ALLOC);
3036                 NDR_CHECK(ndr_pull_KeySecurityData(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.sd));
3037                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, LIBNDR_FLAG_REF_ALLOC);
3038         }
3039         if (flags & NDR_OUT) {
3040                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3041         }
3042         return NDR_ERR_SUCCESS;
3043 }
3044 
3045 _PUBLIC_ void ndr_print_winreg_SetKeySecurity(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SetKeySecurity *r)
     /* [<][>][^][v][top][bottom][index][help] */
3046 {
3047         ndr_print_struct(ndr, name, "winreg_SetKeySecurity");
3048         ndr->depth++;
3049         if (flags & NDR_SET_VALUES) {
3050                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3051         }
3052         if (flags & NDR_IN) {
3053                 ndr_print_struct(ndr, "in", "winreg_SetKeySecurity");
3054                 ndr->depth++;
3055                 ndr_print_ptr(ndr, "handle", r->in.handle);
3056                 ndr->depth++;
3057                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3058                 ndr->depth--;
3059                 ndr_print_security_secinfo(ndr, "sec_info", r->in.sec_info);
3060                 ndr_print_ptr(ndr, "sd", r->in.sd);
3061                 ndr->depth++;
3062                 ndr_print_KeySecurityData(ndr, "sd", r->in.sd);
3063                 ndr->depth--;
3064                 ndr->depth--;
3065         }
3066         if (flags & NDR_OUT) {
3067                 ndr_print_struct(ndr, "out", "winreg_SetKeySecurity");
3068                 ndr->depth++;
3069                 ndr_print_WERROR(ndr, "result", r->out.result);
3070                 ndr->depth--;
3071         }
3072         ndr->depth--;
3073 }
3074 
3075 static enum ndr_err_code ndr_push_winreg_SetValue(struct ndr_push *ndr, int flags, const struct winreg_SetValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
3076 {
3077         if (flags & NDR_IN) {
3078                 if (r->in.handle == NULL) {
3079                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3080                 }
3081                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3082                 NDR_CHECK(ndr_push_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
3083                 NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, r->in.type));
3084                 if (r->in.data == NULL) {
3085                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3086                 }
3087                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.size));
3088                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.data, r->in.size));
3089                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.size));
3090         }
3091         if (flags & NDR_OUT) {
3092                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3093         }
3094         return NDR_ERR_SUCCESS;
3095 }
3096 
3097 static enum ndr_err_code ndr_pull_winreg_SetValue(struct ndr_pull *ndr, int flags, struct winreg_SetValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
3098 {
3099         TALLOC_CTX *_mem_save_handle_0;
3100         if (flags & NDR_IN) {
3101                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3102                         NDR_PULL_ALLOC(ndr, r->in.handle);
3103                 }
3104                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3105                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3106                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3107                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3108                 NDR_CHECK(ndr_pull_winreg_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
3109                 NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, &r->in.type));
3110                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.data));
3111                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3112                         NDR_PULL_ALLOC_N(ndr, r->in.data, ndr_get_array_size(ndr, &r->in.data));
3113                 }
3114                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.data, ndr_get_array_size(ndr, &r->in.data)));
3115                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.size));
3116                 if (r->in.data) {
3117                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, r->in.size));
3118                 }
3119         }
3120         if (flags & NDR_OUT) {
3121                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3122         }
3123         return NDR_ERR_SUCCESS;
3124 }
3125 
3126 _PUBLIC_ void ndr_print_winreg_SetValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SetValue *r)
     /* [<][>][^][v][top][bottom][index][help] */
3127 {
3128         ndr_print_struct(ndr, name, "winreg_SetValue");
3129         ndr->depth++;
3130         if (flags & NDR_SET_VALUES) {
3131                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3132         }
3133         if (flags & NDR_IN) {
3134                 ndr_print_struct(ndr, "in", "winreg_SetValue");
3135                 ndr->depth++;
3136                 ndr_print_ptr(ndr, "handle", r->in.handle);
3137                 ndr->depth++;
3138                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3139                 ndr->depth--;
3140                 ndr_print_winreg_String(ndr, "name", &r->in.name);
3141                 ndr_print_winreg_Type(ndr, "type", r->in.type);
3142                 ndr_print_ptr(ndr, "data", r->in.data);
3143                 ndr->depth++;
3144                 ndr_print_array_uint8(ndr, "data", r->in.data, r->in.size);
3145                 ndr->depth--;
3146                 ndr_print_uint32(ndr, "size", r->in.size);
3147                 ndr->depth--;
3148         }
3149         if (flags & NDR_OUT) {
3150                 ndr_print_struct(ndr, "out", "winreg_SetValue");
3151                 ndr->depth++;
3152                 ndr_print_WERROR(ndr, "result", r->out.result);
3153                 ndr->depth--;
3154         }
3155         ndr->depth--;
3156 }
3157 
3158 static enum ndr_err_code ndr_push_winreg_UnLoadKey(struct ndr_push *ndr, int flags, const struct winreg_UnLoadKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
3159 {
3160         if (flags & NDR_IN) {
3161         }
3162         if (flags & NDR_OUT) {
3163                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3164         }
3165         return NDR_ERR_SUCCESS;
3166 }
3167 
3168 static enum ndr_err_code ndr_pull_winreg_UnLoadKey(struct ndr_pull *ndr, int flags, struct winreg_UnLoadKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
3169 {
3170         if (flags & NDR_IN) {
3171         }
3172         if (flags & NDR_OUT) {
3173                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3174         }
3175         return NDR_ERR_SUCCESS;
3176 }
3177 
3178 _PUBLIC_ void ndr_print_winreg_UnLoadKey(struct ndr_print *ndr, const char *name, int flags, const struct winreg_UnLoadKey *r)
     /* [<][>][^][v][top][bottom][index][help] */
3179 {
3180         ndr_print_struct(ndr, name, "winreg_UnLoadKey");
3181         ndr->depth++;
3182         if (flags & NDR_SET_VALUES) {
3183                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3184         }
3185         if (flags & NDR_IN) {
3186                 ndr_print_struct(ndr, "in", "winreg_UnLoadKey");
3187                 ndr->depth++;
3188                 ndr->depth--;
3189         }
3190         if (flags & NDR_OUT) {
3191                 ndr_print_struct(ndr, "out", "winreg_UnLoadKey");
3192                 ndr->depth++;
3193                 ndr_print_WERROR(ndr, "result", r->out.result);
3194                 ndr->depth--;
3195         }
3196         ndr->depth--;
3197 }
3198 
3199 static enum ndr_err_code ndr_push_winreg_InitiateSystemShutdown(struct ndr_push *ndr, int flags, const struct winreg_InitiateSystemShutdown *r)
     /* [<][>][^][v][top][bottom][index][help] */
3200 {
3201         if (flags & NDR_IN) {
3202                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.hostname));
3203                 if (r->in.hostname) {
3204                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.hostname));
3205                 }
3206                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.message));
3207                 if (r->in.message) {
3208                         NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.message));
3209                 }
3210                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.timeout));
3211                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.force_apps));
3212                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.do_reboot));
3213         }
3214         if (flags & NDR_OUT) {
3215                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3216         }
3217         return NDR_ERR_SUCCESS;
3218 }
3219 
3220 static enum ndr_err_code ndr_pull_winreg_InitiateSystemShutdown(struct ndr_pull *ndr, int flags, struct winreg_InitiateSystemShutdown *r)
     /* [<][>][^][v][top][bottom][index][help] */
3221 {
3222         uint32_t _ptr_hostname;
3223         uint32_t _ptr_message;
3224         TALLOC_CTX *_mem_save_hostname_0;
3225         TALLOC_CTX *_mem_save_message_0;
3226         if (flags & NDR_IN) {
3227                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hostname));
3228                 if (_ptr_hostname) {
3229                         NDR_PULL_ALLOC(ndr, r->in.hostname);
3230                 } else {
3231                         r->in.hostname = NULL;
3232                 }
3233                 if (r->in.hostname) {
3234                         _mem_save_hostname_0 = NDR_PULL_GET_MEM_CTX(ndr);
3235                         NDR_PULL_SET_MEM_CTX(ndr, r->in.hostname, 0);
3236                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.hostname));
3237                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hostname_0, 0);
3238                 }
3239                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_message));
3240                 if (_ptr_message) {
3241                         NDR_PULL_ALLOC(ndr, r->in.message);
3242                 } else {
3243                         r->in.message = NULL;
3244                 }
3245                 if (r->in.message) {
3246                         _mem_save_message_0 = NDR_PULL_GET_MEM_CTX(ndr);
3247                         NDR_PULL_SET_MEM_CTX(ndr, r->in.message, 0);
3248                         NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.message));
3249                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_message_0, 0);
3250                 }
3251                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.timeout));
3252                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.force_apps));
3253                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.do_reboot));
3254         }
3255         if (flags & NDR_OUT) {
3256                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3257         }
3258         return NDR_ERR_SUCCESS;
3259 }
3260 
3261 _PUBLIC_ void ndr_print_winreg_InitiateSystemShutdown(struct ndr_print *ndr, const char *name, int flags, const struct winreg_InitiateSystemShutdown *r)
     /* [<][>][^][v][top][bottom][index][help] */
3262 {
3263         ndr_print_struct(ndr, name, "winreg_InitiateSystemShutdown");
3264         ndr->depth++;
3265         if (flags & NDR_SET_VALUES) {
3266                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3267         }
3268         if (flags & NDR_IN) {
3269                 ndr_print_struct(ndr, "in", "winreg_InitiateSystemShutdown");
3270                 ndr->depth++;
3271                 ndr_print_ptr(ndr, "hostname", r->in.hostname);
3272                 ndr->depth++;
3273                 if (r->in.hostname) {
3274                         ndr_print_uint16(ndr, "hostname", *r->in.hostname);
3275                 }
3276                 ndr->depth--;
3277                 ndr_print_ptr(ndr, "message", r->in.message);
3278                 ndr->depth++;
3279                 if (r->in.message) {
3280                         ndr_print_lsa_StringLarge(ndr, "message", r->in.message);
3281                 }
3282                 ndr->depth--;
3283                 ndr_print_uint32(ndr, "timeout", r->in.timeout);
3284                 ndr_print_uint8(ndr, "force_apps", r->in.force_apps);
3285                 ndr_print_uint8(ndr, "do_reboot", r->in.do_reboot);
3286                 ndr->depth--;
3287         }
3288         if (flags & NDR_OUT) {
3289                 ndr_print_struct(ndr, "out", "winreg_InitiateSystemShutdown");
3290                 ndr->depth++;
3291                 ndr_print_WERROR(ndr, "result", r->out.result);
3292                 ndr->depth--;
3293         }
3294         ndr->depth--;
3295 }
3296 
3297 static enum ndr_err_code ndr_push_winreg_AbortSystemShutdown(struct ndr_push *ndr, int flags, const struct winreg_AbortSystemShutdown *r)
     /* [<][>][^][v][top][bottom][index][help] */
3298 {
3299         if (flags & NDR_IN) {
3300                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server));
3301                 if (r->in.server) {
3302                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.server));
3303                 }
3304         }
3305         if (flags & NDR_OUT) {
3306                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3307         }
3308         return NDR_ERR_SUCCESS;
3309 }
3310 
3311 static enum ndr_err_code ndr_pull_winreg_AbortSystemShutdown(struct ndr_pull *ndr, int flags, struct winreg_AbortSystemShutdown *r)
     /* [<][>][^][v][top][bottom][index][help] */
3312 {
3313         uint32_t _ptr_server;
3314         TALLOC_CTX *_mem_save_server_0;
3315         if (flags & NDR_IN) {
3316                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server));
3317                 if (_ptr_server) {
3318                         NDR_PULL_ALLOC(ndr, r->in.server);
3319                 } else {
3320                         r->in.server = NULL;
3321                 }
3322                 if (r->in.server) {
3323                         _mem_save_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
3324                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server, 0);
3325                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.server));
3326                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_0, 0);
3327                 }
3328         }
3329         if (flags & NDR_OUT) {
3330                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3331         }
3332         return NDR_ERR_SUCCESS;
3333 }
3334 
3335 _PUBLIC_ void ndr_print_winreg_AbortSystemShutdown(struct ndr_print *ndr, const char *name, int flags, const struct winreg_AbortSystemShutdown *r)
     /* [<][>][^][v][top][bottom][index][help] */
3336 {
3337         ndr_print_struct(ndr, name, "winreg_AbortSystemShutdown");
3338         ndr->depth++;
3339         if (flags & NDR_SET_VALUES) {
3340                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3341         }
3342         if (flags & NDR_IN) {
3343                 ndr_print_struct(ndr, "in", "winreg_AbortSystemShutdown");
3344                 ndr->depth++;
3345                 ndr_print_ptr(ndr, "server", r->in.server);
3346                 ndr->depth++;
3347                 if (r->in.server) {
3348                         ndr_print_uint16(ndr, "server", *r->in.server);
3349                 }
3350                 ndr->depth--;
3351                 ndr->depth--;
3352         }
3353         if (flags & NDR_OUT) {
3354                 ndr_print_struct(ndr, "out", "winreg_AbortSystemShutdown");
3355                 ndr->depth++;
3356                 ndr_print_WERROR(ndr, "result", r->out.result);
3357                 ndr->depth--;
3358         }
3359         ndr->depth--;
3360 }
3361 
3362 _PUBLIC_ enum ndr_err_code ndr_push_winreg_GetVersion(struct ndr_push *ndr, int flags, const struct winreg_GetVersion *r)
     /* [<][>][^][v][top][bottom][index][help] */
3363 {
3364         if (flags & NDR_IN) {
3365                 if (r->in.handle == NULL) {
3366                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3367                 }
3368                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3369         }
3370         if (flags & NDR_OUT) {
3371                 if (r->out.version == NULL) {
3372                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3373                 }
3374                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.version));
3375                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3376         }
3377         return NDR_ERR_SUCCESS;
3378 }
3379 
3380 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_GetVersion(struct ndr_pull *ndr, int flags, struct winreg_GetVersion *r)
     /* [<][>][^][v][top][bottom][index][help] */
3381 {
3382         TALLOC_CTX *_mem_save_handle_0;
3383         TALLOC_CTX *_mem_save_version_0;
3384         if (flags & NDR_IN) {
3385                 ZERO_STRUCT(r->out);
3386 
3387                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3388                         NDR_PULL_ALLOC(ndr, r->in.handle);
3389                 }
3390                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3391                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3392                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3393                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3394                 NDR_PULL_ALLOC(ndr, r->out.version);
3395                 ZERO_STRUCTP(r->out.version);
3396         }
3397         if (flags & NDR_OUT) {
3398                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3399                         NDR_PULL_ALLOC(ndr, r->out.version);
3400                 }
3401                 _mem_save_version_0 = NDR_PULL_GET_MEM_CTX(ndr);
3402                 NDR_PULL_SET_MEM_CTX(ndr, r->out.version, LIBNDR_FLAG_REF_ALLOC);
3403                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.version));
3404                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_version_0, LIBNDR_FLAG_REF_ALLOC);
3405                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3406         }
3407         return NDR_ERR_SUCCESS;
3408 }
3409 
3410 _PUBLIC_ void ndr_print_winreg_GetVersion(struct ndr_print *ndr, const char *name, int flags, const struct winreg_GetVersion *r)
     /* [<][>][^][v][top][bottom][index][help] */
3411 {
3412         ndr_print_struct(ndr, name, "winreg_GetVersion");
3413         ndr->depth++;
3414         if (flags & NDR_SET_VALUES) {
3415                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3416         }
3417         if (flags & NDR_IN) {
3418                 ndr_print_struct(ndr, "in", "winreg_GetVersion");
3419                 ndr->depth++;
3420                 ndr_print_ptr(ndr, "handle", r->in.handle);
3421                 ndr->depth++;
3422                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3423                 ndr->depth--;
3424                 ndr->depth--;
3425         }
3426         if (flags & NDR_OUT) {
3427                 ndr_print_struct(ndr, "out", "winreg_GetVersion");
3428                 ndr->depth++;
3429                 ndr_print_ptr(ndr, "version", r->out.version);
3430                 ndr->depth++;
3431                 ndr_print_uint32(ndr, "version", *r->out.version);
3432                 ndr->depth--;
3433                 ndr_print_WERROR(ndr, "result", r->out.result);
3434                 ndr->depth--;
3435         }
3436         ndr->depth--;
3437 }
3438 
3439 static enum ndr_err_code ndr_push_winreg_OpenHKCC(struct ndr_push *ndr, int flags, const struct winreg_OpenHKCC *r)
     /* [<][>][^][v][top][bottom][index][help] */
3440 {
3441         if (flags & NDR_IN) {
3442                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
3443                 if (r->in.system_name) {
3444                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
3445                 }
3446                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
3447         }
3448         if (flags & NDR_OUT) {
3449                 if (r->out.handle == NULL) {
3450                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3451                 }
3452                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3453                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3454         }
3455         return NDR_ERR_SUCCESS;
3456 }
3457 
3458 static enum ndr_err_code ndr_pull_winreg_OpenHKCC(struct ndr_pull *ndr, int flags, struct winreg_OpenHKCC *r)
     /* [<][>][^][v][top][bottom][index][help] */
3459 {
3460         uint32_t _ptr_system_name;
3461         TALLOC_CTX *_mem_save_system_name_0;
3462         TALLOC_CTX *_mem_save_handle_0;
3463         if (flags & NDR_IN) {
3464                 ZERO_STRUCT(r->out);
3465 
3466                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
3467                 if (_ptr_system_name) {
3468                         NDR_PULL_ALLOC(ndr, r->in.system_name);
3469                 } else {
3470                         r->in.system_name = NULL;
3471                 }
3472                 if (r->in.system_name) {
3473                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3474                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
3475                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
3476                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
3477                 }
3478                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
3479                 NDR_PULL_ALLOC(ndr, r->out.handle);
3480                 ZERO_STRUCTP(r->out.handle);
3481         }
3482         if (flags & NDR_OUT) {
3483                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3484                         NDR_PULL_ALLOC(ndr, r->out.handle);
3485                 }
3486                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3487                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
3488                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3489                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3490                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3491         }
3492         return NDR_ERR_SUCCESS;
3493 }
3494 
3495 _PUBLIC_ void ndr_print_winreg_OpenHKCC(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKCC *r)
     /* [<][>][^][v][top][bottom][index][help] */
3496 {
3497         ndr_print_struct(ndr, name, "winreg_OpenHKCC");
3498         ndr->depth++;
3499         if (flags & NDR_SET_VALUES) {
3500                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3501         }
3502         if (flags & NDR_IN) {
3503                 ndr_print_struct(ndr, "in", "winreg_OpenHKCC");
3504                 ndr->depth++;
3505                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
3506                 ndr->depth++;
3507                 if (r->in.system_name) {
3508                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
3509                 }
3510                 ndr->depth--;
3511                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
3512                 ndr->depth--;
3513         }
3514         if (flags & NDR_OUT) {
3515                 ndr_print_struct(ndr, "out", "winreg_OpenHKCC");
3516                 ndr->depth++;
3517                 ndr_print_ptr(ndr, "handle", r->out.handle);
3518                 ndr->depth++;
3519                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
3520                 ndr->depth--;
3521                 ndr_print_WERROR(ndr, "result", r->out.result);
3522                 ndr->depth--;
3523         }
3524         ndr->depth--;
3525 }
3526 
3527 static enum ndr_err_code ndr_push_winreg_OpenHKDD(struct ndr_push *ndr, int flags, const struct winreg_OpenHKDD *r)
     /* [<][>][^][v][top][bottom][index][help] */
3528 {
3529         if (flags & NDR_IN) {
3530                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
3531                 if (r->in.system_name) {
3532                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
3533                 }
3534                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
3535         }
3536         if (flags & NDR_OUT) {
3537                 if (r->out.handle == NULL) {
3538                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3539                 }
3540                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3541                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3542         }
3543         return NDR_ERR_SUCCESS;
3544 }
3545 
3546 static enum ndr_err_code ndr_pull_winreg_OpenHKDD(struct ndr_pull *ndr, int flags, struct winreg_OpenHKDD *r)
     /* [<][>][^][v][top][bottom][index][help] */
3547 {
3548         uint32_t _ptr_system_name;
3549         TALLOC_CTX *_mem_save_system_name_0;
3550         TALLOC_CTX *_mem_save_handle_0;
3551         if (flags & NDR_IN) {
3552                 ZERO_STRUCT(r->out);
3553 
3554                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
3555                 if (_ptr_system_name) {
3556                         NDR_PULL_ALLOC(ndr, r->in.system_name);
3557                 } else {
3558                         r->in.system_name = NULL;
3559                 }
3560                 if (r->in.system_name) {
3561                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3562                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
3563                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
3564                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
3565                 }
3566                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
3567                 NDR_PULL_ALLOC(ndr, r->out.handle);
3568                 ZERO_STRUCTP(r->out.handle);
3569         }
3570         if (flags & NDR_OUT) {
3571                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3572                         NDR_PULL_ALLOC(ndr, r->out.handle);
3573                 }
3574                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3575                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
3576                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3577                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3578                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3579         }
3580         return NDR_ERR_SUCCESS;
3581 }
3582 
3583 _PUBLIC_ void ndr_print_winreg_OpenHKDD(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKDD *r)
     /* [<][>][^][v][top][bottom][index][help] */
3584 {
3585         ndr_print_struct(ndr, name, "winreg_OpenHKDD");
3586         ndr->depth++;
3587         if (flags & NDR_SET_VALUES) {
3588                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3589         }
3590         if (flags & NDR_IN) {
3591                 ndr_print_struct(ndr, "in", "winreg_OpenHKDD");
3592                 ndr->depth++;
3593                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
3594                 ndr->depth++;
3595                 if (r->in.system_name) {
3596                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
3597                 }
3598                 ndr->depth--;
3599                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
3600                 ndr->depth--;
3601         }
3602         if (flags & NDR_OUT) {
3603                 ndr_print_struct(ndr, "out", "winreg_OpenHKDD");
3604                 ndr->depth++;
3605                 ndr_print_ptr(ndr, "handle", r->out.handle);
3606                 ndr->depth++;
3607                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
3608                 ndr->depth--;
3609                 ndr_print_WERROR(ndr, "result", r->out.result);
3610                 ndr->depth--;
3611         }
3612         ndr->depth--;
3613 }
3614 
3615 _PUBLIC_ enum ndr_err_code ndr_push_winreg_QueryMultipleValues(struct ndr_push *ndr, int flags, const struct winreg_QueryMultipleValues *r)
     /* [<][>][^][v][top][bottom][index][help] */
3616 {
3617         uint32_t cntr_values_1;
3618         if (flags & NDR_IN) {
3619                 if (r->in.key_handle == NULL) {
3620                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3621                 }
3622                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.key_handle));
3623                 if (r->in.values == NULL) {
3624                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3625                 }
3626                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_values));
3627                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3628                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_values));
3629                 for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
3630                         NDR_CHECK(ndr_push_QueryMultipleValue(ndr, NDR_SCALARS, &r->in.values[cntr_values_1]));
3631                 }
3632                 for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
3633                         NDR_CHECK(ndr_push_QueryMultipleValue(ndr, NDR_BUFFERS, &r->in.values[cntr_values_1]));
3634                 }
3635                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_values));
3636                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.buffer));
3637                 if (r->in.buffer) {
3638                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.buffer_size));
3639                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3640                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.buffer_size));
3641                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, *r->in.buffer_size));
3642                 }
3643                 if (r->in.buffer_size == NULL) {
3644                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3645                 }
3646                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.buffer_size));
3647         }
3648         if (flags & NDR_OUT) {
3649                 if (r->out.values == NULL) {
3650                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3651                 }
3652                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_values));
3653                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3654                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.num_values));
3655                 for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
3656                         NDR_CHECK(ndr_push_QueryMultipleValue(ndr, NDR_SCALARS, &r->out.values[cntr_values_1]));
3657                 }
3658                 for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
3659                         NDR_CHECK(ndr_push_QueryMultipleValue(ndr, NDR_BUFFERS, &r->out.values[cntr_values_1]));
3660                 }
3661                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.buffer));
3662                 if (r->out.buffer) {
3663                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.buffer_size));
3664                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3665                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.buffer_size));
3666                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, *r->out.buffer_size));
3667                 }
3668                 if (r->out.buffer_size == NULL) {
3669                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3670                 }
3671                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.buffer_size));
3672                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3673         }
3674         return NDR_ERR_SUCCESS;
3675 }
3676 
3677 _PUBLIC_ enum ndr_err_code ndr_pull_winreg_QueryMultipleValues(struct ndr_pull *ndr, int flags, struct winreg_QueryMultipleValues *r)
     /* [<][>][^][v][top][bottom][index][help] */
3678 {
3679         uint32_t cntr_values_1;
3680         uint32_t _ptr_buffer;
3681         TALLOC_CTX *_mem_save_key_handle_0;
3682         TALLOC_CTX *_mem_save_values_1;
3683         TALLOC_CTX *_mem_save_buffer_0;
3684         TALLOC_CTX *_mem_save_buffer_size_0;
3685         if (flags & NDR_IN) {
3686                 ZERO_STRUCT(r->out);
3687 
3688                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3689                         NDR_PULL_ALLOC(ndr, r->in.key_handle);
3690                 }
3691                 _mem_save_key_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3692                 NDR_PULL_SET_MEM_CTX(ndr, r->in.key_handle, LIBNDR_FLAG_REF_ALLOC);
3693                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.key_handle));
3694                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_handle_0, LIBNDR_FLAG_REF_ALLOC);
3695                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.values));
3696                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.values));
3697                 if (ndr_get_array_length(ndr, &r->in.values) > ndr_get_array_size(ndr, &r->in.values)) {
3698                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.values), ndr_get_array_length(ndr, &r->in.values));
3699                 }
3700                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3701                         NDR_PULL_ALLOC_N(ndr, r->in.values, ndr_get_array_size(ndr, &r->in.values));
3702                 }
3703                 memcpy(r->out.values, r->in.values, ndr_get_array_size(ndr, &r->in.values) * sizeof(*r->in.values));
3704                 _mem_save_values_1 = NDR_PULL_GET_MEM_CTX(ndr);
3705                 NDR_PULL_SET_MEM_CTX(ndr, r->in.values, 0);
3706                 for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
3707                         NDR_CHECK(ndr_pull_QueryMultipleValue(ndr, NDR_SCALARS, &r->in.values[cntr_values_1]));
3708                 }
3709                 for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
3710                         NDR_CHECK(ndr_pull_QueryMultipleValue(ndr, NDR_BUFFERS, &r->in.values[cntr_values_1]));
3711                 }
3712                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_values_1, 0);
3713                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.num_values));
3714                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
3715                 if (_ptr_buffer) {
3716                         NDR_PULL_ALLOC(ndr, r->in.buffer);
3717                 } else {
3718                         r->in.buffer = NULL;
3719                 }
3720                 if (r->in.buffer) {
3721                         _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
3722                         NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer, 0);
3723                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
3724                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.buffer));
3725                         if (ndr_get_array_length(ndr, &r->in.buffer) > ndr_get_array_size(ndr, &r->in.buffer)) {
3726                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.buffer), ndr_get_array_length(ndr, &r->in.buffer));
3727                         }
3728                         NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer));
3729                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_length(ndr, &r->in.buffer)));
3730                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
3731                 }
3732                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3733                         NDR_PULL_ALLOC(ndr, r->in.buffer_size);
3734                 }
3735                 _mem_save_buffer_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
3736                 NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer_size, LIBNDR_FLAG_REF_ALLOC);
3737                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
3738                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_size_0, LIBNDR_FLAG_REF_ALLOC);
3739                 NDR_PULL_ALLOC_N(ndr, r->out.values, r->in.num_values);
3740                 memcpy(r->out.values, r->in.values, (r->in.num_values) * sizeof(*r->in.values));
3741                 NDR_PULL_ALLOC(ndr, r->out.buffer_size);
3742                 *r->out.buffer_size = *r->in.buffer_size;
3743                 if (r->in.values) {
3744                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.values, r->in.num_values));
3745                 }
3746                 if (r->in.values) {
3747                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.values, r->in.num_values));
3748                 }
3749                 if (r->in.buffer) {
3750                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, *r->in.buffer_size));
3751                 }
3752                 if (r->in.buffer) {
3753                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->in.buffer, *r->in.buffer_size));
3754                 }
3755         }
3756         if (flags & NDR_OUT) {
3757                 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.values));
3758                 NDR_CHECK(ndr_pull_array_length(ndr, &r->out.values));
3759                 if (ndr_get_array_length(ndr, &r->out.values) > ndr_get_array_size(ndr, &r->out.values)) {
3760                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.values), ndr_get_array_length(ndr, &r->out.values));
3761                 }
3762                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3763                         NDR_PULL_ALLOC_N(ndr, r->out.values, ndr_get_array_size(ndr, &r->out.values));
3764                 }
3765                 memcpy(r->out.values, r->in.values, ndr_get_array_size(ndr, &r->out.values) * sizeof(*r->in.values));
3766                 _mem_save_values_1 = NDR_PULL_GET_MEM_CTX(ndr);
3767                 NDR_PULL_SET_MEM_CTX(ndr, r->out.values, 0);
3768                 for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
3769                         NDR_CHECK(ndr_pull_QueryMultipleValue(ndr, NDR_SCALARS, &r->out.values[cntr_values_1]));
3770                 }
3771                 for (cntr_values_1 = 0; cntr_values_1 < r->in.num_values; cntr_values_1++) {
3772                         NDR_CHECK(ndr_pull_QueryMultipleValue(ndr, NDR_BUFFERS, &r->out.values[cntr_values_1]));
3773                 }
3774                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_values_1, 0);
3775                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
3776                 if (_ptr_buffer) {
3777                         NDR_PULL_ALLOC(ndr, r->out.buffer);
3778                 } else {
3779                         r->out.buffer = NULL;
3780                 }
3781                 if (r->out.buffer) {
3782                         _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
3783                         NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer, 0);
3784                         NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
3785                         NDR_CHECK(ndr_pull_array_length(ndr, &r->out.buffer));
3786                         if (ndr_get_array_length(ndr, &r->out.buffer) > ndr_get_array_size(ndr, &r->out.buffer)) {
3787                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.buffer), ndr_get_array_length(ndr, &r->out.buffer));
3788                         }
3789                         NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
3790                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_length(ndr, &r->out.buffer)));
3791                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
3792                 }
3793                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3794                         NDR_PULL_ALLOC(ndr, r->out.buffer_size);
3795                 }
3796                 _mem_save_buffer_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
3797                 NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer_size, LIBNDR_FLAG_REF_ALLOC);
3798                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.buffer_size));
3799                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_size_0, LIBNDR_FLAG_REF_ALLOC);
3800                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3801                 if (r->out.values) {
3802                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.values, r->in.num_values));
3803                 }
3804                 if (r->out.values) {
3805                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.values, r->in.num_values));
3806                 }
3807                 if (r->out.buffer) {
3808                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, *r->out.buffer_size));
3809                 }
3810                 if (r->out.buffer) {
3811                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.buffer, *r->out.buffer_size));
3812                 }
3813         }
3814         return NDR_ERR_SUCCESS;
3815 }
3816 
3817 _PUBLIC_ void ndr_print_winreg_QueryMultipleValues(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryMultipleValues *r)
     /* [<][>][^][v][top][bottom][index][help] */
3818 {
3819         uint32_t cntr_values_1;
3820         ndr_print_struct(ndr, name, "winreg_QueryMultipleValues");
3821         ndr->depth++;
3822         if (flags & NDR_SET_VALUES) {
3823                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3824         }
3825         if (flags & NDR_IN) {
3826                 ndr_print_struct(ndr, "in", "winreg_QueryMultipleValues");
3827                 ndr->depth++;
3828                 ndr_print_ptr(ndr, "key_handle", r->in.key_handle);
3829                 ndr->depth++;
3830                 ndr_print_policy_handle(ndr, "key_handle", r->in.key_handle);
3831                 ndr->depth--;
3832                 ndr_print_ptr(ndr, "values", r->in.values);
3833                 ndr->depth++;
3834                 ndr->print(ndr, "%s: ARRAY(%d)", "values", (int)r->in.num_values);
3835                 ndr->depth++;
3836                 for (cntr_values_1=0;cntr_values_1<r->in.num_values;cntr_values_1++) {
3837                         char *idx_1=NULL;
3838                         if (asprintf(&idx_1, "[%d]", cntr_values_1) != -1) {
3839                                 ndr_print_QueryMultipleValue(ndr, "values", &r->in.values[cntr_values_1]);
3840                                 free(idx_1);
3841                         }
3842                 }
3843                 ndr->depth--;
3844                 ndr->depth--;
3845                 ndr_print_uint32(ndr, "num_values", r->in.num_values);
3846                 ndr_print_ptr(ndr, "buffer", r->in.buffer);
3847                 ndr->depth++;
3848                 if (r->in.buffer) {
3849                         ndr_print_array_uint8(ndr, "buffer", r->in.buffer, *r->in.buffer_size);
3850                 }
3851                 ndr->depth--;
3852                 ndr_print_ptr(ndr, "buffer_size", r->in.buffer_size);
3853                 ndr->depth++;
3854                 ndr_print_uint32(ndr, "buffer_size", *r->in.buffer_size);
3855                 ndr->depth--;
3856                 ndr->depth--;
3857         }
3858         if (flags & NDR_OUT) {
3859                 ndr_print_struct(ndr, "out", "winreg_QueryMultipleValues");
3860                 ndr->depth++;
3861                 ndr_print_ptr(ndr, "values", r->out.values);
3862                 ndr->depth++;
3863                 ndr->print(ndr, "%s: ARRAY(%d)", "values", (int)r->in.num_values);
3864                 ndr->depth++;
3865                 for (cntr_values_1=0;cntr_values_1<r->in.num_values;cntr_values_1++) {
3866                         char *idx_1=NULL;
3867                         if (asprintf(&idx_1, "[%d]", cntr_values_1) != -1) {
3868                                 ndr_print_QueryMultipleValue(ndr, "values", &r->out.values[cntr_values_1]);
3869                                 free(idx_1);
3870                         }
3871                 }
3872                 ndr->depth--;
3873                 ndr->depth--;
3874                 ndr_print_ptr(ndr, "buffer", r->out.buffer);
3875                 ndr->depth++;
3876                 if (r->out.buffer) {
3877                         ndr_print_array_uint8(ndr, "buffer", r->out.buffer, *r->out.buffer_size);
3878                 }
3879                 ndr->depth--;
3880                 ndr_print_ptr(ndr, "buffer_size", r->out.buffer_size);
3881                 ndr->depth++;
3882                 ndr_print_uint32(ndr, "buffer_size", *r->out.buffer_size);
3883                 ndr->depth--;
3884                 ndr_print_WERROR(ndr, "result", r->out.result);
3885                 ndr->depth--;
3886         }
3887         ndr->depth--;
3888 }
3889 
3890 static enum ndr_err_code ndr_push_winreg_InitiateSystemShutdownEx(struct ndr_push *ndr, int flags, const struct winreg_InitiateSystemShutdownEx *r)
     /* [<][>][^][v][top][bottom][index][help] */
3891 {
3892         if (flags & NDR_IN) {
3893                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.hostname));
3894                 if (r->in.hostname) {
3895                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.hostname));
3896                 }
3897                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.message));
3898                 if (r->in.message) {
3899                         NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.message));
3900                 }
3901                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.timeout));
3902                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.force_apps));
3903                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->in.do_reboot));
3904                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.reason));
3905         }
3906         if (flags & NDR_OUT) {
3907                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3908         }
3909         return NDR_ERR_SUCCESS;
3910 }
3911 
3912 static enum ndr_err_code ndr_pull_winreg_InitiateSystemShutdownEx(struct ndr_pull *ndr, int flags, struct winreg_InitiateSystemShutdownEx *r)
     /* [<][>][^][v][top][bottom][index][help] */
3913 {
3914         uint32_t _ptr_hostname;
3915         uint32_t _ptr_message;
3916         TALLOC_CTX *_mem_save_hostname_0;
3917         TALLOC_CTX *_mem_save_message_0;
3918         if (flags & NDR_IN) {
3919                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_hostname));
3920                 if (_ptr_hostname) {
3921                         NDR_PULL_ALLOC(ndr, r->in.hostname);
3922                 } else {
3923                         r->in.hostname = NULL;
3924                 }
3925                 if (r->in.hostname) {
3926                         _mem_save_hostname_0 = NDR_PULL_GET_MEM_CTX(ndr);
3927                         NDR_PULL_SET_MEM_CTX(ndr, r->in.hostname, 0);
3928                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.hostname));
3929                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_hostname_0, 0);
3930                 }
3931                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_message));
3932                 if (_ptr_message) {
3933                         NDR_PULL_ALLOC(ndr, r->in.message);
3934                 } else {
3935                         r->in.message = NULL;
3936                 }
3937                 if (r->in.message) {
3938                         _mem_save_message_0 = NDR_PULL_GET_MEM_CTX(ndr);
3939                         NDR_PULL_SET_MEM_CTX(ndr, r->in.message, 0);
3940                         NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.message));
3941                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_message_0, 0);
3942                 }
3943                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.timeout));
3944                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.force_apps));
3945                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->in.do_reboot));
3946                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.reason));
3947         }
3948         if (flags & NDR_OUT) {
3949                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3950         }
3951         return NDR_ERR_SUCCESS;
3952 }
3953 
3954 _PUBLIC_ void ndr_print_winreg_InitiateSystemShutdownEx(struct ndr_print *ndr, const char *name, int flags, const struct winreg_InitiateSystemShutdownEx *r)
     /* [<][>][^][v][top][bottom][index][help] */
3955 {
3956         ndr_print_struct(ndr, name, "winreg_InitiateSystemShutdownEx");
3957         ndr->depth++;
3958         if (flags & NDR_SET_VALUES) {
3959                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3960         }
3961         if (flags & NDR_IN) {
3962                 ndr_print_struct(ndr, "in", "winreg_InitiateSystemShutdownEx");
3963                 ndr->depth++;
3964                 ndr_print_ptr(ndr, "hostname", r->in.hostname);
3965                 ndr->depth++;
3966                 if (r->in.hostname) {
3967                         ndr_print_uint16(ndr, "hostname", *r->in.hostname);
3968                 }
3969                 ndr->depth--;
3970                 ndr_print_ptr(ndr, "message", r->in.message);
3971                 ndr->depth++;
3972                 if (r->in.message) {
3973                         ndr_print_lsa_StringLarge(ndr, "message", r->in.message);
3974                 }
3975                 ndr->depth--;
3976                 ndr_print_uint32(ndr, "timeout", r->in.timeout);
3977                 ndr_print_uint8(ndr, "force_apps", r->in.force_apps);
3978                 ndr_print_uint8(ndr, "do_reboot", r->in.do_reboot);
3979                 ndr_print_uint32(ndr, "reason", r->in.reason);
3980                 ndr->depth--;
3981         }
3982         if (flags & NDR_OUT) {
3983                 ndr_print_struct(ndr, "out", "winreg_InitiateSystemShutdownEx");
3984                 ndr->depth++;
3985                 ndr_print_WERROR(ndr, "result", r->out.result);
3986                 ndr->depth--;
3987         }
3988         ndr->depth--;
3989 }
3990 
3991 static enum ndr_err_code ndr_push_winreg_SaveKeyEx(struct ndr_push *ndr, int flags, const struct winreg_SaveKeyEx *r)
     /* [<][>][^][v][top][bottom][index][help] */
3992 {
3993         if (flags & NDR_IN) {
3994         }
3995         if (flags & NDR_OUT) {
3996                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3997         }
3998         return NDR_ERR_SUCCESS;
3999 }
4000 
4001 static enum ndr_err_code ndr_pull_winreg_SaveKeyEx(struct ndr_pull *ndr, int flags, struct winreg_SaveKeyEx *r)
     /* [<][>][^][v][top][bottom][index][help] */
4002 {
4003         if (flags & NDR_IN) {
4004         }
4005         if (flags & NDR_OUT) {
4006                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4007         }
4008         return NDR_ERR_SUCCESS;
4009 }
4010 
4011 _PUBLIC_ void ndr_print_winreg_SaveKeyEx(struct ndr_print *ndr, const char *name, int flags, const struct winreg_SaveKeyEx *r)
     /* [<][>][^][v][top][bottom][index][help] */
4012 {
4013         ndr_print_struct(ndr, name, "winreg_SaveKeyEx");
4014         ndr->depth++;
4015         if (flags & NDR_SET_VALUES) {
4016                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4017         }
4018         if (flags & NDR_IN) {
4019                 ndr_print_struct(ndr, "in", "winreg_SaveKeyEx");
4020                 ndr->depth++;
4021                 ndr->depth--;
4022         }
4023         if (flags & NDR_OUT) {
4024                 ndr_print_struct(ndr, "out", "winreg_SaveKeyEx");
4025                 ndr->depth++;
4026                 ndr_print_WERROR(ndr, "result", r->out.result);
4027                 ndr->depth--;
4028         }
4029         ndr->depth--;
4030 }
4031 
4032 static enum ndr_err_code ndr_push_winreg_OpenHKPT(struct ndr_push *ndr, int flags, const struct winreg_OpenHKPT *r)
     /* [<][>][^][v][top][bottom][index][help] */
4033 {
4034         if (flags & NDR_IN) {
4035                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
4036                 if (r->in.system_name) {
4037                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
4038                 }
4039                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
4040         }
4041         if (flags & NDR_OUT) {
4042                 if (r->out.handle == NULL) {
4043                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4044                 }
4045                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4046                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4047         }
4048         return NDR_ERR_SUCCESS;
4049 }
4050 
4051 static enum ndr_err_code ndr_pull_winreg_OpenHKPT(struct ndr_pull *ndr, int flags, struct winreg_OpenHKPT *r)
     /* [<][>][^][v][top][bottom][index][help] */
4052 {
4053         uint32_t _ptr_system_name;
4054         TALLOC_CTX *_mem_save_system_name_0;
4055         TALLOC_CTX *_mem_save_handle_0;
4056         if (flags & NDR_IN) {
4057                 ZERO_STRUCT(r->out);
4058 
4059                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
4060                 if (_ptr_system_name) {
4061                         NDR_PULL_ALLOC(ndr, r->in.system_name);
4062                 } else {
4063                         r->in.system_name = NULL;
4064                 }
4065                 if (r->in.system_name) {
4066                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4067                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
4068                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
4069                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
4070                 }
4071                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
4072                 NDR_PULL_ALLOC(ndr, r->out.handle);
4073                 ZERO_STRUCTP(r->out.handle);
4074         }
4075         if (flags & NDR_OUT) {
4076                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4077                         NDR_PULL_ALLOC(ndr, r->out.handle);
4078                 }
4079                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4080                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
4081                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4082                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4083                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4084         }
4085         return NDR_ERR_SUCCESS;
4086 }
4087 
4088 _PUBLIC_ void ndr_print_winreg_OpenHKPT(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKPT *r)
     /* [<][>][^][v][top][bottom][index][help] */
4089 {
4090         ndr_print_struct(ndr, name, "winreg_OpenHKPT");
4091         ndr->depth++;
4092         if (flags & NDR_SET_VALUES) {
4093                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4094         }
4095         if (flags & NDR_IN) {
4096                 ndr_print_struct(ndr, "in", "winreg_OpenHKPT");
4097                 ndr->depth++;
4098                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
4099                 ndr->depth++;
4100                 if (r->in.system_name) {
4101                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
4102                 }
4103                 ndr->depth--;
4104                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
4105                 ndr->depth--;
4106         }
4107         if (flags & NDR_OUT) {
4108                 ndr_print_struct(ndr, "out", "winreg_OpenHKPT");
4109                 ndr->depth++;
4110                 ndr_print_ptr(ndr, "handle", r->out.handle);
4111                 ndr->depth++;
4112                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
4113                 ndr->depth--;
4114                 ndr_print_WERROR(ndr, "result", r->out.result);
4115                 ndr->depth--;
4116         }
4117         ndr->depth--;
4118 }
4119 
4120 static enum ndr_err_code ndr_push_winreg_OpenHKPN(struct ndr_push *ndr, int flags, const struct winreg_OpenHKPN *r)
     /* [<][>][^][v][top][bottom][index][help] */
4121 {
4122         if (flags & NDR_IN) {
4123                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.system_name));
4124                 if (r->in.system_name) {
4125                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, *r->in.system_name));
4126                 }
4127                 NDR_CHECK(ndr_push_winreg_AccessMask(ndr, NDR_SCALARS, r->in.access_mask));
4128         }
4129         if (flags & NDR_OUT) {
4130                 if (r->out.handle == NULL) {
4131                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4132                 }
4133                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4134                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4135         }
4136         return NDR_ERR_SUCCESS;
4137 }
4138 
4139 static enum ndr_err_code ndr_pull_winreg_OpenHKPN(struct ndr_pull *ndr, int flags, struct winreg_OpenHKPN *r)
     /* [<][>][^][v][top][bottom][index][help] */
4140 {
4141         uint32_t _ptr_system_name;
4142         TALLOC_CTX *_mem_save_system_name_0;
4143         TALLOC_CTX *_mem_save_handle_0;
4144         if (flags & NDR_IN) {
4145                 ZERO_STRUCT(r->out);
4146 
4147                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_system_name));
4148                 if (_ptr_system_name) {
4149                         NDR_PULL_ALLOC(ndr, r->in.system_name);
4150                 } else {
4151                         r->in.system_name = NULL;
4152                 }
4153                 if (r->in.system_name) {
4154                         _mem_save_system_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4155                         NDR_PULL_SET_MEM_CTX(ndr, r->in.system_name, 0);
4156                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, r->in.system_name));
4157                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_system_name_0, 0);
4158                 }
4159                 NDR_CHECK(ndr_pull_winreg_AccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
4160                 NDR_PULL_ALLOC(ndr, r->out.handle);
4161                 ZERO_STRUCTP(r->out.handle);
4162         }
4163         if (flags & NDR_OUT) {
4164                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4165                         NDR_PULL_ALLOC(ndr, r->out.handle);
4166                 }
4167                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4168                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
4169                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4170                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4171                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4172         }
4173         return NDR_ERR_SUCCESS;
4174 }
4175 
4176 _PUBLIC_ void ndr_print_winreg_OpenHKPN(struct ndr_print *ndr, const char *name, int flags, const struct winreg_OpenHKPN *r)
     /* [<][>][^][v][top][bottom][index][help] */
4177 {
4178         ndr_print_struct(ndr, name, "winreg_OpenHKPN");
4179         ndr->depth++;
4180         if (flags & NDR_SET_VALUES) {
4181                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4182         }
4183         if (flags & NDR_IN) {
4184                 ndr_print_struct(ndr, "in", "winreg_OpenHKPN");
4185                 ndr->depth++;
4186                 ndr_print_ptr(ndr, "system_name", r->in.system_name);
4187                 ndr->depth++;
4188                 if (r->in.system_name) {
4189                         ndr_print_uint16(ndr, "system_name", *r->in.system_name);
4190                 }
4191                 ndr->depth--;
4192                 ndr_print_winreg_AccessMask(ndr, "access_mask", r->in.access_mask);
4193                 ndr->depth--;
4194         }
4195         if (flags & NDR_OUT) {
4196                 ndr_print_struct(ndr, "out", "winreg_OpenHKPN");
4197                 ndr->depth++;
4198                 ndr_print_ptr(ndr, "handle", r->out.handle);
4199                 ndr->depth++;
4200                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
4201                 ndr->depth--;
4202                 ndr_print_WERROR(ndr, "result", r->out.result);
4203                 ndr->depth--;
4204         }
4205         ndr->depth--;
4206 }
4207 
4208 static enum ndr_err_code ndr_push_winreg_QueryMultipleValues2(struct ndr_push *ndr, int flags, const struct winreg_QueryMultipleValues2 *r)
     /* [<][>][^][v][top][bottom][index][help] */
4209 {
4210         if (flags & NDR_IN) {
4211         }
4212         if (flags & NDR_OUT) {
4213                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4214         }
4215         return NDR_ERR_SUCCESS;
4216 }
4217 
4218 static enum ndr_err_code ndr_pull_winreg_QueryMultipleValues2(struct ndr_pull *ndr, int flags, struct winreg_QueryMultipleValues2 *r)
     /* [<][>][^][v][top][bottom][index][help] */
4219 {
4220         if (flags & NDR_IN) {
4221         }
4222         if (flags & NDR_OUT) {
4223                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4224         }
4225         return NDR_ERR_SUCCESS;
4226 }
4227 
4228 _PUBLIC_ void ndr_print_winreg_QueryMultipleValues2(struct ndr_print *ndr, const char *name, int flags, const struct winreg_QueryMultipleValues2 *r)
     /* [<][>][^][v][top][bottom][index][help] */
4229 {
4230         ndr_print_struct(ndr, name, "winreg_QueryMultipleValues2");
4231         ndr->depth++;
4232         if (flags & NDR_SET_VALUES) {
4233                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4234         }
4235         if (flags & NDR_IN) {
4236                 ndr_print_struct(ndr, "in", "winreg_QueryMultipleValues2");
4237                 ndr->depth++;
4238                 ndr->depth--;
4239         }
4240         if (flags & NDR_OUT) {
4241                 ndr_print_struct(ndr, "out", "winreg_QueryMultipleValues2");
4242                 ndr->depth++;
4243                 ndr_print_WERROR(ndr, "result", r->out.result);
4244                 ndr->depth--;
4245         }
4246         ndr->depth--;
4247 }
4248 
4249 static const struct ndr_interface_call winreg_calls[] = {
4250         {
4251                 "winreg_OpenHKCR",
4252                 sizeof(struct winreg_OpenHKCR),
4253                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKCR,
4254                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKCR,
4255                 (ndr_print_function_t) ndr_print_winreg_OpenHKCR,
4256                 false,
4257         },
4258         {
4259                 "winreg_OpenHKCU",
4260                 sizeof(struct winreg_OpenHKCU),
4261                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKCU,
4262                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKCU,
4263                 (ndr_print_function_t) ndr_print_winreg_OpenHKCU,
4264                 false,
4265         },
4266         {
4267                 "winreg_OpenHKLM",
4268                 sizeof(struct winreg_OpenHKLM),
4269                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKLM,
4270                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKLM,
4271                 (ndr_print_function_t) ndr_print_winreg_OpenHKLM,
4272                 false,
4273         },
4274         {
4275                 "winreg_OpenHKPD",
4276                 sizeof(struct winreg_OpenHKPD),
4277                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKPD,
4278                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKPD,
4279                 (ndr_print_function_t) ndr_print_winreg_OpenHKPD,
4280                 false,
4281         },
4282         {
4283                 "winreg_OpenHKU",
4284                 sizeof(struct winreg_OpenHKU),
4285                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKU,
4286                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKU,
4287                 (ndr_print_function_t) ndr_print_winreg_OpenHKU,
4288                 false,
4289         },
4290         {
4291                 "winreg_CloseKey",
4292                 sizeof(struct winreg_CloseKey),
4293                 (ndr_push_flags_fn_t) ndr_push_winreg_CloseKey,
4294                 (ndr_pull_flags_fn_t) ndr_pull_winreg_CloseKey,
4295                 (ndr_print_function_t) ndr_print_winreg_CloseKey,
4296                 false,
4297         },
4298         {
4299                 "winreg_CreateKey",
4300                 sizeof(struct winreg_CreateKey),
4301                 (ndr_push_flags_fn_t) ndr_push_winreg_CreateKey,
4302                 (ndr_pull_flags_fn_t) ndr_pull_winreg_CreateKey,
4303                 (ndr_print_function_t) ndr_print_winreg_CreateKey,
4304                 false,
4305         },
4306         {
4307                 "winreg_DeleteKey",
4308                 sizeof(struct winreg_DeleteKey),
4309                 (ndr_push_flags_fn_t) ndr_push_winreg_DeleteKey,
4310                 (ndr_pull_flags_fn_t) ndr_pull_winreg_DeleteKey,
4311                 (ndr_print_function_t) ndr_print_winreg_DeleteKey,
4312                 false,
4313         },
4314         {
4315                 "winreg_DeleteValue",
4316                 sizeof(struct winreg_DeleteValue),
4317                 (ndr_push_flags_fn_t) ndr_push_winreg_DeleteValue,
4318                 (ndr_pull_flags_fn_t) ndr_pull_winreg_DeleteValue,
4319                 (ndr_print_function_t) ndr_print_winreg_DeleteValue,
4320                 false,
4321         },
4322         {
4323                 "winreg_EnumKey",
4324                 sizeof(struct winreg_EnumKey),
4325                 (ndr_push_flags_fn_t) ndr_push_winreg_EnumKey,
4326                 (ndr_pull_flags_fn_t) ndr_pull_winreg_EnumKey,
4327                 (ndr_print_function_t) ndr_print_winreg_EnumKey,
4328                 false,
4329         },
4330         {
4331                 "winreg_EnumValue",
4332                 sizeof(struct winreg_EnumValue),
4333                 (ndr_push_flags_fn_t) ndr_push_winreg_EnumValue,
4334                 (ndr_pull_flags_fn_t) ndr_pull_winreg_EnumValue,
4335                 (ndr_print_function_t) ndr_print_winreg_EnumValue,
4336                 false,
4337         },
4338         {
4339                 "winreg_FlushKey",
4340                 sizeof(struct winreg_FlushKey),
4341                 (ndr_push_flags_fn_t) ndr_push_winreg_FlushKey,
4342                 (ndr_pull_flags_fn_t) ndr_pull_winreg_FlushKey,
4343                 (ndr_print_function_t) ndr_print_winreg_FlushKey,
4344                 false,
4345         },
4346         {
4347                 "winreg_GetKeySecurity",
4348                 sizeof(struct winreg_GetKeySecurity),
4349                 (ndr_push_flags_fn_t) ndr_push_winreg_GetKeySecurity,
4350                 (ndr_pull_flags_fn_t) ndr_pull_winreg_GetKeySecurity,
4351                 (ndr_print_function_t) ndr_print_winreg_GetKeySecurity,
4352                 false,
4353         },
4354         {
4355                 "winreg_LoadKey",
4356                 sizeof(struct winreg_LoadKey),
4357                 (ndr_push_flags_fn_t) ndr_push_winreg_LoadKey,
4358                 (ndr_pull_flags_fn_t) ndr_pull_winreg_LoadKey,
4359                 (ndr_print_function_t) ndr_print_winreg_LoadKey,
4360                 false,
4361         },
4362         {
4363                 "winreg_NotifyChangeKeyValue",
4364                 sizeof(struct winreg_NotifyChangeKeyValue),
4365                 (ndr_push_flags_fn_t) ndr_push_winreg_NotifyChangeKeyValue,
4366                 (ndr_pull_flags_fn_t) ndr_pull_winreg_NotifyChangeKeyValue,
4367                 (ndr_print_function_t) ndr_print_winreg_NotifyChangeKeyValue,
4368                 false,
4369         },
4370         {
4371                 "winreg_OpenKey",
4372                 sizeof(struct winreg_OpenKey),
4373                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenKey,
4374                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenKey,
4375                 (ndr_print_function_t) ndr_print_winreg_OpenKey,
4376                 false,
4377         },
4378         {
4379                 "winreg_QueryInfoKey",
4380                 sizeof(struct winreg_QueryInfoKey),
4381                 (ndr_push_flags_fn_t) ndr_push_winreg_QueryInfoKey,
4382                 (ndr_pull_flags_fn_t) ndr_pull_winreg_QueryInfoKey,
4383                 (ndr_print_function_t) ndr_print_winreg_QueryInfoKey,
4384                 false,
4385         },
4386         {
4387                 "winreg_QueryValue",
4388                 sizeof(struct winreg_QueryValue),
4389                 (ndr_push_flags_fn_t) ndr_push_winreg_QueryValue,
4390                 (ndr_pull_flags_fn_t) ndr_pull_winreg_QueryValue,
4391                 (ndr_print_function_t) ndr_print_winreg_QueryValue,
4392                 false,
4393         },
4394         {
4395                 "winreg_ReplaceKey",
4396                 sizeof(struct winreg_ReplaceKey),
4397                 (ndr_push_flags_fn_t) ndr_push_winreg_ReplaceKey,
4398                 (ndr_pull_flags_fn_t) ndr_pull_winreg_ReplaceKey,
4399                 (ndr_print_function_t) ndr_print_winreg_ReplaceKey,
4400                 false,
4401         },
4402         {
4403                 "winreg_RestoreKey",
4404                 sizeof(struct winreg_RestoreKey),
4405                 (ndr_push_flags_fn_t) ndr_push_winreg_RestoreKey,
4406                 (ndr_pull_flags_fn_t) ndr_pull_winreg_RestoreKey,
4407                 (ndr_print_function_t) ndr_print_winreg_RestoreKey,
4408                 false,
4409         },
4410         {
4411                 "winreg_SaveKey",
4412                 sizeof(struct winreg_SaveKey),
4413                 (ndr_push_flags_fn_t) ndr_push_winreg_SaveKey,
4414                 (ndr_pull_flags_fn_t) ndr_pull_winreg_SaveKey,
4415                 (ndr_print_function_t) ndr_print_winreg_SaveKey,
4416                 false,
4417         },
4418         {
4419                 "winreg_SetKeySecurity",
4420                 sizeof(struct winreg_SetKeySecurity),
4421                 (ndr_push_flags_fn_t) ndr_push_winreg_SetKeySecurity,
4422                 (ndr_pull_flags_fn_t) ndr_pull_winreg_SetKeySecurity,
4423                 (ndr_print_function_t) ndr_print_winreg_SetKeySecurity,
4424                 false,
4425         },
4426         {
4427                 "winreg_SetValue",
4428                 sizeof(struct winreg_SetValue),
4429                 (ndr_push_flags_fn_t) ndr_push_winreg_SetValue,
4430                 (ndr_pull_flags_fn_t) ndr_pull_winreg_SetValue,
4431                 (ndr_print_function_t) ndr_print_winreg_SetValue,
4432                 false,
4433         },
4434         {
4435                 "winreg_UnLoadKey",
4436                 sizeof(struct winreg_UnLoadKey),
4437                 (ndr_push_flags_fn_t) ndr_push_winreg_UnLoadKey,
4438                 (ndr_pull_flags_fn_t) ndr_pull_winreg_UnLoadKey,
4439                 (ndr_print_function_t) ndr_print_winreg_UnLoadKey,
4440                 false,
4441         },
4442         {
4443                 "winreg_InitiateSystemShutdown",
4444                 sizeof(struct winreg_InitiateSystemShutdown),
4445                 (ndr_push_flags_fn_t) ndr_push_winreg_InitiateSystemShutdown,
4446                 (ndr_pull_flags_fn_t) ndr_pull_winreg_InitiateSystemShutdown,
4447                 (ndr_print_function_t) ndr_print_winreg_InitiateSystemShutdown,
4448                 false,
4449         },
4450         {
4451                 "winreg_AbortSystemShutdown",
4452                 sizeof(struct winreg_AbortSystemShutdown),
4453                 (ndr_push_flags_fn_t) ndr_push_winreg_AbortSystemShutdown,
4454                 (ndr_pull_flags_fn_t) ndr_pull_winreg_AbortSystemShutdown,
4455                 (ndr_print_function_t) ndr_print_winreg_AbortSystemShutdown,
4456                 false,
4457         },
4458         {
4459                 "winreg_GetVersion",
4460                 sizeof(struct winreg_GetVersion),
4461                 (ndr_push_flags_fn_t) ndr_push_winreg_GetVersion,
4462                 (ndr_pull_flags_fn_t) ndr_pull_winreg_GetVersion,
4463                 (ndr_print_function_t) ndr_print_winreg_GetVersion,
4464                 false,
4465         },
4466         {
4467                 "winreg_OpenHKCC",
4468                 sizeof(struct winreg_OpenHKCC),
4469                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKCC,
4470                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKCC,
4471                 (ndr_print_function_t) ndr_print_winreg_OpenHKCC,
4472                 false,
4473         },
4474         {
4475                 "winreg_OpenHKDD",
4476                 sizeof(struct winreg_OpenHKDD),
4477                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKDD,
4478                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKDD,
4479                 (ndr_print_function_t) ndr_print_winreg_OpenHKDD,
4480                 false,
4481         },
4482         {
4483                 "winreg_QueryMultipleValues",
4484                 sizeof(struct winreg_QueryMultipleValues),
4485                 (ndr_push_flags_fn_t) ndr_push_winreg_QueryMultipleValues,
4486                 (ndr_pull_flags_fn_t) ndr_pull_winreg_QueryMultipleValues,
4487                 (ndr_print_function_t) ndr_print_winreg_QueryMultipleValues,
4488                 false,
4489         },
4490         {
4491                 "winreg_InitiateSystemShutdownEx",
4492                 sizeof(struct winreg_InitiateSystemShutdownEx),
4493                 (ndr_push_flags_fn_t) ndr_push_winreg_InitiateSystemShutdownEx,
4494                 (ndr_pull_flags_fn_t) ndr_pull_winreg_InitiateSystemShutdownEx,
4495                 (ndr_print_function_t) ndr_print_winreg_InitiateSystemShutdownEx,
4496                 false,
4497         },
4498         {
4499                 "winreg_SaveKeyEx",
4500                 sizeof(struct winreg_SaveKeyEx),
4501                 (ndr_push_flags_fn_t) ndr_push_winreg_SaveKeyEx,
4502                 (ndr_pull_flags_fn_t) ndr_pull_winreg_SaveKeyEx,
4503                 (ndr_print_function_t) ndr_print_winreg_SaveKeyEx,
4504                 false,
4505         },
4506         {
4507                 "winreg_OpenHKPT",
4508                 sizeof(struct winreg_OpenHKPT),
4509                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKPT,
4510                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKPT,
4511                 (ndr_print_function_t) ndr_print_winreg_OpenHKPT,
4512                 false,
4513         },
4514         {
4515                 "winreg_OpenHKPN",
4516                 sizeof(struct winreg_OpenHKPN),
4517                 (ndr_push_flags_fn_t) ndr_push_winreg_OpenHKPN,
4518                 (ndr_pull_flags_fn_t) ndr_pull_winreg_OpenHKPN,
4519                 (ndr_print_function_t) ndr_print_winreg_OpenHKPN,
4520                 false,
4521         },
4522         {
4523                 "winreg_QueryMultipleValues2",
4524                 sizeof(struct winreg_QueryMultipleValues2),
4525                 (ndr_push_flags_fn_t) ndr_push_winreg_QueryMultipleValues2,
4526                 (ndr_pull_flags_fn_t) ndr_pull_winreg_QueryMultipleValues2,
4527                 (ndr_print_function_t) ndr_print_winreg_QueryMultipleValues2,
4528                 false,
4529         },
4530         { NULL, 0, NULL, NULL, NULL, false }
4531 };
4532 
4533 static const char * const winreg_endpoint_strings[] = {
4534         "ncacn_np:[\\pipe\\winreg]", 
4535         "ncacn_ip_tcp:", 
4536         "ncalrpc:", 
4537 };
4538 
4539 static const struct ndr_interface_string_array winreg_endpoints = {
4540         .count  = 3,
4541         .names  = winreg_endpoint_strings
4542 };
4543 
4544 static const char * const winreg_authservice_strings[] = {
4545         "host", 
4546 };
4547 
4548 static const struct ndr_interface_string_array winreg_authservices = {
4549         .count  = 1,
4550         .names  = winreg_authservice_strings
4551 };
4552 
4553 
4554 const struct ndr_interface_table ndr_table_winreg = {
4555         .name           = "winreg",
4556         .syntax_id      = {
4557                 {0x338cd001,0x2244,0x31f1,{0xaa,0xaa},{0x90,0x00,0x38,0x00,0x10,0x03}},
4558                 NDR_WINREG_VERSION
4559         },
4560         .helpstring     = NDR_WINREG_HELPSTRING,
4561         .num_calls      = 35,
4562         .calls          = winreg_calls,
4563         .endpoints      = &winreg_endpoints,
4564         .authservices   = &winreg_authservices
4565 };
4566 

/* [<][>][^][v][top][bottom][index][help] */