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