1#include "idl_types.h" 2 3/* 4 wkssvc interface definitions 5*/ 6 7import "srvsvc.idl", "lsa.idl"; 8 9[ uuid("6bffd098-a112-3610-9833-46c3f87e345a"), 10 version(1.0), 11 pointer_default(unique), 12 helpstring("Workstation Service"), 13 endpoint("ncacn_np:[\\pipe\\wkssvc]","ncacn_ip_tcp:","ncalrpc:") 14] interface wkssvc 15{ 16 typedef [v1_enum] enum srvsvc_PlatformId srvsvc_PlatformId; 17 18#define BOOL uint32 19 20 /******************/ 21 /* Function: 0x00 */ 22 23 typedef struct { 24 srvsvc_PlatformId platform_id; 25 [string,charset(UTF16)] uint16 *server_name; 26 [string,charset(UTF16)] uint16 *domain_name; 27 uint32 version_major; 28 uint32 version_minor; 29 } wkssvc_NetWkstaInfo100; 30 31 typedef struct { 32 srvsvc_PlatformId platform_id; 33 [string,charset(UTF16)] uint16 *server_name; 34 [string,charset(UTF16)] uint16 *domain_name; 35 uint32 version_major; 36 uint32 version_minor; 37 [string,charset(UTF16)] uint16 *lan_root; 38 } wkssvc_NetWkstaInfo101; 39 40 typedef struct { 41 srvsvc_PlatformId platform_id; 42 [string,charset(UTF16)] uint16 *server_name; 43 [string,charset(UTF16)] uint16 *domain_name; 44 uint32 version_major; 45 uint32 version_minor; 46 [string,charset(UTF16)] uint16 *lan_root; 47 uint32 logged_on_users; 48 } wkssvc_NetWkstaInfo102; 49 50 /* FIXME: 302, 402 */ 51 52 typedef struct { 53 uint32 char_wait; 54 uint32 collection_time; 55 uint32 maximum_collection_count; 56 uint32 keep_connection; 57 uint32 max_commands; 58 uint32 session_timeout; 59 uint32 size_char_buf; 60 uint32 max_threads; 61 uint32 lock_quota; 62 uint32 lock_increment; 63 uint32 lock_maximum; 64 uint32 pipe_increment; 65 uint32 pipe_maximum; 66 uint32 cache_file_timeout; 67 uint32 dormant_file_limit; 68 uint32 read_ahead_throughput; 69 uint32 num_mailslot_buffers; 70 uint32 num_srv_announce_buffers; 71 uint32 max_illegal_dgram_events; 72 uint32 dgram_event_reset_freq; 73 BOOL log_election_packets; 74 BOOL use_opportunistic_locking; 75 BOOL use_unlock_behind; 76 BOOL use_close_behind; 77 BOOL buf_named_pipes; 78 BOOL use_lock_read_unlock; 79 BOOL utilize_nt_caching; 80 BOOL use_raw_read; 81 BOOL use_raw_write; 82 BOOL use_write_raw_data; 83 BOOL use_encryption; 84 BOOL buf_files_deny_write; 85 BOOL buf_read_only_files; 86 BOOL force_core_create_mode; 87 BOOL use_512_byte_max_transfer; 88 } wkssvc_NetWkstaInfo502; 89 90 typedef struct { 91 uint32 char_wait; 92 } wkssvc_NetWkstaInfo1010; 93 94 typedef struct { 95 uint32 collection_time; 96 } wkssvc_NetWkstaInfo1011; 97 98 typedef struct { 99 uint32 maximum_collection_count; 100 } wkssvc_NetWkstaInfo1012; 101 102 typedef struct { 103 uint32 keep_connection; 104 } wkssvc_NetWkstaInfo1013; 105 106 typedef struct { 107 uint32 session_timeout; 108 } wkssvc_NetWkstaInfo1018; 109 110 typedef struct { 111 uint32 size_char_buf; 112 } wkssvc_NetWkstaInfo1023; 113 114 typedef struct { 115 uint32 errorlog_sz; 116 } wkssvc_NetWkstaInfo1027; 117 118 /* downlevel */ 119 typedef struct { 120 uint32 print_buf_time; 121 } wkssvc_NetWkstaInfo1028; 122 123 /* downlevel */ 124 typedef struct { 125 uint32 wrk_heuristics; 126 } wkssvc_NetWkstaInfo1032; 127 128 typedef struct { 129 uint32 max_threads; 130 } wkssvc_NetWkstaInfo1033; 131 132 typedef struct { 133 uint32 lock_quota; 134 } wkssvc_NetWkstaInfo1041; 135 136 typedef struct { 137 uint32 lock_increment; 138 } wkssvc_NetWkstaInfo1042; 139 140 typedef struct { 141 uint32 lock_maximum; 142 } wkssvc_NetWkstaInfo1043; 143 144 typedef struct { 145 uint32 pipe_increment; 146 } wkssvc_NetWkstaInfo1044; 147 148 typedef struct { 149 uint32 pipe_maximum; 150 } wkssvc_NetWkstaInfo1045; 151 152 typedef struct { 153 uint32 dormant_file_limit; 154 } wkssvc_NetWkstaInfo1046; 155 156 typedef struct { 157 uint32 cache_file_timeout; 158 } wkssvc_NetWkstaInfo1047; 159 160 typedef struct { 161 uint32 use_opportunistic_locking; 162 } wkssvc_NetWkstaInfo1048; 163 164 typedef struct { 165 uint32 use_unlock_behind; 166 } wkssvc_NetWkstaInfo1049; 167 168 typedef struct { 169 uint32 use_close_behind; 170 } wkssvc_NetWkstaInfo1050; 171 172 typedef struct { 173 uint32 buf_named_pipes; 174 } wkssvc_NetWkstaInfo1051; 175 176 typedef struct { 177 uint32 use_lock_read_unlock; 178 } wkssvc_NetWkstaInfo1052; 179 180 typedef struct { 181 uint32 utilize_nt_caching; 182 } wkssvc_NetWkstaInfo1053; 183 184 typedef struct { 185 uint32 use_raw_read; 186 } wkssvc_NetWkstaInfo1054; 187 188 typedef struct { 189 uint32 use_raw_write; 190 } wkssvc_NetWkstaInfo1055; 191 192 typedef struct { 193 uint32 use_write_raw_data; 194 } wkssvc_NetWkstaInfo1056; 195 196 typedef struct { 197 uint32 use_encryption; 198 } wkssvc_NetWkstaInfo1057; 199 200 typedef struct { 201 uint32 buf_files_deny_write; 202 } wkssvc_NetWkstaInfo1058; 203 204 typedef struct { 205 uint32 buf_read_only_files; 206 } wkssvc_NetWkstaInfo1059; 207 208 typedef struct { 209 uint32 force_core_create_mode; 210 } wkssvc_NetWkstaInfo1060; 211 212 typedef struct { 213 uint32 use_512_byte_max_transfer; 214 } wkssvc_NetWkstaInfo1061; 215 216 typedef struct { 217 uint32 read_ahead_throughput; 218 } wkssvc_NetWkstaInfo1062; 219 220 typedef union { 221 [case(100)] wkssvc_NetWkstaInfo100 *info100; 222 [case(101)] wkssvc_NetWkstaInfo101 *info101; 223 [case(102)] wkssvc_NetWkstaInfo102 *info102; 224 [case(502)] wkssvc_NetWkstaInfo502 *info502; 225 [case(1010)] wkssvc_NetWkstaInfo1010 *info1010; 226 [case(1011)] wkssvc_NetWkstaInfo1011 *info1011; 227 [case(1012)] wkssvc_NetWkstaInfo1012 *info1012; 228 [case(1013)] wkssvc_NetWkstaInfo1013 *info1013; 229 [case(1018)] wkssvc_NetWkstaInfo1018 *info1018; 230 [case(1023)] wkssvc_NetWkstaInfo1023 *info1023; 231 [case(1027)] wkssvc_NetWkstaInfo1027 *info1027; 232 [case(1028)] wkssvc_NetWkstaInfo1028 *info1028; 233 [case(1032)] wkssvc_NetWkstaInfo1032 *info1032; 234 [case(1033)] wkssvc_NetWkstaInfo1033 *info1033; 235 [case(1041)] wkssvc_NetWkstaInfo1041 *info1041; 236 [case(1042)] wkssvc_NetWkstaInfo1042 *info1042; 237 [case(1043)] wkssvc_NetWkstaInfo1043 *info1043; 238 [case(1044)] wkssvc_NetWkstaInfo1044 *info1044; 239 [case(1045)] wkssvc_NetWkstaInfo1045 *info1045; 240 [case(1046)] wkssvc_NetWkstaInfo1046 *info1046; 241 [case(1047)] wkssvc_NetWkstaInfo1047 *info1047; 242 [case(1048)] wkssvc_NetWkstaInfo1048 *info1048; 243 [case(1049)] wkssvc_NetWkstaInfo1049 *info1049; 244 [case(1050)] wkssvc_NetWkstaInfo1050 *info1050; 245 [case(1051)] wkssvc_NetWkstaInfo1051 *info1051; 246 [case(1052)] wkssvc_NetWkstaInfo1052 *info1052; 247 [case(1053)] wkssvc_NetWkstaInfo1053 *info1053; 248 [case(1054)] wkssvc_NetWkstaInfo1054 *info1054; 249 [case(1055)] wkssvc_NetWkstaInfo1055 *info1055; 250 [case(1056)] wkssvc_NetWkstaInfo1056 *info1056; 251 [case(1057)] wkssvc_NetWkstaInfo1057 *info1057; 252 [case(1058)] wkssvc_NetWkstaInfo1058 *info1058; 253 [case(1059)] wkssvc_NetWkstaInfo1059 *info1059; 254 [case(1060)] wkssvc_NetWkstaInfo1060 *info1060; 255 [case(1061)] wkssvc_NetWkstaInfo1061 *info1061; 256 [case(1062)] wkssvc_NetWkstaInfo1062 *info1062; 257 [default] ; 258 } wkssvc_NetWkstaInfo; 259 260 WERROR wkssvc_NetWkstaGetInfo( 261 [in,unique] [string,charset(UTF16)] uint16 *server_name, 262 [in] uint32 level, 263 [out,switch_is(level),ref] wkssvc_NetWkstaInfo *info 264 ); 265 266 267 /******************/ 268 /* Function: 0x01 */ 269 WERROR wkssvc_NetWkstaSetInfo( 270 [in,unique] [string,charset(UTF16)] uint16 *server_name, 271 [in] uint32 level, 272 [in,switch_is(level),ref] wkssvc_NetWkstaInfo *info, 273 [in,out,ref] uint32 *parm_error 274 ); 275 276 277 /*****************************/ 278 /* Function 0x02 */ 279 typedef struct { 280 [string,charset(UTF16)] uint16 *user_name; 281 } wkssvc_NetrWkstaUserInfo0; 282 283 typedef struct { 284 uint32 entries_read; 285 [size_is(entries_read)] wkssvc_NetrWkstaUserInfo0 *user0; 286 } wkssvc_NetWkstaEnumUsersCtr0; 287 288 typedef struct { 289 [string,charset(UTF16)] uint16 *user_name; 290 [string,charset(UTF16)] uint16 *logon_domain; 291 [string,charset(UTF16)] uint16 *other_domains; 292 [string,charset(UTF16)] uint16 *logon_server; 293 } wkssvc_NetrWkstaUserInfo1; 294 295 typedef struct { 296 uint32 entries_read; 297 [size_is(entries_read)] wkssvc_NetrWkstaUserInfo1 *user1; 298 } wkssvc_NetWkstaEnumUsersCtr1; 299 300 typedef [switch_type(uint32)] union { 301 [case(0)] wkssvc_NetWkstaEnumUsersCtr0 *user0; 302 [case(1)] wkssvc_NetWkstaEnumUsersCtr1 *user1; 303 } wkssvc_NetWkstaEnumUsersCtr; 304 305 typedef struct { 306 uint32 level; 307 [switch_is(level)] wkssvc_NetWkstaEnumUsersCtr ctr; 308 } wkssvc_NetWkstaEnumUsersInfo; 309 310 WERROR wkssvc_NetWkstaEnumUsers( 311 [in,unique] [string,charset(UTF16)] uint16 *server_name, 312 [in,out,ref] wkssvc_NetWkstaEnumUsersInfo *info, 313 [in] uint32 prefmaxlen, 314 [out,ref] uint32 *entries_read, 315 [in,out,unique] uint32 *resume_handle 316 ); 317 318 /*****************************/ 319 /* Function 0x03 */ 320 typedef struct { 321 [string,charset(UTF16)] uint16 *other_domains; 322 } wkssvc_NetrWkstaUserInfo1101; 323 324 typedef [switch_type(uint32)] union { 325 [case(0)] wkssvc_NetrWkstaUserInfo0 *info0; 326 [case(1)] wkssvc_NetrWkstaUserInfo1 *info1; 327 [case(1101)] wkssvc_NetrWkstaUserInfo1101 *info1101; 328 } wkssvc_NetrWkstaUserInfo; 329 330 WERROR wkssvc_NetrWkstaUserGetInfo( 331 [in,unique] [string,charset(UTF16)] uint16 *unknown, 332 [in] uint32 level, 333 [out,ref] [switch_is(level)] wkssvc_NetrWkstaUserInfo *info 334 ); 335 336 /*****************************/ 337 /* Function 0x04 */ 338 WERROR wkssvc_NetrWkstaUserSetInfo( 339 [in,unique] [string,charset(UTF16)] uint16 *unknown, 340 [in] uint32 level, 341 [in,ref] [switch_is(level)] wkssvc_NetrWkstaUserInfo *info, 342 [in,out,unique] uint32 *parm_err 343 ); 344 345 /*****************************/ 346 /* Function 0x05 */ 347 348 typedef struct { 349 uint32 quality_of_service; 350 uint32 vc_count; 351 [string,charset(UTF16)] uint16 *name; 352 [string,charset(UTF16)] uint16 *address; 353 uint32 wan_link; 354 } wkssvc_NetWkstaTransportInfo0; 355 356 typedef struct { 357 uint32 count; 358 [size_is(count)] wkssvc_NetWkstaTransportInfo0 *array; 359 } wkssvc_NetWkstaTransportCtr0; 360 361 typedef union { 362 [case(0)] wkssvc_NetWkstaTransportCtr0 *ctr0; 363 } wkssvc_NetWkstaTransportCtr; 364 365 typedef struct { 366 uint32 level; 367 [switch_is(level)] wkssvc_NetWkstaTransportCtr ctr; 368 } wkssvc_NetWkstaTransportInfo; 369 370 WERROR wkssvc_NetWkstaTransportEnum ( 371 [in,unique] [string,charset(UTF16)] uint16 *server_name, 372 [in,out,ref] wkssvc_NetWkstaTransportInfo *info, 373 [in] uint32 max_buffer, 374 [out,ref] uint32 *total_entries, 375 [in,out,unique] uint32 *resume_handle 376 ); 377 378 /*****************************/ 379 /* Function 0x06 */ 380 /* only supported on NT */ 381 WERROR wkssvc_NetrWkstaTransportAdd( 382 [in,unique] [string,charset(UTF16)] uint16 *server_name, 383 [in] uint32 level, /* must be 0 */ 384 [in,ref] wkssvc_NetWkstaTransportInfo0 *info0, 385 [in,out,unique] uint32 *parm_err 386 ); 387 388 /*****************************/ 389 /* Function 0x07 */ 390 /* only supported on NT */ 391 WERROR wkssvc_NetrWkstaTransportDel( 392 [in,unique] [string,charset(UTF16)] uint16 *server_name, 393 [in,unique] [string,charset(UTF16)] uint16 *transport_name, 394 [in] uint32 unknown3 395 ); 396 397 /*****************************/ 398 /* Function 0x08 */ 399 typedef struct { 400 [string,charset(UTF16)] uint16 *unknown1; 401 [string,charset(UTF16)] uint16 *unknown2; 402 } wkssvc_NetrUseInfo3; 403 404 typedef struct { 405 [string,charset(UTF16)] uint16 *local; 406 [string,charset(UTF16)] uint16 *remote; 407 [string,charset(UTF16)] uint16 *password; 408 uint32 status; 409 uint32 asg_type; 410 uint32 ref_count; 411 uint32 use_count; 412 [string,charset(UTF16)] uint16 *user_name; 413 [string,charset(UTF16)] uint16 *domain_name; 414 } wkssvc_NetrUseInfo2; 415 416 typedef struct { 417 [string,charset(UTF16)] uint16 *local; 418 [string,charset(UTF16)] uint16 *remote; 419 [string,charset(UTF16)] uint16 *password; 420 uint32 status; 421 uint32 asg_type; 422 uint32 ref_count; 423 uint32 use_count; 424 } wkssvc_NetrUseInfo1; 425 426 typedef struct { 427 [string,charset(UTF16)] uint16 *local; 428 [string,charset(UTF16)] uint16 *remote; 429 } wkssvc_NetrUseInfo0; 430 431 typedef [switch_type(uint32)] union { 432 [case(0)] wkssvc_NetrUseInfo0 *info0; 433 [case(1)] wkssvc_NetrUseInfo1 *info1; 434 [case(2)] wkssvc_NetrUseInfo2 *info2; 435 [case(3)] wkssvc_NetrUseInfo3 *info3; 436 } wkssvc_NetrUseGetInfoCtr; 437 438 WERROR wkssvc_NetrUseAdd( 439 [in,unique] [string,charset(UTF16)] uint16 *server_name, 440 [in] uint32 level, 441 [in,ref] [switch_is(level)] wkssvc_NetrUseGetInfoCtr *ctr, 442 [in,out,unique] uint32 *parm_err 443 ); 444 445 /*****************************/ 446 /* Function 0x09 */ 447 WERROR wkssvc_NetrUseGetInfo( 448 [in,unique] [string,charset(UTF16)] uint16 *server_name, 449 [in,ref] [string,charset(UTF16)] uint16 *use_name, 450 [in] uint32 level, 451 [out,ref] [switch_is(level)] wkssvc_NetrUseGetInfoCtr *ctr 452 ); 453 454 /*****************************/ 455 /* Function 0x0a */ 456 WERROR wkssvc_NetrUseDel( 457 [in,unique] [string,charset(UTF16)] uint16 *server_name, 458 [in,ref] [string,charset(UTF16)] uint16 *use_name, 459 [in] uint32 force_cond 460 ); 461 462 /*****************************/ 463 /* Function 0x0b */ 464 typedef struct { 465 uint32 count; 466 [size_is(count)] wkssvc_NetrUseInfo2 *array; 467 } wkssvc_NetrUseEnumCtr2; 468 469 typedef struct { 470 uint32 count; 471 [size_is(count)] wkssvc_NetrUseInfo1 *array; 472 } wkssvc_NetrUseEnumCtr1; 473 474 typedef struct { 475 uint32 count; 476 [size_is(count)] wkssvc_NetrUseInfo0 *array; 477 } wkssvc_NetrUseEnumCtr0; 478 479 typedef [switch_type(uint32)] union { 480 [case(0)] wkssvc_NetrUseEnumCtr0 *ctr0; 481 [case(1)] wkssvc_NetrUseEnumCtr1 *ctr1; 482 [case(2)] wkssvc_NetrUseEnumCtr2 *ctr2; 483 } wkssvc_NetrUseEnumCtr; 484 485 typedef struct { 486 uint32 level; 487 [switch_is(level)] wkssvc_NetrUseEnumCtr ctr; 488 } wkssvc_NetrUseEnumInfo; 489 490 WERROR wkssvc_NetrUseEnum( 491 [in,unique] [string,charset(UTF16)] uint16 *server_name, 492 [in,out,ref] wkssvc_NetrUseEnumInfo *info, 493 [in] uint32 prefmaxlen, 494 [out,ref] uint32 *entries_read, 495 [in,out,unique] uint32 *resume_handle 496 ); 497 498 /*****************************/ 499 /* Function 0x0c */ 500 WERROR wkssvc_NetrMessageBufferSend( 501 [in,unique] [string,charset(UTF16)] uint16 *server_name, 502 [in,ref] [string,charset(UTF16)] uint16 *message_name, 503 [in,unique] [string,charset(UTF16)] uint16 *message_sender_name, 504 [in,ref] [size_is(message_size)] uint8 *message_buffer, 505 [in] uint32 message_size 506 ); 507 508 /*****************************/ 509 /* Function 0x0d */ 510 typedef struct { 511 hyper unknown1; 512 hyper unknown2; 513 hyper unknown3; 514 hyper unknown4; 515 hyper unknown5; 516 hyper unknown6; 517 hyper unknown7; 518 hyper unknown8; 519 hyper unknown9; 520 hyper unknown10; 521 hyper unknown11; 522 hyper unknown12; 523 hyper unknown13; 524 uint32 unknown14; 525 uint32 unknown15; 526 uint32 unknown16; 527 uint32 unknown17; 528 uint32 unknown18; 529 uint32 unknown19; 530 uint32 unknown20; 531 uint32 unknown21; 532 uint32 unknown22; 533 uint32 unknown23; 534 uint32 unknown24; 535 uint32 unknown25; 536 uint32 unknown26; 537 uint32 unknown27; 538 uint32 unknown28; 539 uint32 unknown29; 540 uint32 unknown30; 541 uint32 unknown31; 542 uint32 unknown32; 543 uint32 unknown33; 544 uint32 unknown34; 545 uint32 unknown35; 546 uint32 unknown36; 547 uint32 unknown37; 548 uint32 unknown38; 549 uint32 unknown39; 550 uint32 unknown40; 551 } wkssvc_NetrWorkstationStatistics; 552 553 WERROR wkssvc_NetrWorkstationStatisticsGet( 554 [in,unique] [string,charset(UTF16)] uint16 *server_name, 555 [in,unique] [string,charset(UTF16)] uint16 *unknown2, 556 [in] uint32 unknown3, 557 [in] uint32 unknown4, 558 [out,ref] wkssvc_NetrWorkstationStatistics **info 559 ); 560 561 /*****************************/ 562 /* Function 0x0e */ 563 WERROR wkssvc_NetrLogonDomainNameAdd( 564 [in,ref] [string,charset(UTF16)] uint16 *domain_name 565 ); 566 567 /*****************************/ 568 /* Function 0x0f */ 569 WERROR wkssvc_NetrLogonDomainNameDel( 570 [in,ref] [string,charset(UTF16)] uint16 *domain_name 571 ); 572 573 /*****************************/ 574 /* Function 0x10 */ 575 WERROR wkssvc_NetrJoinDomain( 576 [in,unique] [string,charset(UTF16)] uint16 *server_name, 577 [in,ref] [string,charset(UTF16)] uint16 *domain_name, 578 [in,unique] [string,charset(UTF16)] uint16 *account_ou, 579 [in,unique] [string,charset(UTF16)] uint16 *Account, 580 [in,unique] [string,charset(UTF16)] uint16 *password, 581 [in] wkssvc_joinflags join_flags 582 ); 583 584 /*****************************/ 585 /* Function 0x11 */ 586 WERROR wkssvc_NetrUnjoinDomain( 587 [in,unique] [string,charset(UTF16)] uint16 *server_name, 588 [in,unique] [string,charset(UTF16)] uint16 *Account, 589 [in,unique] [string,charset(UTF16)] uint16 *password, 590 [in] wkssvc_joinflags unjoin_flags 591 ); 592 593 /*****************************/ 594 /* Function 0x12 */ 595 typedef [bitmap32bit] bitmap { 596 /* TRUE: create the account in the domain */ 597 WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002 598 } wkssvc_renameflags; 599 600 WERROR wkssvc_NetrRenameMachineInDomain( 601 [in,unique] [string,charset(UTF16)] uint16 *server_name, 602 [in,unique] [string,charset(UTF16)] uint16 *NewMachineName, 603 [in,unique] [string,charset(UTF16)] uint16 *Account, 604 [in,unique] [string,charset(UTF16)] uint16 *password, 605 [in] wkssvc_renameflags RenameOptions 606 ); 607 608 /*****************************/ 609 /* Function 0x13 */ 610 typedef enum { 611 NetSetupUnknown = 0, 612 NetSetupMachine = 1, 613 NetSetupWorkgroup = 2, 614 NetSetupDomain = 3, 615 NetSetupNonExistentDomain = 4, 616 NetSetupDnsMachine = 5 617 } wkssvc_NetValidateNameType; 618 619 WERROR wkssvc_NetrValidateName( 620 [in,unique] [string,charset(UTF16)] uint16 *server_name, 621 [in,ref] [string,charset(UTF16)] uint16 *name, 622 [in,unique] [string,charset(UTF16)] uint16 *Account, 623 [in,unique] [string,charset(UTF16)] uint16 *Password, 624 [in] wkssvc_NetValidateNameType name_type 625 ); 626 627 /*****************************/ 628 /* Function 0x14 */ 629 typedef enum { 630 NET_SETUP_UNKNOWN_STATUS = 0, 631 NET_SETUP_UNJOINED = 1, 632 NET_SETUP_WORKGROUP_NAME = 2, 633 NET_SETUP_DOMAIN_NAME = 3 634 } wkssvc_NetJoinStatus; 635 636 WERROR wkssvc_NetrGetJoinInformation( 637 [in,unique] [string,charset(UTF16)] uint16 *server_name, 638 [in,out,ref] [string,charset(UTF16)] uint16 **name_buffer, 639 [out,ref] wkssvc_NetJoinStatus *name_type 640 ); 641 642 /*****************************/ 643 /* Function 0x15 */ 644 WERROR wkssvc_NetrGetJoinableOus( 645 [in,unique] [string,charset(UTF16)] uint16 *server_name, 646 [in,ref] [string,charset(UTF16)] uint16 *domain_name, 647 [in,unique] [string,charset(UTF16)] uint16 *Account, 648 [in,unique] [string,charset(UTF16)] uint16 *unknown, 649 [in,out,ref] uint32 *num_ous, 650 /* 651 * this is a [ref] pointer to a [unique] pointer to an 652 * array of [unique] pointers to a string array 653 */ 654 [out,ref] [size_is(,*num_ous)] [string,charset(UTF16)] uint16 ***ous 655 ); 656 657 typedef [flag(NDR_PAHEX)] struct { 658 uint8 data[524]; 659 } wkssvc_PasswordBuffer; 660 661 typedef [bitmap32bit] bitmap { 662 WKSSVC_JOIN_FLAGS_IGNORE_UNSUPPORTED_FLAGS = 0x10000000, 663 WKSSVC_JOIN_FLAGS_JOIN_WITH_NEW_NAME = 0x00000400, 664 WKSSVC_JOIN_FLAGS_JOIN_DC_ACCOUNT = 0x00000200, 665 /* TRUE: defer setting the SPN and dNSHostName until a rename operation */ 666 WKSSVC_JOIN_FLAGS_DEFER_SPN = 0x00000100, 667 668 /* TRUE: set the machine password to the provided one after the join completes */ 669 WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED = 0x00000080, 670 671 /* TRUE: perform an unsecured join */ 672 WKSSVC_JOIN_FLAGS_JOIN_UNSECURE = 0x00000040, 673 674 /* TRUE: allow the join to complete even if the account already exists */ 675 WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED = 0x00000020, 676 677 /* TRUE: this join is part of a w9x upgrade */ 678 WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE = 0x00000010, 679 680 /* TRUE: delete the account when the domain is left */ 681 WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE = 0x00000004, 682 683 /* TRUE: create the account in the domain */ 684 WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002, 685 686 /* TRUE: join domain FALSE: join workgroup */ 687 WKSSVC_JOIN_FLAGS_JOIN_TYPE = 0x00000001 688 689 } wkssvc_joinflags; 690 691 /*****************************/ 692 /* Function 0x16 */ 693 WERROR wkssvc_NetrJoinDomain2 ( 694 [in,unique] [string,charset(UTF16)] uint16 *server_name, 695 [in,ref] [string,charset(UTF16)] uint16 *domain_name, 696 [in,unique] [string,charset(UTF16)] uint16 *account_ou, 697 [in,unique] [string,charset(UTF16)] uint16 *admin_account, 698 [in,unique] wkssvc_PasswordBuffer *encrypted_password, 699 [in] wkssvc_joinflags join_flags 700 ); 701 702 /*****************************/ 703 /* Function 0x17 */ 704 WERROR wkssvc_NetrUnjoinDomain2 ( 705 [in,unique] [string,charset(UTF16)] uint16 *server_name, 706 [in,unique] [string,charset(UTF16)] uint16 *account, 707 [in,unique] wkssvc_PasswordBuffer *encrypted_password, 708 [in] wkssvc_joinflags unjoin_flags 709 ); 710 711 /*****************************/ 712 /* Function 0x18 */ 713 WERROR wkssvc_NetrRenameMachineInDomain2( 714 [in,unique] [string,charset(UTF16)] uint16 *server_name, 715 [in,unique] [string,charset(UTF16)] uint16 *NewMachineName, 716 [in,unique] [string,charset(UTF16)] uint16 *Account, 717 [in,unique] wkssvc_PasswordBuffer *EncryptedPassword, 718 [in] wkssvc_renameflags RenameOptions 719 ); 720 721 /*****************************/ 722 /* Function 0x19 */ 723 WERROR wkssvc_NetrValidateName2( 724 [in,unique] [string,charset(UTF16)] uint16 *server_name, 725 [in,ref] [string,charset(UTF16)] uint16 *name, 726 [in,unique] [string,charset(UTF16)] uint16 *Account, 727 [in,unique] wkssvc_PasswordBuffer *EncryptedPassword, 728 [in] wkssvc_NetValidateNameType name_type 729 ); 730 731 /*****************************/ 732 /* Function 0x1a */ 733 WERROR wkssvc_NetrGetJoinableOus2( 734 [in,unique] [string,charset(UTF16)] uint16 *server_name, 735 [in,ref] [string,charset(UTF16)] uint16 *domain_name, 736 [in,unique] [string,charset(UTF16)] uint16 *Account, 737 [in,unique] wkssvc_PasswordBuffer *EncryptedPassword, 738 [in,out,ref] uint32 *num_ous, 739 /* 740 * this is a [ref] pointer to a [unique] pointer to an 741 * array of [unique] pointers to a string array 742 */ 743 [out,ref] [size_is(,*num_ous)] [string,charset(UTF16)] uint16 ***ous 744 ); 745 746 /*****************************/ 747 /* Function 0x1b */ 748 WERROR wkssvc_NetrAddAlternateComputerName( 749 [in,unique] [string,charset(UTF16)] uint16 *server_name, 750 [in,unique] [string,charset(UTF16)] uint16 *NewAlternateMachineName, 751 [in,unique] [string,charset(UTF16)] uint16 *Account, 752 [in,unique] wkssvc_PasswordBuffer *EncryptedPassword, 753 [in] uint32 Reserved 754 ); 755 756 /*****************************/ 757 /* Function 0x1c */ 758 WERROR wkssvc_NetrRemoveAlternateComputerName( 759 [in,unique] [string,charset(UTF16)] uint16 *server_name, 760 [in,unique] [string,charset(UTF16)] uint16 *AlternateMachineNameToRemove, 761 [in,unique] [string,charset(UTF16)] uint16 *Account, 762 [in,unique] wkssvc_PasswordBuffer *EncryptedPassword, 763 [in] uint32 Reserved 764 ); 765 766 /*****************************/ 767 /* Function 0x1d */ 768 WERROR wkssvc_NetrSetPrimaryComputername( 769 [in,unique] [string,charset(UTF16)] uint16 *server_name, 770 [in,unique] [string,charset(UTF16)] uint16 *primary_name, 771 [in,unique] [string,charset(UTF16)] uint16 *Account, 772 [in,unique] wkssvc_PasswordBuffer *EncryptedPassword, 773 [in] uint32 Reserved 774 ); 775 776 /*****************************/ 777 /* Function 0x1e */ 778 typedef enum { 779 NetPrimaryComputerName = 0, 780 NetAlternateComputerNames = 1, 781 NetAllComputerNames = 2, 782 NetComputerNameTypeMax = 3 783 } wkssvc_ComputerNameType; 784 785 typedef struct { 786 uint32 count; 787 [size_is(count)] lsa_String *computer_name; 788 } wkssvc_ComputerNamesCtr; 789 790 WERROR wkssvc_NetrEnumerateComputerNames( 791 [in,unique] [string,charset(UTF16)] uint16 *server_name, 792 [in] wkssvc_ComputerNameType name_type, 793 [in] uint32 Reserved, 794 [out,ref] wkssvc_ComputerNamesCtr **ctr 795 ); 796} 797