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