lib: Add a few required includes
[samba4-gss.git] / librpc / idl / wkssvc.idl
blob9e92ed7323acc1f903afc4ea1c9574c0b74074c1
1 #include "idl_types.h"
3 /*
4 wkssvc interface definitions
5 */
7 import "srvsvc.idl", "lsa.idl";
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
16 typedef [v1_enum] enum srvsvc_PlatformId srvsvc_PlatformId;
18 #define BOOL uint32
20 /******************/
21 /* Function: 0x00 */
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;
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;
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;
50 /* FIXME: 302, 402 */
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;
90 typedef struct {
91 uint32 char_wait;
92 } wkssvc_NetWkstaInfo1010;
94 typedef struct {
95 uint32 collection_time;
96 } wkssvc_NetWkstaInfo1011;
98 typedef struct {
99 uint32 maximum_collection_count;
100 } wkssvc_NetWkstaInfo1012;
102 typedef struct {
103 uint32 keep_connection;
104 } wkssvc_NetWkstaInfo1013;
106 typedef struct {
107 uint32 session_timeout;
108 } wkssvc_NetWkstaInfo1018;
110 typedef struct {
111 uint32 size_char_buf;
112 } wkssvc_NetWkstaInfo1023;
114 typedef struct {
115 uint32 errorlog_sz;
116 } wkssvc_NetWkstaInfo1027;
118 /* downlevel */
119 typedef struct {
120 uint32 print_buf_time;
121 } wkssvc_NetWkstaInfo1028;
123 /* downlevel */
124 typedef struct {
125 uint32 wrk_heuristics;
126 } wkssvc_NetWkstaInfo1032;
128 typedef struct {
129 uint32 max_threads;
130 } wkssvc_NetWkstaInfo1033;
132 typedef struct {
133 uint32 lock_quota;
134 } wkssvc_NetWkstaInfo1041;
136 typedef struct {
137 uint32 lock_increment;
138 } wkssvc_NetWkstaInfo1042;
140 typedef struct {
141 uint32 lock_maximum;
142 } wkssvc_NetWkstaInfo1043;
144 typedef struct {
145 uint32 pipe_increment;
146 } wkssvc_NetWkstaInfo1044;
148 typedef struct {
149 uint32 pipe_maximum;
150 } wkssvc_NetWkstaInfo1045;
152 typedef struct {
153 uint32 dormant_file_limit;
154 } wkssvc_NetWkstaInfo1046;
156 typedef struct {
157 uint32 cache_file_timeout;
158 } wkssvc_NetWkstaInfo1047;
160 typedef struct {
161 uint32 use_opportunistic_locking;
162 } wkssvc_NetWkstaInfo1048;
164 typedef struct {
165 uint32 use_unlock_behind;
166 } wkssvc_NetWkstaInfo1049;
168 typedef struct {
169 uint32 use_close_behind;
170 } wkssvc_NetWkstaInfo1050;
172 typedef struct {
173 uint32 buf_named_pipes;
174 } wkssvc_NetWkstaInfo1051;
176 typedef struct {
177 uint32 use_lock_read_unlock;
178 } wkssvc_NetWkstaInfo1052;
180 typedef struct {
181 uint32 utilize_nt_caching;
182 } wkssvc_NetWkstaInfo1053;
184 typedef struct {
185 uint32 use_raw_read;
186 } wkssvc_NetWkstaInfo1054;
188 typedef struct {
189 uint32 use_raw_write;
190 } wkssvc_NetWkstaInfo1055;
192 typedef struct {
193 uint32 use_write_raw_data;
194 } wkssvc_NetWkstaInfo1056;
196 typedef struct {
197 uint32 use_encryption;
198 } wkssvc_NetWkstaInfo1057;
200 typedef struct {
201 uint32 buf_files_deny_write;
202 } wkssvc_NetWkstaInfo1058;
204 typedef struct {
205 uint32 buf_read_only_files;
206 } wkssvc_NetWkstaInfo1059;
208 typedef struct {
209 uint32 force_core_create_mode;
210 } wkssvc_NetWkstaInfo1060;
212 typedef struct {
213 uint32 use_512_byte_max_transfer;
214 } wkssvc_NetWkstaInfo1061;
216 typedef struct {
217 uint32 read_ahead_throughput;
218 } wkssvc_NetWkstaInfo1062;
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;
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
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
277 /*****************************/
278 /* Function 0x02 */
279 typedef struct {
280 [string,charset(UTF16)] uint16 *user_name;
281 } wkssvc_NetrWkstaUserInfo0;
283 typedef struct {
284 uint32 entries_read;
285 [size_is(entries_read)] wkssvc_NetrWkstaUserInfo0 *user0;
286 } wkssvc_NetWkstaEnumUsersCtr0;
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;
295 typedef struct {
296 uint32 entries_read;
297 [size_is(entries_read)] wkssvc_NetrWkstaUserInfo1 *user1;
298 } wkssvc_NetWkstaEnumUsersCtr1;
300 typedef [switch_type(uint32)] union {
301 [case(0)] wkssvc_NetWkstaEnumUsersCtr0 *user0;
302 [case(1)] wkssvc_NetWkstaEnumUsersCtr1 *user1;
303 } wkssvc_NetWkstaEnumUsersCtr;
305 typedef struct {
306 uint32 level;
307 [switch_is(level)] wkssvc_NetWkstaEnumUsersCtr ctr;
308 } wkssvc_NetWkstaEnumUsersInfo;
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
318 /*****************************/
319 /* Function 0x03 */
320 typedef struct {
321 [string,charset(UTF16)] uint16 *other_domains;
322 } wkssvc_NetrWkstaUserInfo1101;
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;
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
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
345 /*****************************/
346 /* Function 0x05 */
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;
356 typedef struct {
357 uint32 count;
358 [size_is(count)] wkssvc_NetWkstaTransportInfo0 *array;
359 } wkssvc_NetWkstaTransportCtr0;
361 typedef union {
362 [case(0)] wkssvc_NetWkstaTransportCtr0 *ctr0;
363 } wkssvc_NetWkstaTransportCtr;
365 typedef struct {
366 uint32 level;
367 [switch_is(level)] wkssvc_NetWkstaTransportCtr ctr;
368 } wkssvc_NetWkstaTransportInfo;
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
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
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
397 /*****************************/
398 /* Function 0x08 */
399 typedef struct {
400 [string,charset(UTF16)] uint16 *unknown1;
401 [string,charset(UTF16)] uint16 *unknown2;
402 } wkssvc_NetrUseInfo3;
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;
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;
426 typedef struct {
427 [string,charset(UTF16)] uint16 *local;
428 [string,charset(UTF16)] uint16 *remote;
429 } wkssvc_NetrUseInfo0;
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;
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
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
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
462 /*****************************/
463 /* Function 0x0b */
464 typedef struct {
465 uint32 count;
466 [size_is(count)] wkssvc_NetrUseInfo2 *array;
467 } wkssvc_NetrUseEnumCtr2;
469 typedef struct {
470 uint32 count;
471 [size_is(count)] wkssvc_NetrUseInfo1 *array;
472 } wkssvc_NetrUseEnumCtr1;
474 typedef struct {
475 uint32 count;
476 [size_is(count)] wkssvc_NetrUseInfo0 *array;
477 } wkssvc_NetrUseEnumCtr0;
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;
485 typedef struct {
486 uint32 level;
487 [switch_is(level)] wkssvc_NetrUseEnumCtr ctr;
488 } wkssvc_NetrUseEnumInfo;
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
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
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;
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
561 /*****************************/
562 /* Function 0x0e */
563 WERROR wkssvc_NetrLogonDomainNameAdd(
564 [in,ref] [string,charset(UTF16)] uint16 *domain_name
567 /*****************************/
568 /* Function 0x0f */
569 WERROR wkssvc_NetrLogonDomainNameDel(
570 [in,ref] [string,charset(UTF16)] uint16 *domain_name
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
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
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;
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
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;
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
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;
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
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,
651 * this is a [ref] pointer to a [unique] pointer to an
652 * array of [unique] pointers to a string array
654 [out,ref] [size_is(,*num_ous)] [string,charset(UTF16)] uint16 ***ous
657 typedef [flag(NDR_PAHEX)] struct {
658 uint8 data[524];
659 } wkssvc_PasswordBuffer;
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,
668 /* TRUE: set the machine password to the provided one after the join completes */
669 WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED = 0x00000080,
671 /* TRUE: perform an unsecured join */
672 WKSSVC_JOIN_FLAGS_JOIN_UNSECURE = 0x00000040,
674 /* TRUE: allow the join to complete even if the account already exists */
675 WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED = 0x00000020,
677 /* TRUE: this join is part of a w9x upgrade */
678 WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE = 0x00000010,
680 /* TRUE: delete the account when the domain is left */
681 WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE = 0x00000004,
683 /* TRUE: create the account in the domain */
684 WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002,
686 /* TRUE: join domain FALSE: join workgroup */
687 WKSSVC_JOIN_FLAGS_JOIN_TYPE = 0x00000001
689 } wkssvc_joinflags;
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
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
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
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
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,
740 * this is a [ref] pointer to a [unique] pointer to an
741 * array of [unique] pointers to a string array
743 [out,ref] [size_is(,*num_ous)] [string,charset(UTF16)] uint16 ***ous
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
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
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
776 /*****************************/
777 /* Function 0x1e */
778 typedef enum {
779 NetPrimaryComputerName = 0,
780 NetAlternateComputerNames = 1,
781 NetAllComputerNames = 2,
782 NetComputerNameTypeMax = 3
783 } wkssvc_ComputerNameType;
785 typedef struct {
786 uint32 count;
787 [size_is(count)] lsa_String *computer_name;
788 } wkssvc_ComputerNamesCtr;
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