1/* parser auto-generated by pidl */ 2 3#include "includes.h" 4#include "../librpc/gen_ndr/ndr_svcctl.h" 5 6#include "librpc/gen_ndr/ndr_misc.h" 7#include "librpc/gen_ndr/ndr_security.h" 8static enum ndr_err_code ndr_push_SERVICE_LOCK_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_LOCK_STATUS *r) 9{ 10 if (ndr_flags & NDR_SCALARS) { 11 NDR_CHECK(ndr_push_align(ndr, 5)); 12 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_locked)); 13 NDR_CHECK(ndr_push_unique_ptr(ndr, r->lock_owner)); 14 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lock_duration)); 15 NDR_CHECK(ndr_push_trailer_align(ndr, 5)); 16 } 17 if (ndr_flags & NDR_BUFFERS) { 18 if (r->lock_owner) { 19 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16))); 20 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 21 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16))); 22 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->lock_owner, ndr_charset_length(r->lock_owner, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 23 } 24 } 25 return NDR_ERR_SUCCESS; 26} 27 28static enum ndr_err_code ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_LOCK_STATUS *r) 29{ 30 uint32_t _ptr_lock_owner; 31 TALLOC_CTX *_mem_save_lock_owner_0; 32 if (ndr_flags & NDR_SCALARS) { 33 NDR_CHECK(ndr_pull_align(ndr, 5)); 34 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_locked)); 35 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lock_owner)); 36 if (_ptr_lock_owner) { 37 NDR_PULL_ALLOC(ndr, r->lock_owner); 38 } else { 39 r->lock_owner = NULL; 40 } 41 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lock_duration)); 42 NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); 43 } 44 if (ndr_flags & NDR_BUFFERS) { 45 if (r->lock_owner) { 46 _mem_save_lock_owner_0 = NDR_PULL_GET_MEM_CTX(ndr); 47 NDR_PULL_SET_MEM_CTX(ndr, r->lock_owner, 0); 48 NDR_CHECK(ndr_pull_array_size(ndr, &r->lock_owner)); 49 NDR_CHECK(ndr_pull_array_length(ndr, &r->lock_owner)); 50 if (ndr_get_array_length(ndr, &r->lock_owner) > ndr_get_array_size(ndr, &r->lock_owner)) { 51 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->lock_owner), ndr_get_array_length(ndr, &r->lock_owner)); 52 } 53 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t))); 54 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->lock_owner, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t), CH_UTF16)); 55 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_owner_0, 0); 56 } 57 } 58 return NDR_ERR_SUCCESS; 59} 60 61_PUBLIC_ void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r) 62{ 63 ndr_print_struct(ndr, name, "SERVICE_LOCK_STATUS"); 64 ndr->depth++; 65 ndr_print_uint32(ndr, "is_locked", r->is_locked); 66 ndr_print_ptr(ndr, "lock_owner", r->lock_owner); 67 ndr->depth++; 68 if (r->lock_owner) { 69 ndr_print_string(ndr, "lock_owner", r->lock_owner); 70 } 71 ndr->depth--; 72 ndr_print_uint32(ndr, "lock_duration", r->lock_duration); 73 ndr->depth--; 74} 75 76static enum ndr_err_code ndr_push_svcctl_ServiceStatus(struct ndr_push *ndr, int ndr_flags, enum svcctl_ServiceStatus r) 77{ 78 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r)); 79 return NDR_ERR_SUCCESS; 80} 81 82static enum ndr_err_code ndr_pull_svcctl_ServiceStatus(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ServiceStatus *r) 83{ 84 uint32_t v; 85 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v)); 86 *r = v; 87 return NDR_ERR_SUCCESS; 88} 89 90_PUBLIC_ void ndr_print_svcctl_ServiceStatus(struct ndr_print *ndr, const char *name, enum svcctl_ServiceStatus r) 91{ 92 const char *val = NULL; 93 94 switch (r) { 95 case SVCCTL_STATE_UNKNOWN: val = "SVCCTL_STATE_UNKNOWN"; break; 96 case SVCCTL_STOPPED: val = "SVCCTL_STOPPED"; break; 97 case SVCCTL_START_PENDING: val = "SVCCTL_START_PENDING"; break; 98 case SVCCTL_STOP_PENDING: val = "SVCCTL_STOP_PENDING"; break; 99 case SVCCTL_RUNNING: val = "SVCCTL_RUNNING"; break; 100 case SVCCTL_CONTINUE_PENDING: val = "SVCCTL_CONTINUE_PENDING"; break; 101 case SVCCTL_PAUSE_PENDING: val = "SVCCTL_PAUSE_PENDING"; break; 102 case SVCCTL_PAUSED: val = "SVCCTL_PAUSED"; break; 103 } 104 ndr_print_enum(ndr, name, "ENUM", val, r); 105} 106 107static enum ndr_err_code ndr_push_svcctl_ControlsAccepted(struct ndr_push *ndr, int ndr_flags, uint32_t r) 108{ 109 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r)); 110 return NDR_ERR_SUCCESS; 111} 112 113static enum ndr_err_code ndr_pull_svcctl_ControlsAccepted(struct ndr_pull *ndr, int ndr_flags, uint32_t *r) 114{ 115 uint32_t v; 116 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v)); 117 *r = v; 118 return NDR_ERR_SUCCESS; 119} 120 121_PUBLIC_ void ndr_print_svcctl_ControlsAccepted(struct ndr_print *ndr, const char *name, uint32_t r) 122{ 123 ndr_print_uint32(ndr, name, r); 124 ndr->depth++; 125 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_STOP", SVCCTL_ACCEPT_STOP, r); 126 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_PAUSE_CONTINUE", SVCCTL_ACCEPT_PAUSE_CONTINUE, r); 127 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_SHUTDOWN", SVCCTL_ACCEPT_SHUTDOWN, r); 128 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_PARAMCHANGE", SVCCTL_ACCEPT_PARAMCHANGE, r); 129 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_NETBINDCHANGE", SVCCTL_ACCEPT_NETBINDCHANGE, r); 130 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_HARDWAREPROFILECHANGE", SVCCTL_ACCEPT_HARDWAREPROFILECHANGE, r); 131 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_POWEREVENT", SVCCTL_ACCEPT_POWEREVENT, r); 132 ndr->depth--; 133} 134 135static enum ndr_err_code ndr_push_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS *r) 136{ 137 if (ndr_flags & NDR_SCALARS) { 138 NDR_CHECK(ndr_push_align(ndr, 4)); 139 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->type)); 140 NDR_CHECK(ndr_push_svcctl_ServiceStatus(ndr, NDR_SCALARS, r->state)); 141 NDR_CHECK(ndr_push_svcctl_ControlsAccepted(ndr, NDR_SCALARS, r->controls_accepted)); 142 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->win32_exit_code)); 143 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_exit_code)); 144 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->check_point)); 145 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->wait_hint)); 146 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 147 } 148 if (ndr_flags & NDR_BUFFERS) { 149 } 150 return NDR_ERR_SUCCESS; 151} 152 153static enum ndr_err_code ndr_pull_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS *r) 154{ 155 if (ndr_flags & NDR_SCALARS) { 156 NDR_CHECK(ndr_pull_align(ndr, 4)); 157 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->type)); 158 NDR_CHECK(ndr_pull_svcctl_ServiceStatus(ndr, NDR_SCALARS, &r->state)); 159 NDR_CHECK(ndr_pull_svcctl_ControlsAccepted(ndr, NDR_SCALARS, &r->controls_accepted)); 160 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->win32_exit_code)); 161 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_exit_code)); 162 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->check_point)); 163 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->wait_hint)); 164 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 165 } 166 if (ndr_flags & NDR_BUFFERS) { 167 } 168 return NDR_ERR_SUCCESS; 169} 170 171_PUBLIC_ void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r) 172{ 173 ndr_print_struct(ndr, name, "SERVICE_STATUS"); 174 ndr->depth++; 175 ndr_print_uint32(ndr, "type", r->type); 176 ndr_print_svcctl_ServiceStatus(ndr, "state", r->state); 177 ndr_print_svcctl_ControlsAccepted(ndr, "controls_accepted", r->controls_accepted); 178 ndr_print_WERROR(ndr, "win32_exit_code", r->win32_exit_code); 179 ndr_print_uint32(ndr, "service_exit_code", r->service_exit_code); 180 ndr_print_uint32(ndr, "check_point", r->check_point); 181 ndr_print_uint32(ndr, "wait_hint", r->wait_hint); 182 ndr->depth--; 183} 184 185_PUBLIC_ enum ndr_err_code ndr_push_SERVICE_STATUS_PROCESS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS_PROCESS *r) 186{ 187 if (ndr_flags & NDR_SCALARS) { 188 NDR_CHECK(ndr_push_align(ndr, 4)); 189 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status)); 190 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->process_id)); 191 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_flags)); 192 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 193 } 194 if (ndr_flags & NDR_BUFFERS) { 195 } 196 return NDR_ERR_SUCCESS; 197} 198 199_PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_STATUS_PROCESS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS_PROCESS *r) 200{ 201 if (ndr_flags & NDR_SCALARS) { 202 NDR_CHECK(ndr_pull_align(ndr, 4)); 203 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status)); 204 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->process_id)); 205 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_flags)); 206 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 207 } 208 if (ndr_flags & NDR_BUFFERS) { 209 } 210 return NDR_ERR_SUCCESS; 211} 212 213_PUBLIC_ void ndr_print_SERVICE_STATUS_PROCESS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS_PROCESS *r) 214{ 215 ndr_print_struct(ndr, name, "SERVICE_STATUS_PROCESS"); 216 ndr->depth++; 217 ndr_print_SERVICE_STATUS(ndr, "status", &r->status); 218 ndr_print_uint32(ndr, "process_id", r->process_id); 219 ndr_print_uint32(ndr, "service_flags", r->service_flags); 220 ndr->depth--; 221} 222 223_PUBLIC_ enum ndr_err_code ndr_push_ENUM_SERVICE_STATUSW(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUSW *r) 224{ 225 if (ndr_flags & NDR_SCALARS) { 226 NDR_CHECK(ndr_push_align(ndr, 5)); 227 { 228 uint32_t _flags_save_string = ndr->flags; 229 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 230 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name)); 231 ndr->flags = _flags_save_string; 232 } 233 { 234 uint32_t _flags_save_string = ndr->flags; 235 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 236 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name)); 237 ndr->flags = _flags_save_string; 238 } 239 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status)); 240 NDR_CHECK(ndr_push_trailer_align(ndr, 5)); 241 } 242 if (ndr_flags & NDR_BUFFERS) { 243 { 244 uint32_t _flags_save_string = ndr->flags; 245 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 246 if (r->service_name) { 247 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->service_name)); 248 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name)); 249 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->service_name)); 250 } 251 ndr->flags = _flags_save_string; 252 } 253 { 254 uint32_t _flags_save_string = ndr->flags; 255 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 256 if (r->display_name) { 257 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->display_name)); 258 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name)); 259 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->display_name)); 260 } 261 ndr->flags = _flags_save_string; 262 } 263 } 264 return NDR_ERR_SUCCESS; 265} 266 267_PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSW(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUSW *r) 268{ 269 uint32_t _ptr_service_name; 270 TALLOC_CTX *_mem_save_service_name_0; 271 uint32_t _ptr_display_name; 272 TALLOC_CTX *_mem_save_display_name_0; 273 if (ndr_flags & NDR_SCALARS) { 274 NDR_CHECK(ndr_pull_align(ndr, 5)); 275 { 276 uint32_t _flags_save_string = ndr->flags; 277 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 278 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name)); 279 if (_ptr_service_name) { 280 NDR_PULL_ALLOC(ndr, r->service_name); 281 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name)); 282 } else { 283 r->service_name = NULL; 284 } 285 ndr->flags = _flags_save_string; 286 } 287 { 288 uint32_t _flags_save_string = ndr->flags; 289 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 290 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name)); 291 if (_ptr_display_name) { 292 NDR_PULL_ALLOC(ndr, r->display_name); 293 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name)); 294 } else { 295 r->display_name = NULL; 296 } 297 ndr->flags = _flags_save_string; 298 } 299 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status)); 300 NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); 301 } 302 if (ndr_flags & NDR_BUFFERS) { 303 { 304 uint32_t _flags_save_string = ndr->flags; 305 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 306 if (r->service_name) { 307 uint32_t _relative_save_offset; 308 _relative_save_offset = ndr->offset; 309 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name)); 310 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 311 NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0); 312 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name)); 313 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0); 314 ndr->offset = _relative_save_offset; 315 } 316 ndr->flags = _flags_save_string; 317 } 318 { 319 uint32_t _flags_save_string = ndr->flags; 320 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 321 if (r->display_name) { 322 uint32_t _relative_save_offset; 323 _relative_save_offset = ndr->offset; 324 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name)); 325 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 326 NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0); 327 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name)); 328 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0); 329 ndr->offset = _relative_save_offset; 330 } 331 ndr->flags = _flags_save_string; 332 } 333 } 334 return NDR_ERR_SUCCESS; 335} 336 337_PUBLIC_ void ndr_print_ENUM_SERVICE_STATUSW(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUSW *r) 338{ 339 ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUSW"); 340 ndr->depth++; 341 ndr_print_ptr(ndr, "service_name", r->service_name); 342 ndr->depth++; 343 if (r->service_name) { 344 ndr_print_string(ndr, "service_name", r->service_name); 345 } 346 ndr->depth--; 347 ndr_print_ptr(ndr, "display_name", r->display_name); 348 ndr->depth++; 349 if (r->display_name) { 350 ndr_print_string(ndr, "display_name", r->display_name); 351 } 352 ndr->depth--; 353 ndr_print_SERVICE_STATUS(ndr, "status", &r->status); 354 ndr->depth--; 355} 356 357_PUBLIC_ size_t ndr_size_ENUM_SERVICE_STATUSW(const struct ENUM_SERVICE_STATUSW *r, struct smb_iconv_convenience *ic, int flags) 358{ 359 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_ENUM_SERVICE_STATUSW, ic); 360} 361 362_PUBLIC_ enum ndr_err_code ndr_push_ENUM_SERVICE_STATUSA(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUSA *r) 363{ 364 if (ndr_flags & NDR_SCALARS) { 365 NDR_CHECK(ndr_push_align(ndr, 5)); 366 { 367 uint32_t _flags_save_string = ndr->flags; 368 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM); 369 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name)); 370 ndr->flags = _flags_save_string; 371 } 372 { 373 uint32_t _flags_save_string = ndr->flags; 374 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM); 375 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name)); 376 ndr->flags = _flags_save_string; 377 } 378 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status)); 379 NDR_CHECK(ndr_push_trailer_align(ndr, 5)); 380 } 381 if (ndr_flags & NDR_BUFFERS) { 382 { 383 uint32_t _flags_save_string = ndr->flags; 384 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM); 385 if (r->service_name) { 386 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->service_name)); 387 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name)); 388 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->service_name)); 389 } 390 ndr->flags = _flags_save_string; 391 } 392 { 393 uint32_t _flags_save_string = ndr->flags; 394 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM); 395 if (r->display_name) { 396 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->display_name)); 397 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name)); 398 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->display_name)); 399 } 400 ndr->flags = _flags_save_string; 401 } 402 } 403 return NDR_ERR_SUCCESS; 404} 405 406_PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSA(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUSA *r) 407{ 408 uint32_t _ptr_service_name; 409 TALLOC_CTX *_mem_save_service_name_0; 410 uint32_t _ptr_display_name; 411 TALLOC_CTX *_mem_save_display_name_0; 412 if (ndr_flags & NDR_SCALARS) { 413 NDR_CHECK(ndr_pull_align(ndr, 5)); 414 { 415 uint32_t _flags_save_string = ndr->flags; 416 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM); 417 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name)); 418 if (_ptr_service_name) { 419 NDR_PULL_ALLOC(ndr, r->service_name); 420 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name)); 421 } else { 422 r->service_name = NULL; 423 } 424 ndr->flags = _flags_save_string; 425 } 426 { 427 uint32_t _flags_save_string = ndr->flags; 428 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM); 429 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name)); 430 if (_ptr_display_name) { 431 NDR_PULL_ALLOC(ndr, r->display_name); 432 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name)); 433 } else { 434 r->display_name = NULL; 435 } 436 ndr->flags = _flags_save_string; 437 } 438 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status)); 439 NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); 440 } 441 if (ndr_flags & NDR_BUFFERS) { 442 { 443 uint32_t _flags_save_string = ndr->flags; 444 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM); 445 if (r->service_name) { 446 uint32_t _relative_save_offset; 447 _relative_save_offset = ndr->offset; 448 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name)); 449 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 450 NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0); 451 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name)); 452 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0); 453 ndr->offset = _relative_save_offset; 454 } 455 ndr->flags = _flags_save_string; 456 } 457 { 458 uint32_t _flags_save_string = ndr->flags; 459 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM); 460 if (r->display_name) { 461 uint32_t _relative_save_offset; 462 _relative_save_offset = ndr->offset; 463 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name)); 464 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 465 NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0); 466 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name)); 467 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0); 468 ndr->offset = _relative_save_offset; 469 } 470 ndr->flags = _flags_save_string; 471 } 472 } 473 return NDR_ERR_SUCCESS; 474} 475 476_PUBLIC_ void ndr_print_ENUM_SERVICE_STATUSA(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUSA *r) 477{ 478 ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUSA"); 479 ndr->depth++; 480 ndr_print_ptr(ndr, "service_name", r->service_name); 481 ndr->depth++; 482 if (r->service_name) { 483 ndr_print_string(ndr, "service_name", r->service_name); 484 } 485 ndr->depth--; 486 ndr_print_ptr(ndr, "display_name", r->display_name); 487 ndr->depth++; 488 if (r->display_name) { 489 ndr_print_string(ndr, "display_name", r->display_name); 490 } 491 ndr->depth--; 492 ndr_print_SERVICE_STATUS(ndr, "status", &r->status); 493 ndr->depth--; 494} 495 496_PUBLIC_ size_t ndr_size_ENUM_SERVICE_STATUSA(const struct ENUM_SERVICE_STATUSA *r, struct smb_iconv_convenience *ic, int flags) 497{ 498 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_ENUM_SERVICE_STATUSA, ic); 499} 500 501_PUBLIC_ enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r) 502{ 503 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r)); 504 return NDR_ERR_SUCCESS; 505} 506 507_PUBLIC_ enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r) 508{ 509 uint32_t v; 510 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v)); 511 *r = v; 512 return NDR_ERR_SUCCESS; 513} 514 515_PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r) 516{ 517 ndr_print_uint32(ndr, name, r); 518 ndr->depth++; 519 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION, r); 520 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER, r); 521 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER, r); 522 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL, r); 523 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL, r); 524 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE, r); 525 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP, r); 526 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL, r); 527 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER, r); 528 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER, r); 529 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER, r); 530 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX, r); 531 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT, r); 532 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW, r); 533 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN, r); 534 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT, r); 535 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER, r); 536 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER, r); 537 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER, r); 538 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER, r); 539 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF, r); 540 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS, r); 541 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS, r); 542 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER, r); 543 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT, r); 544 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY, r); 545 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM, r); 546 ndr->depth--; 547} 548 549static enum ndr_err_code ndr_push_SERVICE_CONTROL(struct ndr_push *ndr, int ndr_flags, enum SERVICE_CONTROL r) 550{ 551 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r)); 552 return NDR_ERR_SUCCESS; 553} 554 555static enum ndr_err_code ndr_pull_SERVICE_CONTROL(struct ndr_pull *ndr, int ndr_flags, enum SERVICE_CONTROL *r) 556{ 557 uint32_t v; 558 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v)); 559 *r = v; 560 return NDR_ERR_SUCCESS; 561} 562 563_PUBLIC_ void ndr_print_SERVICE_CONTROL(struct ndr_print *ndr, const char *name, enum SERVICE_CONTROL r) 564{ 565 const char *val = NULL; 566 567 switch (r) { 568 case SVCCTL_CONTROL_STOP: val = "SVCCTL_CONTROL_STOP"; break; 569 case SVCCTL_CONTROL_PAUSE: val = "SVCCTL_CONTROL_PAUSE"; break; 570 case SVCCTL_CONTROL_CONTINUE: val = "SVCCTL_CONTROL_CONTINUE"; break; 571 case SVCCTL_CONTROL_INTERROGATE: val = "SVCCTL_CONTROL_INTERROGATE"; break; 572 case SVCCTL_CONTROL_SHUTDOWN: val = "SVCCTL_CONTROL_SHUTDOWN"; break; 573 } 574 ndr_print_enum(ndr, name, "ENUM", val, r); 575} 576 577static enum ndr_err_code ndr_push_svcctl_ErrorControl(struct ndr_push *ndr, int ndr_flags, enum svcctl_ErrorControl r) 578{ 579 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r)); 580 return NDR_ERR_SUCCESS; 581} 582 583static enum ndr_err_code ndr_pull_svcctl_ErrorControl(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ErrorControl *r) 584{ 585 uint32_t v; 586 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v)); 587 *r = v; 588 return NDR_ERR_SUCCESS; 589} 590 591_PUBLIC_ void ndr_print_svcctl_ErrorControl(struct ndr_print *ndr, const char *name, enum svcctl_ErrorControl r) 592{ 593 const char *val = NULL; 594 595 switch (r) { 596 case SVCCTL_SVC_ERROR_IGNORE: val = "SVCCTL_SVC_ERROR_IGNORE"; break; 597 case SVCCTL_SVC_ERROR_NORMAL: val = "SVCCTL_SVC_ERROR_NORMAL"; break; 598 case SVCCTL_SVC_ERROR_CRITICAL: val = "SVCCTL_SVC_ERROR_CRITICAL"; break; 599 case SVCCTL_SVC_ERROR_SEVERE: val = "SVCCTL_SVC_ERROR_SEVERE"; break; 600 } 601 ndr_print_enum(ndr, name, "ENUM", val, r); 602} 603 604static enum ndr_err_code ndr_push_svcctl_StartType(struct ndr_push *ndr, int ndr_flags, enum svcctl_StartType r) 605{ 606 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r)); 607 return NDR_ERR_SUCCESS; 608} 609 610static enum ndr_err_code ndr_pull_svcctl_StartType(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StartType *r) 611{ 612 uint32_t v; 613 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v)); 614 *r = v; 615 return NDR_ERR_SUCCESS; 616} 617 618_PUBLIC_ void ndr_print_svcctl_StartType(struct ndr_print *ndr, const char *name, enum svcctl_StartType r) 619{ 620 const char *val = NULL; 621 622 switch (r) { 623 case SVCCTL_BOOT_START: val = "SVCCTL_BOOT_START"; break; 624 case SVCCTL_SYSTEM_START: val = "SVCCTL_SYSTEM_START"; break; 625 case SVCCTL_AUTO_START: val = "SVCCTL_AUTO_START"; break; 626 case SVCCTL_DEMAND_START: val = "SVCCTL_DEMAND_START"; break; 627 case SVCCTL_DISABLED: val = "SVCCTL_DISABLED"; break; 628 } 629 ndr_print_enum(ndr, name, "ENUM", val, r); 630} 631 632static enum ndr_err_code ndr_push_svcctl_ServiceState(struct ndr_push *ndr, int ndr_flags, enum svcctl_ServiceState r) 633{ 634 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r)); 635 return NDR_ERR_SUCCESS; 636} 637 638static enum ndr_err_code ndr_pull_svcctl_ServiceState(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ServiceState *r) 639{ 640 uint32_t v; 641 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v)); 642 *r = v; 643 return NDR_ERR_SUCCESS; 644} 645 646_PUBLIC_ void ndr_print_svcctl_ServiceState(struct ndr_print *ndr, const char *name, enum svcctl_ServiceState r) 647{ 648 const char *val = NULL; 649 650 switch (r) { 651 case SERVICE_STATE_ACTIVE: val = "SERVICE_STATE_ACTIVE"; break; 652 case SERVICE_STATE_INACTIVE: val = "SERVICE_STATE_INACTIVE"; break; 653 case SERVICE_STATE_ALL: val = "SERVICE_STATE_ALL"; break; 654 } 655 ndr_print_enum(ndr, name, "ENUM", val, r); 656} 657 658static enum ndr_err_code ndr_push_svcctl_MgrAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r) 659{ 660 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r)); 661 return NDR_ERR_SUCCESS; 662} 663 664static enum ndr_err_code ndr_pull_svcctl_MgrAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r) 665{ 666 uint32_t v; 667 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v)); 668 *r = v; 669 return NDR_ERR_SUCCESS; 670} 671 672_PUBLIC_ void ndr_print_svcctl_MgrAccessMask(struct ndr_print *ndr, const char *name, uint32_t r) 673{ 674 ndr_print_uint32(ndr, name, r); 675 ndr->depth++; 676 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT, r); 677 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE, r); 678 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE, r); 679 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK, r); 680 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS, r); 681 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG, r); 682 ndr->depth--; 683} 684 685static enum ndr_err_code ndr_push_svcctl_ServiceAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r) 686{ 687 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r)); 688 return NDR_ERR_SUCCESS; 689} 690 691static enum ndr_err_code ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r) 692{ 693 uint32_t v; 694 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v)); 695 *r = v; 696 return NDR_ERR_SUCCESS; 697} 698 699_PUBLIC_ void ndr_print_svcctl_ServiceAccessMask(struct ndr_print *ndr, const char *name, uint32_t r) 700{ 701 ndr_print_uint32(ndr, name, r); 702 ndr->depth++; 703 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG, r); 704 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG, r); 705 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS, r); 706 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS, r); 707 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START, r); 708 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP, r); 709 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE, r); 710 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE, r); 711 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL, r); 712 ndr->depth--; 713} 714 715_PUBLIC_ enum ndr_err_code ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push *ndr, int ndr_flags, const struct QUERY_SERVICE_CONFIG *r) 716{ 717 if (ndr_flags & NDR_SCALARS) { 718 NDR_CHECK(ndr_push_align(ndr, 5)); 719 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_type)); 720 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->start_type)); 721 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->error_control)); 722 NDR_CHECK(ndr_push_unique_ptr(ndr, r->executablepath)); 723 NDR_CHECK(ndr_push_unique_ptr(ndr, r->loadordergroup)); 724 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->tag_id)); 725 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dependencies)); 726 NDR_CHECK(ndr_push_unique_ptr(ndr, r->startname)); 727 NDR_CHECK(ndr_push_unique_ptr(ndr, r->displayname)); 728 NDR_CHECK(ndr_push_trailer_align(ndr, 5)); 729 } 730 if (ndr_flags & NDR_BUFFERS) { 731 if (r->executablepath) { 732 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16))); 733 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 734 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16))); 735 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->executablepath, ndr_charset_length(r->executablepath, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 736 } 737 if (r->loadordergroup) { 738 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16))); 739 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 740 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16))); 741 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->loadordergroup, ndr_charset_length(r->loadordergroup, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 742 } 743 if (r->dependencies) { 744 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16))); 745 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 746 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16))); 747 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dependencies, ndr_charset_length(r->dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 748 } 749 if (r->startname) { 750 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16))); 751 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 752 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16))); 753 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->startname, ndr_charset_length(r->startname, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 754 } 755 if (r->displayname) { 756 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16))); 757 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 758 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16))); 759 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->displayname, ndr_charset_length(r->displayname, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 760 } 761 } 762 return NDR_ERR_SUCCESS; 763} 764 765_PUBLIC_ enum ndr_err_code ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull *ndr, int ndr_flags, struct QUERY_SERVICE_CONFIG *r) 766{ 767 uint32_t _ptr_executablepath; 768 TALLOC_CTX *_mem_save_executablepath_0; 769 uint32_t _ptr_loadordergroup; 770 TALLOC_CTX *_mem_save_loadordergroup_0; 771 uint32_t _ptr_dependencies; 772 TALLOC_CTX *_mem_save_dependencies_0; 773 uint32_t _ptr_startname; 774 TALLOC_CTX *_mem_save_startname_0; 775 uint32_t _ptr_displayname; 776 TALLOC_CTX *_mem_save_displayname_0; 777 if (ndr_flags & NDR_SCALARS) { 778 NDR_CHECK(ndr_pull_align(ndr, 5)); 779 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_type)); 780 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->start_type)); 781 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->error_control)); 782 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_executablepath)); 783 if (_ptr_executablepath) { 784 NDR_PULL_ALLOC(ndr, r->executablepath); 785 } else { 786 r->executablepath = NULL; 787 } 788 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_loadordergroup)); 789 if (_ptr_loadordergroup) { 790 NDR_PULL_ALLOC(ndr, r->loadordergroup); 791 } else { 792 r->loadordergroup = NULL; 793 } 794 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->tag_id)); 795 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies)); 796 if (_ptr_dependencies) { 797 NDR_PULL_ALLOC(ndr, r->dependencies); 798 } else { 799 r->dependencies = NULL; 800 } 801 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_startname)); 802 if (_ptr_startname) { 803 NDR_PULL_ALLOC(ndr, r->startname); 804 } else { 805 r->startname = NULL; 806 } 807 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_displayname)); 808 if (_ptr_displayname) { 809 NDR_PULL_ALLOC(ndr, r->displayname); 810 } else { 811 r->displayname = NULL; 812 } 813 NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); 814 } 815 if (ndr_flags & NDR_BUFFERS) { 816 if (r->executablepath) { 817 _mem_save_executablepath_0 = NDR_PULL_GET_MEM_CTX(ndr); 818 NDR_PULL_SET_MEM_CTX(ndr, r->executablepath, 0); 819 NDR_CHECK(ndr_pull_array_size(ndr, &r->executablepath)); 820 NDR_CHECK(ndr_pull_array_length(ndr, &r->executablepath)); 821 if (ndr_get_array_length(ndr, &r->executablepath) > ndr_get_array_size(ndr, &r->executablepath)) { 822 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->executablepath), ndr_get_array_length(ndr, &r->executablepath)); 823 } 824 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->executablepath), sizeof(uint16_t))); 825 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->executablepath, ndr_get_array_length(ndr, &r->executablepath), sizeof(uint16_t), CH_UTF16)); 826 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_executablepath_0, 0); 827 } 828 if (r->loadordergroup) { 829 _mem_save_loadordergroup_0 = NDR_PULL_GET_MEM_CTX(ndr); 830 NDR_PULL_SET_MEM_CTX(ndr, r->loadordergroup, 0); 831 NDR_CHECK(ndr_pull_array_size(ndr, &r->loadordergroup)); 832 NDR_CHECK(ndr_pull_array_length(ndr, &r->loadordergroup)); 833 if (ndr_get_array_length(ndr, &r->loadordergroup) > ndr_get_array_size(ndr, &r->loadordergroup)) { 834 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->loadordergroup), ndr_get_array_length(ndr, &r->loadordergroup)); 835 } 836 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->loadordergroup), sizeof(uint16_t))); 837 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->loadordergroup, ndr_get_array_length(ndr, &r->loadordergroup), sizeof(uint16_t), CH_UTF16)); 838 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_loadordergroup_0, 0); 839 } 840 if (r->dependencies) { 841 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr); 842 NDR_PULL_SET_MEM_CTX(ndr, r->dependencies, 0); 843 NDR_CHECK(ndr_pull_array_size(ndr, &r->dependencies)); 844 NDR_CHECK(ndr_pull_array_length(ndr, &r->dependencies)); 845 if (ndr_get_array_length(ndr, &r->dependencies) > ndr_get_array_size(ndr, &r->dependencies)) { 846 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dependencies), ndr_get_array_length(ndr, &r->dependencies)); 847 } 848 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dependencies), sizeof(uint16_t))); 849 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dependencies, ndr_get_array_length(ndr, &r->dependencies), sizeof(uint16_t), CH_UTF16)); 850 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0); 851 } 852 if (r->startname) { 853 _mem_save_startname_0 = NDR_PULL_GET_MEM_CTX(ndr); 854 NDR_PULL_SET_MEM_CTX(ndr, r->startname, 0); 855 NDR_CHECK(ndr_pull_array_size(ndr, &r->startname)); 856 NDR_CHECK(ndr_pull_array_length(ndr, &r->startname)); 857 if (ndr_get_array_length(ndr, &r->startname) > ndr_get_array_size(ndr, &r->startname)) { 858 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->startname), ndr_get_array_length(ndr, &r->startname)); 859 } 860 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->startname), sizeof(uint16_t))); 861 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->startname, ndr_get_array_length(ndr, &r->startname), sizeof(uint16_t), CH_UTF16)); 862 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_startname_0, 0); 863 } 864 if (r->displayname) { 865 _mem_save_displayname_0 = NDR_PULL_GET_MEM_CTX(ndr); 866 NDR_PULL_SET_MEM_CTX(ndr, r->displayname, 0); 867 NDR_CHECK(ndr_pull_array_size(ndr, &r->displayname)); 868 NDR_CHECK(ndr_pull_array_length(ndr, &r->displayname)); 869 if (ndr_get_array_length(ndr, &r->displayname) > ndr_get_array_size(ndr, &r->displayname)) { 870 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->displayname), ndr_get_array_length(ndr, &r->displayname)); 871 } 872 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->displayname), sizeof(uint16_t))); 873 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->displayname, ndr_get_array_length(ndr, &r->displayname), sizeof(uint16_t), CH_UTF16)); 874 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_displayname_0, 0); 875 } 876 } 877 return NDR_ERR_SUCCESS; 878} 879 880_PUBLIC_ void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print *ndr, const char *name, const struct QUERY_SERVICE_CONFIG *r) 881{ 882 ndr_print_struct(ndr, name, "QUERY_SERVICE_CONFIG"); 883 ndr->depth++; 884 ndr_print_uint32(ndr, "service_type", r->service_type); 885 ndr_print_svcctl_StartType(ndr, "start_type", r->start_type); 886 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->error_control); 887 ndr_print_ptr(ndr, "executablepath", r->executablepath); 888 ndr->depth++; 889 if (r->executablepath) { 890 ndr_print_string(ndr, "executablepath", r->executablepath); 891 } 892 ndr->depth--; 893 ndr_print_ptr(ndr, "loadordergroup", r->loadordergroup); 894 ndr->depth++; 895 if (r->loadordergroup) { 896 ndr_print_string(ndr, "loadordergroup", r->loadordergroup); 897 } 898 ndr->depth--; 899 ndr_print_uint32(ndr, "tag_id", r->tag_id); 900 ndr_print_ptr(ndr, "dependencies", r->dependencies); 901 ndr->depth++; 902 if (r->dependencies) { 903 ndr_print_string(ndr, "dependencies", r->dependencies); 904 } 905 ndr->depth--; 906 ndr_print_ptr(ndr, "startname", r->startname); 907 ndr->depth++; 908 if (r->startname) { 909 ndr_print_string(ndr, "startname", r->startname); 910 } 911 ndr->depth--; 912 ndr_print_ptr(ndr, "displayname", r->displayname); 913 ndr->depth++; 914 if (r->displayname) { 915 ndr_print_string(ndr, "displayname", r->displayname); 916 } 917 ndr->depth--; 918 ndr->depth--; 919} 920 921_PUBLIC_ size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG *r, struct smb_iconv_convenience *ic, int flags) 922{ 923 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_QUERY_SERVICE_CONFIG, ic); 924} 925 926static enum ndr_err_code ndr_push_svcctl_ArgumentString(struct ndr_push *ndr, int ndr_flags, const struct svcctl_ArgumentString *r) 927{ 928 if (ndr_flags & NDR_SCALARS) { 929 NDR_CHECK(ndr_push_align(ndr, 5)); 930 NDR_CHECK(ndr_push_unique_ptr(ndr, r->string)); 931 NDR_CHECK(ndr_push_trailer_align(ndr, 5)); 932 } 933 if (ndr_flags & NDR_BUFFERS) { 934 if (r->string) { 935 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->string, CH_UTF16))); 936 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 937 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->string, CH_UTF16))); 938 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->string, ndr_charset_length(r->string, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 939 } 940 } 941 return NDR_ERR_SUCCESS; 942} 943 944static enum ndr_err_code ndr_pull_svcctl_ArgumentString(struct ndr_pull *ndr, int ndr_flags, struct svcctl_ArgumentString *r) 945{ 946 uint32_t _ptr_string; 947 TALLOC_CTX *_mem_save_string_0; 948 if (ndr_flags & NDR_SCALARS) { 949 NDR_CHECK(ndr_pull_align(ndr, 5)); 950 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_string)); 951 if (_ptr_string) { 952 NDR_PULL_ALLOC(ndr, r->string); 953 } else { 954 r->string = NULL; 955 } 956 NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); 957 } 958 if (ndr_flags & NDR_BUFFERS) { 959 if (r->string) { 960 _mem_save_string_0 = NDR_PULL_GET_MEM_CTX(ndr); 961 NDR_PULL_SET_MEM_CTX(ndr, r->string, 0); 962 NDR_CHECK(ndr_pull_array_size(ndr, &r->string)); 963 NDR_CHECK(ndr_pull_array_length(ndr, &r->string)); 964 if (ndr_get_array_length(ndr, &r->string) > ndr_get_array_size(ndr, &r->string)) { 965 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->string), ndr_get_array_length(ndr, &r->string)); 966 } 967 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->string), sizeof(uint16_t))); 968 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->string, ndr_get_array_length(ndr, &r->string), sizeof(uint16_t), CH_UTF16)); 969 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_string_0, 0); 970 } 971 } 972 return NDR_ERR_SUCCESS; 973} 974 975_PUBLIC_ void ndr_print_svcctl_ArgumentString(struct ndr_print *ndr, const char *name, const struct svcctl_ArgumentString *r) 976{ 977 ndr_print_struct(ndr, name, "svcctl_ArgumentString"); 978 ndr->depth++; 979 ndr_print_ptr(ndr, "string", r->string); 980 ndr->depth++; 981 if (r->string) { 982 ndr_print_string(ndr, "string", r->string); 983 } 984 ndr->depth--; 985 ndr->depth--; 986} 987 988static enum ndr_err_code ndr_push_svcctl_ConfigLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_ConfigLevel r) 989{ 990 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r)); 991 return NDR_ERR_SUCCESS; 992} 993 994static enum ndr_err_code ndr_pull_svcctl_ConfigLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ConfigLevel *r) 995{ 996 uint32_t v; 997 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v)); 998 *r = v; 999 return NDR_ERR_SUCCESS; 1000} 1001 1002_PUBLIC_ void ndr_print_svcctl_ConfigLevel(struct ndr_print *ndr, const char *name, enum svcctl_ConfigLevel r) 1003{ 1004 const char *val = NULL; 1005 1006 switch (r) { 1007 case SERVICE_CONFIG_DESCRIPTION: val = "SERVICE_CONFIG_DESCRIPTION"; break; 1008 case SERVICE_CONFIG_FAILURE_ACTIONS: val = "SERVICE_CONFIG_FAILURE_ACTIONS"; break; 1009 } 1010 ndr_print_enum(ndr, name, "ENUM", val, r); 1011} 1012 1013_PUBLIC_ enum ndr_err_code ndr_push_SERVICE_DESCRIPTION(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_DESCRIPTION *r) 1014{ 1015 if (ndr_flags & NDR_SCALARS) { 1016 NDR_CHECK(ndr_push_align(ndr, 5)); 1017 { 1018 uint32_t _flags_save_string = ndr->flags; 1019 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 1020 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->description)); 1021 ndr->flags = _flags_save_string; 1022 } 1023 NDR_CHECK(ndr_push_trailer_align(ndr, 5)); 1024 } 1025 if (ndr_flags & NDR_BUFFERS) { 1026 { 1027 uint32_t _flags_save_string = ndr->flags; 1028 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 1029 if (r->description) { 1030 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->description)); 1031 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->description)); 1032 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->description)); 1033 } 1034 ndr->flags = _flags_save_string; 1035 } 1036 } 1037 return NDR_ERR_SUCCESS; 1038} 1039 1040_PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_DESCRIPTION *r) 1041{ 1042 uint32_t _ptr_description; 1043 TALLOC_CTX *_mem_save_description_0; 1044 if (ndr_flags & NDR_SCALARS) { 1045 NDR_CHECK(ndr_pull_align(ndr, 5)); 1046 { 1047 uint32_t _flags_save_string = ndr->flags; 1048 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 1049 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_description)); 1050 if (_ptr_description) { 1051 NDR_PULL_ALLOC(ndr, r->description); 1052 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->description, _ptr_description)); 1053 } else { 1054 r->description = NULL; 1055 } 1056 ndr->flags = _flags_save_string; 1057 } 1058 NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); 1059 } 1060 if (ndr_flags & NDR_BUFFERS) { 1061 { 1062 uint32_t _flags_save_string = ndr->flags; 1063 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 1064 if (r->description) { 1065 uint32_t _relative_save_offset; 1066 _relative_save_offset = ndr->offset; 1067 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->description)); 1068 _mem_save_description_0 = NDR_PULL_GET_MEM_CTX(ndr); 1069 NDR_PULL_SET_MEM_CTX(ndr, r->description, 0); 1070 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->description)); 1071 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_description_0, 0); 1072 ndr->offset = _relative_save_offset; 1073 } 1074 ndr->flags = _flags_save_string; 1075 } 1076 } 1077 return NDR_ERR_SUCCESS; 1078} 1079 1080_PUBLIC_ void ndr_print_SERVICE_DESCRIPTION(struct ndr_print *ndr, const char *name, const struct SERVICE_DESCRIPTION *r) 1081{ 1082 ndr_print_struct(ndr, name, "SERVICE_DESCRIPTION"); 1083 ndr->depth++; 1084 ndr_print_ptr(ndr, "description", r->description); 1085 ndr->depth++; 1086 if (r->description) { 1087 ndr_print_string(ndr, "description", r->description); 1088 } 1089 ndr->depth--; 1090 ndr->depth--; 1091} 1092 1093_PUBLIC_ size_t ndr_size_SERVICE_DESCRIPTION(const struct SERVICE_DESCRIPTION *r, struct smb_iconv_convenience *ic, int flags) 1094{ 1095 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_DESCRIPTION, ic); 1096} 1097 1098static enum ndr_err_code ndr_push_SC_ACTION_TYPE(struct ndr_push *ndr, int ndr_flags, enum SC_ACTION_TYPE r) 1099{ 1100 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r)); 1101 return NDR_ERR_SUCCESS; 1102} 1103 1104static enum ndr_err_code ndr_pull_SC_ACTION_TYPE(struct ndr_pull *ndr, int ndr_flags, enum SC_ACTION_TYPE *r) 1105{ 1106 uint32_t v; 1107 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v)); 1108 *r = v; 1109 return NDR_ERR_SUCCESS; 1110} 1111 1112_PUBLIC_ void ndr_print_SC_ACTION_TYPE(struct ndr_print *ndr, const char *name, enum SC_ACTION_TYPE r) 1113{ 1114 const char *val = NULL; 1115 1116 switch (r) { 1117 case SC_ACTION_NONE: val = "SC_ACTION_NONE"; break; 1118 case SC_ACTION_RESTART: val = "SC_ACTION_RESTART"; break; 1119 case SC_ACTION_REBOOT: val = "SC_ACTION_REBOOT"; break; 1120 case SC_ACTION_RUN_COMMAND: val = "SC_ACTION_RUN_COMMAND"; break; 1121 } 1122 ndr_print_enum(ndr, name, "ENUM", val, r); 1123} 1124 1125static enum ndr_err_code ndr_push_SC_ACTION(struct ndr_push *ndr, int ndr_flags, const struct SC_ACTION *r) 1126{ 1127 if (ndr_flags & NDR_SCALARS) { 1128 NDR_CHECK(ndr_push_align(ndr, 4)); 1129 NDR_CHECK(ndr_push_SC_ACTION_TYPE(ndr, NDR_SCALARS, r->type)); 1130 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->delay)); 1131 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 1132 } 1133 if (ndr_flags & NDR_BUFFERS) { 1134 } 1135 return NDR_ERR_SUCCESS; 1136} 1137 1138static enum ndr_err_code ndr_pull_SC_ACTION(struct ndr_pull *ndr, int ndr_flags, struct SC_ACTION *r) 1139{ 1140 if (ndr_flags & NDR_SCALARS) { 1141 NDR_CHECK(ndr_pull_align(ndr, 4)); 1142 NDR_CHECK(ndr_pull_SC_ACTION_TYPE(ndr, NDR_SCALARS, &r->type)); 1143 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->delay)); 1144 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 1145 } 1146 if (ndr_flags & NDR_BUFFERS) { 1147 } 1148 return NDR_ERR_SUCCESS; 1149} 1150 1151_PUBLIC_ void ndr_print_SC_ACTION(struct ndr_print *ndr, const char *name, const struct SC_ACTION *r) 1152{ 1153 ndr_print_struct(ndr, name, "SC_ACTION"); 1154 ndr->depth++; 1155 ndr_print_SC_ACTION_TYPE(ndr, "type", r->type); 1156 ndr_print_uint32(ndr, "delay", r->delay); 1157 ndr->depth--; 1158} 1159 1160_PUBLIC_ enum ndr_err_code ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_FAILURE_ACTIONS *r) 1161{ 1162 uint32_t cntr_actions_1; 1163 if (ndr_flags & NDR_SCALARS) { 1164 NDR_CHECK(ndr_push_align(ndr, 5)); 1165 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reset_period)); 1166 { 1167 uint32_t _flags_save_string = ndr->flags; 1168 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 1169 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->rebootmsg)); 1170 ndr->flags = _flags_save_string; 1171 } 1172 { 1173 uint32_t _flags_save_string = ndr->flags; 1174 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 1175 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->command)); 1176 ndr->flags = _flags_save_string; 1177 } 1178 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_actions)); 1179 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->actions)); 1180 NDR_CHECK(ndr_push_trailer_align(ndr, 5)); 1181 } 1182 if (ndr_flags & NDR_BUFFERS) { 1183 { 1184 uint32_t _flags_save_string = ndr->flags; 1185 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 1186 if (r->rebootmsg) { 1187 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->rebootmsg)); 1188 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->rebootmsg)); 1189 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->rebootmsg)); 1190 } 1191 ndr->flags = _flags_save_string; 1192 } 1193 { 1194 uint32_t _flags_save_string = ndr->flags; 1195 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 1196 if (r->command) { 1197 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->command)); 1198 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->command)); 1199 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->command)); 1200 } 1201 ndr->flags = _flags_save_string; 1202 } 1203 if (r->actions) { 1204 NDR_CHECK(ndr_push_relative_ptr2_start(ndr, r->actions)); 1205 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->num_actions)); 1206 for (cntr_actions_1 = 0; cntr_actions_1 < r->num_actions; cntr_actions_1++) { 1207 NDR_CHECK(ndr_push_SC_ACTION(ndr, NDR_SCALARS, &r->actions[cntr_actions_1])); 1208 } 1209 NDR_CHECK(ndr_push_relative_ptr2_end(ndr, r->actions)); 1210 } 1211 } 1212 return NDR_ERR_SUCCESS; 1213} 1214 1215_PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_FAILURE_ACTIONS *r) 1216{ 1217 uint32_t _ptr_rebootmsg; 1218 TALLOC_CTX *_mem_save_rebootmsg_0; 1219 uint32_t _ptr_command; 1220 TALLOC_CTX *_mem_save_command_0; 1221 uint32_t _ptr_actions; 1222 uint32_t cntr_actions_1; 1223 TALLOC_CTX *_mem_save_actions_0; 1224 TALLOC_CTX *_mem_save_actions_1; 1225 if (ndr_flags & NDR_SCALARS) { 1226 NDR_CHECK(ndr_pull_align(ndr, 5)); 1227 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reset_period)); 1228 { 1229 uint32_t _flags_save_string = ndr->flags; 1230 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 1231 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rebootmsg)); 1232 if (_ptr_rebootmsg) { 1233 NDR_PULL_ALLOC(ndr, r->rebootmsg); 1234 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->rebootmsg, _ptr_rebootmsg)); 1235 } else { 1236 r->rebootmsg = NULL; 1237 } 1238 ndr->flags = _flags_save_string; 1239 } 1240 { 1241 uint32_t _flags_save_string = ndr->flags; 1242 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 1243 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_command)); 1244 if (_ptr_command) { 1245 NDR_PULL_ALLOC(ndr, r->command); 1246 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->command, _ptr_command)); 1247 } else { 1248 r->command = NULL; 1249 } 1250 ndr->flags = _flags_save_string; 1251 } 1252 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_actions)); 1253 if (r->num_actions > 1024) { 1254 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 1255 } 1256 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_actions)); 1257 if (_ptr_actions) { 1258 NDR_PULL_ALLOC(ndr, r->actions); 1259 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->actions, _ptr_actions)); 1260 } else { 1261 r->actions = NULL; 1262 } 1263 NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); 1264 } 1265 if (ndr_flags & NDR_BUFFERS) { 1266 { 1267 uint32_t _flags_save_string = ndr->flags; 1268 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 1269 if (r->rebootmsg) { 1270 uint32_t _relative_save_offset; 1271 _relative_save_offset = ndr->offset; 1272 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->rebootmsg)); 1273 _mem_save_rebootmsg_0 = NDR_PULL_GET_MEM_CTX(ndr); 1274 NDR_PULL_SET_MEM_CTX(ndr, r->rebootmsg, 0); 1275 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->rebootmsg)); 1276 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rebootmsg_0, 0); 1277 ndr->offset = _relative_save_offset; 1278 } 1279 ndr->flags = _flags_save_string; 1280 } 1281 { 1282 uint32_t _flags_save_string = ndr->flags; 1283 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM|LIBNDR_FLAG_ALIGN2); 1284 if (r->command) { 1285 uint32_t _relative_save_offset; 1286 _relative_save_offset = ndr->offset; 1287 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->command)); 1288 _mem_save_command_0 = NDR_PULL_GET_MEM_CTX(ndr); 1289 NDR_PULL_SET_MEM_CTX(ndr, r->command, 0); 1290 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->command)); 1291 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_command_0, 0); 1292 ndr->offset = _relative_save_offset; 1293 } 1294 ndr->flags = _flags_save_string; 1295 } 1296 if (r->actions) { 1297 uint32_t _relative_save_offset; 1298 _relative_save_offset = ndr->offset; 1299 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->actions)); 1300 _mem_save_actions_0 = NDR_PULL_GET_MEM_CTX(ndr); 1301 NDR_PULL_SET_MEM_CTX(ndr, r->actions, 0); 1302 NDR_CHECK(ndr_pull_array_size(ndr, &r->actions)); 1303 NDR_PULL_ALLOC_N(ndr, r->actions, ndr_get_array_size(ndr, &r->actions)); 1304 _mem_save_actions_1 = NDR_PULL_GET_MEM_CTX(ndr); 1305 NDR_PULL_SET_MEM_CTX(ndr, r->actions, 0); 1306 for (cntr_actions_1 = 0; cntr_actions_1 < r->num_actions; cntr_actions_1++) { 1307 NDR_CHECK(ndr_pull_SC_ACTION(ndr, NDR_SCALARS, &r->actions[cntr_actions_1])); 1308 } 1309 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_1, 0); 1310 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_0, 0); 1311 ndr->offset = _relative_save_offset; 1312 } 1313 if (r->actions) { 1314 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->actions, r->num_actions)); 1315 } 1316 } 1317 return NDR_ERR_SUCCESS; 1318} 1319 1320_PUBLIC_ void ndr_print_SERVICE_FAILURE_ACTIONS(struct ndr_print *ndr, const char *name, const struct SERVICE_FAILURE_ACTIONS *r) 1321{ 1322 uint32_t cntr_actions_1; 1323 ndr_print_struct(ndr, name, "SERVICE_FAILURE_ACTIONS"); 1324 ndr->depth++; 1325 ndr_print_uint32(ndr, "reset_period", r->reset_period); 1326 ndr_print_ptr(ndr, "rebootmsg", r->rebootmsg); 1327 ndr->depth++; 1328 if (r->rebootmsg) { 1329 ndr_print_string(ndr, "rebootmsg", r->rebootmsg); 1330 } 1331 ndr->depth--; 1332 ndr_print_ptr(ndr, "command", r->command); 1333 ndr->depth++; 1334 if (r->command) { 1335 ndr_print_string(ndr, "command", r->command); 1336 } 1337 ndr->depth--; 1338 ndr_print_uint32(ndr, "num_actions", r->num_actions); 1339 ndr_print_ptr(ndr, "actions", r->actions); 1340 ndr->depth++; 1341 if (r->actions) { 1342 ndr->print(ndr, "%s: ARRAY(%d)", "actions", (int)r->num_actions); 1343 ndr->depth++; 1344 for (cntr_actions_1=0;cntr_actions_1<r->num_actions;cntr_actions_1++) { 1345 char *idx_1=NULL; 1346 if (asprintf(&idx_1, "[%d]", cntr_actions_1) != -1) { 1347 ndr_print_SC_ACTION(ndr, "actions", &r->actions[cntr_actions_1]); 1348 free(idx_1); 1349 } 1350 } 1351 ndr->depth--; 1352 } 1353 ndr->depth--; 1354 ndr->depth--; 1355} 1356 1357_PUBLIC_ size_t ndr_size_SERVICE_FAILURE_ACTIONS(const struct SERVICE_FAILURE_ACTIONS *r, struct smb_iconv_convenience *ic, int flags) 1358{ 1359 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_FAILURE_ACTIONS, ic); 1360} 1361 1362static enum ndr_err_code ndr_push_svcctl_StatusLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_StatusLevel r) 1363{ 1364 NDR_CHECK(ndr_push_enum_uint32(ndr, NDR_SCALARS, r)); 1365 return NDR_ERR_SUCCESS; 1366} 1367 1368static enum ndr_err_code ndr_pull_svcctl_StatusLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StatusLevel *r) 1369{ 1370 uint32_t v; 1371 NDR_CHECK(ndr_pull_enum_uint32(ndr, NDR_SCALARS, &v)); 1372 *r = v; 1373 return NDR_ERR_SUCCESS; 1374} 1375 1376_PUBLIC_ void ndr_print_svcctl_StatusLevel(struct ndr_print *ndr, const char *name, enum svcctl_StatusLevel r) 1377{ 1378 const char *val = NULL; 1379 1380 switch (r) { 1381 case SVC_STATUS_PROCESS_INFO: val = "SVC_STATUS_PROCESS_INFO"; break; 1382 } 1383 ndr_print_enum(ndr, name, "ENUM", val, r); 1384} 1385 1386static enum ndr_err_code ndr_push_svcctl_CloseServiceHandle(struct ndr_push *ndr, int flags, const struct svcctl_CloseServiceHandle *r) 1387{ 1388 if (flags & NDR_IN) { 1389 if (r->in.handle == NULL) { 1390 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 1391 } 1392 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 1393 } 1394 if (flags & NDR_OUT) { 1395 if (r->out.handle == NULL) { 1396 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 1397 } 1398 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle)); 1399 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 1400 } 1401 return NDR_ERR_SUCCESS; 1402} 1403 1404static enum ndr_err_code ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull *ndr, int flags, struct svcctl_CloseServiceHandle *r) 1405{ 1406 TALLOC_CTX *_mem_save_handle_0; 1407 if (flags & NDR_IN) { 1408 ZERO_STRUCT(r->out); 1409 1410 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 1411 NDR_PULL_ALLOC(ndr, r->in.handle); 1412 } 1413 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 1414 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 1415 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 1416 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 1417 NDR_PULL_ALLOC(ndr, r->out.handle); 1418 *r->out.handle = *r->in.handle; 1419 } 1420 if (flags & NDR_OUT) { 1421 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 1422 NDR_PULL_ALLOC(ndr, r->out.handle); 1423 } 1424 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 1425 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC); 1426 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle)); 1427 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 1428 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 1429 } 1430 return NDR_ERR_SUCCESS; 1431} 1432 1433_PUBLIC_ void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r) 1434{ 1435 ndr_print_struct(ndr, name, "svcctl_CloseServiceHandle"); 1436 ndr->depth++; 1437 if (flags & NDR_SET_VALUES) { 1438 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 1439 } 1440 if (flags & NDR_IN) { 1441 ndr_print_struct(ndr, "in", "svcctl_CloseServiceHandle"); 1442 ndr->depth++; 1443 ndr_print_ptr(ndr, "handle", r->in.handle); 1444 ndr->depth++; 1445 ndr_print_policy_handle(ndr, "handle", r->in.handle); 1446 ndr->depth--; 1447 ndr->depth--; 1448 } 1449 if (flags & NDR_OUT) { 1450 ndr_print_struct(ndr, "out", "svcctl_CloseServiceHandle"); 1451 ndr->depth++; 1452 ndr_print_ptr(ndr, "handle", r->out.handle); 1453 ndr->depth++; 1454 ndr_print_policy_handle(ndr, "handle", r->out.handle); 1455 ndr->depth--; 1456 ndr_print_WERROR(ndr, "result", r->out.result); 1457 ndr->depth--; 1458 } 1459 ndr->depth--; 1460} 1461 1462static enum ndr_err_code ndr_push_svcctl_ControlService(struct ndr_push *ndr, int flags, const struct svcctl_ControlService *r) 1463{ 1464 if (flags & NDR_IN) { 1465 if (r->in.handle == NULL) { 1466 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 1467 } 1468 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 1469 NDR_CHECK(ndr_push_SERVICE_CONTROL(ndr, NDR_SCALARS, r->in.control)); 1470 } 1471 if (flags & NDR_OUT) { 1472 if (r->out.service_status == NULL) { 1473 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 1474 } 1475 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status)); 1476 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 1477 } 1478 return NDR_ERR_SUCCESS; 1479} 1480 1481static enum ndr_err_code ndr_pull_svcctl_ControlService(struct ndr_pull *ndr, int flags, struct svcctl_ControlService *r) 1482{ 1483 TALLOC_CTX *_mem_save_handle_0; 1484 TALLOC_CTX *_mem_save_service_status_0; 1485 if (flags & NDR_IN) { 1486 ZERO_STRUCT(r->out); 1487 1488 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 1489 NDR_PULL_ALLOC(ndr, r->in.handle); 1490 } 1491 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 1492 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 1493 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 1494 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 1495 NDR_CHECK(ndr_pull_SERVICE_CONTROL(ndr, NDR_SCALARS, &r->in.control)); 1496 NDR_PULL_ALLOC(ndr, r->out.service_status); 1497 ZERO_STRUCTP(r->out.service_status); 1498 } 1499 if (flags & NDR_OUT) { 1500 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 1501 NDR_PULL_ALLOC(ndr, r->out.service_status); 1502 } 1503 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr); 1504 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC); 1505 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status)); 1506 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC); 1507 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 1508 } 1509 return NDR_ERR_SUCCESS; 1510} 1511 1512_PUBLIC_ void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r) 1513{ 1514 ndr_print_struct(ndr, name, "svcctl_ControlService"); 1515 ndr->depth++; 1516 if (flags & NDR_SET_VALUES) { 1517 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 1518 } 1519 if (flags & NDR_IN) { 1520 ndr_print_struct(ndr, "in", "svcctl_ControlService"); 1521 ndr->depth++; 1522 ndr_print_ptr(ndr, "handle", r->in.handle); 1523 ndr->depth++; 1524 ndr_print_policy_handle(ndr, "handle", r->in.handle); 1525 ndr->depth--; 1526 ndr_print_SERVICE_CONTROL(ndr, "control", r->in.control); 1527 ndr->depth--; 1528 } 1529 if (flags & NDR_OUT) { 1530 ndr_print_struct(ndr, "out", "svcctl_ControlService"); 1531 ndr->depth++; 1532 ndr_print_ptr(ndr, "service_status", r->out.service_status); 1533 ndr->depth++; 1534 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status); 1535 ndr->depth--; 1536 ndr_print_WERROR(ndr, "result", r->out.result); 1537 ndr->depth--; 1538 } 1539 ndr->depth--; 1540} 1541 1542static enum ndr_err_code ndr_push_svcctl_DeleteService(struct ndr_push *ndr, int flags, const struct svcctl_DeleteService *r) 1543{ 1544 if (flags & NDR_IN) { 1545 if (r->in.handle == NULL) { 1546 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 1547 } 1548 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 1549 } 1550 if (flags & NDR_OUT) { 1551 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 1552 } 1553 return NDR_ERR_SUCCESS; 1554} 1555 1556static enum ndr_err_code ndr_pull_svcctl_DeleteService(struct ndr_pull *ndr, int flags, struct svcctl_DeleteService *r) 1557{ 1558 TALLOC_CTX *_mem_save_handle_0; 1559 if (flags & NDR_IN) { 1560 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 1561 NDR_PULL_ALLOC(ndr, r->in.handle); 1562 } 1563 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 1564 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 1565 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 1566 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 1567 } 1568 if (flags & NDR_OUT) { 1569 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 1570 } 1571 return NDR_ERR_SUCCESS; 1572} 1573 1574_PUBLIC_ void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r) 1575{ 1576 ndr_print_struct(ndr, name, "svcctl_DeleteService"); 1577 ndr->depth++; 1578 if (flags & NDR_SET_VALUES) { 1579 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 1580 } 1581 if (flags & NDR_IN) { 1582 ndr_print_struct(ndr, "in", "svcctl_DeleteService"); 1583 ndr->depth++; 1584 ndr_print_ptr(ndr, "handle", r->in.handle); 1585 ndr->depth++; 1586 ndr_print_policy_handle(ndr, "handle", r->in.handle); 1587 ndr->depth--; 1588 ndr->depth--; 1589 } 1590 if (flags & NDR_OUT) { 1591 ndr_print_struct(ndr, "out", "svcctl_DeleteService"); 1592 ndr->depth++; 1593 ndr_print_WERROR(ndr, "result", r->out.result); 1594 ndr->depth--; 1595 } 1596 ndr->depth--; 1597} 1598 1599static enum ndr_err_code ndr_push_svcctl_LockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_LockServiceDatabase *r) 1600{ 1601 if (flags & NDR_IN) { 1602 if (r->in.handle == NULL) { 1603 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 1604 } 1605 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 1606 } 1607 if (flags & NDR_OUT) { 1608 if (r->out.lock == NULL) { 1609 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 1610 } 1611 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock)); 1612 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 1613 } 1614 return NDR_ERR_SUCCESS; 1615} 1616 1617static enum ndr_err_code ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_LockServiceDatabase *r) 1618{ 1619 TALLOC_CTX *_mem_save_handle_0; 1620 TALLOC_CTX *_mem_save_lock_0; 1621 if (flags & NDR_IN) { 1622 ZERO_STRUCT(r->out); 1623 1624 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 1625 NDR_PULL_ALLOC(ndr, r->in.handle); 1626 } 1627 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 1628 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 1629 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 1630 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 1631 NDR_PULL_ALLOC(ndr, r->out.lock); 1632 ZERO_STRUCTP(r->out.lock); 1633 } 1634 if (flags & NDR_OUT) { 1635 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 1636 NDR_PULL_ALLOC(ndr, r->out.lock); 1637 } 1638 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr); 1639 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC); 1640 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock)); 1641 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC); 1642 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 1643 } 1644 return NDR_ERR_SUCCESS; 1645} 1646 1647_PUBLIC_ void ndr_print_svcctl_LockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_LockServiceDatabase *r) 1648{ 1649 ndr_print_struct(ndr, name, "svcctl_LockServiceDatabase"); 1650 ndr->depth++; 1651 if (flags & NDR_SET_VALUES) { 1652 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 1653 } 1654 if (flags & NDR_IN) { 1655 ndr_print_struct(ndr, "in", "svcctl_LockServiceDatabase"); 1656 ndr->depth++; 1657 ndr_print_ptr(ndr, "handle", r->in.handle); 1658 ndr->depth++; 1659 ndr_print_policy_handle(ndr, "handle", r->in.handle); 1660 ndr->depth--; 1661 ndr->depth--; 1662 } 1663 if (flags & NDR_OUT) { 1664 ndr_print_struct(ndr, "out", "svcctl_LockServiceDatabase"); 1665 ndr->depth++; 1666 ndr_print_ptr(ndr, "lock", r->out.lock); 1667 ndr->depth++; 1668 ndr_print_policy_handle(ndr, "lock", r->out.lock); 1669 ndr->depth--; 1670 ndr_print_WERROR(ndr, "result", r->out.result); 1671 ndr->depth--; 1672 } 1673 ndr->depth--; 1674} 1675 1676static enum ndr_err_code ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceObjectSecurity *r) 1677{ 1678 if (flags & NDR_IN) { 1679 if (r->in.handle == NULL) { 1680 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 1681 } 1682 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 1683 NDR_CHECK(ndr_push_security_secinfo(ndr, NDR_SCALARS, r->in.security_flags)); 1684 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered)); 1685 } 1686 if (flags & NDR_OUT) { 1687 if (r->out.buffer == NULL) { 1688 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 1689 } 1690 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered)); 1691 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered)); 1692 if (r->out.needed == NULL) { 1693 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 1694 } 1695 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed)); 1696 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 1697 } 1698 return NDR_ERR_SUCCESS; 1699} 1700 1701static enum ndr_err_code ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceObjectSecurity *r) 1702{ 1703 TALLOC_CTX *_mem_save_handle_0; 1704 TALLOC_CTX *_mem_save_needed_0; 1705 if (flags & NDR_IN) { 1706 ZERO_STRUCT(r->out); 1707 1708 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 1709 NDR_PULL_ALLOC(ndr, r->in.handle); 1710 } 1711 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 1712 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 1713 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 1714 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 1715 NDR_CHECK(ndr_pull_security_secinfo(ndr, NDR_SCALARS, &r->in.security_flags)); 1716 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); 1717 if (r->in.offered > 0x40000) { 1718 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 1719 } 1720 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.offered); 1721 memset(r->out.buffer, 0, (r->in.offered) * sizeof(*r->out.buffer)); 1722 NDR_PULL_ALLOC(ndr, r->out.needed); 1723 ZERO_STRUCTP(r->out.needed); 1724 } 1725 if (flags & NDR_OUT) { 1726 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer)); 1727 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 1728 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)); 1729 } 1730 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer))); 1731 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 1732 NDR_PULL_ALLOC(ndr, r->out.needed); 1733 } 1734 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr); 1735 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC); 1736 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed)); 1737 if (*r->out.needed > 0x40000) { 1738 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 1739 } 1740 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC); 1741 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 1742 if (r->out.buffer) { 1743 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered)); 1744 } 1745 } 1746 return NDR_ERR_SUCCESS; 1747} 1748 1749_PUBLIC_ void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceObjectSecurity *r) 1750{ 1751 ndr_print_struct(ndr, name, "svcctl_QueryServiceObjectSecurity"); 1752 ndr->depth++; 1753 if (flags & NDR_SET_VALUES) { 1754 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 1755 } 1756 if (flags & NDR_IN) { 1757 ndr_print_struct(ndr, "in", "svcctl_QueryServiceObjectSecurity"); 1758 ndr->depth++; 1759 ndr_print_ptr(ndr, "handle", r->in.handle); 1760 ndr->depth++; 1761 ndr_print_policy_handle(ndr, "handle", r->in.handle); 1762 ndr->depth--; 1763 ndr_print_security_secinfo(ndr, "security_flags", r->in.security_flags); 1764 ndr_print_uint32(ndr, "offered", r->in.offered); 1765 ndr->depth--; 1766 } 1767 if (flags & NDR_OUT) { 1768 ndr_print_struct(ndr, "out", "svcctl_QueryServiceObjectSecurity"); 1769 ndr->depth++; 1770 ndr_print_ptr(ndr, "buffer", r->out.buffer); 1771 ndr->depth++; 1772 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered); 1773 ndr->depth--; 1774 ndr_print_ptr(ndr, "needed", r->out.needed); 1775 ndr->depth++; 1776 ndr_print_uint32(ndr, "needed", *r->out.needed); 1777 ndr->depth--; 1778 ndr_print_WERROR(ndr, "result", r->out.result); 1779 ndr->depth--; 1780 } 1781 ndr->depth--; 1782} 1783 1784static enum ndr_err_code ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceObjectSecurity *r) 1785{ 1786 if (flags & NDR_IN) { 1787 if (r->in.handle == NULL) { 1788 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 1789 } 1790 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 1791 NDR_CHECK(ndr_push_security_secinfo(ndr, NDR_SCALARS, r->in.security_flags)); 1792 if (r->in.buffer == NULL) { 1793 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 1794 } 1795 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered)); 1796 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, r->in.offered)); 1797 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered)); 1798 } 1799 if (flags & NDR_OUT) { 1800 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 1801 } 1802 return NDR_ERR_SUCCESS; 1803} 1804 1805static enum ndr_err_code ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceObjectSecurity *r) 1806{ 1807 TALLOC_CTX *_mem_save_handle_0; 1808 if (flags & NDR_IN) { 1809 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 1810 NDR_PULL_ALLOC(ndr, r->in.handle); 1811 } 1812 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 1813 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 1814 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 1815 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 1816 NDR_CHECK(ndr_pull_security_secinfo(ndr, NDR_SCALARS, &r->in.security_flags)); 1817 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer)); 1818 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 1819 NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer)); 1820 } 1821 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer))); 1822 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); 1823 if (r->in.buffer) { 1824 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.offered)); 1825 } 1826 } 1827 if (flags & NDR_OUT) { 1828 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 1829 } 1830 return NDR_ERR_SUCCESS; 1831} 1832 1833_PUBLIC_ void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceObjectSecurity *r) 1834{ 1835 ndr_print_struct(ndr, name, "svcctl_SetServiceObjectSecurity"); 1836 ndr->depth++; 1837 if (flags & NDR_SET_VALUES) { 1838 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 1839 } 1840 if (flags & NDR_IN) { 1841 ndr_print_struct(ndr, "in", "svcctl_SetServiceObjectSecurity"); 1842 ndr->depth++; 1843 ndr_print_ptr(ndr, "handle", r->in.handle); 1844 ndr->depth++; 1845 ndr_print_policy_handle(ndr, "handle", r->in.handle); 1846 ndr->depth--; 1847 ndr_print_security_secinfo(ndr, "security_flags", r->in.security_flags); 1848 ndr_print_ptr(ndr, "buffer", r->in.buffer); 1849 ndr->depth++; 1850 ndr_print_array_uint8(ndr, "buffer", r->in.buffer, r->in.offered); 1851 ndr->depth--; 1852 ndr_print_uint32(ndr, "offered", r->in.offered); 1853 ndr->depth--; 1854 } 1855 if (flags & NDR_OUT) { 1856 ndr_print_struct(ndr, "out", "svcctl_SetServiceObjectSecurity"); 1857 ndr->depth++; 1858 ndr_print_WERROR(ndr, "result", r->out.result); 1859 ndr->depth--; 1860 } 1861 ndr->depth--; 1862} 1863 1864static enum ndr_err_code ndr_push_svcctl_QueryServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatus *r) 1865{ 1866 if (flags & NDR_IN) { 1867 if (r->in.handle == NULL) { 1868 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 1869 } 1870 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 1871 } 1872 if (flags & NDR_OUT) { 1873 if (r->out.service_status == NULL) { 1874 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 1875 } 1876 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status)); 1877 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 1878 } 1879 return NDR_ERR_SUCCESS; 1880} 1881 1882static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatus *r) 1883{ 1884 TALLOC_CTX *_mem_save_handle_0; 1885 TALLOC_CTX *_mem_save_service_status_0; 1886 if (flags & NDR_IN) { 1887 ZERO_STRUCT(r->out); 1888 1889 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 1890 NDR_PULL_ALLOC(ndr, r->in.handle); 1891 } 1892 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 1893 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 1894 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 1895 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 1896 NDR_PULL_ALLOC(ndr, r->out.service_status); 1897 ZERO_STRUCTP(r->out.service_status); 1898 } 1899 if (flags & NDR_OUT) { 1900 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 1901 NDR_PULL_ALLOC(ndr, r->out.service_status); 1902 } 1903 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr); 1904 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC); 1905 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status)); 1906 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC); 1907 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 1908 } 1909 return NDR_ERR_SUCCESS; 1910} 1911 1912_PUBLIC_ void ndr_print_svcctl_QueryServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatus *r) 1913{ 1914 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatus"); 1915 ndr->depth++; 1916 if (flags & NDR_SET_VALUES) { 1917 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 1918 } 1919 if (flags & NDR_IN) { 1920 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatus"); 1921 ndr->depth++; 1922 ndr_print_ptr(ndr, "handle", r->in.handle); 1923 ndr->depth++; 1924 ndr_print_policy_handle(ndr, "handle", r->in.handle); 1925 ndr->depth--; 1926 ndr->depth--; 1927 } 1928 if (flags & NDR_OUT) { 1929 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatus"); 1930 ndr->depth++; 1931 ndr_print_ptr(ndr, "service_status", r->out.service_status); 1932 ndr->depth++; 1933 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status); 1934 ndr->depth--; 1935 ndr_print_WERROR(ndr, "result", r->out.result); 1936 ndr->depth--; 1937 } 1938 ndr->depth--; 1939} 1940 1941static enum ndr_err_code ndr_push_svcctl_SetServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceStatus *r) 1942{ 1943 if (flags & NDR_IN) { 1944 } 1945 if (flags & NDR_OUT) { 1946 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 1947 } 1948 return NDR_ERR_SUCCESS; 1949} 1950 1951static enum ndr_err_code ndr_pull_svcctl_SetServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceStatus *r) 1952{ 1953 if (flags & NDR_IN) { 1954 } 1955 if (flags & NDR_OUT) { 1956 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 1957 } 1958 return NDR_ERR_SUCCESS; 1959} 1960 1961_PUBLIC_ void ndr_print_svcctl_SetServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceStatus *r) 1962{ 1963 ndr_print_struct(ndr, name, "svcctl_SetServiceStatus"); 1964 ndr->depth++; 1965 if (flags & NDR_SET_VALUES) { 1966 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 1967 } 1968 if (flags & NDR_IN) { 1969 ndr_print_struct(ndr, "in", "svcctl_SetServiceStatus"); 1970 ndr->depth++; 1971 ndr->depth--; 1972 } 1973 if (flags & NDR_OUT) { 1974 ndr_print_struct(ndr, "out", "svcctl_SetServiceStatus"); 1975 ndr->depth++; 1976 ndr_print_WERROR(ndr, "result", r->out.result); 1977 ndr->depth--; 1978 } 1979 ndr->depth--; 1980} 1981 1982static enum ndr_err_code ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_UnlockServiceDatabase *r) 1983{ 1984 if (flags & NDR_IN) { 1985 if (r->in.lock == NULL) { 1986 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 1987 } 1988 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.lock)); 1989 } 1990 if (flags & NDR_OUT) { 1991 if (r->out.lock == 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->out.lock)); 1995 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 1996 } 1997 return NDR_ERR_SUCCESS; 1998} 1999 2000static enum ndr_err_code ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_UnlockServiceDatabase *r) 2001{ 2002 TALLOC_CTX *_mem_save_lock_0; 2003 if (flags & NDR_IN) { 2004 ZERO_STRUCT(r->out); 2005 2006 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 2007 NDR_PULL_ALLOC(ndr, r->in.lock); 2008 } 2009 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr); 2010 NDR_PULL_SET_MEM_CTX(ndr, r->in.lock, LIBNDR_FLAG_REF_ALLOC); 2011 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.lock)); 2012 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC); 2013 NDR_PULL_ALLOC(ndr, r->out.lock); 2014 *r->out.lock = *r->in.lock; 2015 } 2016 if (flags & NDR_OUT) { 2017 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 2018 NDR_PULL_ALLOC(ndr, r->out.lock); 2019 } 2020 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr); 2021 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC); 2022 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock)); 2023 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC); 2024 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 2025 } 2026 return NDR_ERR_SUCCESS; 2027} 2028 2029_PUBLIC_ void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_UnlockServiceDatabase *r) 2030{ 2031 ndr_print_struct(ndr, name, "svcctl_UnlockServiceDatabase"); 2032 ndr->depth++; 2033 if (flags & NDR_SET_VALUES) { 2034 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 2035 } 2036 if (flags & NDR_IN) { 2037 ndr_print_struct(ndr, "in", "svcctl_UnlockServiceDatabase"); 2038 ndr->depth++; 2039 ndr_print_ptr(ndr, "lock", r->in.lock); 2040 ndr->depth++; 2041 ndr_print_policy_handle(ndr, "lock", r->in.lock); 2042 ndr->depth--; 2043 ndr->depth--; 2044 } 2045 if (flags & NDR_OUT) { 2046 ndr_print_struct(ndr, "out", "svcctl_UnlockServiceDatabase"); 2047 ndr->depth++; 2048 ndr_print_ptr(ndr, "lock", r->out.lock); 2049 ndr->depth++; 2050 ndr_print_policy_handle(ndr, "lock", r->out.lock); 2051 ndr->depth--; 2052 ndr_print_WERROR(ndr, "result", r->out.result); 2053 ndr->depth--; 2054 } 2055 ndr->depth--; 2056} 2057 2058static enum ndr_err_code ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push *ndr, int flags, const struct svcctl_NotifyBootConfigStatus *r) 2059{ 2060 if (flags & NDR_IN) { 2061 } 2062 if (flags & NDR_OUT) { 2063 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 2064 } 2065 return NDR_ERR_SUCCESS; 2066} 2067 2068static enum ndr_err_code ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull *ndr, int flags, struct svcctl_NotifyBootConfigStatus *r) 2069{ 2070 if (flags & NDR_IN) { 2071 } 2072 if (flags & NDR_OUT) { 2073 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 2074 } 2075 return NDR_ERR_SUCCESS; 2076} 2077 2078_PUBLIC_ void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_NotifyBootConfigStatus *r) 2079{ 2080 ndr_print_struct(ndr, name, "svcctl_NotifyBootConfigStatus"); 2081 ndr->depth++; 2082 if (flags & NDR_SET_VALUES) { 2083 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 2084 } 2085 if (flags & NDR_IN) { 2086 ndr_print_struct(ndr, "in", "svcctl_NotifyBootConfigStatus"); 2087 ndr->depth++; 2088 ndr->depth--; 2089 } 2090 if (flags & NDR_OUT) { 2091 ndr_print_struct(ndr, "out", "svcctl_NotifyBootConfigStatus"); 2092 ndr->depth++; 2093 ndr_print_WERROR(ndr, "result", r->out.result); 2094 ndr->depth--; 2095 } 2096 ndr->depth--; 2097} 2098 2099static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsW *r) 2100{ 2101 if (flags & NDR_IN) { 2102 if (r->in.handle == NULL) { 2103 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 2104 } 2105 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 2106 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits)); 2107 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson)); 2108 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate)); 2109 } 2110 if (flags & NDR_OUT) { 2111 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 2112 } 2113 return NDR_ERR_SUCCESS; 2114} 2115 2116static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsW *r) 2117{ 2118 TALLOC_CTX *_mem_save_handle_0; 2119 if (flags & NDR_IN) { 2120 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 2121 NDR_PULL_ALLOC(ndr, r->in.handle); 2122 } 2123 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 2124 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 2125 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 2126 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 2127 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits)); 2128 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson)); 2129 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate)); 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_svcctl_SCSetServiceBitsW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsW *r) 2138{ 2139 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsW"); 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", "svcctl_SCSetServiceBitsW"); 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_uint32(ndr, "bits", r->in.bits); 2152 ndr_print_uint32(ndr, "bitson", r->in.bitson); 2153 ndr_print_uint32(ndr, "immediate", r->in.immediate); 2154 ndr->depth--; 2155 } 2156 if (flags & NDR_OUT) { 2157 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsW"); 2158 ndr->depth++; 2159 ndr_print_WERROR(ndr, "result", r->out.result); 2160 ndr->depth--; 2161 } 2162 ndr->depth--; 2163} 2164 2165static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigW *r) 2166{ 2167 if (flags & NDR_IN) { 2168 if (r->in.handle == NULL) { 2169 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 2170 } 2171 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 2172 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type)); 2173 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type)); 2174 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control)); 2175 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path)); 2176 if (r->in.binary_path) { 2177 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16))); 2178 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 2179 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16))); 2180 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.binary_path, ndr_charset_length(r->in.binary_path, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 2181 } 2182 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group)); 2183 if (r->in.load_order_group) { 2184 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16))); 2185 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 2186 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16))); 2187 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.load_order_group, ndr_charset_length(r->in.load_order_group, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 2188 } 2189 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies)); 2190 if (r->in.dependencies) { 2191 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16))); 2192 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 2193 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16))); 2194 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 2195 } 2196 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name)); 2197 if (r->in.service_start_name) { 2198 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16))); 2199 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 2200 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16))); 2201 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_start_name, ndr_charset_length(r->in.service_start_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 2202 } 2203 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password)); 2204 if (r->in.password) { 2205 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16))); 2206 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 2207 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16))); 2208 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 2209 } 2210 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name)); 2211 if (r->in.display_name) { 2212 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16))); 2213 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 2214 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16))); 2215 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.display_name, ndr_charset_length(r->in.display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 2216 } 2217 } 2218 if (flags & NDR_OUT) { 2219 if (r->out.tag_id == NULL) { 2220 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 2221 } 2222 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id)); 2223 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 2224 } 2225 return NDR_ERR_SUCCESS; 2226} 2227 2228static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigW *r) 2229{ 2230 uint32_t _ptr_binary_path; 2231 uint32_t _ptr_load_order_group; 2232 uint32_t _ptr_dependencies; 2233 uint32_t _ptr_service_start_name; 2234 uint32_t _ptr_password; 2235 uint32_t _ptr_display_name; 2236 TALLOC_CTX *_mem_save_handle_0; 2237 TALLOC_CTX *_mem_save_binary_path_0; 2238 TALLOC_CTX *_mem_save_load_order_group_0; 2239 TALLOC_CTX *_mem_save_tag_id_0; 2240 TALLOC_CTX *_mem_save_dependencies_0; 2241 TALLOC_CTX *_mem_save_service_start_name_0; 2242 TALLOC_CTX *_mem_save_password_0; 2243 TALLOC_CTX *_mem_save_display_name_0; 2244 if (flags & NDR_IN) { 2245 ZERO_STRUCT(r->out); 2246 2247 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 2248 NDR_PULL_ALLOC(ndr, r->in.handle); 2249 } 2250 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 2251 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 2252 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 2253 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 2254 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type)); 2255 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type)); 2256 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control)); 2257 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path)); 2258 if (_ptr_binary_path) { 2259 NDR_PULL_ALLOC(ndr, r->in.binary_path); 2260 } else { 2261 r->in.binary_path = NULL; 2262 } 2263 if (r->in.binary_path) { 2264 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr); 2265 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0); 2266 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path)); 2267 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path)); 2268 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) { 2269 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.binary_path), ndr_get_array_length(ndr, &r->in.binary_path)); 2270 } 2271 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t))); 2272 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16)); 2273 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0); 2274 } 2275 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group)); 2276 if (_ptr_load_order_group) { 2277 NDR_PULL_ALLOC(ndr, r->in.load_order_group); 2278 } else { 2279 r->in.load_order_group = NULL; 2280 } 2281 if (r->in.load_order_group) { 2282 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr); 2283 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0); 2284 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group)); 2285 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group)); 2286 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) { 2287 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.load_order_group), ndr_get_array_length(ndr, &r->in.load_order_group)); 2288 } 2289 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t))); 2290 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.load_order_group, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t), CH_UTF16)); 2291 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0); 2292 } 2293 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies)); 2294 if (_ptr_dependencies) { 2295 NDR_PULL_ALLOC(ndr, r->in.dependencies); 2296 } else { 2297 r->in.dependencies = NULL; 2298 } 2299 if (r->in.dependencies) { 2300 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr); 2301 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0); 2302 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies)); 2303 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies)); 2304 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) { 2305 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.dependencies), ndr_get_array_length(ndr, &r->in.dependencies)); 2306 } 2307 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t))); 2308 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16)); 2309 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0); 2310 } 2311 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name)); 2312 if (_ptr_service_start_name) { 2313 NDR_PULL_ALLOC(ndr, r->in.service_start_name); 2314 } else { 2315 r->in.service_start_name = NULL; 2316 } 2317 if (r->in.service_start_name) { 2318 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 2319 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0); 2320 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name)); 2321 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name)); 2322 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) { 2323 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.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name)); 2324 } 2325 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t))); 2326 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16)); 2327 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0); 2328 } 2329 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password)); 2330 if (_ptr_password) { 2331 NDR_PULL_ALLOC(ndr, r->in.password); 2332 } else { 2333 r->in.password = NULL; 2334 } 2335 if (r->in.password) { 2336 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr); 2337 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0); 2338 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password)); 2339 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password)); 2340 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) { 2341 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.password), ndr_get_array_length(ndr, &r->in.password)); 2342 } 2343 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t))); 2344 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16)); 2345 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0); 2346 } 2347 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name)); 2348 if (_ptr_display_name) { 2349 NDR_PULL_ALLOC(ndr, r->in.display_name); 2350 } else { 2351 r->in.display_name = NULL; 2352 } 2353 if (r->in.display_name) { 2354 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 2355 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0); 2356 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name)); 2357 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name)); 2358 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) { 2359 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.display_name), ndr_get_array_length(ndr, &r->in.display_name)); 2360 } 2361 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t))); 2362 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.display_name, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t), CH_UTF16)); 2363 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0); 2364 } 2365 NDR_PULL_ALLOC(ndr, r->out.tag_id); 2366 ZERO_STRUCTP(r->out.tag_id); 2367 } 2368 if (flags & NDR_OUT) { 2369 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 2370 NDR_PULL_ALLOC(ndr, r->out.tag_id); 2371 } 2372 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr); 2373 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC); 2374 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id)); 2375 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC); 2376 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 2377 } 2378 return NDR_ERR_SUCCESS; 2379} 2380 2381_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigW *r) 2382{ 2383 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigW"); 2384 ndr->depth++; 2385 if (flags & NDR_SET_VALUES) { 2386 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 2387 } 2388 if (flags & NDR_IN) { 2389 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigW"); 2390 ndr->depth++; 2391 ndr_print_ptr(ndr, "handle", r->in.handle); 2392 ndr->depth++; 2393 ndr_print_policy_handle(ndr, "handle", r->in.handle); 2394 ndr->depth--; 2395 ndr_print_uint32(ndr, "type", r->in.type); 2396 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type); 2397 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control); 2398 ndr_print_ptr(ndr, "binary_path", r->in.binary_path); 2399 ndr->depth++; 2400 if (r->in.binary_path) { 2401 ndr_print_string(ndr, "binary_path", r->in.binary_path); 2402 } 2403 ndr->depth--; 2404 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group); 2405 ndr->depth++; 2406 if (r->in.load_order_group) { 2407 ndr_print_string(ndr, "load_order_group", r->in.load_order_group); 2408 } 2409 ndr->depth--; 2410 ndr_print_ptr(ndr, "dependencies", r->in.dependencies); 2411 ndr->depth++; 2412 if (r->in.dependencies) { 2413 ndr_print_string(ndr, "dependencies", r->in.dependencies); 2414 } 2415 ndr->depth--; 2416 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name); 2417 ndr->depth++; 2418 if (r->in.service_start_name) { 2419 ndr_print_string(ndr, "service_start_name", r->in.service_start_name); 2420 } 2421 ndr->depth--; 2422 ndr_print_ptr(ndr, "password", r->in.password); 2423 ndr->depth++; 2424 if (r->in.password) { 2425 ndr_print_string(ndr, "password", r->in.password); 2426 } 2427 ndr->depth--; 2428 ndr_print_ptr(ndr, "display_name", r->in.display_name); 2429 ndr->depth++; 2430 if (r->in.display_name) { 2431 ndr_print_string(ndr, "display_name", r->in.display_name); 2432 } 2433 ndr->depth--; 2434 ndr->depth--; 2435 } 2436 if (flags & NDR_OUT) { 2437 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigW"); 2438 ndr->depth++; 2439 ndr_print_ptr(ndr, "tag_id", r->out.tag_id); 2440 ndr->depth++; 2441 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id); 2442 ndr->depth--; 2443 ndr_print_WERROR(ndr, "result", r->out.result); 2444 ndr->depth--; 2445 } 2446 ndr->depth--; 2447} 2448 2449static enum ndr_err_code ndr_push_svcctl_CreateServiceW(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceW *r) 2450{ 2451 if (flags & NDR_IN) { 2452 if (r->in.scmanager_handle == NULL) { 2453 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 2454 } 2455 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle)); 2456 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16))); 2457 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 2458 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16))); 2459 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 2460 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName)); 2461 if (r->in.DisplayName) { 2462 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16))); 2463 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 2464 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16))); 2465 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 2466 } 2467 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access)); 2468 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type)); 2469 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type)); 2470 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control)); 2471 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16))); 2472 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 2473 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16))); 2474 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.binary_path, ndr_charset_length(r->in.binary_path, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 2475 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey)); 2476 if (r->in.LoadOrderGroupKey) { 2477 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16))); 2478 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 2479 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16))); 2480 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 2481 } 2482 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.TagId)); 2483 if (r->in.TagId) { 2484 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.TagId)); 2485 } 2486 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies)); 2487 if (r->in.dependencies) { 2488 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.dependencies_size)); 2489 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, r->in.dependencies_size)); 2490 } 2491 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size)); 2492 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name)); 2493 if (r->in.service_start_name) { 2494 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16))); 2495 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 2496 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16))); 2497 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_start_name, ndr_charset_length(r->in.service_start_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 2498 } 2499 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password)); 2500 if (r->in.password) { 2501 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.password_size)); 2502 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.password, r->in.password_size)); 2503 } 2504 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size)); 2505 } 2506 if (flags & NDR_OUT) { 2507 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId)); 2508 if (r->out.TagId) { 2509 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId)); 2510 } 2511 if (r->out.handle == NULL) { 2512 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 2513 } 2514 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle)); 2515 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 2516 } 2517 return NDR_ERR_SUCCESS; 2518} 2519 2520static enum ndr_err_code ndr_pull_svcctl_CreateServiceW(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceW *r) 2521{ 2522 uint32_t _ptr_DisplayName; 2523 uint32_t _ptr_LoadOrderGroupKey; 2524 uint32_t _ptr_TagId; 2525 uint32_t _ptr_dependencies; 2526 uint32_t _ptr_service_start_name; 2527 uint32_t _ptr_password; 2528 TALLOC_CTX *_mem_save_scmanager_handle_0; 2529 TALLOC_CTX *_mem_save_DisplayName_0; 2530 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0; 2531 TALLOC_CTX *_mem_save_TagId_0; 2532 TALLOC_CTX *_mem_save_dependencies_0; 2533 TALLOC_CTX *_mem_save_service_start_name_0; 2534 TALLOC_CTX *_mem_save_password_0; 2535 TALLOC_CTX *_mem_save_handle_0; 2536 if (flags & NDR_IN) { 2537 ZERO_STRUCT(r->out); 2538 2539 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 2540 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle); 2541 } 2542 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 2543 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC); 2544 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle)); 2545 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC); 2546 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName)); 2547 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName)); 2548 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) { 2549 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.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName)); 2550 } 2551 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t))); 2552 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16)); 2553 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName)); 2554 if (_ptr_DisplayName) { 2555 NDR_PULL_ALLOC(ndr, r->in.DisplayName); 2556 } else { 2557 r->in.DisplayName = NULL; 2558 } 2559 if (r->in.DisplayName) { 2560 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr); 2561 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0); 2562 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName)); 2563 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName)); 2564 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) { 2565 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.DisplayName), ndr_get_array_length(ndr, &r->in.DisplayName)); 2566 } 2567 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t))); 2568 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16)); 2569 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0); 2570 } 2571 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access)); 2572 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type)); 2573 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type)); 2574 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control)); 2575 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path)); 2576 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path)); 2577 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) { 2578 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.binary_path), ndr_get_array_length(ndr, &r->in.binary_path)); 2579 } 2580 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t))); 2581 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16)); 2582 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey)); 2583 if (_ptr_LoadOrderGroupKey) { 2584 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey); 2585 } else { 2586 r->in.LoadOrderGroupKey = NULL; 2587 } 2588 if (r->in.LoadOrderGroupKey) { 2589 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr); 2590 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0); 2591 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey)); 2592 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey)); 2593 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) { 2594 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.LoadOrderGroupKey), ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey)); 2595 } 2596 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t))); 2597 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16)); 2598 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0); 2599 } 2600 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId)); 2601 if (_ptr_TagId) { 2602 NDR_PULL_ALLOC(ndr, r->in.TagId); 2603 } else { 2604 r->in.TagId = NULL; 2605 } 2606 if (r->in.TagId) { 2607 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr); 2608 NDR_PULL_SET_MEM_CTX(ndr, r->in.TagId, 0); 2609 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.TagId)); 2610 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0); 2611 } 2612 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies)); 2613 if (_ptr_dependencies) { 2614 NDR_PULL_ALLOC(ndr, r->in.dependencies); 2615 } else { 2616 r->in.dependencies = NULL; 2617 } 2618 if (r->in.dependencies) { 2619 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr); 2620 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0); 2621 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies)); 2622 NDR_PULL_ALLOC_N(ndr, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies)); 2623 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies))); 2624 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0); 2625 } 2626 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.dependencies_size)); 2627 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name)); 2628 if (_ptr_service_start_name) { 2629 NDR_PULL_ALLOC(ndr, r->in.service_start_name); 2630 } else { 2631 r->in.service_start_name = NULL; 2632 } 2633 if (r->in.service_start_name) { 2634 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 2635 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0); 2636 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name)); 2637 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name)); 2638 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) { 2639 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.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name)); 2640 } 2641 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t))); 2642 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16)); 2643 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0); 2644 } 2645 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password)); 2646 if (_ptr_password) { 2647 NDR_PULL_ALLOC(ndr, r->in.password); 2648 } else { 2649 r->in.password = NULL; 2650 } 2651 if (r->in.password) { 2652 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr); 2653 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0); 2654 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password)); 2655 NDR_PULL_ALLOC_N(ndr, r->in.password, ndr_get_array_size(ndr, &r->in.password)); 2656 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.password, ndr_get_array_size(ndr, &r->in.password))); 2657 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0); 2658 } 2659 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.password_size)); 2660 NDR_PULL_ALLOC(ndr, r->out.handle); 2661 ZERO_STRUCTP(r->out.handle); 2662 if (r->in.dependencies) { 2663 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.dependencies, r->in.dependencies_size)); 2664 } 2665 if (r->in.password) { 2666 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.password, r->in.password_size)); 2667 } 2668 } 2669 if (flags & NDR_OUT) { 2670 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId)); 2671 if (_ptr_TagId) { 2672 NDR_PULL_ALLOC(ndr, r->out.TagId); 2673 } else { 2674 r->out.TagId = NULL; 2675 } 2676 if (r->out.TagId) { 2677 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr); 2678 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0); 2679 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId)); 2680 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0); 2681 } 2682 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 2683 NDR_PULL_ALLOC(ndr, r->out.handle); 2684 } 2685 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 2686 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC); 2687 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle)); 2688 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 2689 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 2690 } 2691 return NDR_ERR_SUCCESS; 2692} 2693 2694_PUBLIC_ void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceW *r) 2695{ 2696 ndr_print_struct(ndr, name, "svcctl_CreateServiceW"); 2697 ndr->depth++; 2698 if (flags & NDR_SET_VALUES) { 2699 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 2700 } 2701 if (flags & NDR_IN) { 2702 ndr_print_struct(ndr, "in", "svcctl_CreateServiceW"); 2703 ndr->depth++; 2704 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle); 2705 ndr->depth++; 2706 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle); 2707 ndr->depth--; 2708 ndr_print_string(ndr, "ServiceName", r->in.ServiceName); 2709 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName); 2710 ndr->depth++; 2711 if (r->in.DisplayName) { 2712 ndr_print_string(ndr, "DisplayName", r->in.DisplayName); 2713 } 2714 ndr->depth--; 2715 ndr_print_uint32(ndr, "desired_access", r->in.desired_access); 2716 ndr_print_uint32(ndr, "type", r->in.type); 2717 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type); 2718 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control); 2719 ndr_print_string(ndr, "binary_path", r->in.binary_path); 2720 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey); 2721 ndr->depth++; 2722 if (r->in.LoadOrderGroupKey) { 2723 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey); 2724 } 2725 ndr->depth--; 2726 ndr_print_ptr(ndr, "TagId", r->in.TagId); 2727 ndr->depth++; 2728 if (r->in.TagId) { 2729 ndr_print_uint32(ndr, "TagId", *r->in.TagId); 2730 } 2731 ndr->depth--; 2732 ndr_print_ptr(ndr, "dependencies", r->in.dependencies); 2733 ndr->depth++; 2734 if (r->in.dependencies) { 2735 ndr_print_array_uint8(ndr, "dependencies", r->in.dependencies, r->in.dependencies_size); 2736 } 2737 ndr->depth--; 2738 ndr_print_uint32(ndr, "dependencies_size", r->in.dependencies_size); 2739 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name); 2740 ndr->depth++; 2741 if (r->in.service_start_name) { 2742 ndr_print_string(ndr, "service_start_name", r->in.service_start_name); 2743 } 2744 ndr->depth--; 2745 ndr_print_ptr(ndr, "password", r->in.password); 2746 ndr->depth++; 2747 if (r->in.password) { 2748 ndr_print_array_uint8(ndr, "password", r->in.password, r->in.password_size); 2749 } 2750 ndr->depth--; 2751 ndr_print_uint32(ndr, "password_size", r->in.password_size); 2752 ndr->depth--; 2753 } 2754 if (flags & NDR_OUT) { 2755 ndr_print_struct(ndr, "out", "svcctl_CreateServiceW"); 2756 ndr->depth++; 2757 ndr_print_ptr(ndr, "TagId", r->out.TagId); 2758 ndr->depth++; 2759 if (r->out.TagId) { 2760 ndr_print_uint32(ndr, "TagId", *r->out.TagId); 2761 } 2762 ndr->depth--; 2763 ndr_print_ptr(ndr, "handle", r->out.handle); 2764 ndr->depth++; 2765 ndr_print_policy_handle(ndr, "handle", r->out.handle); 2766 ndr->depth--; 2767 ndr_print_WERROR(ndr, "result", r->out.result); 2768 ndr->depth--; 2769 } 2770 ndr->depth--; 2771} 2772 2773static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesW(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesW *r) 2774{ 2775 if (flags & NDR_IN) { 2776 if (r->in.service == NULL) { 2777 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 2778 } 2779 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service)); 2780 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state)); 2781 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered)); 2782 } 2783 if (flags & NDR_OUT) { 2784 if (r->out.service_status == NULL) { 2785 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 2786 } 2787 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered)); 2788 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service_status, r->in.offered)); 2789 if (r->out.needed == NULL) { 2790 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 2791 } 2792 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed)); 2793 if (r->out.services_returned == NULL) { 2794 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 2795 } 2796 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned)); 2797 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 2798 } 2799 return NDR_ERR_SUCCESS; 2800} 2801 2802static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesW *r) 2803{ 2804 TALLOC_CTX *_mem_save_service_0; 2805 TALLOC_CTX *_mem_save_needed_0; 2806 TALLOC_CTX *_mem_save_services_returned_0; 2807 if (flags & NDR_IN) { 2808 ZERO_STRUCT(r->out); 2809 2810 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 2811 NDR_PULL_ALLOC(ndr, r->in.service); 2812 } 2813 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr); 2814 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC); 2815 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service)); 2816 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC); 2817 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state)); 2818 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); 2819 if (r->in.offered > 0x40000) { 2820 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 2821 } 2822 NDR_PULL_ALLOC_N(ndr, r->out.service_status, r->in.offered); 2823 memset(r->out.service_status, 0, (r->in.offered) * sizeof(*r->out.service_status)); 2824 NDR_PULL_ALLOC(ndr, r->out.needed); 2825 ZERO_STRUCTP(r->out.needed); 2826 NDR_PULL_ALLOC(ndr, r->out.services_returned); 2827 ZERO_STRUCTP(r->out.services_returned); 2828 } 2829 if (flags & NDR_OUT) { 2830 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service_status)); 2831 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 2832 NDR_PULL_ALLOC_N(ndr, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status)); 2833 } 2834 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status))); 2835 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 2836 NDR_PULL_ALLOC(ndr, r->out.needed); 2837 } 2838 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr); 2839 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC); 2840 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed)); 2841 if (*r->out.needed > 0x40000) { 2842 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 2843 } 2844 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC); 2845 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 2846 NDR_PULL_ALLOC(ndr, r->out.services_returned); 2847 } 2848 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr); 2849 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC); 2850 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned)); 2851 if (*r->out.services_returned > 0x40000) { 2852 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 2853 } 2854 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC); 2855 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 2856 if (r->out.service_status) { 2857 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service_status, r->in.offered)); 2858 } 2859 } 2860 return NDR_ERR_SUCCESS; 2861} 2862 2863_PUBLIC_ void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesW *r) 2864{ 2865 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesW"); 2866 ndr->depth++; 2867 if (flags & NDR_SET_VALUES) { 2868 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 2869 } 2870 if (flags & NDR_IN) { 2871 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesW"); 2872 ndr->depth++; 2873 ndr_print_ptr(ndr, "service", r->in.service); 2874 ndr->depth++; 2875 ndr_print_policy_handle(ndr, "service", r->in.service); 2876 ndr->depth--; 2877 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state); 2878 ndr_print_uint32(ndr, "offered", r->in.offered); 2879 ndr->depth--; 2880 } 2881 if (flags & NDR_OUT) { 2882 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesW"); 2883 ndr->depth++; 2884 ndr_print_ptr(ndr, "service_status", r->out.service_status); 2885 ndr->depth++; 2886 ndr_print_array_uint8(ndr, "service_status", r->out.service_status, r->in.offered); 2887 ndr->depth--; 2888 ndr_print_ptr(ndr, "needed", r->out.needed); 2889 ndr->depth++; 2890 ndr_print_uint32(ndr, "needed", *r->out.needed); 2891 ndr->depth--; 2892 ndr_print_ptr(ndr, "services_returned", r->out.services_returned); 2893 ndr->depth++; 2894 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned); 2895 ndr->depth--; 2896 ndr_print_WERROR(ndr, "result", r->out.result); 2897 ndr->depth--; 2898 } 2899 ndr->depth--; 2900} 2901 2902static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusW *r) 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 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type)); 2910 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state)); 2911 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered)); 2912 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle)); 2913 if (r->in.resume_handle) { 2914 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle)); 2915 } 2916 } 2917 if (flags & NDR_OUT) { 2918 if (r->out.service == NULL) { 2919 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 2920 } 2921 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered)); 2922 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.offered)); 2923 if (r->out.needed == NULL) { 2924 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 2925 } 2926 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed)); 2927 if (r->out.services_returned == NULL) { 2928 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 2929 } 2930 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned)); 2931 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle)); 2932 if (r->out.resume_handle) { 2933 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle)); 2934 } 2935 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 2936 } 2937 return NDR_ERR_SUCCESS; 2938} 2939 2940static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusW *r) 2941{ 2942 uint32_t _ptr_resume_handle; 2943 TALLOC_CTX *_mem_save_handle_0; 2944 TALLOC_CTX *_mem_save_needed_0; 2945 TALLOC_CTX *_mem_save_services_returned_0; 2946 TALLOC_CTX *_mem_save_resume_handle_0; 2947 if (flags & NDR_IN) { 2948 ZERO_STRUCT(r->out); 2949 2950 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 2951 NDR_PULL_ALLOC(ndr, r->in.handle); 2952 } 2953 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 2954 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 2955 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 2956 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 2957 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type)); 2958 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state)); 2959 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); 2960 if (r->in.offered > 0x40000) { 2961 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 2962 } 2963 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle)); 2964 if (_ptr_resume_handle) { 2965 NDR_PULL_ALLOC(ndr, r->in.resume_handle); 2966 } else { 2967 r->in.resume_handle = NULL; 2968 } 2969 if (r->in.resume_handle) { 2970 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 2971 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0); 2972 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle)); 2973 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0); 2974 } 2975 NDR_PULL_ALLOC_N(ndr, r->out.service, r->in.offered); 2976 memset(r->out.service, 0, (r->in.offered) * sizeof(*r->out.service)); 2977 NDR_PULL_ALLOC(ndr, r->out.needed); 2978 ZERO_STRUCTP(r->out.needed); 2979 NDR_PULL_ALLOC(ndr, r->out.services_returned); 2980 ZERO_STRUCTP(r->out.services_returned); 2981 } 2982 if (flags & NDR_OUT) { 2983 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service)); 2984 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 2985 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service)); 2986 } 2987 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service))); 2988 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 2989 NDR_PULL_ALLOC(ndr, r->out.needed); 2990 } 2991 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr); 2992 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC); 2993 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed)); 2994 if (*r->out.needed > 0x40000) { 2995 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 2996 } 2997 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC); 2998 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 2999 NDR_PULL_ALLOC(ndr, r->out.services_returned); 3000 } 3001 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr); 3002 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC); 3003 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned)); 3004 if (*r->out.services_returned > 0x40000) { 3005 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 3006 } 3007 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC); 3008 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle)); 3009 if (_ptr_resume_handle) { 3010 NDR_PULL_ALLOC(ndr, r->out.resume_handle); 3011 } else { 3012 r->out.resume_handle = NULL; 3013 } 3014 if (r->out.resume_handle) { 3015 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 3016 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0); 3017 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle)); 3018 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0); 3019 } 3020 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 3021 if (r->out.service) { 3022 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.offered)); 3023 } 3024 } 3025 return NDR_ERR_SUCCESS; 3026} 3027 3028_PUBLIC_ void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusW *r) 3029{ 3030 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusW"); 3031 ndr->depth++; 3032 if (flags & NDR_SET_VALUES) { 3033 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 3034 } 3035 if (flags & NDR_IN) { 3036 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusW"); 3037 ndr->depth++; 3038 ndr_print_ptr(ndr, "handle", r->in.handle); 3039 ndr->depth++; 3040 ndr_print_policy_handle(ndr, "handle", r->in.handle); 3041 ndr->depth--; 3042 ndr_print_uint32(ndr, "type", r->in.type); 3043 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state); 3044 ndr_print_uint32(ndr, "offered", r->in.offered); 3045 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle); 3046 ndr->depth++; 3047 if (r->in.resume_handle) { 3048 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle); 3049 } 3050 ndr->depth--; 3051 ndr->depth--; 3052 } 3053 if (flags & NDR_OUT) { 3054 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusW"); 3055 ndr->depth++; 3056 ndr_print_ptr(ndr, "service", r->out.service); 3057 ndr->depth++; 3058 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.offered); 3059 ndr->depth--; 3060 ndr_print_ptr(ndr, "needed", r->out.needed); 3061 ndr->depth++; 3062 ndr_print_uint32(ndr, "needed", *r->out.needed); 3063 ndr->depth--; 3064 ndr_print_ptr(ndr, "services_returned", r->out.services_returned); 3065 ndr->depth++; 3066 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned); 3067 ndr->depth--; 3068 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle); 3069 ndr->depth++; 3070 if (r->out.resume_handle) { 3071 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle); 3072 } 3073 ndr->depth--; 3074 ndr_print_WERROR(ndr, "result", r->out.result); 3075 ndr->depth--; 3076 } 3077 ndr->depth--; 3078} 3079 3080static enum ndr_err_code ndr_push_svcctl_OpenSCManagerW(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerW *r) 3081{ 3082 if (flags & NDR_IN) { 3083 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName)); 3084 if (r->in.MachineName) { 3085 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16))); 3086 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 3087 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16))); 3088 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 3089 } 3090 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName)); 3091 if (r->in.DatabaseName) { 3092 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16))); 3093 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 3094 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16))); 3095 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 3096 } 3097 NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr, NDR_SCALARS, r->in.access_mask)); 3098 } 3099 if (flags & NDR_OUT) { 3100 if (r->out.handle == NULL) { 3101 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 3102 } 3103 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle)); 3104 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 3105 } 3106 return NDR_ERR_SUCCESS; 3107} 3108 3109static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerW *r) 3110{ 3111 uint32_t _ptr_MachineName; 3112 uint32_t _ptr_DatabaseName; 3113 TALLOC_CTX *_mem_save_MachineName_0; 3114 TALLOC_CTX *_mem_save_DatabaseName_0; 3115 TALLOC_CTX *_mem_save_handle_0; 3116 if (flags & NDR_IN) { 3117 ZERO_STRUCT(r->out); 3118 3119 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName)); 3120 if (_ptr_MachineName) { 3121 NDR_PULL_ALLOC(ndr, r->in.MachineName); 3122 } else { 3123 r->in.MachineName = NULL; 3124 } 3125 if (r->in.MachineName) { 3126 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr); 3127 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0); 3128 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName)); 3129 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName)); 3130 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) { 3131 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.MachineName), ndr_get_array_length(ndr, &r->in.MachineName)); 3132 } 3133 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t))); 3134 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16)); 3135 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0); 3136 } 3137 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName)); 3138 if (_ptr_DatabaseName) { 3139 NDR_PULL_ALLOC(ndr, r->in.DatabaseName); 3140 } else { 3141 r->in.DatabaseName = NULL; 3142 } 3143 if (r->in.DatabaseName) { 3144 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr); 3145 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0); 3146 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName)); 3147 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName)); 3148 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) { 3149 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.DatabaseName), ndr_get_array_length(ndr, &r->in.DatabaseName)); 3150 } 3151 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t))); 3152 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16)); 3153 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0); 3154 } 3155 NDR_CHECK(ndr_pull_svcctl_MgrAccessMask(ndr, NDR_SCALARS, &r->in.access_mask)); 3156 NDR_PULL_ALLOC(ndr, r->out.handle); 3157 ZERO_STRUCTP(r->out.handle); 3158 } 3159 if (flags & NDR_OUT) { 3160 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 3161 NDR_PULL_ALLOC(ndr, r->out.handle); 3162 } 3163 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 3164 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC); 3165 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle)); 3166 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 3167 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 3168 } 3169 return NDR_ERR_SUCCESS; 3170} 3171 3172_PUBLIC_ void ndr_print_svcctl_OpenSCManagerW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerW *r) 3173{ 3174 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerW"); 3175 ndr->depth++; 3176 if (flags & NDR_SET_VALUES) { 3177 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 3178 } 3179 if (flags & NDR_IN) { 3180 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerW"); 3181 ndr->depth++; 3182 ndr_print_ptr(ndr, "MachineName", r->in.MachineName); 3183 ndr->depth++; 3184 if (r->in.MachineName) { 3185 ndr_print_string(ndr, "MachineName", r->in.MachineName); 3186 } 3187 ndr->depth--; 3188 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName); 3189 ndr->depth++; 3190 if (r->in.DatabaseName) { 3191 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName); 3192 } 3193 ndr->depth--; 3194 ndr_print_svcctl_MgrAccessMask(ndr, "access_mask", r->in.access_mask); 3195 ndr->depth--; 3196 } 3197 if (flags & NDR_OUT) { 3198 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerW"); 3199 ndr->depth++; 3200 ndr_print_ptr(ndr, "handle", r->out.handle); 3201 ndr->depth++; 3202 ndr_print_policy_handle(ndr, "handle", r->out.handle); 3203 ndr->depth--; 3204 ndr_print_WERROR(ndr, "result", r->out.result); 3205 ndr->depth--; 3206 } 3207 ndr->depth--; 3208} 3209 3210static enum ndr_err_code ndr_push_svcctl_OpenServiceW(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceW *r) 3211{ 3212 if (flags & NDR_IN) { 3213 if (r->in.scmanager_handle == NULL) { 3214 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 3215 } 3216 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle)); 3217 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16))); 3218 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 3219 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16))); 3220 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 3221 NDR_CHECK(ndr_push_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, r->in.access_mask)); 3222 } 3223 if (flags & NDR_OUT) { 3224 if (r->out.handle == NULL) { 3225 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 3226 } 3227 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle)); 3228 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 3229 } 3230 return NDR_ERR_SUCCESS; 3231} 3232 3233static enum ndr_err_code ndr_pull_svcctl_OpenServiceW(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceW *r) 3234{ 3235 TALLOC_CTX *_mem_save_scmanager_handle_0; 3236 TALLOC_CTX *_mem_save_handle_0; 3237 if (flags & NDR_IN) { 3238 ZERO_STRUCT(r->out); 3239 3240 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 3241 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle); 3242 } 3243 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 3244 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC); 3245 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle)); 3246 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC); 3247 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName)); 3248 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName)); 3249 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) { 3250 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.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName)); 3251 } 3252 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t))); 3253 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16)); 3254 NDR_CHECK(ndr_pull_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, &r->in.access_mask)); 3255 NDR_PULL_ALLOC(ndr, r->out.handle); 3256 ZERO_STRUCTP(r->out.handle); 3257 } 3258 if (flags & NDR_OUT) { 3259 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 3260 NDR_PULL_ALLOC(ndr, r->out.handle); 3261 } 3262 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 3263 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC); 3264 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle)); 3265 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 3266 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 3267 } 3268 return NDR_ERR_SUCCESS; 3269} 3270 3271_PUBLIC_ void ndr_print_svcctl_OpenServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceW *r) 3272{ 3273 ndr_print_struct(ndr, name, "svcctl_OpenServiceW"); 3274 ndr->depth++; 3275 if (flags & NDR_SET_VALUES) { 3276 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 3277 } 3278 if (flags & NDR_IN) { 3279 ndr_print_struct(ndr, "in", "svcctl_OpenServiceW"); 3280 ndr->depth++; 3281 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle); 3282 ndr->depth++; 3283 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle); 3284 ndr->depth--; 3285 ndr_print_string(ndr, "ServiceName", r->in.ServiceName); 3286 ndr_print_svcctl_ServiceAccessMask(ndr, "access_mask", r->in.access_mask); 3287 ndr->depth--; 3288 } 3289 if (flags & NDR_OUT) { 3290 ndr_print_struct(ndr, "out", "svcctl_OpenServiceW"); 3291 ndr->depth++; 3292 ndr_print_ptr(ndr, "handle", r->out.handle); 3293 ndr->depth++; 3294 ndr_print_policy_handle(ndr, "handle", r->out.handle); 3295 ndr->depth--; 3296 ndr_print_WERROR(ndr, "result", r->out.result); 3297 ndr->depth--; 3298 } 3299 ndr->depth--; 3300} 3301 3302static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigW *r) 3303{ 3304 if (flags & NDR_IN) { 3305 if (r->in.handle == NULL) { 3306 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 3307 } 3308 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 3309 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered)); 3310 } 3311 if (flags & NDR_OUT) { 3312 if (r->out.query == NULL) { 3313 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 3314 } 3315 NDR_CHECK(ndr_push_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query)); 3316 if (r->out.needed == NULL) { 3317 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 3318 } 3319 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed)); 3320 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 3321 } 3322 return NDR_ERR_SUCCESS; 3323} 3324 3325static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigW *r) 3326{ 3327 TALLOC_CTX *_mem_save_handle_0; 3328 TALLOC_CTX *_mem_save_query_0; 3329 TALLOC_CTX *_mem_save_needed_0; 3330 if (flags & NDR_IN) { 3331 ZERO_STRUCT(r->out); 3332 3333 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 3334 NDR_PULL_ALLOC(ndr, r->in.handle); 3335 } 3336 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 3337 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 3338 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 3339 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 3340 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); 3341 if (r->in.offered > 8192) { 3342 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 3343 } 3344 NDR_PULL_ALLOC(ndr, r->out.query); 3345 ZERO_STRUCTP(r->out.query); 3346 NDR_PULL_ALLOC(ndr, r->out.needed); 3347 ZERO_STRUCTP(r->out.needed); 3348 } 3349 if (flags & NDR_OUT) { 3350 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 3351 NDR_PULL_ALLOC(ndr, r->out.query); 3352 } 3353 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr); 3354 NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC); 3355 NDR_CHECK(ndr_pull_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query)); 3356 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC); 3357 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 3358 NDR_PULL_ALLOC(ndr, r->out.needed); 3359 } 3360 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr); 3361 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC); 3362 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed)); 3363 if (*r->out.needed > 8192) { 3364 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 3365 } 3366 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC); 3367 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 3368 } 3369 return NDR_ERR_SUCCESS; 3370} 3371 3372_PUBLIC_ void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigW *r) 3373{ 3374 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigW"); 3375 ndr->depth++; 3376 if (flags & NDR_SET_VALUES) { 3377 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 3378 } 3379 if (flags & NDR_IN) { 3380 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigW"); 3381 ndr->depth++; 3382 ndr_print_ptr(ndr, "handle", r->in.handle); 3383 ndr->depth++; 3384 ndr_print_policy_handle(ndr, "handle", r->in.handle); 3385 ndr->depth--; 3386 ndr_print_uint32(ndr, "offered", r->in.offered); 3387 ndr->depth--; 3388 } 3389 if (flags & NDR_OUT) { 3390 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigW"); 3391 ndr->depth++; 3392 ndr_print_ptr(ndr, "query", r->out.query); 3393 ndr->depth++; 3394 ndr_print_QUERY_SERVICE_CONFIG(ndr, "query", r->out.query); 3395 ndr->depth--; 3396 ndr_print_ptr(ndr, "needed", r->out.needed); 3397 ndr->depth++; 3398 ndr_print_uint32(ndr, "needed", *r->out.needed); 3399 ndr->depth--; 3400 ndr_print_WERROR(ndr, "result", r->out.result); 3401 ndr->depth--; 3402 } 3403 ndr->depth--; 3404} 3405 3406static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusW *r) 3407{ 3408 if (flags & NDR_IN) { 3409 if (r->in.handle == NULL) { 3410 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 3411 } 3412 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 3413 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered)); 3414 } 3415 if (flags & NDR_OUT) { 3416 if (r->out.lock_status == NULL) { 3417 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 3418 } 3419 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status)); 3420 if (r->out.needed == NULL) { 3421 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 3422 } 3423 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed)); 3424 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 3425 } 3426 return NDR_ERR_SUCCESS; 3427} 3428 3429static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusW *r) 3430{ 3431 TALLOC_CTX *_mem_save_handle_0; 3432 TALLOC_CTX *_mem_save_lock_status_0; 3433 TALLOC_CTX *_mem_save_needed_0; 3434 if (flags & NDR_IN) { 3435 ZERO_STRUCT(r->out); 3436 3437 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 3438 NDR_PULL_ALLOC(ndr, r->in.handle); 3439 } 3440 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 3441 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 3442 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 3443 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 3444 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); 3445 NDR_PULL_ALLOC(ndr, r->out.lock_status); 3446 ZERO_STRUCTP(r->out.lock_status); 3447 NDR_PULL_ALLOC(ndr, r->out.needed); 3448 ZERO_STRUCTP(r->out.needed); 3449 } 3450 if (flags & NDR_OUT) { 3451 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 3452 NDR_PULL_ALLOC(ndr, r->out.lock_status); 3453 } 3454 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr); 3455 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC); 3456 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status)); 3457 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC); 3458 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 3459 NDR_PULL_ALLOC(ndr, r->out.needed); 3460 } 3461 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr); 3462 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC); 3463 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed)); 3464 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC); 3465 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 3466 } 3467 return NDR_ERR_SUCCESS; 3468} 3469 3470_PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusW *r) 3471{ 3472 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusW"); 3473 ndr->depth++; 3474 if (flags & NDR_SET_VALUES) { 3475 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 3476 } 3477 if (flags & NDR_IN) { 3478 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusW"); 3479 ndr->depth++; 3480 ndr_print_ptr(ndr, "handle", r->in.handle); 3481 ndr->depth++; 3482 ndr_print_policy_handle(ndr, "handle", r->in.handle); 3483 ndr->depth--; 3484 ndr_print_uint32(ndr, "offered", r->in.offered); 3485 ndr->depth--; 3486 } 3487 if (flags & NDR_OUT) { 3488 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusW"); 3489 ndr->depth++; 3490 ndr_print_ptr(ndr, "lock_status", r->out.lock_status); 3491 ndr->depth++; 3492 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status); 3493 ndr->depth--; 3494 ndr_print_ptr(ndr, "needed", r->out.needed); 3495 ndr->depth++; 3496 ndr_print_uint32(ndr, "needed", *r->out.needed); 3497 ndr->depth--; 3498 ndr_print_WERROR(ndr, "result", r->out.result); 3499 ndr->depth--; 3500 } 3501 ndr->depth--; 3502} 3503 3504static enum ndr_err_code ndr_push_svcctl_StartServiceW(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceW *r) 3505{ 3506 uint32_t cntr_Arguments_1; 3507 if (flags & NDR_IN) { 3508 if (r->in.handle == NULL) { 3509 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 3510 } 3511 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 3512 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs)); 3513 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments)); 3514 if (r->in.Arguments) { 3515 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.NumArgs)); 3516 for (cntr_Arguments_1 = 0; cntr_Arguments_1 < r->in.NumArgs; cntr_Arguments_1++) { 3517 NDR_CHECK(ndr_push_svcctl_ArgumentString(ndr, NDR_SCALARS, &r->in.Arguments[cntr_Arguments_1])); 3518 } 3519 for (cntr_Arguments_1 = 0; cntr_Arguments_1 < r->in.NumArgs; cntr_Arguments_1++) { 3520 NDR_CHECK(ndr_push_svcctl_ArgumentString(ndr, NDR_BUFFERS, &r->in.Arguments[cntr_Arguments_1])); 3521 } 3522 } 3523 } 3524 if (flags & NDR_OUT) { 3525 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 3526 } 3527 return NDR_ERR_SUCCESS; 3528} 3529 3530static enum ndr_err_code ndr_pull_svcctl_StartServiceW(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceW *r) 3531{ 3532 uint32_t _ptr_Arguments; 3533 uint32_t cntr_Arguments_1; 3534 TALLOC_CTX *_mem_save_handle_0; 3535 TALLOC_CTX *_mem_save_Arguments_0; 3536 TALLOC_CTX *_mem_save_Arguments_1; 3537 if (flags & NDR_IN) { 3538 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 3539 NDR_PULL_ALLOC(ndr, r->in.handle); 3540 } 3541 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 3542 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 3543 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 3544 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 3545 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs)); 3546 if (r->in.NumArgs > SC_MAX_ARGUMENTS) { 3547 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 3548 } 3549 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments)); 3550 if (_ptr_Arguments) { 3551 NDR_PULL_ALLOC(ndr, r->in.Arguments); 3552 } else { 3553 r->in.Arguments = NULL; 3554 } 3555 if (r->in.Arguments) { 3556 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr); 3557 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0); 3558 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments)); 3559 NDR_PULL_ALLOC_N(ndr, r->in.Arguments, ndr_get_array_size(ndr, &r->in.Arguments)); 3560 _mem_save_Arguments_1 = NDR_PULL_GET_MEM_CTX(ndr); 3561 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0); 3562 for (cntr_Arguments_1 = 0; cntr_Arguments_1 < r->in.NumArgs; cntr_Arguments_1++) { 3563 NDR_CHECK(ndr_pull_svcctl_ArgumentString(ndr, NDR_SCALARS, &r->in.Arguments[cntr_Arguments_1])); 3564 } 3565 for (cntr_Arguments_1 = 0; cntr_Arguments_1 < r->in.NumArgs; cntr_Arguments_1++) { 3566 NDR_CHECK(ndr_pull_svcctl_ArgumentString(ndr, NDR_BUFFERS, &r->in.Arguments[cntr_Arguments_1])); 3567 } 3568 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_1, 0); 3569 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0); 3570 } 3571 if (r->in.Arguments) { 3572 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.Arguments, r->in.NumArgs)); 3573 } 3574 } 3575 if (flags & NDR_OUT) { 3576 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 3577 } 3578 return NDR_ERR_SUCCESS; 3579} 3580 3581_PUBLIC_ void ndr_print_svcctl_StartServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceW *r) 3582{ 3583 uint32_t cntr_Arguments_1; 3584 ndr_print_struct(ndr, name, "svcctl_StartServiceW"); 3585 ndr->depth++; 3586 if (flags & NDR_SET_VALUES) { 3587 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 3588 } 3589 if (flags & NDR_IN) { 3590 ndr_print_struct(ndr, "in", "svcctl_StartServiceW"); 3591 ndr->depth++; 3592 ndr_print_ptr(ndr, "handle", r->in.handle); 3593 ndr->depth++; 3594 ndr_print_policy_handle(ndr, "handle", r->in.handle); 3595 ndr->depth--; 3596 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs); 3597 ndr_print_ptr(ndr, "Arguments", r->in.Arguments); 3598 ndr->depth++; 3599 if (r->in.Arguments) { 3600 ndr->print(ndr, "%s: ARRAY(%d)", "Arguments", (int)r->in.NumArgs); 3601 ndr->depth++; 3602 for (cntr_Arguments_1=0;cntr_Arguments_1<r->in.NumArgs;cntr_Arguments_1++) { 3603 char *idx_1=NULL; 3604 if (asprintf(&idx_1, "[%d]", cntr_Arguments_1) != -1) { 3605 ndr_print_svcctl_ArgumentString(ndr, "Arguments", &r->in.Arguments[cntr_Arguments_1]); 3606 free(idx_1); 3607 } 3608 } 3609 ndr->depth--; 3610 } 3611 ndr->depth--; 3612 ndr->depth--; 3613 } 3614 if (flags & NDR_OUT) { 3615 ndr_print_struct(ndr, "out", "svcctl_StartServiceW"); 3616 ndr->depth++; 3617 ndr_print_WERROR(ndr, "result", r->out.result); 3618 ndr->depth--; 3619 } 3620 ndr->depth--; 3621} 3622 3623static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameW *r) 3624{ 3625 if (flags & NDR_IN) { 3626 if (r->in.handle == NULL) { 3627 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 3628 } 3629 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 3630 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name)); 3631 if (r->in.service_name) { 3632 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16))); 3633 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 3634 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16))); 3635 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_name, ndr_charset_length(r->in.service_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 3636 } 3637 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length)); 3638 if (r->in.display_name_length) { 3639 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length)); 3640 } 3641 } 3642 if (flags & NDR_OUT) { 3643 if (r->out.display_name == NULL) { 3644 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 3645 } 3646 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name)); 3647 if (*r->out.display_name) { 3648 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16))); 3649 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 3650 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16))); 3651 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.display_name, ndr_charset_length(*r->out.display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 3652 } 3653 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length)); 3654 if (r->out.display_name_length) { 3655 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length)); 3656 } 3657 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 3658 } 3659 return NDR_ERR_SUCCESS; 3660} 3661 3662static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameW *r) 3663{ 3664 uint32_t _ptr_service_name; 3665 uint32_t _ptr_display_name; 3666 uint32_t _ptr_display_name_length; 3667 TALLOC_CTX *_mem_save_handle_0; 3668 TALLOC_CTX *_mem_save_service_name_0; 3669 TALLOC_CTX *_mem_save_display_name_0; 3670 TALLOC_CTX *_mem_save_display_name_1; 3671 TALLOC_CTX *_mem_save_display_name_length_0; 3672 if (flags & NDR_IN) { 3673 ZERO_STRUCT(r->out); 3674 3675 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 3676 NDR_PULL_ALLOC(ndr, r->in.handle); 3677 } 3678 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 3679 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 3680 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 3681 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 3682 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name)); 3683 if (_ptr_service_name) { 3684 NDR_PULL_ALLOC(ndr, r->in.service_name); 3685 } else { 3686 r->in.service_name = NULL; 3687 } 3688 if (r->in.service_name) { 3689 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 3690 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0); 3691 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name)); 3692 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name)); 3693 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) { 3694 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.service_name), ndr_get_array_length(ndr, &r->in.service_name)); 3695 } 3696 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t))); 3697 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16)); 3698 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0); 3699 } 3700 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length)); 3701 if (_ptr_display_name_length) { 3702 NDR_PULL_ALLOC(ndr, r->in.display_name_length); 3703 } else { 3704 r->in.display_name_length = NULL; 3705 } 3706 if (r->in.display_name_length) { 3707 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr); 3708 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0); 3709 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length)); 3710 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0); 3711 } 3712 NDR_PULL_ALLOC(ndr, r->out.display_name); 3713 ZERO_STRUCTP(r->out.display_name); 3714 } 3715 if (flags & NDR_OUT) { 3716 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 3717 NDR_PULL_ALLOC(ndr, r->out.display_name); 3718 } 3719 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 3720 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC); 3721 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name)); 3722 if (_ptr_display_name) { 3723 NDR_PULL_ALLOC(ndr, *r->out.display_name); 3724 } else { 3725 *r->out.display_name = NULL; 3726 } 3727 if (*r->out.display_name) { 3728 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr); 3729 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0); 3730 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name)); 3731 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name)); 3732 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) { 3733 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.display_name), ndr_get_array_length(ndr, r->out.display_name)); 3734 } 3735 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t))); 3736 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.display_name, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t), CH_UTF16)); 3737 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0); 3738 } 3739 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC); 3740 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length)); 3741 if (_ptr_display_name_length) { 3742 NDR_PULL_ALLOC(ndr, r->out.display_name_length); 3743 } else { 3744 r->out.display_name_length = NULL; 3745 } 3746 if (r->out.display_name_length) { 3747 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr); 3748 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0); 3749 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length)); 3750 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0); 3751 } 3752 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 3753 } 3754 return NDR_ERR_SUCCESS; 3755} 3756 3757_PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameW *r) 3758{ 3759 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameW"); 3760 ndr->depth++; 3761 if (flags & NDR_SET_VALUES) { 3762 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 3763 } 3764 if (flags & NDR_IN) { 3765 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameW"); 3766 ndr->depth++; 3767 ndr_print_ptr(ndr, "handle", r->in.handle); 3768 ndr->depth++; 3769 ndr_print_policy_handle(ndr, "handle", r->in.handle); 3770 ndr->depth--; 3771 ndr_print_ptr(ndr, "service_name", r->in.service_name); 3772 ndr->depth++; 3773 if (r->in.service_name) { 3774 ndr_print_string(ndr, "service_name", r->in.service_name); 3775 } 3776 ndr->depth--; 3777 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length); 3778 ndr->depth++; 3779 if (r->in.display_name_length) { 3780 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length); 3781 } 3782 ndr->depth--; 3783 ndr->depth--; 3784 } 3785 if (flags & NDR_OUT) { 3786 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameW"); 3787 ndr->depth++; 3788 ndr_print_ptr(ndr, "display_name", r->out.display_name); 3789 ndr->depth++; 3790 ndr_print_ptr(ndr, "display_name", *r->out.display_name); 3791 ndr->depth++; 3792 if (*r->out.display_name) { 3793 ndr_print_string(ndr, "display_name", *r->out.display_name); 3794 } 3795 ndr->depth--; 3796 ndr->depth--; 3797 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length); 3798 ndr->depth++; 3799 if (r->out.display_name_length) { 3800 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length); 3801 } 3802 ndr->depth--; 3803 ndr_print_WERROR(ndr, "result", r->out.result); 3804 ndr->depth--; 3805 } 3806 ndr->depth--; 3807} 3808 3809static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameW *r) 3810{ 3811 if (flags & NDR_IN) { 3812 if (r->in.handle == NULL) { 3813 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 3814 } 3815 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 3816 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name)); 3817 if (r->in.service_name) { 3818 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16))); 3819 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 3820 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16))); 3821 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_name, ndr_charset_length(r->in.service_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 3822 } 3823 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length)); 3824 if (r->in.display_name_length) { 3825 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length)); 3826 } 3827 } 3828 if (flags & NDR_OUT) { 3829 if (r->out.key_name == NULL) { 3830 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 3831 } 3832 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name)); 3833 if (*r->out.key_name) { 3834 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16))); 3835 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 3836 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16))); 3837 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.key_name, ndr_charset_length(*r->out.key_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 3838 } 3839 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length)); 3840 if (r->out.display_name_length) { 3841 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length)); 3842 } 3843 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 3844 } 3845 return NDR_ERR_SUCCESS; 3846} 3847 3848static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameW *r) 3849{ 3850 uint32_t _ptr_service_name; 3851 uint32_t _ptr_key_name; 3852 uint32_t _ptr_display_name_length; 3853 TALLOC_CTX *_mem_save_handle_0; 3854 TALLOC_CTX *_mem_save_service_name_0; 3855 TALLOC_CTX *_mem_save_key_name_0; 3856 TALLOC_CTX *_mem_save_key_name_1; 3857 TALLOC_CTX *_mem_save_display_name_length_0; 3858 if (flags & NDR_IN) { 3859 ZERO_STRUCT(r->out); 3860 3861 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 3862 NDR_PULL_ALLOC(ndr, r->in.handle); 3863 } 3864 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 3865 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 3866 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 3867 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 3868 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name)); 3869 if (_ptr_service_name) { 3870 NDR_PULL_ALLOC(ndr, r->in.service_name); 3871 } else { 3872 r->in.service_name = NULL; 3873 } 3874 if (r->in.service_name) { 3875 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 3876 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0); 3877 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name)); 3878 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name)); 3879 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) { 3880 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.service_name), ndr_get_array_length(ndr, &r->in.service_name)); 3881 } 3882 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t))); 3883 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16)); 3884 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0); 3885 } 3886 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length)); 3887 if (_ptr_display_name_length) { 3888 NDR_PULL_ALLOC(ndr, r->in.display_name_length); 3889 } else { 3890 r->in.display_name_length = NULL; 3891 } 3892 if (r->in.display_name_length) { 3893 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr); 3894 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0); 3895 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length)); 3896 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0); 3897 } 3898 NDR_PULL_ALLOC(ndr, r->out.key_name); 3899 ZERO_STRUCTP(r->out.key_name); 3900 } 3901 if (flags & NDR_OUT) { 3902 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 3903 NDR_PULL_ALLOC(ndr, r->out.key_name); 3904 } 3905 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 3906 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC); 3907 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name)); 3908 if (_ptr_key_name) { 3909 NDR_PULL_ALLOC(ndr, *r->out.key_name); 3910 } else { 3911 *r->out.key_name = NULL; 3912 } 3913 if (*r->out.key_name) { 3914 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr); 3915 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0); 3916 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name)); 3917 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name)); 3918 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) { 3919 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.key_name), ndr_get_array_length(ndr, r->out.key_name)); 3920 } 3921 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t))); 3922 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.key_name, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t), CH_UTF16)); 3923 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0); 3924 } 3925 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC); 3926 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length)); 3927 if (_ptr_display_name_length) { 3928 NDR_PULL_ALLOC(ndr, r->out.display_name_length); 3929 } else { 3930 r->out.display_name_length = NULL; 3931 } 3932 if (r->out.display_name_length) { 3933 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr); 3934 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0); 3935 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length)); 3936 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0); 3937 } 3938 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 3939 } 3940 return NDR_ERR_SUCCESS; 3941} 3942 3943_PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameW *r) 3944{ 3945 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameW"); 3946 ndr->depth++; 3947 if (flags & NDR_SET_VALUES) { 3948 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 3949 } 3950 if (flags & NDR_IN) { 3951 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameW"); 3952 ndr->depth++; 3953 ndr_print_ptr(ndr, "handle", r->in.handle); 3954 ndr->depth++; 3955 ndr_print_policy_handle(ndr, "handle", r->in.handle); 3956 ndr->depth--; 3957 ndr_print_ptr(ndr, "service_name", r->in.service_name); 3958 ndr->depth++; 3959 if (r->in.service_name) { 3960 ndr_print_string(ndr, "service_name", r->in.service_name); 3961 } 3962 ndr->depth--; 3963 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length); 3964 ndr->depth++; 3965 if (r->in.display_name_length) { 3966 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length); 3967 } 3968 ndr->depth--; 3969 ndr->depth--; 3970 } 3971 if (flags & NDR_OUT) { 3972 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameW"); 3973 ndr->depth++; 3974 ndr_print_ptr(ndr, "key_name", r->out.key_name); 3975 ndr->depth++; 3976 ndr_print_ptr(ndr, "key_name", *r->out.key_name); 3977 ndr->depth++; 3978 if (*r->out.key_name) { 3979 ndr_print_string(ndr, "key_name", *r->out.key_name); 3980 } 3981 ndr->depth--; 3982 ndr->depth--; 3983 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length); 3984 ndr->depth++; 3985 if (r->out.display_name_length) { 3986 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length); 3987 } 3988 ndr->depth--; 3989 ndr_print_WERROR(ndr, "result", r->out.result); 3990 ndr->depth--; 3991 } 3992 ndr->depth--; 3993} 3994 3995static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsA *r) 3996{ 3997 if (flags & NDR_IN) { 3998 if (r->in.handle == NULL) { 3999 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 4000 } 4001 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 4002 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits)); 4003 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson)); 4004 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate)); 4005 } 4006 if (flags & NDR_OUT) { 4007 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 4008 } 4009 return NDR_ERR_SUCCESS; 4010} 4011 4012static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsA *r) 4013{ 4014 TALLOC_CTX *_mem_save_handle_0; 4015 if (flags & NDR_IN) { 4016 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 4017 NDR_PULL_ALLOC(ndr, r->in.handle); 4018 } 4019 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 4020 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 4021 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 4022 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 4023 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits)); 4024 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson)); 4025 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate)); 4026 } 4027 if (flags & NDR_OUT) { 4028 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 4029 } 4030 return NDR_ERR_SUCCESS; 4031} 4032 4033_PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsA *r) 4034{ 4035 ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsA"); 4036 ndr->depth++; 4037 if (flags & NDR_SET_VALUES) { 4038 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 4039 } 4040 if (flags & NDR_IN) { 4041 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsA"); 4042 ndr->depth++; 4043 ndr_print_ptr(ndr, "handle", r->in.handle); 4044 ndr->depth++; 4045 ndr_print_policy_handle(ndr, "handle", r->in.handle); 4046 ndr->depth--; 4047 ndr_print_uint32(ndr, "bits", r->in.bits); 4048 ndr_print_uint32(ndr, "bitson", r->in.bitson); 4049 ndr_print_uint32(ndr, "immediate", r->in.immediate); 4050 ndr->depth--; 4051 } 4052 if (flags & NDR_OUT) { 4053 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsA"); 4054 ndr->depth++; 4055 ndr_print_WERROR(ndr, "result", r->out.result); 4056 ndr->depth--; 4057 } 4058 ndr->depth--; 4059} 4060 4061static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigA *r) 4062{ 4063 if (flags & NDR_IN) { 4064 if (r->in.handle == NULL) { 4065 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 4066 } 4067 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 4068 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type)); 4069 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type)); 4070 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control)); 4071 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path)); 4072 if (r->in.binary_path) { 4073 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16))); 4074 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 4075 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16))); 4076 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.binary_path, ndr_charset_length(r->in.binary_path, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 4077 } 4078 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group)); 4079 if (r->in.load_order_group) { 4080 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16))); 4081 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 4082 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16))); 4083 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.load_order_group, ndr_charset_length(r->in.load_order_group, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 4084 } 4085 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies)); 4086 if (r->in.dependencies) { 4087 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16))); 4088 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 4089 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16))); 4090 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 4091 } 4092 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name)); 4093 if (r->in.service_start_name) { 4094 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16))); 4095 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 4096 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16))); 4097 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_start_name, ndr_charset_length(r->in.service_start_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 4098 } 4099 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password)); 4100 if (r->in.password) { 4101 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16))); 4102 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 4103 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16))); 4104 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 4105 } 4106 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name)); 4107 if (r->in.display_name) { 4108 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16))); 4109 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 4110 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16))); 4111 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.display_name, ndr_charset_length(r->in.display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 4112 } 4113 } 4114 if (flags & NDR_OUT) { 4115 if (r->out.tag_id == NULL) { 4116 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 4117 } 4118 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id)); 4119 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 4120 } 4121 return NDR_ERR_SUCCESS; 4122} 4123 4124static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigA *r) 4125{ 4126 uint32_t _ptr_binary_path; 4127 uint32_t _ptr_load_order_group; 4128 uint32_t _ptr_dependencies; 4129 uint32_t _ptr_service_start_name; 4130 uint32_t _ptr_password; 4131 uint32_t _ptr_display_name; 4132 TALLOC_CTX *_mem_save_handle_0; 4133 TALLOC_CTX *_mem_save_binary_path_0; 4134 TALLOC_CTX *_mem_save_load_order_group_0; 4135 TALLOC_CTX *_mem_save_tag_id_0; 4136 TALLOC_CTX *_mem_save_dependencies_0; 4137 TALLOC_CTX *_mem_save_service_start_name_0; 4138 TALLOC_CTX *_mem_save_password_0; 4139 TALLOC_CTX *_mem_save_display_name_0; 4140 if (flags & NDR_IN) { 4141 ZERO_STRUCT(r->out); 4142 4143 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 4144 NDR_PULL_ALLOC(ndr, r->in.handle); 4145 } 4146 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 4147 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 4148 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 4149 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 4150 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type)); 4151 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type)); 4152 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control)); 4153 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path)); 4154 if (_ptr_binary_path) { 4155 NDR_PULL_ALLOC(ndr, r->in.binary_path); 4156 } else { 4157 r->in.binary_path = NULL; 4158 } 4159 if (r->in.binary_path) { 4160 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr); 4161 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0); 4162 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path)); 4163 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path)); 4164 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) { 4165 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.binary_path), ndr_get_array_length(ndr, &r->in.binary_path)); 4166 } 4167 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t))); 4168 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16)); 4169 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0); 4170 } 4171 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group)); 4172 if (_ptr_load_order_group) { 4173 NDR_PULL_ALLOC(ndr, r->in.load_order_group); 4174 } else { 4175 r->in.load_order_group = NULL; 4176 } 4177 if (r->in.load_order_group) { 4178 _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr); 4179 NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0); 4180 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group)); 4181 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group)); 4182 if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) { 4183 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.load_order_group), ndr_get_array_length(ndr, &r->in.load_order_group)); 4184 } 4185 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t))); 4186 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.load_order_group, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t), CH_UTF16)); 4187 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0); 4188 } 4189 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies)); 4190 if (_ptr_dependencies) { 4191 NDR_PULL_ALLOC(ndr, r->in.dependencies); 4192 } else { 4193 r->in.dependencies = NULL; 4194 } 4195 if (r->in.dependencies) { 4196 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr); 4197 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0); 4198 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies)); 4199 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies)); 4200 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) { 4201 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.dependencies), ndr_get_array_length(ndr, &r->in.dependencies)); 4202 } 4203 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t))); 4204 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16)); 4205 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0); 4206 } 4207 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name)); 4208 if (_ptr_service_start_name) { 4209 NDR_PULL_ALLOC(ndr, r->in.service_start_name); 4210 } else { 4211 r->in.service_start_name = NULL; 4212 } 4213 if (r->in.service_start_name) { 4214 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 4215 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0); 4216 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name)); 4217 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name)); 4218 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) { 4219 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.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name)); 4220 } 4221 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t))); 4222 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16)); 4223 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0); 4224 } 4225 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password)); 4226 if (_ptr_password) { 4227 NDR_PULL_ALLOC(ndr, r->in.password); 4228 } else { 4229 r->in.password = NULL; 4230 } 4231 if (r->in.password) { 4232 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr); 4233 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0); 4234 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password)); 4235 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password)); 4236 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) { 4237 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.password), ndr_get_array_length(ndr, &r->in.password)); 4238 } 4239 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t))); 4240 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16)); 4241 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0); 4242 } 4243 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name)); 4244 if (_ptr_display_name) { 4245 NDR_PULL_ALLOC(ndr, r->in.display_name); 4246 } else { 4247 r->in.display_name = NULL; 4248 } 4249 if (r->in.display_name) { 4250 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 4251 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0); 4252 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name)); 4253 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name)); 4254 if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) { 4255 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.display_name), ndr_get_array_length(ndr, &r->in.display_name)); 4256 } 4257 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t))); 4258 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.display_name, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t), CH_UTF16)); 4259 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0); 4260 } 4261 NDR_PULL_ALLOC(ndr, r->out.tag_id); 4262 ZERO_STRUCTP(r->out.tag_id); 4263 } 4264 if (flags & NDR_OUT) { 4265 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 4266 NDR_PULL_ALLOC(ndr, r->out.tag_id); 4267 } 4268 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr); 4269 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC); 4270 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id)); 4271 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC); 4272 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 4273 } 4274 return NDR_ERR_SUCCESS; 4275} 4276 4277_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigA *r) 4278{ 4279 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigA"); 4280 ndr->depth++; 4281 if (flags & NDR_SET_VALUES) { 4282 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 4283 } 4284 if (flags & NDR_IN) { 4285 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigA"); 4286 ndr->depth++; 4287 ndr_print_ptr(ndr, "handle", r->in.handle); 4288 ndr->depth++; 4289 ndr_print_policy_handle(ndr, "handle", r->in.handle); 4290 ndr->depth--; 4291 ndr_print_uint32(ndr, "type", r->in.type); 4292 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type); 4293 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control); 4294 ndr_print_ptr(ndr, "binary_path", r->in.binary_path); 4295 ndr->depth++; 4296 if (r->in.binary_path) { 4297 ndr_print_string(ndr, "binary_path", r->in.binary_path); 4298 } 4299 ndr->depth--; 4300 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group); 4301 ndr->depth++; 4302 if (r->in.load_order_group) { 4303 ndr_print_string(ndr, "load_order_group", r->in.load_order_group); 4304 } 4305 ndr->depth--; 4306 ndr_print_ptr(ndr, "dependencies", r->in.dependencies); 4307 ndr->depth++; 4308 if (r->in.dependencies) { 4309 ndr_print_string(ndr, "dependencies", r->in.dependencies); 4310 } 4311 ndr->depth--; 4312 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name); 4313 ndr->depth++; 4314 if (r->in.service_start_name) { 4315 ndr_print_string(ndr, "service_start_name", r->in.service_start_name); 4316 } 4317 ndr->depth--; 4318 ndr_print_ptr(ndr, "password", r->in.password); 4319 ndr->depth++; 4320 if (r->in.password) { 4321 ndr_print_string(ndr, "password", r->in.password); 4322 } 4323 ndr->depth--; 4324 ndr_print_ptr(ndr, "display_name", r->in.display_name); 4325 ndr->depth++; 4326 if (r->in.display_name) { 4327 ndr_print_string(ndr, "display_name", r->in.display_name); 4328 } 4329 ndr->depth--; 4330 ndr->depth--; 4331 } 4332 if (flags & NDR_OUT) { 4333 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigA"); 4334 ndr->depth++; 4335 ndr_print_ptr(ndr, "tag_id", r->out.tag_id); 4336 ndr->depth++; 4337 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id); 4338 ndr->depth--; 4339 ndr_print_WERROR(ndr, "result", r->out.result); 4340 ndr->depth--; 4341 } 4342 ndr->depth--; 4343} 4344 4345static enum ndr_err_code ndr_push_svcctl_CreateServiceA(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceA *r) 4346{ 4347 if (flags & NDR_IN) { 4348 if (r->in.handle == NULL) { 4349 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 4350 } 4351 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 4352 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName)); 4353 if (r->in.ServiceName) { 4354 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16))); 4355 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 4356 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16))); 4357 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 4358 } 4359 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName)); 4360 if (r->in.DisplayName) { 4361 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16))); 4362 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 4363 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16))); 4364 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 4365 } 4366 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access)); 4367 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type)); 4368 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type)); 4369 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control)); 4370 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path)); 4371 if (r->in.binary_path) { 4372 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16))); 4373 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 4374 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16))); 4375 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.binary_path, ndr_charset_length(r->in.binary_path, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 4376 } 4377 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey)); 4378 if (r->in.LoadOrderGroupKey) { 4379 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16))); 4380 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 4381 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16))); 4382 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 4383 } 4384 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies)); 4385 if (r->in.dependencies) { 4386 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16))); 4387 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 4388 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16))); 4389 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 4390 } 4391 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name)); 4392 if (r->in.service_start_name) { 4393 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16))); 4394 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 4395 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16))); 4396 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_start_name, ndr_charset_length(r->in.service_start_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 4397 } 4398 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password)); 4399 if (r->in.password) { 4400 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16))); 4401 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 4402 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16))); 4403 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 4404 } 4405 } 4406 if (flags & NDR_OUT) { 4407 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId)); 4408 if (r->out.TagId) { 4409 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId)); 4410 } 4411 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 4412 } 4413 return NDR_ERR_SUCCESS; 4414} 4415 4416static enum ndr_err_code ndr_pull_svcctl_CreateServiceA(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceA *r) 4417{ 4418 uint32_t _ptr_ServiceName; 4419 uint32_t _ptr_DisplayName; 4420 uint32_t _ptr_binary_path; 4421 uint32_t _ptr_LoadOrderGroupKey; 4422 uint32_t _ptr_TagId; 4423 uint32_t _ptr_dependencies; 4424 uint32_t _ptr_service_start_name; 4425 uint32_t _ptr_password; 4426 TALLOC_CTX *_mem_save_handle_0; 4427 TALLOC_CTX *_mem_save_ServiceName_0; 4428 TALLOC_CTX *_mem_save_DisplayName_0; 4429 TALLOC_CTX *_mem_save_binary_path_0; 4430 TALLOC_CTX *_mem_save_LoadOrderGroupKey_0; 4431 TALLOC_CTX *_mem_save_TagId_0; 4432 TALLOC_CTX *_mem_save_dependencies_0; 4433 TALLOC_CTX *_mem_save_service_start_name_0; 4434 TALLOC_CTX *_mem_save_password_0; 4435 if (flags & NDR_IN) { 4436 ZERO_STRUCT(r->out); 4437 4438 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 4439 NDR_PULL_ALLOC(ndr, r->in.handle); 4440 } 4441 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 4442 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 4443 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 4444 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 4445 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName)); 4446 if (_ptr_ServiceName) { 4447 NDR_PULL_ALLOC(ndr, r->in.ServiceName); 4448 } else { 4449 r->in.ServiceName = NULL; 4450 } 4451 if (r->in.ServiceName) { 4452 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr); 4453 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0); 4454 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName)); 4455 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName)); 4456 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) { 4457 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.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName)); 4458 } 4459 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t))); 4460 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16)); 4461 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0); 4462 } 4463 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName)); 4464 if (_ptr_DisplayName) { 4465 NDR_PULL_ALLOC(ndr, r->in.DisplayName); 4466 } else { 4467 r->in.DisplayName = NULL; 4468 } 4469 if (r->in.DisplayName) { 4470 _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr); 4471 NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0); 4472 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName)); 4473 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName)); 4474 if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) { 4475 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.DisplayName), ndr_get_array_length(ndr, &r->in.DisplayName)); 4476 } 4477 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t))); 4478 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16)); 4479 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0); 4480 } 4481 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access)); 4482 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type)); 4483 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type)); 4484 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control)); 4485 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path)); 4486 if (_ptr_binary_path) { 4487 NDR_PULL_ALLOC(ndr, r->in.binary_path); 4488 } else { 4489 r->in.binary_path = NULL; 4490 } 4491 if (r->in.binary_path) { 4492 _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr); 4493 NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0); 4494 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path)); 4495 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path)); 4496 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) { 4497 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.binary_path), ndr_get_array_length(ndr, &r->in.binary_path)); 4498 } 4499 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t))); 4500 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16)); 4501 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0); 4502 } 4503 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey)); 4504 if (_ptr_LoadOrderGroupKey) { 4505 NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey); 4506 } else { 4507 r->in.LoadOrderGroupKey = NULL; 4508 } 4509 if (r->in.LoadOrderGroupKey) { 4510 _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr); 4511 NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0); 4512 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey)); 4513 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey)); 4514 if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) { 4515 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.LoadOrderGroupKey), ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey)); 4516 } 4517 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t))); 4518 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16)); 4519 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0); 4520 } 4521 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies)); 4522 if (_ptr_dependencies) { 4523 NDR_PULL_ALLOC(ndr, r->in.dependencies); 4524 } else { 4525 r->in.dependencies = NULL; 4526 } 4527 if (r->in.dependencies) { 4528 _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr); 4529 NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0); 4530 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies)); 4531 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies)); 4532 if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) { 4533 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.dependencies), ndr_get_array_length(ndr, &r->in.dependencies)); 4534 } 4535 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t))); 4536 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16)); 4537 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0); 4538 } 4539 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name)); 4540 if (_ptr_service_start_name) { 4541 NDR_PULL_ALLOC(ndr, r->in.service_start_name); 4542 } else { 4543 r->in.service_start_name = NULL; 4544 } 4545 if (r->in.service_start_name) { 4546 _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 4547 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0); 4548 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name)); 4549 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name)); 4550 if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) { 4551 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.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name)); 4552 } 4553 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t))); 4554 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16)); 4555 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0); 4556 } 4557 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password)); 4558 if (_ptr_password) { 4559 NDR_PULL_ALLOC(ndr, r->in.password); 4560 } else { 4561 r->in.password = NULL; 4562 } 4563 if (r->in.password) { 4564 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr); 4565 NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0); 4566 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password)); 4567 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password)); 4568 if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) { 4569 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.password), ndr_get_array_length(ndr, &r->in.password)); 4570 } 4571 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t))); 4572 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16)); 4573 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0); 4574 } 4575 } 4576 if (flags & NDR_OUT) { 4577 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId)); 4578 if (_ptr_TagId) { 4579 NDR_PULL_ALLOC(ndr, r->out.TagId); 4580 } else { 4581 r->out.TagId = NULL; 4582 } 4583 if (r->out.TagId) { 4584 _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr); 4585 NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0); 4586 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId)); 4587 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0); 4588 } 4589 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 4590 } 4591 return NDR_ERR_SUCCESS; 4592} 4593 4594_PUBLIC_ void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceA *r) 4595{ 4596 ndr_print_struct(ndr, name, "svcctl_CreateServiceA"); 4597 ndr->depth++; 4598 if (flags & NDR_SET_VALUES) { 4599 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 4600 } 4601 if (flags & NDR_IN) { 4602 ndr_print_struct(ndr, "in", "svcctl_CreateServiceA"); 4603 ndr->depth++; 4604 ndr_print_ptr(ndr, "handle", r->in.handle); 4605 ndr->depth++; 4606 ndr_print_policy_handle(ndr, "handle", r->in.handle); 4607 ndr->depth--; 4608 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName); 4609 ndr->depth++; 4610 if (r->in.ServiceName) { 4611 ndr_print_string(ndr, "ServiceName", r->in.ServiceName); 4612 } 4613 ndr->depth--; 4614 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName); 4615 ndr->depth++; 4616 if (r->in.DisplayName) { 4617 ndr_print_string(ndr, "DisplayName", r->in.DisplayName); 4618 } 4619 ndr->depth--; 4620 ndr_print_uint32(ndr, "desired_access", r->in.desired_access); 4621 ndr_print_uint32(ndr, "type", r->in.type); 4622 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type); 4623 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control); 4624 ndr_print_ptr(ndr, "binary_path", r->in.binary_path); 4625 ndr->depth++; 4626 if (r->in.binary_path) { 4627 ndr_print_string(ndr, "binary_path", r->in.binary_path); 4628 } 4629 ndr->depth--; 4630 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey); 4631 ndr->depth++; 4632 if (r->in.LoadOrderGroupKey) { 4633 ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey); 4634 } 4635 ndr->depth--; 4636 ndr_print_ptr(ndr, "dependencies", r->in.dependencies); 4637 ndr->depth++; 4638 if (r->in.dependencies) { 4639 ndr_print_string(ndr, "dependencies", r->in.dependencies); 4640 } 4641 ndr->depth--; 4642 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name); 4643 ndr->depth++; 4644 if (r->in.service_start_name) { 4645 ndr_print_string(ndr, "service_start_name", r->in.service_start_name); 4646 } 4647 ndr->depth--; 4648 ndr_print_ptr(ndr, "password", r->in.password); 4649 ndr->depth++; 4650 if (r->in.password) { 4651 ndr_print_string(ndr, "password", r->in.password); 4652 } 4653 ndr->depth--; 4654 ndr->depth--; 4655 } 4656 if (flags & NDR_OUT) { 4657 ndr_print_struct(ndr, "out", "svcctl_CreateServiceA"); 4658 ndr->depth++; 4659 ndr_print_ptr(ndr, "TagId", r->out.TagId); 4660 ndr->depth++; 4661 if (r->out.TagId) { 4662 ndr_print_uint32(ndr, "TagId", *r->out.TagId); 4663 } 4664 ndr->depth--; 4665 ndr_print_WERROR(ndr, "result", r->out.result); 4666 ndr->depth--; 4667 } 4668 ndr->depth--; 4669} 4670 4671static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesA(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesA *r) 4672{ 4673 if (flags & NDR_IN) { 4674 if (r->in.service == NULL) { 4675 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 4676 } 4677 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service)); 4678 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state)); 4679 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered)); 4680 } 4681 if (flags & NDR_OUT) { 4682 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status)); 4683 if (r->out.service_status) { 4684 NDR_CHECK(ndr_push_ENUM_SERVICE_STATUSA(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status)); 4685 } 4686 if (r->out.needed == NULL) { 4687 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 4688 } 4689 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed)); 4690 if (r->out.services_returned == NULL) { 4691 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 4692 } 4693 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned)); 4694 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 4695 } 4696 return NDR_ERR_SUCCESS; 4697} 4698 4699static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesA *r) 4700{ 4701 uint32_t _ptr_service_status; 4702 TALLOC_CTX *_mem_save_service_0; 4703 TALLOC_CTX *_mem_save_service_status_0; 4704 TALLOC_CTX *_mem_save_needed_0; 4705 TALLOC_CTX *_mem_save_services_returned_0; 4706 if (flags & NDR_IN) { 4707 ZERO_STRUCT(r->out); 4708 4709 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 4710 NDR_PULL_ALLOC(ndr, r->in.service); 4711 } 4712 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr); 4713 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC); 4714 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service)); 4715 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC); 4716 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state)); 4717 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); 4718 NDR_PULL_ALLOC(ndr, r->out.needed); 4719 ZERO_STRUCTP(r->out.needed); 4720 NDR_PULL_ALLOC(ndr, r->out.services_returned); 4721 ZERO_STRUCTP(r->out.services_returned); 4722 } 4723 if (flags & NDR_OUT) { 4724 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status)); 4725 if (_ptr_service_status) { 4726 NDR_PULL_ALLOC(ndr, r->out.service_status); 4727 } else { 4728 r->out.service_status = NULL; 4729 } 4730 if (r->out.service_status) { 4731 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr); 4732 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, 0); 4733 NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUSA(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status)); 4734 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, 0); 4735 } 4736 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 4737 NDR_PULL_ALLOC(ndr, r->out.needed); 4738 } 4739 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr); 4740 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC); 4741 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed)); 4742 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC); 4743 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 4744 NDR_PULL_ALLOC(ndr, r->out.services_returned); 4745 } 4746 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr); 4747 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC); 4748 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned)); 4749 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC); 4750 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 4751 } 4752 return NDR_ERR_SUCCESS; 4753} 4754 4755_PUBLIC_ void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesA *r) 4756{ 4757 ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesA"); 4758 ndr->depth++; 4759 if (flags & NDR_SET_VALUES) { 4760 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 4761 } 4762 if (flags & NDR_IN) { 4763 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesA"); 4764 ndr->depth++; 4765 ndr_print_ptr(ndr, "service", r->in.service); 4766 ndr->depth++; 4767 ndr_print_policy_handle(ndr, "service", r->in.service); 4768 ndr->depth--; 4769 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state); 4770 ndr_print_uint32(ndr, "offered", r->in.offered); 4771 ndr->depth--; 4772 } 4773 if (flags & NDR_OUT) { 4774 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesA"); 4775 ndr->depth++; 4776 ndr_print_ptr(ndr, "service_status", r->out.service_status); 4777 ndr->depth++; 4778 if (r->out.service_status) { 4779 ndr_print_ENUM_SERVICE_STATUSA(ndr, "service_status", r->out.service_status); 4780 } 4781 ndr->depth--; 4782 ndr_print_ptr(ndr, "needed", r->out.needed); 4783 ndr->depth++; 4784 ndr_print_uint32(ndr, "needed", *r->out.needed); 4785 ndr->depth--; 4786 ndr_print_ptr(ndr, "services_returned", r->out.services_returned); 4787 ndr->depth++; 4788 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned); 4789 ndr->depth--; 4790 ndr_print_WERROR(ndr, "result", r->out.result); 4791 ndr->depth--; 4792 } 4793 ndr->depth--; 4794} 4795 4796static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusA(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusA *r) 4797{ 4798 if (flags & NDR_IN) { 4799 if (r->in.handle == NULL) { 4800 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 4801 } 4802 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 4803 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type)); 4804 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state)); 4805 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered)); 4806 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle)); 4807 if (r->in.resume_handle) { 4808 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle)); 4809 } 4810 } 4811 if (flags & NDR_OUT) { 4812 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered)); 4813 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.offered)); 4814 if (r->out.needed == NULL) { 4815 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 4816 } 4817 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed)); 4818 if (r->out.services_returned == NULL) { 4819 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 4820 } 4821 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned)); 4822 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle)); 4823 if (r->out.resume_handle) { 4824 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle)); 4825 } 4826 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 4827 } 4828 return NDR_ERR_SUCCESS; 4829} 4830 4831static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusA *r) 4832{ 4833 uint32_t _ptr_resume_handle; 4834 TALLOC_CTX *_mem_save_handle_0; 4835 TALLOC_CTX *_mem_save_needed_0; 4836 TALLOC_CTX *_mem_save_services_returned_0; 4837 TALLOC_CTX *_mem_save_resume_handle_0; 4838 if (flags & NDR_IN) { 4839 ZERO_STRUCT(r->out); 4840 4841 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 4842 NDR_PULL_ALLOC(ndr, r->in.handle); 4843 } 4844 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 4845 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 4846 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 4847 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 4848 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type)); 4849 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state)); 4850 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); 4851 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle)); 4852 if (_ptr_resume_handle) { 4853 NDR_PULL_ALLOC(ndr, r->in.resume_handle); 4854 } else { 4855 r->in.resume_handle = NULL; 4856 } 4857 if (r->in.resume_handle) { 4858 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 4859 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0); 4860 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle)); 4861 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0); 4862 } 4863 NDR_PULL_ALLOC(ndr, r->out.needed); 4864 ZERO_STRUCTP(r->out.needed); 4865 NDR_PULL_ALLOC(ndr, r->out.services_returned); 4866 ZERO_STRUCTP(r->out.services_returned); 4867 } 4868 if (flags & NDR_OUT) { 4869 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service)); 4870 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service)); 4871 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service))); 4872 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 4873 NDR_PULL_ALLOC(ndr, r->out.needed); 4874 } 4875 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr); 4876 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC); 4877 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed)); 4878 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC); 4879 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 4880 NDR_PULL_ALLOC(ndr, r->out.services_returned); 4881 } 4882 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr); 4883 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC); 4884 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned)); 4885 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC); 4886 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle)); 4887 if (_ptr_resume_handle) { 4888 NDR_PULL_ALLOC(ndr, r->out.resume_handle); 4889 } else { 4890 r->out.resume_handle = NULL; 4891 } 4892 if (r->out.resume_handle) { 4893 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 4894 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0); 4895 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle)); 4896 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0); 4897 } 4898 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 4899 if (r->out.service) { 4900 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.offered)); 4901 } 4902 } 4903 return NDR_ERR_SUCCESS; 4904} 4905 4906_PUBLIC_ void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusA *r) 4907{ 4908 ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusA"); 4909 ndr->depth++; 4910 if (flags & NDR_SET_VALUES) { 4911 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 4912 } 4913 if (flags & NDR_IN) { 4914 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusA"); 4915 ndr->depth++; 4916 ndr_print_ptr(ndr, "handle", r->in.handle); 4917 ndr->depth++; 4918 ndr_print_policy_handle(ndr, "handle", r->in.handle); 4919 ndr->depth--; 4920 ndr_print_uint32(ndr, "type", r->in.type); 4921 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state); 4922 ndr_print_uint32(ndr, "offered", r->in.offered); 4923 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle); 4924 ndr->depth++; 4925 if (r->in.resume_handle) { 4926 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle); 4927 } 4928 ndr->depth--; 4929 ndr->depth--; 4930 } 4931 if (flags & NDR_OUT) { 4932 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusA"); 4933 ndr->depth++; 4934 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.offered); 4935 ndr_print_ptr(ndr, "needed", r->out.needed); 4936 ndr->depth++; 4937 ndr_print_uint32(ndr, "needed", *r->out.needed); 4938 ndr->depth--; 4939 ndr_print_ptr(ndr, "services_returned", r->out.services_returned); 4940 ndr->depth++; 4941 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned); 4942 ndr->depth--; 4943 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle); 4944 ndr->depth++; 4945 if (r->out.resume_handle) { 4946 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle); 4947 } 4948 ndr->depth--; 4949 ndr_print_WERROR(ndr, "result", r->out.result); 4950 ndr->depth--; 4951 } 4952 ndr->depth--; 4953} 4954 4955static enum ndr_err_code ndr_push_svcctl_OpenSCManagerA(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerA *r) 4956{ 4957 if (flags & NDR_IN) { 4958 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName)); 4959 if (r->in.MachineName) { 4960 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16))); 4961 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 4962 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16))); 4963 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 4964 } 4965 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName)); 4966 if (r->in.DatabaseName) { 4967 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16))); 4968 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 4969 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16))); 4970 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 4971 } 4972 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask)); 4973 } 4974 if (flags & NDR_OUT) { 4975 if (r->out.handle == NULL) { 4976 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 4977 } 4978 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle)); 4979 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 4980 } 4981 return NDR_ERR_SUCCESS; 4982} 4983 4984static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerA *r) 4985{ 4986 uint32_t _ptr_MachineName; 4987 uint32_t _ptr_DatabaseName; 4988 TALLOC_CTX *_mem_save_MachineName_0; 4989 TALLOC_CTX *_mem_save_DatabaseName_0; 4990 TALLOC_CTX *_mem_save_handle_0; 4991 if (flags & NDR_IN) { 4992 ZERO_STRUCT(r->out); 4993 4994 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName)); 4995 if (_ptr_MachineName) { 4996 NDR_PULL_ALLOC(ndr, r->in.MachineName); 4997 } else { 4998 r->in.MachineName = NULL; 4999 } 5000 if (r->in.MachineName) { 5001 _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr); 5002 NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0); 5003 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName)); 5004 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName)); 5005 if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) { 5006 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.MachineName), ndr_get_array_length(ndr, &r->in.MachineName)); 5007 } 5008 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t))); 5009 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16)); 5010 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0); 5011 } 5012 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName)); 5013 if (_ptr_DatabaseName) { 5014 NDR_PULL_ALLOC(ndr, r->in.DatabaseName); 5015 } else { 5016 r->in.DatabaseName = NULL; 5017 } 5018 if (r->in.DatabaseName) { 5019 _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr); 5020 NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0); 5021 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName)); 5022 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName)); 5023 if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) { 5024 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.DatabaseName), ndr_get_array_length(ndr, &r->in.DatabaseName)); 5025 } 5026 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t))); 5027 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16)); 5028 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0); 5029 } 5030 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask)); 5031 NDR_PULL_ALLOC(ndr, r->out.handle); 5032 ZERO_STRUCTP(r->out.handle); 5033 } 5034 if (flags & NDR_OUT) { 5035 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 5036 NDR_PULL_ALLOC(ndr, r->out.handle); 5037 } 5038 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 5039 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC); 5040 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle)); 5041 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 5042 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 5043 } 5044 return NDR_ERR_SUCCESS; 5045} 5046 5047_PUBLIC_ void ndr_print_svcctl_OpenSCManagerA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerA *r) 5048{ 5049 ndr_print_struct(ndr, name, "svcctl_OpenSCManagerA"); 5050 ndr->depth++; 5051 if (flags & NDR_SET_VALUES) { 5052 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 5053 } 5054 if (flags & NDR_IN) { 5055 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerA"); 5056 ndr->depth++; 5057 ndr_print_ptr(ndr, "MachineName", r->in.MachineName); 5058 ndr->depth++; 5059 if (r->in.MachineName) { 5060 ndr_print_string(ndr, "MachineName", r->in.MachineName); 5061 } 5062 ndr->depth--; 5063 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName); 5064 ndr->depth++; 5065 if (r->in.DatabaseName) { 5066 ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName); 5067 } 5068 ndr->depth--; 5069 ndr_print_uint32(ndr, "access_mask", r->in.access_mask); 5070 ndr->depth--; 5071 } 5072 if (flags & NDR_OUT) { 5073 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerA"); 5074 ndr->depth++; 5075 ndr_print_ptr(ndr, "handle", r->out.handle); 5076 ndr->depth++; 5077 ndr_print_policy_handle(ndr, "handle", r->out.handle); 5078 ndr->depth--; 5079 ndr_print_WERROR(ndr, "result", r->out.result); 5080 ndr->depth--; 5081 } 5082 ndr->depth--; 5083} 5084 5085static enum ndr_err_code ndr_push_svcctl_OpenServiceA(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceA *r) 5086{ 5087 if (flags & NDR_IN) { 5088 if (r->in.scmanager_handle == NULL) { 5089 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 5090 } 5091 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle)); 5092 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName)); 5093 if (r->in.ServiceName) { 5094 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16))); 5095 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 5096 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16))); 5097 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 5098 } 5099 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask)); 5100 } 5101 if (flags & NDR_OUT) { 5102 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 5103 } 5104 return NDR_ERR_SUCCESS; 5105} 5106 5107static enum ndr_err_code ndr_pull_svcctl_OpenServiceA(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceA *r) 5108{ 5109 uint32_t _ptr_ServiceName; 5110 TALLOC_CTX *_mem_save_scmanager_handle_0; 5111 TALLOC_CTX *_mem_save_ServiceName_0; 5112 if (flags & NDR_IN) { 5113 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 5114 NDR_PULL_ALLOC(ndr, r->in.scmanager_handle); 5115 } 5116 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 5117 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC); 5118 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle)); 5119 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC); 5120 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName)); 5121 if (_ptr_ServiceName) { 5122 NDR_PULL_ALLOC(ndr, r->in.ServiceName); 5123 } else { 5124 r->in.ServiceName = NULL; 5125 } 5126 if (r->in.ServiceName) { 5127 _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr); 5128 NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0); 5129 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName)); 5130 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName)); 5131 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) { 5132 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.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName)); 5133 } 5134 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t))); 5135 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16)); 5136 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0); 5137 } 5138 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask)); 5139 } 5140 if (flags & NDR_OUT) { 5141 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 5142 } 5143 return NDR_ERR_SUCCESS; 5144} 5145 5146_PUBLIC_ void ndr_print_svcctl_OpenServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceA *r) 5147{ 5148 ndr_print_struct(ndr, name, "svcctl_OpenServiceA"); 5149 ndr->depth++; 5150 if (flags & NDR_SET_VALUES) { 5151 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 5152 } 5153 if (flags & NDR_IN) { 5154 ndr_print_struct(ndr, "in", "svcctl_OpenServiceA"); 5155 ndr->depth++; 5156 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle); 5157 ndr->depth++; 5158 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle); 5159 ndr->depth--; 5160 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName); 5161 ndr->depth++; 5162 if (r->in.ServiceName) { 5163 ndr_print_string(ndr, "ServiceName", r->in.ServiceName); 5164 } 5165 ndr->depth--; 5166 ndr_print_uint32(ndr, "access_mask", r->in.access_mask); 5167 ndr->depth--; 5168 } 5169 if (flags & NDR_OUT) { 5170 ndr_print_struct(ndr, "out", "svcctl_OpenServiceA"); 5171 ndr->depth++; 5172 ndr_print_WERROR(ndr, "result", r->out.result); 5173 ndr->depth--; 5174 } 5175 ndr->depth--; 5176} 5177 5178static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigA *r) 5179{ 5180 if (flags & NDR_IN) { 5181 if (r->in.handle == NULL) { 5182 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 5183 } 5184 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 5185 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered)); 5186 } 5187 if (flags & NDR_OUT) { 5188 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.offered)); 5189 if (r->out.needed == NULL) { 5190 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 5191 } 5192 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed)); 5193 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 5194 } 5195 return NDR_ERR_SUCCESS; 5196} 5197 5198static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigA *r) 5199{ 5200 TALLOC_CTX *_mem_save_handle_0; 5201 TALLOC_CTX *_mem_save_needed_0; 5202 if (flags & NDR_IN) { 5203 ZERO_STRUCT(r->out); 5204 5205 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 5206 NDR_PULL_ALLOC(ndr, r->in.handle); 5207 } 5208 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 5209 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 5210 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 5211 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 5212 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); 5213 NDR_PULL_ALLOC(ndr, r->out.needed); 5214 ZERO_STRUCTP(r->out.needed); 5215 } 5216 if (flags & NDR_OUT) { 5217 NDR_PULL_ALLOC_N(ndr, r->out.query, r->in.offered); 5218 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.offered)); 5219 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 5220 NDR_PULL_ALLOC(ndr, r->out.needed); 5221 } 5222 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr); 5223 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC); 5224 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed)); 5225 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC); 5226 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 5227 } 5228 return NDR_ERR_SUCCESS; 5229} 5230 5231_PUBLIC_ void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigA *r) 5232{ 5233 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigA"); 5234 ndr->depth++; 5235 if (flags & NDR_SET_VALUES) { 5236 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 5237 } 5238 if (flags & NDR_IN) { 5239 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigA"); 5240 ndr->depth++; 5241 ndr_print_ptr(ndr, "handle", r->in.handle); 5242 ndr->depth++; 5243 ndr_print_policy_handle(ndr, "handle", r->in.handle); 5244 ndr->depth--; 5245 ndr_print_uint32(ndr, "offered", r->in.offered); 5246 ndr->depth--; 5247 } 5248 if (flags & NDR_OUT) { 5249 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigA"); 5250 ndr->depth++; 5251 ndr_print_array_uint8(ndr, "query", r->out.query, r->in.offered); 5252 ndr_print_ptr(ndr, "needed", r->out.needed); 5253 ndr->depth++; 5254 ndr_print_uint32(ndr, "needed", *r->out.needed); 5255 ndr->depth--; 5256 ndr_print_WERROR(ndr, "result", r->out.result); 5257 ndr->depth--; 5258 } 5259 ndr->depth--; 5260} 5261 5262static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusA *r) 5263{ 5264 if (flags & NDR_IN) { 5265 if (r->in.handle == NULL) { 5266 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 5267 } 5268 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 5269 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered)); 5270 } 5271 if (flags & NDR_OUT) { 5272 if (r->out.lock_status == NULL) { 5273 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 5274 } 5275 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status)); 5276 if (r->out.needed == NULL) { 5277 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 5278 } 5279 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed)); 5280 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 5281 } 5282 return NDR_ERR_SUCCESS; 5283} 5284 5285static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusA *r) 5286{ 5287 TALLOC_CTX *_mem_save_handle_0; 5288 TALLOC_CTX *_mem_save_lock_status_0; 5289 TALLOC_CTX *_mem_save_needed_0; 5290 if (flags & NDR_IN) { 5291 ZERO_STRUCT(r->out); 5292 5293 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 5294 NDR_PULL_ALLOC(ndr, r->in.handle); 5295 } 5296 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 5297 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 5298 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 5299 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 5300 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); 5301 NDR_PULL_ALLOC(ndr, r->out.lock_status); 5302 ZERO_STRUCTP(r->out.lock_status); 5303 NDR_PULL_ALLOC(ndr, r->out.needed); 5304 ZERO_STRUCTP(r->out.needed); 5305 } 5306 if (flags & NDR_OUT) { 5307 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 5308 NDR_PULL_ALLOC(ndr, r->out.lock_status); 5309 } 5310 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr); 5311 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC); 5312 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status)); 5313 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC); 5314 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 5315 NDR_PULL_ALLOC(ndr, r->out.needed); 5316 } 5317 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr); 5318 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC); 5319 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed)); 5320 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC); 5321 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 5322 } 5323 return NDR_ERR_SUCCESS; 5324} 5325 5326_PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusA *r) 5327{ 5328 ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusA"); 5329 ndr->depth++; 5330 if (flags & NDR_SET_VALUES) { 5331 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 5332 } 5333 if (flags & NDR_IN) { 5334 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusA"); 5335 ndr->depth++; 5336 ndr_print_ptr(ndr, "handle", r->in.handle); 5337 ndr->depth++; 5338 ndr_print_policy_handle(ndr, "handle", r->in.handle); 5339 ndr->depth--; 5340 ndr_print_uint32(ndr, "offered", r->in.offered); 5341 ndr->depth--; 5342 } 5343 if (flags & NDR_OUT) { 5344 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusA"); 5345 ndr->depth++; 5346 ndr_print_ptr(ndr, "lock_status", r->out.lock_status); 5347 ndr->depth++; 5348 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status); 5349 ndr->depth--; 5350 ndr_print_ptr(ndr, "needed", r->out.needed); 5351 ndr->depth++; 5352 ndr_print_uint32(ndr, "needed", *r->out.needed); 5353 ndr->depth--; 5354 ndr_print_WERROR(ndr, "result", r->out.result); 5355 ndr->depth--; 5356 } 5357 ndr->depth--; 5358} 5359 5360static enum ndr_err_code ndr_push_svcctl_StartServiceA(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceA *r) 5361{ 5362 if (flags & NDR_IN) { 5363 if (r->in.handle == NULL) { 5364 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 5365 } 5366 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 5367 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs)); 5368 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments)); 5369 if (r->in.Arguments) { 5370 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16))); 5371 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 5372 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16))); 5373 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 5374 } 5375 } 5376 if (flags & NDR_OUT) { 5377 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 5378 } 5379 return NDR_ERR_SUCCESS; 5380} 5381 5382static enum ndr_err_code ndr_pull_svcctl_StartServiceA(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceA *r) 5383{ 5384 uint32_t _ptr_Arguments; 5385 TALLOC_CTX *_mem_save_handle_0; 5386 TALLOC_CTX *_mem_save_Arguments_0; 5387 if (flags & NDR_IN) { 5388 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 5389 NDR_PULL_ALLOC(ndr, r->in.handle); 5390 } 5391 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 5392 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 5393 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 5394 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 5395 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs)); 5396 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments)); 5397 if (_ptr_Arguments) { 5398 NDR_PULL_ALLOC(ndr, r->in.Arguments); 5399 } else { 5400 r->in.Arguments = NULL; 5401 } 5402 if (r->in.Arguments) { 5403 _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr); 5404 NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0); 5405 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments)); 5406 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments)); 5407 if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) { 5408 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.Arguments), ndr_get_array_length(ndr, &r->in.Arguments)); 5409 } 5410 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t))); 5411 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16)); 5412 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0); 5413 } 5414 } 5415 if (flags & NDR_OUT) { 5416 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 5417 } 5418 return NDR_ERR_SUCCESS; 5419} 5420 5421_PUBLIC_ void ndr_print_svcctl_StartServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceA *r) 5422{ 5423 ndr_print_struct(ndr, name, "svcctl_StartServiceA"); 5424 ndr->depth++; 5425 if (flags & NDR_SET_VALUES) { 5426 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 5427 } 5428 if (flags & NDR_IN) { 5429 ndr_print_struct(ndr, "in", "svcctl_StartServiceA"); 5430 ndr->depth++; 5431 ndr_print_ptr(ndr, "handle", r->in.handle); 5432 ndr->depth++; 5433 ndr_print_policy_handle(ndr, "handle", r->in.handle); 5434 ndr->depth--; 5435 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs); 5436 ndr_print_ptr(ndr, "Arguments", r->in.Arguments); 5437 ndr->depth++; 5438 if (r->in.Arguments) { 5439 ndr_print_string(ndr, "Arguments", r->in.Arguments); 5440 } 5441 ndr->depth--; 5442 ndr->depth--; 5443 } 5444 if (flags & NDR_OUT) { 5445 ndr_print_struct(ndr, "out", "svcctl_StartServiceA"); 5446 ndr->depth++; 5447 ndr_print_WERROR(ndr, "result", r->out.result); 5448 ndr->depth--; 5449 } 5450 ndr->depth--; 5451} 5452 5453static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameA *r) 5454{ 5455 if (flags & NDR_IN) { 5456 if (r->in.handle == NULL) { 5457 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 5458 } 5459 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 5460 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name)); 5461 if (r->in.service_name) { 5462 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16))); 5463 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 5464 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16))); 5465 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_name, ndr_charset_length(r->in.service_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 5466 } 5467 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length)); 5468 if (r->in.display_name_length) { 5469 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length)); 5470 } 5471 } 5472 if (flags & NDR_OUT) { 5473 if (r->out.display_name == NULL) { 5474 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 5475 } 5476 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name)); 5477 if (*r->out.display_name) { 5478 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16))); 5479 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 5480 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16))); 5481 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.display_name, ndr_charset_length(*r->out.display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 5482 } 5483 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length)); 5484 if (r->out.display_name_length) { 5485 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length)); 5486 } 5487 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 5488 } 5489 return NDR_ERR_SUCCESS; 5490} 5491 5492static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameA *r) 5493{ 5494 uint32_t _ptr_service_name; 5495 uint32_t _ptr_display_name; 5496 uint32_t _ptr_display_name_length; 5497 TALLOC_CTX *_mem_save_handle_0; 5498 TALLOC_CTX *_mem_save_service_name_0; 5499 TALLOC_CTX *_mem_save_display_name_0; 5500 TALLOC_CTX *_mem_save_display_name_1; 5501 TALLOC_CTX *_mem_save_display_name_length_0; 5502 if (flags & NDR_IN) { 5503 ZERO_STRUCT(r->out); 5504 5505 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 5506 NDR_PULL_ALLOC(ndr, r->in.handle); 5507 } 5508 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 5509 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 5510 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 5511 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 5512 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name)); 5513 if (_ptr_service_name) { 5514 NDR_PULL_ALLOC(ndr, r->in.service_name); 5515 } else { 5516 r->in.service_name = NULL; 5517 } 5518 if (r->in.service_name) { 5519 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 5520 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0); 5521 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name)); 5522 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name)); 5523 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) { 5524 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.service_name), ndr_get_array_length(ndr, &r->in.service_name)); 5525 } 5526 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t))); 5527 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16)); 5528 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0); 5529 } 5530 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length)); 5531 if (_ptr_display_name_length) { 5532 NDR_PULL_ALLOC(ndr, r->in.display_name_length); 5533 } else { 5534 r->in.display_name_length = NULL; 5535 } 5536 if (r->in.display_name_length) { 5537 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr); 5538 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0); 5539 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length)); 5540 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0); 5541 } 5542 NDR_PULL_ALLOC(ndr, r->out.display_name); 5543 ZERO_STRUCTP(r->out.display_name); 5544 } 5545 if (flags & NDR_OUT) { 5546 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 5547 NDR_PULL_ALLOC(ndr, r->out.display_name); 5548 } 5549 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 5550 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC); 5551 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name)); 5552 if (_ptr_display_name) { 5553 NDR_PULL_ALLOC(ndr, *r->out.display_name); 5554 } else { 5555 *r->out.display_name = NULL; 5556 } 5557 if (*r->out.display_name) { 5558 _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr); 5559 NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0); 5560 NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name)); 5561 NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name)); 5562 if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) { 5563 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.display_name), ndr_get_array_length(ndr, r->out.display_name)); 5564 } 5565 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t))); 5566 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.display_name, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t), CH_UTF16)); 5567 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0); 5568 } 5569 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC); 5570 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length)); 5571 if (_ptr_display_name_length) { 5572 NDR_PULL_ALLOC(ndr, r->out.display_name_length); 5573 } else { 5574 r->out.display_name_length = NULL; 5575 } 5576 if (r->out.display_name_length) { 5577 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr); 5578 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0); 5579 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length)); 5580 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0); 5581 } 5582 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 5583 } 5584 return NDR_ERR_SUCCESS; 5585} 5586 5587_PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameA *r) 5588{ 5589 ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameA"); 5590 ndr->depth++; 5591 if (flags & NDR_SET_VALUES) { 5592 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 5593 } 5594 if (flags & NDR_IN) { 5595 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameA"); 5596 ndr->depth++; 5597 ndr_print_ptr(ndr, "handle", r->in.handle); 5598 ndr->depth++; 5599 ndr_print_policy_handle(ndr, "handle", r->in.handle); 5600 ndr->depth--; 5601 ndr_print_ptr(ndr, "service_name", r->in.service_name); 5602 ndr->depth++; 5603 if (r->in.service_name) { 5604 ndr_print_string(ndr, "service_name", r->in.service_name); 5605 } 5606 ndr->depth--; 5607 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length); 5608 ndr->depth++; 5609 if (r->in.display_name_length) { 5610 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length); 5611 } 5612 ndr->depth--; 5613 ndr->depth--; 5614 } 5615 if (flags & NDR_OUT) { 5616 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameA"); 5617 ndr->depth++; 5618 ndr_print_ptr(ndr, "display_name", r->out.display_name); 5619 ndr->depth++; 5620 ndr_print_ptr(ndr, "display_name", *r->out.display_name); 5621 ndr->depth++; 5622 if (*r->out.display_name) { 5623 ndr_print_string(ndr, "display_name", *r->out.display_name); 5624 } 5625 ndr->depth--; 5626 ndr->depth--; 5627 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length); 5628 ndr->depth++; 5629 if (r->out.display_name_length) { 5630 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length); 5631 } 5632 ndr->depth--; 5633 ndr_print_WERROR(ndr, "result", r->out.result); 5634 ndr->depth--; 5635 } 5636 ndr->depth--; 5637} 5638 5639static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameA *r) 5640{ 5641 if (flags & NDR_IN) { 5642 if (r->in.handle == NULL) { 5643 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 5644 } 5645 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 5646 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name)); 5647 if (r->in.service_name) { 5648 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16))); 5649 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 5650 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16))); 5651 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_name, ndr_charset_length(r->in.service_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 5652 } 5653 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length)); 5654 if (r->in.display_name_length) { 5655 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length)); 5656 } 5657 } 5658 if (flags & NDR_OUT) { 5659 if (r->out.key_name == NULL) { 5660 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 5661 } 5662 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name)); 5663 if (*r->out.key_name) { 5664 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16))); 5665 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 5666 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16))); 5667 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.key_name, ndr_charset_length(*r->out.key_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 5668 } 5669 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length)); 5670 if (r->out.display_name_length) { 5671 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length)); 5672 } 5673 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 5674 } 5675 return NDR_ERR_SUCCESS; 5676} 5677 5678static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameA *r) 5679{ 5680 uint32_t _ptr_service_name; 5681 uint32_t _ptr_key_name; 5682 uint32_t _ptr_display_name_length; 5683 TALLOC_CTX *_mem_save_handle_0; 5684 TALLOC_CTX *_mem_save_service_name_0; 5685 TALLOC_CTX *_mem_save_key_name_0; 5686 TALLOC_CTX *_mem_save_key_name_1; 5687 TALLOC_CTX *_mem_save_display_name_length_0; 5688 if (flags & NDR_IN) { 5689 ZERO_STRUCT(r->out); 5690 5691 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 5692 NDR_PULL_ALLOC(ndr, r->in.handle); 5693 } 5694 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 5695 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 5696 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 5697 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 5698 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name)); 5699 if (_ptr_service_name) { 5700 NDR_PULL_ALLOC(ndr, r->in.service_name); 5701 } else { 5702 r->in.service_name = NULL; 5703 } 5704 if (r->in.service_name) { 5705 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 5706 NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0); 5707 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name)); 5708 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name)); 5709 if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) { 5710 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.service_name), ndr_get_array_length(ndr, &r->in.service_name)); 5711 } 5712 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t))); 5713 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16)); 5714 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0); 5715 } 5716 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length)); 5717 if (_ptr_display_name_length) { 5718 NDR_PULL_ALLOC(ndr, r->in.display_name_length); 5719 } else { 5720 r->in.display_name_length = NULL; 5721 } 5722 if (r->in.display_name_length) { 5723 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr); 5724 NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0); 5725 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length)); 5726 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0); 5727 } 5728 NDR_PULL_ALLOC(ndr, r->out.key_name); 5729 ZERO_STRUCTP(r->out.key_name); 5730 } 5731 if (flags & NDR_OUT) { 5732 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 5733 NDR_PULL_ALLOC(ndr, r->out.key_name); 5734 } 5735 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 5736 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC); 5737 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name)); 5738 if (_ptr_key_name) { 5739 NDR_PULL_ALLOC(ndr, *r->out.key_name); 5740 } else { 5741 *r->out.key_name = NULL; 5742 } 5743 if (*r->out.key_name) { 5744 _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr); 5745 NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0); 5746 NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name)); 5747 NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name)); 5748 if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) { 5749 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.key_name), ndr_get_array_length(ndr, r->out.key_name)); 5750 } 5751 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t))); 5752 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.key_name, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t), CH_UTF16)); 5753 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0); 5754 } 5755 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC); 5756 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length)); 5757 if (_ptr_display_name_length) { 5758 NDR_PULL_ALLOC(ndr, r->out.display_name_length); 5759 } else { 5760 r->out.display_name_length = NULL; 5761 } 5762 if (r->out.display_name_length) { 5763 _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr); 5764 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0); 5765 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length)); 5766 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0); 5767 } 5768 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 5769 } 5770 return NDR_ERR_SUCCESS; 5771} 5772 5773_PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameA *r) 5774{ 5775 ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameA"); 5776 ndr->depth++; 5777 if (flags & NDR_SET_VALUES) { 5778 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 5779 } 5780 if (flags & NDR_IN) { 5781 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameA"); 5782 ndr->depth++; 5783 ndr_print_ptr(ndr, "handle", r->in.handle); 5784 ndr->depth++; 5785 ndr_print_policy_handle(ndr, "handle", r->in.handle); 5786 ndr->depth--; 5787 ndr_print_ptr(ndr, "service_name", r->in.service_name); 5788 ndr->depth++; 5789 if (r->in.service_name) { 5790 ndr_print_string(ndr, "service_name", r->in.service_name); 5791 } 5792 ndr->depth--; 5793 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length); 5794 ndr->depth++; 5795 if (r->in.display_name_length) { 5796 ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length); 5797 } 5798 ndr->depth--; 5799 ndr->depth--; 5800 } 5801 if (flags & NDR_OUT) { 5802 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameA"); 5803 ndr->depth++; 5804 ndr_print_ptr(ndr, "key_name", r->out.key_name); 5805 ndr->depth++; 5806 ndr_print_ptr(ndr, "key_name", *r->out.key_name); 5807 ndr->depth++; 5808 if (*r->out.key_name) { 5809 ndr_print_string(ndr, "key_name", *r->out.key_name); 5810 } 5811 ndr->depth--; 5812 ndr->depth--; 5813 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length); 5814 ndr->depth++; 5815 if (r->out.display_name_length) { 5816 ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length); 5817 } 5818 ndr->depth--; 5819 ndr_print_WERROR(ndr, "result", r->out.result); 5820 ndr->depth--; 5821 } 5822 ndr->depth--; 5823} 5824 5825static enum ndr_err_code ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push *ndr, int flags, const struct svcctl_GetCurrentGroupeStateW *r) 5826{ 5827 if (flags & NDR_IN) { 5828 } 5829 if (flags & NDR_OUT) { 5830 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 5831 } 5832 return NDR_ERR_SUCCESS; 5833} 5834 5835static enum ndr_err_code ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull *ndr, int flags, struct svcctl_GetCurrentGroupeStateW *r) 5836{ 5837 if (flags & NDR_IN) { 5838 } 5839 if (flags & NDR_OUT) { 5840 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 5841 } 5842 return NDR_ERR_SUCCESS; 5843} 5844 5845_PUBLIC_ void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetCurrentGroupeStateW *r) 5846{ 5847 ndr_print_struct(ndr, name, "svcctl_GetCurrentGroupeStateW"); 5848 ndr->depth++; 5849 if (flags & NDR_SET_VALUES) { 5850 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 5851 } 5852 if (flags & NDR_IN) { 5853 ndr_print_struct(ndr, "in", "svcctl_GetCurrentGroupeStateW"); 5854 ndr->depth++; 5855 ndr->depth--; 5856 } 5857 if (flags & NDR_OUT) { 5858 ndr_print_struct(ndr, "out", "svcctl_GetCurrentGroupeStateW"); 5859 ndr->depth++; 5860 ndr_print_WERROR(ndr, "result", r->out.result); 5861 ndr->depth--; 5862 } 5863 ndr->depth--; 5864} 5865 5866static enum ndr_err_code ndr_push_svcctl_EnumServiceGroupW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServiceGroupW *r) 5867{ 5868 if (flags & NDR_IN) { 5869 } 5870 if (flags & NDR_OUT) { 5871 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 5872 } 5873 return NDR_ERR_SUCCESS; 5874} 5875 5876static enum ndr_err_code ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServiceGroupW *r) 5877{ 5878 if (flags & NDR_IN) { 5879 } 5880 if (flags & NDR_OUT) { 5881 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 5882 } 5883 return NDR_ERR_SUCCESS; 5884} 5885 5886_PUBLIC_ void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServiceGroupW *r) 5887{ 5888 ndr_print_struct(ndr, name, "svcctl_EnumServiceGroupW"); 5889 ndr->depth++; 5890 if (flags & NDR_SET_VALUES) { 5891 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 5892 } 5893 if (flags & NDR_IN) { 5894 ndr_print_struct(ndr, "in", "svcctl_EnumServiceGroupW"); 5895 ndr->depth++; 5896 ndr->depth--; 5897 } 5898 if (flags & NDR_OUT) { 5899 ndr_print_struct(ndr, "out", "svcctl_EnumServiceGroupW"); 5900 ndr->depth++; 5901 ndr_print_WERROR(ndr, "result", r->out.result); 5902 ndr->depth--; 5903 } 5904 ndr->depth--; 5905} 5906 5907static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2A *r) 5908{ 5909 if (flags & NDR_IN) { 5910 if (r->in.handle == NULL) { 5911 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 5912 } 5913 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 5914 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level)); 5915 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info)); 5916 if (r->in.info) { 5917 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info)); 5918 } 5919 } 5920 if (flags & NDR_OUT) { 5921 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 5922 } 5923 return NDR_ERR_SUCCESS; 5924} 5925 5926static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2A *r) 5927{ 5928 uint32_t _ptr_info; 5929 TALLOC_CTX *_mem_save_handle_0; 5930 TALLOC_CTX *_mem_save_info_0; 5931 if (flags & NDR_IN) { 5932 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 5933 NDR_PULL_ALLOC(ndr, r->in.handle); 5934 } 5935 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 5936 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 5937 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 5938 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 5939 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level)); 5940 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info)); 5941 if (_ptr_info) { 5942 NDR_PULL_ALLOC(ndr, r->in.info); 5943 } else { 5944 r->in.info = NULL; 5945 } 5946 if (r->in.info) { 5947 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr); 5948 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0); 5949 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info)); 5950 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0); 5951 } 5952 } 5953 if (flags & NDR_OUT) { 5954 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 5955 } 5956 return NDR_ERR_SUCCESS; 5957} 5958 5959_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2A *r) 5960{ 5961 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2A"); 5962 ndr->depth++; 5963 if (flags & NDR_SET_VALUES) { 5964 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 5965 } 5966 if (flags & NDR_IN) { 5967 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2A"); 5968 ndr->depth++; 5969 ndr_print_ptr(ndr, "handle", r->in.handle); 5970 ndr->depth++; 5971 ndr_print_policy_handle(ndr, "handle", r->in.handle); 5972 ndr->depth--; 5973 ndr_print_uint32(ndr, "info_level", r->in.info_level); 5974 ndr_print_ptr(ndr, "info", r->in.info); 5975 ndr->depth++; 5976 if (r->in.info) { 5977 ndr_print_uint8(ndr, "info", *r->in.info); 5978 } 5979 ndr->depth--; 5980 ndr->depth--; 5981 } 5982 if (flags & NDR_OUT) { 5983 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2A"); 5984 ndr->depth++; 5985 ndr_print_WERROR(ndr, "result", r->out.result); 5986 ndr->depth--; 5987 } 5988 ndr->depth--; 5989} 5990 5991static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2W *r) 5992{ 5993 if (flags & NDR_IN) { 5994 if (r->in.handle == NULL) { 5995 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 5996 } 5997 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 5998 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level)); 5999 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info)); 6000 if (r->in.info) { 6001 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info)); 6002 } 6003 } 6004 if (flags & NDR_OUT) { 6005 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 6006 } 6007 return NDR_ERR_SUCCESS; 6008} 6009 6010static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2W *r) 6011{ 6012 uint32_t _ptr_info; 6013 TALLOC_CTX *_mem_save_handle_0; 6014 TALLOC_CTX *_mem_save_info_0; 6015 if (flags & NDR_IN) { 6016 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6017 NDR_PULL_ALLOC(ndr, r->in.handle); 6018 } 6019 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 6020 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 6021 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 6022 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 6023 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level)); 6024 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info)); 6025 if (_ptr_info) { 6026 NDR_PULL_ALLOC(ndr, r->in.info); 6027 } else { 6028 r->in.info = NULL; 6029 } 6030 if (r->in.info) { 6031 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr); 6032 NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0); 6033 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info)); 6034 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0); 6035 } 6036 } 6037 if (flags & NDR_OUT) { 6038 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 6039 } 6040 return NDR_ERR_SUCCESS; 6041} 6042 6043_PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2W *r) 6044{ 6045 ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2W"); 6046 ndr->depth++; 6047 if (flags & NDR_SET_VALUES) { 6048 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 6049 } 6050 if (flags & NDR_IN) { 6051 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2W"); 6052 ndr->depth++; 6053 ndr_print_ptr(ndr, "handle", r->in.handle); 6054 ndr->depth++; 6055 ndr_print_policy_handle(ndr, "handle", r->in.handle); 6056 ndr->depth--; 6057 ndr_print_uint32(ndr, "info_level", r->in.info_level); 6058 ndr_print_ptr(ndr, "info", r->in.info); 6059 ndr->depth++; 6060 if (r->in.info) { 6061 ndr_print_uint8(ndr, "info", *r->in.info); 6062 } 6063 ndr->depth--; 6064 ndr->depth--; 6065 } 6066 if (flags & NDR_OUT) { 6067 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2W"); 6068 ndr->depth++; 6069 ndr_print_WERROR(ndr, "result", r->out.result); 6070 ndr->depth--; 6071 } 6072 ndr->depth--; 6073} 6074 6075static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2A *r) 6076{ 6077 if (flags & NDR_IN) { 6078 if (r->in.handle == NULL) { 6079 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 6080 } 6081 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 6082 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr, NDR_SCALARS, r->in.info_level)); 6083 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered)); 6084 } 6085 if (flags & NDR_OUT) { 6086 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered)); 6087 if (r->out.needed == NULL) { 6088 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 6089 } 6090 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed)); 6091 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 6092 } 6093 return NDR_ERR_SUCCESS; 6094} 6095 6096static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2A *r) 6097{ 6098 TALLOC_CTX *_mem_save_handle_0; 6099 TALLOC_CTX *_mem_save_needed_0; 6100 if (flags & NDR_IN) { 6101 ZERO_STRUCT(r->out); 6102 6103 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6104 NDR_PULL_ALLOC(ndr, r->in.handle); 6105 } 6106 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 6107 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 6108 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 6109 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 6110 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr, NDR_SCALARS, &r->in.info_level)); 6111 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); 6112 NDR_PULL_ALLOC(ndr, r->out.needed); 6113 ZERO_STRUCTP(r->out.needed); 6114 } 6115 if (flags & NDR_OUT) { 6116 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.offered); 6117 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered)); 6118 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6119 NDR_PULL_ALLOC(ndr, r->out.needed); 6120 } 6121 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr); 6122 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC); 6123 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed)); 6124 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC); 6125 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 6126 } 6127 return NDR_ERR_SUCCESS; 6128} 6129 6130_PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2A *r) 6131{ 6132 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2A"); 6133 ndr->depth++; 6134 if (flags & NDR_SET_VALUES) { 6135 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 6136 } 6137 if (flags & NDR_IN) { 6138 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2A"); 6139 ndr->depth++; 6140 ndr_print_ptr(ndr, "handle", r->in.handle); 6141 ndr->depth++; 6142 ndr_print_policy_handle(ndr, "handle", r->in.handle); 6143 ndr->depth--; 6144 ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level); 6145 ndr_print_uint32(ndr, "offered", r->in.offered); 6146 ndr->depth--; 6147 } 6148 if (flags & NDR_OUT) { 6149 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2A"); 6150 ndr->depth++; 6151 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered); 6152 ndr_print_ptr(ndr, "needed", r->out.needed); 6153 ndr->depth++; 6154 ndr_print_uint32(ndr, "needed", *r->out.needed); 6155 ndr->depth--; 6156 ndr_print_WERROR(ndr, "result", r->out.result); 6157 ndr->depth--; 6158 } 6159 ndr->depth--; 6160} 6161 6162static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2W *r) 6163{ 6164 if (flags & NDR_IN) { 6165 if (r->in.handle == NULL) { 6166 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 6167 } 6168 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 6169 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr, NDR_SCALARS, r->in.info_level)); 6170 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered)); 6171 } 6172 if (flags & NDR_OUT) { 6173 if (r->out.buffer == NULL) { 6174 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 6175 } 6176 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered)); 6177 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered)); 6178 if (r->out.needed == NULL) { 6179 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 6180 } 6181 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed)); 6182 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 6183 } 6184 return NDR_ERR_SUCCESS; 6185} 6186 6187static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2W *r) 6188{ 6189 TALLOC_CTX *_mem_save_handle_0; 6190 TALLOC_CTX *_mem_save_needed_0; 6191 if (flags & NDR_IN) { 6192 ZERO_STRUCT(r->out); 6193 6194 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6195 NDR_PULL_ALLOC(ndr, r->in.handle); 6196 } 6197 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 6198 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 6199 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 6200 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 6201 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr, NDR_SCALARS, &r->in.info_level)); 6202 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); 6203 if (r->in.offered > 8192) { 6204 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 6205 } 6206 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.offered); 6207 memset(r->out.buffer, 0, (r->in.offered) * sizeof(*r->out.buffer)); 6208 NDR_PULL_ALLOC(ndr, r->out.needed); 6209 ZERO_STRUCTP(r->out.needed); 6210 } 6211 if (flags & NDR_OUT) { 6212 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer)); 6213 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6214 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)); 6215 } 6216 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer))); 6217 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6218 NDR_PULL_ALLOC(ndr, r->out.needed); 6219 } 6220 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr); 6221 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC); 6222 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed)); 6223 if (*r->out.needed > 8192) { 6224 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 6225 } 6226 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC); 6227 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 6228 if (r->out.buffer) { 6229 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered)); 6230 } 6231 } 6232 return NDR_ERR_SUCCESS; 6233} 6234 6235_PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2W *r) 6236{ 6237 ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2W"); 6238 ndr->depth++; 6239 if (flags & NDR_SET_VALUES) { 6240 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 6241 } 6242 if (flags & NDR_IN) { 6243 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2W"); 6244 ndr->depth++; 6245 ndr_print_ptr(ndr, "handle", r->in.handle); 6246 ndr->depth++; 6247 ndr_print_policy_handle(ndr, "handle", r->in.handle); 6248 ndr->depth--; 6249 ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level); 6250 ndr_print_uint32(ndr, "offered", r->in.offered); 6251 ndr->depth--; 6252 } 6253 if (flags & NDR_OUT) { 6254 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2W"); 6255 ndr->depth++; 6256 ndr_print_ptr(ndr, "buffer", r->out.buffer); 6257 ndr->depth++; 6258 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered); 6259 ndr->depth--; 6260 ndr_print_ptr(ndr, "needed", r->out.needed); 6261 ndr->depth++; 6262 ndr_print_uint32(ndr, "needed", *r->out.needed); 6263 ndr->depth--; 6264 ndr_print_WERROR(ndr, "result", r->out.result); 6265 ndr->depth--; 6266 } 6267 ndr->depth--; 6268} 6269 6270static enum ndr_err_code ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatusEx *r) 6271{ 6272 if (flags & NDR_IN) { 6273 if (r->in.handle == NULL) { 6274 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 6275 } 6276 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 6277 NDR_CHECK(ndr_push_svcctl_StatusLevel(ndr, NDR_SCALARS, r->in.info_level)); 6278 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered)); 6279 } 6280 if (flags & NDR_OUT) { 6281 if (r->out.buffer == NULL) { 6282 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 6283 } 6284 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered)); 6285 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered)); 6286 if (r->out.needed == NULL) { 6287 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 6288 } 6289 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed)); 6290 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 6291 } 6292 return NDR_ERR_SUCCESS; 6293} 6294 6295static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatusEx *r) 6296{ 6297 TALLOC_CTX *_mem_save_handle_0; 6298 TALLOC_CTX *_mem_save_needed_0; 6299 if (flags & NDR_IN) { 6300 ZERO_STRUCT(r->out); 6301 6302 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6303 NDR_PULL_ALLOC(ndr, r->in.handle); 6304 } 6305 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 6306 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC); 6307 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); 6308 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); 6309 NDR_CHECK(ndr_pull_svcctl_StatusLevel(ndr, NDR_SCALARS, &r->in.info_level)); 6310 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); 6311 if (r->in.offered > 8192) { 6312 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 6313 } 6314 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.offered); 6315 memset(r->out.buffer, 0, (r->in.offered) * sizeof(*r->out.buffer)); 6316 NDR_PULL_ALLOC(ndr, r->out.needed); 6317 ZERO_STRUCTP(r->out.needed); 6318 } 6319 if (flags & NDR_OUT) { 6320 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer)); 6321 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6322 NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)); 6323 } 6324 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer))); 6325 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6326 NDR_PULL_ALLOC(ndr, r->out.needed); 6327 } 6328 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr); 6329 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC); 6330 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed)); 6331 if (*r->out.needed > 8192) { 6332 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 6333 } 6334 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC); 6335 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 6336 if (r->out.buffer) { 6337 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered)); 6338 } 6339 } 6340 return NDR_ERR_SUCCESS; 6341} 6342 6343_PUBLIC_ void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatusEx *r) 6344{ 6345 ndr_print_struct(ndr, name, "svcctl_QueryServiceStatusEx"); 6346 ndr->depth++; 6347 if (flags & NDR_SET_VALUES) { 6348 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 6349 } 6350 if (flags & NDR_IN) { 6351 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatusEx"); 6352 ndr->depth++; 6353 ndr_print_ptr(ndr, "handle", r->in.handle); 6354 ndr->depth++; 6355 ndr_print_policy_handle(ndr, "handle", r->in.handle); 6356 ndr->depth--; 6357 ndr_print_svcctl_StatusLevel(ndr, "info_level", r->in.info_level); 6358 ndr_print_uint32(ndr, "offered", r->in.offered); 6359 ndr->depth--; 6360 } 6361 if (flags & NDR_OUT) { 6362 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatusEx"); 6363 ndr->depth++; 6364 ndr_print_ptr(ndr, "buffer", r->out.buffer); 6365 ndr->depth++; 6366 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered); 6367 ndr->depth--; 6368 ndr_print_ptr(ndr, "needed", r->out.needed); 6369 ndr->depth++; 6370 ndr_print_uint32(ndr, "needed", *r->out.needed); 6371 ndr->depth--; 6372 ndr_print_WERROR(ndr, "result", r->out.result); 6373 ndr->depth--; 6374 } 6375 ndr->depth--; 6376} 6377 6378static enum ndr_err_code ndr_push_EnumServicesStatusExA(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExA *r) 6379{ 6380 if (flags & NDR_IN) { 6381 if (r->in.scmanager == NULL) { 6382 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 6383 } 6384 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager)); 6385 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level)); 6386 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type)); 6387 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state)); 6388 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered)); 6389 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle)); 6390 if (r->in.resume_handle) { 6391 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle)); 6392 } 6393 } 6394 if (flags & NDR_OUT) { 6395 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.offered)); 6396 if (r->out.needed == NULL) { 6397 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 6398 } 6399 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed)); 6400 if (r->out.service_returned == NULL) { 6401 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 6402 } 6403 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned)); 6404 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle)); 6405 if (r->out.resume_handle) { 6406 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle)); 6407 } 6408 if (r->out.group_name == NULL) { 6409 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 6410 } 6411 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.group_name)); 6412 if (*r->out.group_name) { 6413 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16))); 6414 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 6415 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16))); 6416 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.group_name, ndr_charset_length(*r->out.group_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 6417 } 6418 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 6419 } 6420 return NDR_ERR_SUCCESS; 6421} 6422 6423static enum ndr_err_code ndr_pull_EnumServicesStatusExA(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExA *r) 6424{ 6425 uint32_t _ptr_resume_handle; 6426 uint32_t _ptr_group_name; 6427 TALLOC_CTX *_mem_save_scmanager_0; 6428 TALLOC_CTX *_mem_save_needed_0; 6429 TALLOC_CTX *_mem_save_service_returned_0; 6430 TALLOC_CTX *_mem_save_resume_handle_0; 6431 TALLOC_CTX *_mem_save_group_name_0; 6432 TALLOC_CTX *_mem_save_group_name_1; 6433 if (flags & NDR_IN) { 6434 ZERO_STRUCT(r->out); 6435 6436 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6437 NDR_PULL_ALLOC(ndr, r->in.scmanager); 6438 } 6439 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr); 6440 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC); 6441 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager)); 6442 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC); 6443 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level)); 6444 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type)); 6445 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state)); 6446 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); 6447 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle)); 6448 if (_ptr_resume_handle) { 6449 NDR_PULL_ALLOC(ndr, r->in.resume_handle); 6450 } else { 6451 r->in.resume_handle = NULL; 6452 } 6453 if (r->in.resume_handle) { 6454 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 6455 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0); 6456 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle)); 6457 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0); 6458 } 6459 NDR_PULL_ALLOC(ndr, r->out.needed); 6460 ZERO_STRUCTP(r->out.needed); 6461 NDR_PULL_ALLOC(ndr, r->out.service_returned); 6462 ZERO_STRUCTP(r->out.service_returned); 6463 NDR_PULL_ALLOC(ndr, r->out.group_name); 6464 ZERO_STRUCTP(r->out.group_name); 6465 } 6466 if (flags & NDR_OUT) { 6467 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.offered); 6468 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.offered)); 6469 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6470 NDR_PULL_ALLOC(ndr, r->out.needed); 6471 } 6472 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr); 6473 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC); 6474 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed)); 6475 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC); 6476 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6477 NDR_PULL_ALLOC(ndr, r->out.service_returned); 6478 } 6479 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr); 6480 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC); 6481 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned)); 6482 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC); 6483 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle)); 6484 if (_ptr_resume_handle) { 6485 NDR_PULL_ALLOC(ndr, r->out.resume_handle); 6486 } else { 6487 r->out.resume_handle = NULL; 6488 } 6489 if (r->out.resume_handle) { 6490 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 6491 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0); 6492 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle)); 6493 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0); 6494 } 6495 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6496 NDR_PULL_ALLOC(ndr, r->out.group_name); 6497 } 6498 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 6499 NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC); 6500 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name)); 6501 if (_ptr_group_name) { 6502 NDR_PULL_ALLOC(ndr, *r->out.group_name); 6503 } else { 6504 *r->out.group_name = NULL; 6505 } 6506 if (*r->out.group_name) { 6507 _mem_save_group_name_1 = NDR_PULL_GET_MEM_CTX(ndr); 6508 NDR_PULL_SET_MEM_CTX(ndr, *r->out.group_name, 0); 6509 NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name)); 6510 NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name)); 6511 if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) { 6512 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.group_name), ndr_get_array_length(ndr, r->out.group_name)); 6513 } 6514 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t))); 6515 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.group_name, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t), CH_UTF16)); 6516 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_1, 0); 6517 } 6518 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC); 6519 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 6520 } 6521 return NDR_ERR_SUCCESS; 6522} 6523 6524_PUBLIC_ void ndr_print_EnumServicesStatusExA(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExA *r) 6525{ 6526 ndr_print_struct(ndr, name, "EnumServicesStatusExA"); 6527 ndr->depth++; 6528 if (flags & NDR_SET_VALUES) { 6529 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 6530 } 6531 if (flags & NDR_IN) { 6532 ndr_print_struct(ndr, "in", "EnumServicesStatusExA"); 6533 ndr->depth++; 6534 ndr_print_ptr(ndr, "scmanager", r->in.scmanager); 6535 ndr->depth++; 6536 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager); 6537 ndr->depth--; 6538 ndr_print_uint32(ndr, "info_level", r->in.info_level); 6539 ndr_print_uint32(ndr, "type", r->in.type); 6540 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state); 6541 ndr_print_uint32(ndr, "offered", r->in.offered); 6542 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle); 6543 ndr->depth++; 6544 if (r->in.resume_handle) { 6545 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle); 6546 } 6547 ndr->depth--; 6548 ndr->depth--; 6549 } 6550 if (flags & NDR_OUT) { 6551 ndr_print_struct(ndr, "out", "EnumServicesStatusExA"); 6552 ndr->depth++; 6553 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.offered); 6554 ndr_print_ptr(ndr, "needed", r->out.needed); 6555 ndr->depth++; 6556 ndr_print_uint32(ndr, "needed", *r->out.needed); 6557 ndr->depth--; 6558 ndr_print_ptr(ndr, "service_returned", r->out.service_returned); 6559 ndr->depth++; 6560 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned); 6561 ndr->depth--; 6562 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle); 6563 ndr->depth++; 6564 if (r->out.resume_handle) { 6565 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle); 6566 } 6567 ndr->depth--; 6568 ndr_print_ptr(ndr, "group_name", r->out.group_name); 6569 ndr->depth++; 6570 ndr_print_ptr(ndr, "group_name", *r->out.group_name); 6571 ndr->depth++; 6572 if (*r->out.group_name) { 6573 ndr_print_string(ndr, "group_name", *r->out.group_name); 6574 } 6575 ndr->depth--; 6576 ndr->depth--; 6577 ndr_print_WERROR(ndr, "result", r->out.result); 6578 ndr->depth--; 6579 } 6580 ndr->depth--; 6581} 6582 6583static enum ndr_err_code ndr_push_EnumServicesStatusExW(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExW *r) 6584{ 6585 if (flags & NDR_IN) { 6586 if (r->in.scmanager == NULL) { 6587 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 6588 } 6589 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager)); 6590 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level)); 6591 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type)); 6592 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state)); 6593 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered)); 6594 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle)); 6595 if (r->in.resume_handle) { 6596 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle)); 6597 } 6598 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.group_name)); 6599 if (r->in.group_name) { 6600 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.group_name, CH_UTF16))); 6601 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 6602 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->in.group_name, CH_UTF16))); 6603 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.group_name, ndr_charset_length(r->in.group_name, CH_UTF16), sizeof(uint16_t), CH_UTF16)); 6604 } 6605 } 6606 if (flags & NDR_OUT) { 6607 if (r->out.services == NULL) { 6608 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 6609 } 6610 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered)); 6611 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.offered)); 6612 if (r->out.needed == NULL) { 6613 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 6614 } 6615 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed)); 6616 if (r->out.service_returned == NULL) { 6617 return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); 6618 } 6619 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned)); 6620 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle)); 6621 if (r->out.resume_handle) { 6622 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle)); 6623 } 6624 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 6625 } 6626 return NDR_ERR_SUCCESS; 6627} 6628 6629static enum ndr_err_code ndr_pull_EnumServicesStatusExW(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExW *r) 6630{ 6631 uint32_t _ptr_resume_handle; 6632 uint32_t _ptr_group_name; 6633 TALLOC_CTX *_mem_save_scmanager_0; 6634 TALLOC_CTX *_mem_save_needed_0; 6635 TALLOC_CTX *_mem_save_service_returned_0; 6636 TALLOC_CTX *_mem_save_resume_handle_0; 6637 TALLOC_CTX *_mem_save_group_name_0; 6638 if (flags & NDR_IN) { 6639 ZERO_STRUCT(r->out); 6640 6641 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6642 NDR_PULL_ALLOC(ndr, r->in.scmanager); 6643 } 6644 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr); 6645 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC); 6646 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager)); 6647 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC); 6648 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level)); 6649 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type)); 6650 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state)); 6651 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered)); 6652 if (r->in.offered > 0x40000) { 6653 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 6654 } 6655 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle)); 6656 if (_ptr_resume_handle) { 6657 NDR_PULL_ALLOC(ndr, r->in.resume_handle); 6658 } else { 6659 r->in.resume_handle = NULL; 6660 } 6661 if (r->in.resume_handle) { 6662 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 6663 NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0); 6664 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle)); 6665 if (*r->in.resume_handle > 0x40000) { 6666 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 6667 } 6668 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0); 6669 } 6670 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name)); 6671 if (_ptr_group_name) { 6672 NDR_PULL_ALLOC(ndr, r->in.group_name); 6673 } else { 6674 r->in.group_name = NULL; 6675 } 6676 if (r->in.group_name) { 6677 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 6678 NDR_PULL_SET_MEM_CTX(ndr, r->in.group_name, 0); 6679 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.group_name)); 6680 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.group_name)); 6681 if (ndr_get_array_length(ndr, &r->in.group_name) > ndr_get_array_size(ndr, &r->in.group_name)) { 6682 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.group_name), ndr_get_array_length(ndr, &r->in.group_name)); 6683 } 6684 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.group_name), sizeof(uint16_t))); 6685 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.group_name, ndr_get_array_length(ndr, &r->in.group_name), sizeof(uint16_t), CH_UTF16)); 6686 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, 0); 6687 } 6688 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.offered); 6689 memset(r->out.services, 0, (r->in.offered) * sizeof(*r->out.services)); 6690 NDR_PULL_ALLOC(ndr, r->out.needed); 6691 ZERO_STRUCTP(r->out.needed); 6692 NDR_PULL_ALLOC(ndr, r->out.service_returned); 6693 ZERO_STRUCTP(r->out.service_returned); 6694 } 6695 if (flags & NDR_OUT) { 6696 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.services)); 6697 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6698 NDR_PULL_ALLOC_N(ndr, r->out.services, ndr_get_array_size(ndr, &r->out.services)); 6699 } 6700 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, ndr_get_array_size(ndr, &r->out.services))); 6701 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6702 NDR_PULL_ALLOC(ndr, r->out.needed); 6703 } 6704 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr); 6705 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC); 6706 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed)); 6707 if (*r->out.needed > 0x40000) { 6708 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 6709 } 6710 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC); 6711 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { 6712 NDR_PULL_ALLOC(ndr, r->out.service_returned); 6713 } 6714 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr); 6715 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC); 6716 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned)); 6717 if (*r->out.service_returned > 0x40000) { 6718 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 6719 } 6720 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC); 6721 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle)); 6722 if (_ptr_resume_handle) { 6723 NDR_PULL_ALLOC(ndr, r->out.resume_handle); 6724 } else { 6725 r->out.resume_handle = NULL; 6726 } 6727 if (r->out.resume_handle) { 6728 _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr); 6729 NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0); 6730 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle)); 6731 if (*r->out.resume_handle > 0x40000) { 6732 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); 6733 } 6734 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0); 6735 } 6736 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 6737 if (r->out.services) { 6738 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.services, r->in.offered)); 6739 } 6740 } 6741 return NDR_ERR_SUCCESS; 6742} 6743 6744_PUBLIC_ void ndr_print_EnumServicesStatusExW(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExW *r) 6745{ 6746 ndr_print_struct(ndr, name, "EnumServicesStatusExW"); 6747 ndr->depth++; 6748 if (flags & NDR_SET_VALUES) { 6749 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 6750 } 6751 if (flags & NDR_IN) { 6752 ndr_print_struct(ndr, "in", "EnumServicesStatusExW"); 6753 ndr->depth++; 6754 ndr_print_ptr(ndr, "scmanager", r->in.scmanager); 6755 ndr->depth++; 6756 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager); 6757 ndr->depth--; 6758 ndr_print_uint32(ndr, "info_level", r->in.info_level); 6759 ndr_print_uint32(ndr, "type", r->in.type); 6760 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state); 6761 ndr_print_uint32(ndr, "offered", r->in.offered); 6762 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle); 6763 ndr->depth++; 6764 if (r->in.resume_handle) { 6765 ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle); 6766 } 6767 ndr->depth--; 6768 ndr_print_ptr(ndr, "group_name", r->in.group_name); 6769 ndr->depth++; 6770 if (r->in.group_name) { 6771 ndr_print_string(ndr, "group_name", r->in.group_name); 6772 } 6773 ndr->depth--; 6774 ndr->depth--; 6775 } 6776 if (flags & NDR_OUT) { 6777 ndr_print_struct(ndr, "out", "EnumServicesStatusExW"); 6778 ndr->depth++; 6779 ndr_print_ptr(ndr, "services", r->out.services); 6780 ndr->depth++; 6781 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.offered); 6782 ndr->depth--; 6783 ndr_print_ptr(ndr, "needed", r->out.needed); 6784 ndr->depth++; 6785 ndr_print_uint32(ndr, "needed", *r->out.needed); 6786 ndr->depth--; 6787 ndr_print_ptr(ndr, "service_returned", r->out.service_returned); 6788 ndr->depth++; 6789 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned); 6790 ndr->depth--; 6791 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle); 6792 ndr->depth++; 6793 if (r->out.resume_handle) { 6794 ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle); 6795 } 6796 ndr->depth--; 6797 ndr_print_WERROR(ndr, "result", r->out.result); 6798 ndr->depth--; 6799 } 6800 ndr->depth--; 6801} 6802 6803static enum ndr_err_code ndr_push_svcctl_SCSendTSMessage(struct ndr_push *ndr, int flags, const struct svcctl_SCSendTSMessage *r) 6804{ 6805 if (flags & NDR_IN) { 6806 } 6807 if (flags & NDR_OUT) { 6808 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); 6809 } 6810 return NDR_ERR_SUCCESS; 6811} 6812 6813static enum ndr_err_code ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull *ndr, int flags, struct svcctl_SCSendTSMessage *r) 6814{ 6815 if (flags & NDR_IN) { 6816 } 6817 if (flags & NDR_OUT) { 6818 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); 6819 } 6820 return NDR_ERR_SUCCESS; 6821} 6822 6823_PUBLIC_ void ndr_print_svcctl_SCSendTSMessage(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSendTSMessage *r) 6824{ 6825 ndr_print_struct(ndr, name, "svcctl_SCSendTSMessage"); 6826 ndr->depth++; 6827 if (flags & NDR_SET_VALUES) { 6828 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 6829 } 6830 if (flags & NDR_IN) { 6831 ndr_print_struct(ndr, "in", "svcctl_SCSendTSMessage"); 6832 ndr->depth++; 6833 ndr->depth--; 6834 } 6835 if (flags & NDR_OUT) { 6836 ndr_print_struct(ndr, "out", "svcctl_SCSendTSMessage"); 6837 ndr->depth++; 6838 ndr_print_WERROR(ndr, "result", r->out.result); 6839 ndr->depth--; 6840 } 6841 ndr->depth--; 6842} 6843 6844static const struct ndr_interface_call svcctl_calls[] = { 6845 { 6846 "svcctl_CloseServiceHandle", 6847 sizeof(struct svcctl_CloseServiceHandle), 6848 (ndr_push_flags_fn_t) ndr_push_svcctl_CloseServiceHandle, 6849 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CloseServiceHandle, 6850 (ndr_print_function_t) ndr_print_svcctl_CloseServiceHandle, 6851 false, 6852 }, 6853 { 6854 "svcctl_ControlService", 6855 sizeof(struct svcctl_ControlService), 6856 (ndr_push_flags_fn_t) ndr_push_svcctl_ControlService, 6857 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ControlService, 6858 (ndr_print_function_t) ndr_print_svcctl_ControlService, 6859 false, 6860 }, 6861 { 6862 "svcctl_DeleteService", 6863 sizeof(struct svcctl_DeleteService), 6864 (ndr_push_flags_fn_t) ndr_push_svcctl_DeleteService, 6865 (ndr_pull_flags_fn_t) ndr_pull_svcctl_DeleteService, 6866 (ndr_print_function_t) ndr_print_svcctl_DeleteService, 6867 false, 6868 }, 6869 { 6870 "svcctl_LockServiceDatabase", 6871 sizeof(struct svcctl_LockServiceDatabase), 6872 (ndr_push_flags_fn_t) ndr_push_svcctl_LockServiceDatabase, 6873 (ndr_pull_flags_fn_t) ndr_pull_svcctl_LockServiceDatabase, 6874 (ndr_print_function_t) ndr_print_svcctl_LockServiceDatabase, 6875 false, 6876 }, 6877 { 6878 "svcctl_QueryServiceObjectSecurity", 6879 sizeof(struct svcctl_QueryServiceObjectSecurity), 6880 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceObjectSecurity, 6881 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceObjectSecurity, 6882 (ndr_print_function_t) ndr_print_svcctl_QueryServiceObjectSecurity, 6883 false, 6884 }, 6885 { 6886 "svcctl_SetServiceObjectSecurity", 6887 sizeof(struct svcctl_SetServiceObjectSecurity), 6888 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceObjectSecurity, 6889 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceObjectSecurity, 6890 (ndr_print_function_t) ndr_print_svcctl_SetServiceObjectSecurity, 6891 false, 6892 }, 6893 { 6894 "svcctl_QueryServiceStatus", 6895 sizeof(struct svcctl_QueryServiceStatus), 6896 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatus, 6897 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatus, 6898 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatus, 6899 false, 6900 }, 6901 { 6902 "svcctl_SetServiceStatus", 6903 sizeof(struct svcctl_SetServiceStatus), 6904 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceStatus, 6905 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceStatus, 6906 (ndr_print_function_t) ndr_print_svcctl_SetServiceStatus, 6907 false, 6908 }, 6909 { 6910 "svcctl_UnlockServiceDatabase", 6911 sizeof(struct svcctl_UnlockServiceDatabase), 6912 (ndr_push_flags_fn_t) ndr_push_svcctl_UnlockServiceDatabase, 6913 (ndr_pull_flags_fn_t) ndr_pull_svcctl_UnlockServiceDatabase, 6914 (ndr_print_function_t) ndr_print_svcctl_UnlockServiceDatabase, 6915 false, 6916 }, 6917 { 6918 "svcctl_NotifyBootConfigStatus", 6919 sizeof(struct svcctl_NotifyBootConfigStatus), 6920 (ndr_push_flags_fn_t) ndr_push_svcctl_NotifyBootConfigStatus, 6921 (ndr_pull_flags_fn_t) ndr_pull_svcctl_NotifyBootConfigStatus, 6922 (ndr_print_function_t) ndr_print_svcctl_NotifyBootConfigStatus, 6923 false, 6924 }, 6925 { 6926 "svcctl_SCSetServiceBitsW", 6927 sizeof(struct svcctl_SCSetServiceBitsW), 6928 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsW, 6929 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsW, 6930 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsW, 6931 false, 6932 }, 6933 { 6934 "svcctl_ChangeServiceConfigW", 6935 sizeof(struct svcctl_ChangeServiceConfigW), 6936 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigW, 6937 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigW, 6938 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigW, 6939 false, 6940 }, 6941 { 6942 "svcctl_CreateServiceW", 6943 sizeof(struct svcctl_CreateServiceW), 6944 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceW, 6945 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceW, 6946 (ndr_print_function_t) ndr_print_svcctl_CreateServiceW, 6947 false, 6948 }, 6949 { 6950 "svcctl_EnumDependentServicesW", 6951 sizeof(struct svcctl_EnumDependentServicesW), 6952 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesW, 6953 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesW, 6954 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesW, 6955 false, 6956 }, 6957 { 6958 "svcctl_EnumServicesStatusW", 6959 sizeof(struct svcctl_EnumServicesStatusW), 6960 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusW, 6961 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusW, 6962 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusW, 6963 false, 6964 }, 6965 { 6966 "svcctl_OpenSCManagerW", 6967 sizeof(struct svcctl_OpenSCManagerW), 6968 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerW, 6969 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerW, 6970 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerW, 6971 false, 6972 }, 6973 { 6974 "svcctl_OpenServiceW", 6975 sizeof(struct svcctl_OpenServiceW), 6976 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceW, 6977 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceW, 6978 (ndr_print_function_t) ndr_print_svcctl_OpenServiceW, 6979 false, 6980 }, 6981 { 6982 "svcctl_QueryServiceConfigW", 6983 sizeof(struct svcctl_QueryServiceConfigW), 6984 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigW, 6985 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigW, 6986 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigW, 6987 false, 6988 }, 6989 { 6990 "svcctl_QueryServiceLockStatusW", 6991 sizeof(struct svcctl_QueryServiceLockStatusW), 6992 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusW, 6993 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusW, 6994 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusW, 6995 false, 6996 }, 6997 { 6998 "svcctl_StartServiceW", 6999 sizeof(struct svcctl_StartServiceW), 7000 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceW, 7001 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceW, 7002 (ndr_print_function_t) ndr_print_svcctl_StartServiceW, 7003 false, 7004 }, 7005 { 7006 "svcctl_GetServiceDisplayNameW", 7007 sizeof(struct svcctl_GetServiceDisplayNameW), 7008 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameW, 7009 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameW, 7010 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameW, 7011 false, 7012 }, 7013 { 7014 "svcctl_GetServiceKeyNameW", 7015 sizeof(struct svcctl_GetServiceKeyNameW), 7016 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameW, 7017 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameW, 7018 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameW, 7019 false, 7020 }, 7021 { 7022 "svcctl_SCSetServiceBitsA", 7023 sizeof(struct svcctl_SCSetServiceBitsA), 7024 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsA, 7025 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsA, 7026 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsA, 7027 false, 7028 }, 7029 { 7030 "svcctl_ChangeServiceConfigA", 7031 sizeof(struct svcctl_ChangeServiceConfigA), 7032 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigA, 7033 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigA, 7034 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigA, 7035 false, 7036 }, 7037 { 7038 "svcctl_CreateServiceA", 7039 sizeof(struct svcctl_CreateServiceA), 7040 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceA, 7041 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceA, 7042 (ndr_print_function_t) ndr_print_svcctl_CreateServiceA, 7043 false, 7044 }, 7045 { 7046 "svcctl_EnumDependentServicesA", 7047 sizeof(struct svcctl_EnumDependentServicesA), 7048 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesA, 7049 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesA, 7050 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesA, 7051 false, 7052 }, 7053 { 7054 "svcctl_EnumServicesStatusA", 7055 sizeof(struct svcctl_EnumServicesStatusA), 7056 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusA, 7057 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusA, 7058 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusA, 7059 false, 7060 }, 7061 { 7062 "svcctl_OpenSCManagerA", 7063 sizeof(struct svcctl_OpenSCManagerA), 7064 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerA, 7065 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerA, 7066 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerA, 7067 false, 7068 }, 7069 { 7070 "svcctl_OpenServiceA", 7071 sizeof(struct svcctl_OpenServiceA), 7072 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceA, 7073 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceA, 7074 (ndr_print_function_t) ndr_print_svcctl_OpenServiceA, 7075 false, 7076 }, 7077 { 7078 "svcctl_QueryServiceConfigA", 7079 sizeof(struct svcctl_QueryServiceConfigA), 7080 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigA, 7081 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigA, 7082 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigA, 7083 false, 7084 }, 7085 { 7086 "svcctl_QueryServiceLockStatusA", 7087 sizeof(struct svcctl_QueryServiceLockStatusA), 7088 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusA, 7089 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusA, 7090 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusA, 7091 false, 7092 }, 7093 { 7094 "svcctl_StartServiceA", 7095 sizeof(struct svcctl_StartServiceA), 7096 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceA, 7097 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceA, 7098 (ndr_print_function_t) ndr_print_svcctl_StartServiceA, 7099 false, 7100 }, 7101 { 7102 "svcctl_GetServiceDisplayNameA", 7103 sizeof(struct svcctl_GetServiceDisplayNameA), 7104 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameA, 7105 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameA, 7106 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameA, 7107 false, 7108 }, 7109 { 7110 "svcctl_GetServiceKeyNameA", 7111 sizeof(struct svcctl_GetServiceKeyNameA), 7112 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameA, 7113 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameA, 7114 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameA, 7115 false, 7116 }, 7117 { 7118 "svcctl_GetCurrentGroupeStateW", 7119 sizeof(struct svcctl_GetCurrentGroupeStateW), 7120 (ndr_push_flags_fn_t) ndr_push_svcctl_GetCurrentGroupeStateW, 7121 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetCurrentGroupeStateW, 7122 (ndr_print_function_t) ndr_print_svcctl_GetCurrentGroupeStateW, 7123 false, 7124 }, 7125 { 7126 "svcctl_EnumServiceGroupW", 7127 sizeof(struct svcctl_EnumServiceGroupW), 7128 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServiceGroupW, 7129 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServiceGroupW, 7130 (ndr_print_function_t) ndr_print_svcctl_EnumServiceGroupW, 7131 false, 7132 }, 7133 { 7134 "svcctl_ChangeServiceConfig2A", 7135 sizeof(struct svcctl_ChangeServiceConfig2A), 7136 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2A, 7137 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2A, 7138 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2A, 7139 false, 7140 }, 7141 { 7142 "svcctl_ChangeServiceConfig2W", 7143 sizeof(struct svcctl_ChangeServiceConfig2W), 7144 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2W, 7145 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2W, 7146 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2W, 7147 false, 7148 }, 7149 { 7150 "svcctl_QueryServiceConfig2A", 7151 sizeof(struct svcctl_QueryServiceConfig2A), 7152 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2A, 7153 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2A, 7154 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2A, 7155 false, 7156 }, 7157 { 7158 "svcctl_QueryServiceConfig2W", 7159 sizeof(struct svcctl_QueryServiceConfig2W), 7160 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2W, 7161 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2W, 7162 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2W, 7163 false, 7164 }, 7165 { 7166 "svcctl_QueryServiceStatusEx", 7167 sizeof(struct svcctl_QueryServiceStatusEx), 7168 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatusEx, 7169 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatusEx, 7170 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatusEx, 7171 false, 7172 }, 7173 { 7174 "EnumServicesStatusExA", 7175 sizeof(struct EnumServicesStatusExA), 7176 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExA, 7177 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExA, 7178 (ndr_print_function_t) ndr_print_EnumServicesStatusExA, 7179 false, 7180 }, 7181 { 7182 "EnumServicesStatusExW", 7183 sizeof(struct EnumServicesStatusExW), 7184 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExW, 7185 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExW, 7186 (ndr_print_function_t) ndr_print_EnumServicesStatusExW, 7187 false, 7188 }, 7189 { 7190 "svcctl_SCSendTSMessage", 7191 sizeof(struct svcctl_SCSendTSMessage), 7192 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSendTSMessage, 7193 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSendTSMessage, 7194 (ndr_print_function_t) ndr_print_svcctl_SCSendTSMessage, 7195 false, 7196 }, 7197 { NULL, 0, NULL, NULL, NULL, false } 7198}; 7199 7200static const char * const svcctl_endpoint_strings[] = { 7201 "ncacn_np:[\\pipe\\svcctl]", 7202 "ncalrpc:", 7203}; 7204 7205static const struct ndr_interface_string_array svcctl_endpoints = { 7206 .count = 2, 7207 .names = svcctl_endpoint_strings 7208}; 7209 7210static const char * const svcctl_authservice_strings[] = { 7211 "host", 7212}; 7213 7214static const struct ndr_interface_string_array svcctl_authservices = { 7215 .count = 1, 7216 .names = svcctl_authservice_strings 7217}; 7218 7219 7220const struct ndr_interface_table ndr_table_svcctl = { 7221 .name = "svcctl", 7222 .syntax_id = { 7223 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}}, 7224 NDR_SVCCTL_VERSION 7225 }, 7226 .helpstring = NDR_SVCCTL_HELPSTRING, 7227 .num_calls = 44, 7228 .calls = svcctl_calls, 7229 .endpoints = &svcctl_endpoints, 7230 .authservices = &svcctl_authservices 7231}; 7232 7233