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] [switch_is(level)] [ref] wkssvc_NetrWkstaUserInfo *info
211 /*****************************/
213 WERROR wkssvc_NetrWkstaUserSetInfo(
214 [in] [string,charset(UTF16)] uint16 *unknown,
216 [out] [switch_is(level)] [ref] 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] [switch_is(level)] [ref] 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] [switch_is(level)] [ref] 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] [size_is(message_size)] [ref] 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 ();
452 /*****************************/
454 WERROR WKSSVC_NETRUNJOINDOMAIN ();
456 /*****************************/
458 WERROR WKSSVC_NETRRENAMEMACHINEINDOMAIN ();
460 /*****************************/
465 NetSetupWorkgroup = 2,
467 NetSetupNonExistentDomain = 4,
468 NetSetupDnsMachine = 5
469 } wkssvc_NetValidateNameType;
471 WERROR wkssvc_NetrValidateName(
472 [in] [string,charset(UTF16)] uint16 *server_name,
473 [in] [ref] [string,charset(UTF16)] uint16 *name,
474 [in] [string,charset(UTF16)] uint16 *Account,
475 [in] [string,charset(UTF16)] uint16 *Password,
476 [in] wkssvc_NetValidateNameType name_type
479 /*****************************/
481 WERROR WKSSVC_NETRGETJOININFORMATION ();
483 /*****************************/
485 WERROR WKSSVC_NETRGETJOINABLEOUS ();
489 } wkssvc_PasswordBuffer;
491 typedef [bitmap32bit] bitmap {
492 /* TRUE: defer setting the SPN and dNSHostName until a rename operation */
493 WKSSVC_JOIN_FLAGS_DEFER_SPN = 0x00000100,
495 /* TRUE: set the machine password to the provided one after the join completes */
496 WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED = 0x00000080,
498 /* TRUE: perform an unsecured join */
499 WKSSVC_JOIN_FLAGS_JOIN_UNSECURE = 0x00000040,
501 /* TRUE: allow the join to complete even if the account already exists */
502 WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED = 0x00000020,
504 /* TRUE: this join is part of a w9x upgrade */
505 WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE = 0x00000010,
507 /* TRUE: delete the account when the domain is left */
508 WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE = 0x00000004,
510 /* TRUE: create the account in the domain */
511 WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002,
513 /* TRUE: join domain FALSE: join workgroup */
514 WKSSVC_JOIN_FLAGS_JOIN_TYPE = 0x00000001
518 /*****************************/
520 WERROR wkssvc_NetrJoinDomain2 (
521 [in] [string,charset(UTF16)] uint16 *server_name,
522 [in] [string,charset(UTF16),ref] uint16 *domain_name,
523 [in] [string,charset(UTF16)] uint16 *account_name,
524 [in] [string,charset(UTF16)] uint16 *admin_account,
525 [in] wkssvc_PasswordBuffer *encrypted_password,
526 [in] wkssvc_joinflags join_flags
529 /*****************************/
531 WERROR wkssvc_NetrUnjoinDomain2 (
532 [in] [string,charset(UTF16)] uint16 *server_name,
533 [in] [string,charset(UTF16)] uint16 *account,
534 [in] wkssvc_PasswordBuffer *encrypted_password,
535 [in] wkssvc_joinflags unjoin_flags
538 typedef [bitmap32bit] bitmap {
539 /* TRUE: create the account in the domain */
540 WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002
541 } wkssvc_renameflags;
543 /*****************************/
545 WERROR wkssvc_NetrRenameMachineInDomain2(
546 [in] [string,charset(UTF16)] uint16 *server_name,
547 [in] [string,charset(UTF16)] uint16 *NewMachineName,
548 [in] [string,charset(UTF16)] uint16 *Account,
549 [in] wkssvc_PasswordBuffer *EncryptedPassword,
550 [in] wkssvc_renameflags RenameOptions
553 /*****************************/
555 WERROR wkssvc_NetrValidateName2(
556 [in] [string,charset(UTF16)] uint16 *server_name,
557 [in] [ref] [string,charset(UTF16)] uint16 *name,
558 [in] [string,charset(UTF16)] uint16 *Account,
559 [in] wkssvc_PasswordBuffer *EncryptedPassword,
560 [in] wkssvc_NetValidateNameType name_type
563 /*****************************/
565 WERROR WKSSVC_NETRGETJOINABLEOUS2 ();
567 /*****************************/
569 WERROR wkssvc_NetrAddAlternateComputerName(
570 [in] [string,charset(UTF16)] uint16 *server_name,
571 [in] [string,charset(UTF16)] uint16 *NewAlternateMachineName,
572 [in] [string,charset(UTF16)] uint16 *Account,
573 [in] wkssvc_PasswordBuffer *EncryptedPassword,
577 /*****************************/
579 WERROR wkssvc_NetrRemoveAlternateComputerName(
580 [in] [string,charset(UTF16)] uint16 *server_name,
581 [in] [string,charset(UTF16)] uint16 *AlternateMachineNameToRemove,
582 [in] [string,charset(UTF16)] uint16 *Account,
583 [in] wkssvc_PasswordBuffer *EncryptedPassword,
587 /*****************************/
589 WERROR wkssvc_NetrSetPrimaryComputername(
590 [in] [string,charset(UTF16)] uint16 *server_name,
591 [in] [string,charset(UTF16)] uint16 *primary_name,
592 [in] [string,charset(UTF16)] uint16 *Account,
593 [in] wkssvc_PasswordBuffer *EncryptedPassword,
597 /*****************************/
600 NetPrimaryComputerName = 0,
601 NetAlternateComputerNames = 1,
602 NetAllComputerNames = 2,
603 NetComputerNameTypeMax = 3
604 } wkssvc_ComputerNameType;
608 [size_is(count)] lsa_String *computer_name;
609 } wkssvc_ComputerNamesCtr;
611 WERROR wkssvc_NetrEnumerateComputerNames(
612 [in] [string,charset(UTF16)] uint16 *server_name,
613 [in] wkssvc_ComputerNameType name_type,
614 [in] uint32 Reserved,
615 [out] [ref] wkssvc_ComputerNamesCtr **ctr