2 wkssvc interface definitions
5 import "srvsvc.idl", "lsa.idl";
7 [ uuid("6bffd098-a112-3610-9833-46c3f87e345a"),
9 pointer_default(unique),
10 pointer_default_top(unique),
11 helpstring("Workstation Service"),
12 endpoint("ncacn_np:[\\pipe\\wkssvc]","ncacn_ip_tcp:","ncalrpc:")
15 declare [v1_enum] enum srvsvc_PlatformId;
23 srvsvc_PlatformId platform_id;
24 [string,charset(UTF16)] uint16 *server_name;
25 [string,charset(UTF16)] uint16 *domain_name;
28 } wkssvc_NetWkstaInfo100;
31 srvsvc_PlatformId platform_id;
32 [string,charset(UTF16)] uint16 *server_name;
33 [string,charset(UTF16)] uint16 *domain_name;
36 [string,charset(UTF16)] uint16 *lan_root;
37 } wkssvc_NetWkstaInfo101;
40 srvsvc_PlatformId platform_id;
41 [string,charset(UTF16)] uint16 *server_name;
42 [string,charset(UTF16)] uint16 *domain_name;
45 [string,charset(UTF16)] uint16 *lan_root;
46 uint32 logged_on_users;
47 } wkssvc_NetWkstaInfo102;
51 uint32 collection_time;
52 uint32 maximum_collection_count;
53 uint32 keep_connection;
55 uint32 session_timeout;
59 uint32 lock_increment;
61 uint32 pipe_increment;
63 uint32 cache_file_timeout;
64 uint32 dormant_file_limit;
65 uint32 read_ahead_throughput;
66 uint32 num_mailslot_buffers;
67 uint32 num_srv_announce_buffers;
68 uint32 max_illegal_dgram_events;
69 uint32 dgram_event_reset_freq;
70 BOOL log_election_packets;
71 BOOL use_opportunistic_locking;
72 BOOL use_unlock_behind;
73 BOOL use_close_behind;
75 BOOL use_lock_read_unlock;
76 BOOL utilize_nt_caching;
79 BOOL use_write_raw_data;
81 BOOL buf_files_deny_write;
82 BOOL buf_read_only_files;
83 BOOL force_core_create_mode;
84 BOOL use_512_byte_max_transfer;
85 } wkssvc_NetWkstaInfo502;
89 } wkssvc_NetWkstaInfo1010;
92 uint32 collection_time;
93 } wkssvc_NetWkstaInfo1011;
96 uint32 maximum_collection_count;
97 } wkssvc_NetWkstaInfo1012;
100 uint32 keep_connection;
101 } wkssvc_NetWkstaInfo1013;
104 uint32 session_timeout;
105 } wkssvc_NetWkstaInfo1018;
108 uint32 size_char_buf;
109 } wkssvc_NetWkstaInfo1023;
113 } wkssvc_NetWkstaInfo1027;
117 } wkssvc_NetWkstaInfo1033;
120 [case(100)] wkssvc_NetWkstaInfo100 *info100;
121 [case(101)] wkssvc_NetWkstaInfo101 *info101;
122 [case(102)] wkssvc_NetWkstaInfo102 *info102;
123 [case(502)] wkssvc_NetWkstaInfo502 *info502;
124 [case(1010)] wkssvc_NetWkstaInfo1010 *info1010;
125 [case(1011)] wkssvc_NetWkstaInfo1011 *info1011;
126 [case(1012)] wkssvc_NetWkstaInfo1012 *info1012;
127 [case(1013)] wkssvc_NetWkstaInfo1013 *info1013;
128 [case(1018)] wkssvc_NetWkstaInfo1018 *info1018;
129 [case(1023)] wkssvc_NetWkstaInfo1023 *info1023;
130 [case(1027)] wkssvc_NetWkstaInfo1027 *info1027;
131 [case(1033)] wkssvc_NetWkstaInfo1033 *info1033;
133 } wkssvc_NetWkstaInfo;
135 WERROR wkssvc_NetWkstaGetInfo(
136 [in] [string,charset(UTF16)] uint16 *server_name,
138 [out,switch_is(level),ref] wkssvc_NetWkstaInfo *info
144 WERROR wkssvc_NetWkstaSetInfo(
145 [in] [string,charset(UTF16)] uint16 *server_name,
147 [in,switch_is(level),ref] wkssvc_NetWkstaInfo *info,
148 [in,out,ref] uint32 *parm_error
152 /*****************************/
155 [string,charset(UTF16)] uint16 *user_name;
156 } wkssvc_NetrWkstaUserInfo0;
160 [size_is(entries_read)] wkssvc_NetrWkstaUserInfo0 *user0;
161 } wkssvc_NetWkstaEnumUsersCtr0;
164 [string,charset(UTF16)] uint16 *user_name;
165 [string,charset(UTF16)] uint16 *logon_domain;
166 [string,charset(UTF16)] uint16 *other_domains;
167 [string,charset(UTF16)] uint16 *logon_server;
168 } wkssvc_NetrWkstaUserInfo1;
172 [size_is(entries_read)] wkssvc_NetrWkstaUserInfo1 *user1;
173 } wkssvc_NetWkstaEnumUsersCtr1;
175 typedef [switch_type(uint32)] union {
176 [case(0)] wkssvc_NetWkstaEnumUsersCtr0 *user0;
177 [case(1)] wkssvc_NetWkstaEnumUsersCtr1 *user1;
178 } wkssvc_NetWkstaEnumUsersCtr;
182 [switch_is(level)] wkssvc_NetWkstaEnumUsersCtr ctr;
183 } wkssvc_NetWkstaEnumUsersInfo;
185 WERROR wkssvc_NetWkstaEnumUsers(
186 [in] [string,charset(UTF16)] uint16 *server_name,
187 [in,out,ref] wkssvc_NetWkstaEnumUsersInfo *info,
188 [in] uint32 prefmaxlen,
189 [out,ref] uint32 *entries_read,
190 [in,out] uint32 *resume_handle
193 /*****************************/
196 [string,charset(UTF16)] uint16 *other_domains;
197 } wkssvc_NetrWkstaUserInfo1101;
199 typedef [switch_type(uint32)] union {
200 [case(0)] wkssvc_NetrWkstaUserInfo0 *info0;
201 [case(1)] wkssvc_NetrWkstaUserInfo1 *info1;
202 [case(1101)] wkssvc_NetrWkstaUserInfo1101 *info1101;
203 } wkssvc_NetrWkstaUserInfo;
205 WERROR wkssvc_NetrWkstaUserGetInfo(
206 [in] [string,charset(UTF16)] uint16 *unknown,
208 [out,ref] [switch_is(level)] wkssvc_NetrWkstaUserInfo *info
211 /*****************************/
213 WERROR wkssvc_NetrWkstaUserSetInfo(
214 [in] [string,charset(UTF16)] uint16 *unknown,
216 [out,ref] [switch_is(level)] wkssvc_NetrWkstaUserInfo *info,
217 [in,out] uint32 *parm_err
220 /*****************************/
224 uint32 quality_of_service;
226 [string,charset(UTF16)] uint16 *name;
227 [string,charset(UTF16)] uint16 *address;
229 } wkssvc_NetWkstaTransportInfo0;
233 [size_is(count)] wkssvc_NetWkstaTransportInfo0 *array;
234 } wkssvc_NetWkstaTransportCtr0;
237 [case(0)] wkssvc_NetWkstaTransportCtr0 *ctr0;
238 } wkssvc_NetWkstaTransportCtr;
242 [switch_is(level)] wkssvc_NetWkstaTransportCtr ctr;
243 } wkssvc_NetWkstaTransportInfo;
245 WERROR wkssvc_NetWkstaTransportEnum (
246 [in] [string,charset(UTF16)] uint16 *server_name,
247 [in,out,ref] wkssvc_NetWkstaTransportInfo *info,
248 [in] uint32 max_buffer,
249 [out,ref] uint32 *total_entries,
250 [in,out] uint32 *resume_handle
253 /*****************************/
255 /* only supported on NT */
256 WERROR wkssvc_NetrWkstaTransportAdd(
257 [in] [string,charset(UTF16)] uint16 *server_name,
258 [in] uint32 level, /* must be 0 */
259 [in,ref] wkssvc_NetWkstaTransportInfo0 *info0,
260 [in,out] uint32 *parm_err
263 /*****************************/
265 /* only supported on NT */
266 WERROR wkssvc_NetrWkstaTransportDel(
267 [in] [string,charset(UTF16)] uint16 *server_name,
268 [in] [string,charset(UTF16)] uint16 *transport_name,
272 /*****************************/
275 [string,charset(UTF16)] uint16 *unknown1;
276 [string,charset(UTF16)] uint16 *unknown2;
277 } wkssvc_NetrUseInfo3;
280 [string,charset(UTF16)] uint16 *local;
281 [string,charset(UTF16)] uint16 *remote;
282 [string,charset(UTF16)] uint16 *password;
287 [string,charset(UTF16)] uint16 *user_name;
288 [string,charset(UTF16)] uint16 *domain_name;
289 } wkssvc_NetrUseInfo2;
292 [string,charset(UTF16)] uint16 *local;
293 [string,charset(UTF16)] uint16 *remote;
294 [string,charset(UTF16)] uint16 *password;
299 } wkssvc_NetrUseInfo1;
302 [string,charset(UTF16)] uint16 *local;
303 [string,charset(UTF16)] uint16 *remote;
304 } wkssvc_NetrUseInfo0;
306 typedef [switch_type(uint32)] union {
307 [case(0)] wkssvc_NetrUseInfo0 *info0;
308 [case(1)] wkssvc_NetrUseInfo1 *info1;
309 [case(2)] wkssvc_NetrUseInfo2 *info2;
310 [case(3)] wkssvc_NetrUseInfo3 *info3;
311 } wkssvc_NetrUseGetInfoCtr;
313 WERROR wkssvc_NetrUseAdd(
314 [in] [string,charset(UTF16)] uint16 *server_name,
316 [in,ref] [switch_is(level)] wkssvc_NetrUseGetInfoCtr *ctr,
317 [in,out] uint32 *parm_err
320 /*****************************/
322 WERROR wkssvc_NetrUseGetInfo(
323 [in] [string,charset(UTF16)] uint16 *server_name,
324 [in,ref] [string,charset(UTF16)] uint16 *use_name,
326 [out,ref] [switch_is(level)] wkssvc_NetrUseGetInfoCtr *ctr
329 /*****************************/
331 WERROR wkssvc_NetrUseDel(
332 [in] [string,charset(UTF16)] uint16 *server_name,
333 [in,ref] [string,charset(UTF16)] uint16 *use_name,
334 [in] uint32 force_cond
337 /*****************************/
341 [size_is(count)] wkssvc_NetrUseInfo2 *array;
342 } wkssvc_NetrUseEnumCtr2;
346 [size_is(count)] wkssvc_NetrUseInfo1 *array;
347 } wkssvc_NetrUseEnumCtr1;
351 [size_is(count)] wkssvc_NetrUseInfo0 *array;
352 } wkssvc_NetrUseEnumCtr0;
354 typedef [switch_type(uint32)] union {
355 [case(0)] wkssvc_NetrUseEnumCtr0 *ctr0;
356 [case(1)] wkssvc_NetrUseEnumCtr1 *ctr1;
357 [case(2)] wkssvc_NetrUseEnumCtr2 *ctr2;
358 } wkssvc_NetrUseEnumCtr;
362 [switch_is(level)] wkssvc_NetrUseEnumCtr ctr;
363 } wkssvc_NetrUseEnumInfo;
365 WERROR wkssvc_NetrUseEnum(
366 [in] [string,charset(UTF16)] uint16 *server_name,
367 [in,out,ref] wkssvc_NetrUseEnumInfo *info,
368 [in] uint32 prefmaxlen,
369 [out,ref] uint32 *entries_read,
370 [in,out] uint32 *resume_handle
373 /*****************************/
375 WERROR wkssvc_NetrMessageBufferSend(
376 [in] [string,charset(UTF16)] uint16 *server_name,
377 [in,ref] [string,charset(UTF16)] uint16 *message_name,
378 [in] [string,charset(UTF16)] uint16 *message_sender_name,
379 [in,ref] [size_is(message_size)] uint8 *message_buffer,
380 [in] uint32 message_size
383 /*****************************/
426 } wkssvc_NetrWorkstationStatistics;
428 WERROR wkssvc_NetrWorkstationStatisticsGet(
429 [in] [string,charset(UTF16)] uint16 *server_name,
430 [in] [string,charset(UTF16)] uint16 *unknown2,
431 [in] uint32 unknown3,
432 [in] uint32 unknown4,
433 [out,ref] wkssvc_NetrWorkstationStatistics **info
436 /*****************************/
438 WERROR wkssvc_NetrLogonDomainNameAdd(
439 [in,ref] [string,charset(UTF16)] uint16 *domain_name
442 /*****************************/
444 WERROR wkssvc_NetrLogonDomainNameDel(
445 [in,ref] [string,charset(UTF16)] uint16 *domain_name
448 /*****************************/
450 WERROR wkssvc_NetrJoinDomain(
451 [in] [string,charset(UTF16)] uint16 *server_name,
452 [in,ref] [string,charset(UTF16)] uint16 *domain_name,
453 [in] [string,charset(UTF16)] uint16 *account_ou,
454 [in] [string,charset(UTF16)] uint16 *Account,
455 [in] [string,charset(UTF16)] uint16 *unknown,
456 [in] wkssvc_joinflags join_flags
459 /*****************************/
461 WERROR wkssvc_NetrUnjoinDomain(
462 [in] [string,charset(UTF16)] uint16 *server_name,
463 [in] [string,charset(UTF16)] uint16 *Account,
464 [in] [string,charset(UTF16)] uint16 *password,
465 [in] wkssvc_joinflags unjoin_flags
468 /*****************************/
470 typedef [bitmap32bit] bitmap {
471 /* TRUE: create the account in the domain */
472 WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002
473 } wkssvc_renameflags;
475 WERROR wkssvc_NetrRenameMachineInDomain(
476 [in] [string,charset(UTF16)] uint16 *server_name,
477 [in] [string,charset(UTF16)] uint16 *NewMachineName,
478 [in] [string,charset(UTF16)] uint16 *Account,
479 [in] [string,charset(UTF16)] uint16 *password,
480 [in] wkssvc_renameflags RenameOptions
483 /*****************************/
488 NetSetupWorkgroup = 2,
490 NetSetupNonExistentDomain = 4,
491 NetSetupDnsMachine = 5
492 } wkssvc_NetValidateNameType;
494 WERROR wkssvc_NetrValidateName(
495 [in] [string,charset(UTF16)] uint16 *server_name,
496 [in,ref] [string,charset(UTF16)] uint16 *name,
497 [in] [string,charset(UTF16)] uint16 *Account,
498 [in] [string,charset(UTF16)] uint16 *Password,
499 [in] wkssvc_NetValidateNameType name_type
502 /*****************************/
505 NetSetupUnknownStatus = 0,
506 NetSetupUnjoined = 1,
507 NetSetupWorkgroupName = 2,
508 NetSetupDomainName = 3
509 } wkssvc_NetJoinStatus;
511 WERROR wkssvc_NetrGetJoinInformation(
512 [in] [string,charset(UTF16)] uint16 *server_name,
513 [in,out,ref] [string,charset(UTF16)] uint16 **name_buffer,
514 [out,ref] wkssvc_NetJoinStatus *name_type
517 /*****************************/
519 WERROR wkssvc_NetrGetJoinableOus(
520 [in] [string,charset(UTF16)] uint16 *server_name,
521 [in,ref] [string,charset(UTF16)] uint16 *domain_name,
522 [in] [string,charset(UTF16)] uint16 *Account,
523 [in] [string,charset(UTF16)] uint16 *unknown,
524 [in,out,ref] uint32 *num_ous,
525 [out,ref] [size_is(*num_ous)] [string,charset(UTF16)] uint16 ***ous
530 } wkssvc_PasswordBuffer;
532 typedef [bitmap32bit] bitmap {
533 /* TRUE: defer setting the SPN and dNSHostName until a rename operation */
534 WKSSVC_JOIN_FLAGS_DEFER_SPN = 0x00000100,
536 /* TRUE: set the machine password to the provided one after the join completes */
537 WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED = 0x00000080,
539 /* TRUE: perform an unsecured join */
540 WKSSVC_JOIN_FLAGS_JOIN_UNSECURE = 0x00000040,
542 /* TRUE: allow the join to complete even if the account already exists */
543 WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED = 0x00000020,
545 /* TRUE: this join is part of a w9x upgrade */
546 WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE = 0x00000010,
548 /* TRUE: delete the account when the domain is left */
549 WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE = 0x00000004,
551 /* TRUE: create the account in the domain */
552 WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002,
554 /* TRUE: join domain FALSE: join workgroup */
555 WKSSVC_JOIN_FLAGS_JOIN_TYPE = 0x00000001
559 /*****************************/
561 WERROR wkssvc_NetrJoinDomain2 (
562 [in] [string,charset(UTF16)] uint16 *server_name,
563 [in,ref] [string,charset(UTF16)] uint16 *domain_name,
564 [in] [string,charset(UTF16)] uint16 *account_name,
565 [in] [string,charset(UTF16)] uint16 *admin_account,
566 [in] wkssvc_PasswordBuffer *encrypted_password,
567 [in] wkssvc_joinflags join_flags
570 /*****************************/
572 WERROR wkssvc_NetrUnjoinDomain2 (
573 [in] [string,charset(UTF16)] uint16 *server_name,
574 [in] [string,charset(UTF16)] uint16 *account,
575 [in] wkssvc_PasswordBuffer *encrypted_password,
576 [in] wkssvc_joinflags unjoin_flags
579 /*****************************/
581 WERROR wkssvc_NetrRenameMachineInDomain2(
582 [in] [string,charset(UTF16)] uint16 *server_name,
583 [in] [string,charset(UTF16)] uint16 *NewMachineName,
584 [in] [string,charset(UTF16)] uint16 *Account,
585 [in] wkssvc_PasswordBuffer *EncryptedPassword,
586 [in] wkssvc_renameflags RenameOptions
589 /*****************************/
591 WERROR wkssvc_NetrValidateName2(
592 [in] [string,charset(UTF16)] uint16 *server_name,
593 [in,ref] [string,charset(UTF16)] uint16 *name,
594 [in] [string,charset(UTF16)] uint16 *Account,
595 [in] wkssvc_PasswordBuffer *EncryptedPassword,
596 [in] wkssvc_NetValidateNameType name_type
599 /*****************************/
601 WERROR wkssvc_NetrGetJoinableOus2(
602 [in] [string,charset(UTF16)] uint16 *server_name,
603 [in,ref] [string,charset(UTF16)] uint16 *domain_name,
604 [in] [string,charset(UTF16)] uint16 *Account,
605 [in] wkssvc_PasswordBuffer *EncryptedPassword,
606 [in,out,ref] uint32 *num_ous,
607 [out,ref] [size_is(*num_ous)] [string,charset(UTF16)] uint16 ***ous
610 /*****************************/
612 WERROR wkssvc_NetrAddAlternateComputerName(
613 [in] [string,charset(UTF16)] uint16 *server_name,
614 [in] [string,charset(UTF16)] uint16 *NewAlternateMachineName,
615 [in] [string,charset(UTF16)] uint16 *Account,
616 [in] wkssvc_PasswordBuffer *EncryptedPassword,
620 /*****************************/
622 WERROR wkssvc_NetrRemoveAlternateComputerName(
623 [in] [string,charset(UTF16)] uint16 *server_name,
624 [in] [string,charset(UTF16)] uint16 *AlternateMachineNameToRemove,
625 [in] [string,charset(UTF16)] uint16 *Account,
626 [in] wkssvc_PasswordBuffer *EncryptedPassword,
630 /*****************************/
632 WERROR wkssvc_NetrSetPrimaryComputername(
633 [in] [string,charset(UTF16)] uint16 *server_name,
634 [in] [string,charset(UTF16)] uint16 *primary_name,
635 [in] [string,charset(UTF16)] uint16 *Account,
636 [in] wkssvc_PasswordBuffer *EncryptedPassword,
640 /*****************************/
643 NetPrimaryComputerName = 0,
644 NetAlternateComputerNames = 1,
645 NetAllComputerNames = 2,
646 NetComputerNameTypeMax = 3
647 } wkssvc_ComputerNameType;
651 [size_is(count)] lsa_String *computer_name;
652 } wkssvc_ComputerNamesCtr;
654 WERROR wkssvc_NetrEnumerateComputerNames(
655 [in] [string,charset(UTF16)] uint16 *server_name,
656 [in] wkssvc_ComputerNameType name_type,
657 [in] uint32 Reserved,
658 [out,ref] wkssvc_ComputerNamesCtr **ctr