r26165: Add IDL and torture test for wkssvc_NetrGetJoinableOus() and
[samba.git] / source4 / librpc / idl / wkssvc.idl
1 /*
2   wkssvc interface definitions
3 */
4
5 import "srvsvc.idl", "lsa.idl";
6
7 [ uuid("6bffd098-a112-3610-9833-46c3f87e345a"),
8   version(1.0),
9   pointer_default(unique),
10   pointer_default_top(unique),
11   helpstring("Workstation Service"),
12   endpoint("ncacn_np:[\\pipe\\wkssvc]","ncacn_ip_tcp:","ncalrpc:")
13 ] interface wkssvc
14 {
15         declare [v1_enum] enum srvsvc_PlatformId;
16
17 #define BOOL uint32
18
19         /******************/
20         /* Function: 0x00 */
21
22         typedef struct {
23                 srvsvc_PlatformId platform_id;
24                 [string,charset(UTF16)] uint16 *server_name;
25                 [string,charset(UTF16)] uint16 *domain_name;
26                 uint32 version_major;
27                 uint32 version_minor;
28         } wkssvc_NetWkstaInfo100;
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                 [string,charset(UTF16)] uint16 *lan_root;
37         } wkssvc_NetWkstaInfo101;
38
39         typedef struct {
40                 srvsvc_PlatformId platform_id;
41                 [string,charset(UTF16)] uint16 *server_name;
42                 [string,charset(UTF16)] uint16 *domain_name;
43                 uint32 version_major;
44                 uint32 version_minor;
45                 [string,charset(UTF16)] uint16 *lan_root;
46                 uint32 logged_on_users;
47         } wkssvc_NetWkstaInfo102;
48
49         typedef struct {
50                 uint32 char_wait;
51                 uint32 collection_time;
52                 uint32 maximum_collection_count;
53                 uint32 keep_connection;
54                 uint32 max_commands;
55                 uint32 session_timeout;
56                 uint32 size_char_buf;
57                 uint32 max_threads;
58                 uint32 lock_quota;
59                 uint32 lock_increment;
60                 uint32 lock_maximum;
61                 uint32 pipe_increment;
62                 uint32 pipe_maximum;
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;
74                 BOOL buf_named_pipes;
75                 BOOL use_lock_read_unlock;
76                 BOOL utilize_nt_caching;
77                 BOOL use_raw_read;
78                 BOOL use_raw_write;
79                 BOOL use_write_raw_data;
80                 BOOL use_encryption;
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;
86
87         typedef struct {
88                 uint32 char_wait;
89         } wkssvc_NetWkstaInfo1010;
90
91         typedef struct {
92                 uint32 collection_time;
93         } wkssvc_NetWkstaInfo1011;
94
95         typedef struct {
96                 uint32 maximum_collection_count;
97         } wkssvc_NetWkstaInfo1012;
98
99         typedef struct {
100                 uint32 keep_connection;
101         } wkssvc_NetWkstaInfo1013;
102
103         typedef struct {
104                 uint32 session_timeout;
105         } wkssvc_NetWkstaInfo1018;
106
107         typedef struct {
108                 uint32 size_char_buf;
109         } wkssvc_NetWkstaInfo1023;
110
111         typedef struct {
112                 uint32 errorlog_sz;
113         } wkssvc_NetWkstaInfo1027;
114
115         typedef struct {
116                 uint32 max_threads;
117         } wkssvc_NetWkstaInfo1033;
118
119         typedef union {
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;
132                 [default] ;
133         } wkssvc_NetWkstaInfo;
134
135         WERROR wkssvc_NetWkstaGetInfo(
136                 [in]   [string,charset(UTF16)] uint16 *server_name,
137                 [in]   uint32 level,
138                 [out,switch_is(level),ref]  wkssvc_NetWkstaInfo *info
139                 );
140
141
142         /******************/
143         /* Function: 0x01 */
144         WERROR wkssvc_NetWkstaSetInfo(
145                 [in]   [string,charset(UTF16)] uint16 *server_name,
146                 [in]   uint32 level,
147                 [in,switch_is(level),ref]  wkssvc_NetWkstaInfo *info,
148                 [in,out,ref]   uint32 *parm_error
149                 );
150
151
152         /*****************************/
153         /* Function        0x02      */
154         typedef struct {
155                 [string,charset(UTF16)] uint16 *user_name;
156         } wkssvc_NetrWkstaUserInfo0;
157
158         typedef struct {
159                 uint32 entries_read;
160                 [size_is(entries_read)] wkssvc_NetrWkstaUserInfo0 *user0;
161         } wkssvc_NetWkstaEnumUsersCtr0;
162
163         typedef struct {
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;
169
170         typedef struct {
171                 uint32 entries_read;
172                 [size_is(entries_read)] wkssvc_NetrWkstaUserInfo1 *user1;
173         } wkssvc_NetWkstaEnumUsersCtr1;
174
175         typedef [switch_type(uint32)] union {
176                 [case(0)] wkssvc_NetWkstaEnumUsersCtr0 *user0;
177                 [case(1)] wkssvc_NetWkstaEnumUsersCtr1 *user1;
178         } wkssvc_NetWkstaEnumUsersCtr;
179
180         typedef struct {
181                 uint32 level;
182                 [switch_is(level)] wkssvc_NetWkstaEnumUsersCtr ctr;
183         } wkssvc_NetWkstaEnumUsersInfo;
184
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
191                 );
192
193         /*****************************/
194         /* Function        0x03      */
195         typedef struct {
196                 [string,charset(UTF16)] uint16 *other_domains;
197         } wkssvc_NetrWkstaUserInfo1101;
198
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;
204
205         WERROR wkssvc_NetrWkstaUserGetInfo(
206                 [in] [string,charset(UTF16)] uint16 *unknown,
207                 [in] uint32 level,
208                 [out] [switch_is(level)] [ref] wkssvc_NetrWkstaUserInfo *info
209                 );
210
211         /*****************************/
212         /* Function        0x04      */
213         WERROR wkssvc_NetrWkstaUserSetInfo(
214                 [in] [string,charset(UTF16)] uint16 *unknown,
215                 [in] uint32 level,
216                 [out] [switch_is(level)] [ref] wkssvc_NetrWkstaUserInfo *info,
217                 [in,out] uint32 *parm_err
218                 );
219
220         /*****************************/
221         /* Function        0x05      */
222
223         typedef struct {
224                 uint32 quality_of_service;
225                 uint32 vc_count;
226                 [string,charset(UTF16)] uint16 *name;
227                 [string,charset(UTF16)] uint16 *address;
228                 uint32 wan_link;
229         } wkssvc_NetWkstaTransportInfo0;
230
231         typedef struct {
232                 uint32 count;
233                 [size_is(count)] wkssvc_NetWkstaTransportInfo0 *array;
234         } wkssvc_NetWkstaTransportCtr0;
235
236         typedef union {
237                 [case(0)] wkssvc_NetWkstaTransportCtr0 *ctr0;
238         } wkssvc_NetWkstaTransportCtr;
239
240         typedef struct {
241                 uint32 level;
242                 [switch_is(level)] wkssvc_NetWkstaTransportCtr ctr;
243         } wkssvc_NetWkstaTransportInfo;
244
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
251                 );
252
253         /*****************************/
254         /* Function        0x06      */
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
261                 );
262
263         /*****************************/
264         /* Function        0x07      */
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,
269                 [in] uint32 unknown3
270                 );
271
272         /*****************************/
273         /* Function        0x08      */
274         typedef struct {
275                 [string,charset(UTF16)] uint16 *unknown1;
276                 [string,charset(UTF16)] uint16 *unknown2;
277         } wkssvc_NetrUseInfo3;
278
279         typedef struct {
280                 [string,charset(UTF16)] uint16 *local;
281                 [string,charset(UTF16)] uint16 *remote;
282                 [string,charset(UTF16)] uint16 *password;
283                 uint32 status;
284                 uint32 asg_type;
285                 uint32 ref_count;
286                 uint32 use_count;
287                 [string,charset(UTF16)] uint16 *user_name;
288                 [string,charset(UTF16)] uint16 *domain_name;
289         } wkssvc_NetrUseInfo2;
290
291         typedef struct {
292                 [string,charset(UTF16)] uint16 *local;
293                 [string,charset(UTF16)] uint16 *remote;
294                 [string,charset(UTF16)] uint16 *password;
295                 uint32 status;
296                 uint32 asg_type;
297                 uint32 ref_count;
298                 uint32 use_count;
299         } wkssvc_NetrUseInfo1;
300
301         typedef struct {
302                 [string,charset(UTF16)] uint16 *local;
303                 [string,charset(UTF16)] uint16 *remote;
304         } wkssvc_NetrUseInfo0;
305
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;
312
313         WERROR wkssvc_NetrUseAdd(
314                 [in] [string,charset(UTF16)] uint16 *server_name,
315                 [in] uint32 level,
316                 [in] [switch_is(level)] [ref] wkssvc_NetrUseGetInfoCtr *ctr,
317                 [in,out] uint32 *parm_err
318                 );
319
320         /*****************************/
321         /* Function        0x09      */
322         WERROR wkssvc_NetrUseGetInfo(
323                 [in] [string,charset(UTF16)] uint16 *server_name,
324                 [in,ref] [string,charset(UTF16)] uint16 *use_name,
325                 [in] uint32 level,
326                 [out] [switch_is(level)] [ref] wkssvc_NetrUseGetInfoCtr *ctr
327                 );
328
329         /*****************************/
330         /* Function        0x0a      */
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
335                 );
336
337         /*****************************/
338         /* Function        0x0b      */
339         typedef struct {
340                 uint32 count;
341                 [size_is(count)] wkssvc_NetrUseInfo2 *array;
342         } wkssvc_NetrUseEnumCtr2;
343
344         typedef struct {
345                 uint32 count;
346                 [size_is(count)] wkssvc_NetrUseInfo1 *array;
347         } wkssvc_NetrUseEnumCtr1;
348
349         typedef struct {
350                 uint32 count;
351                 [size_is(count)] wkssvc_NetrUseInfo0 *array;
352         } wkssvc_NetrUseEnumCtr0;
353
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;
359
360         typedef struct {
361                 uint32 level;
362                 [switch_is(level)] wkssvc_NetrUseEnumCtr ctr;
363         } wkssvc_NetrUseEnumInfo;
364
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
371                 );
372
373         /*****************************/
374         /* Function        0x0c      */
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
381                 );
382
383         /*****************************/
384         /* Function        0x0d      */
385         typedef struct {
386                 hyper unknown1;
387                 hyper unknown2;
388                 hyper unknown3;
389                 hyper unknown4;
390                 hyper unknown5;
391                 hyper unknown6;
392                 hyper unknown7;
393                 hyper unknown8;
394                 hyper unknown9;
395                 hyper unknown10;
396                 hyper unknown11;
397                 hyper unknown12;
398                 hyper unknown13;
399                 uint32 unknown14;
400                 uint32 unknown15;
401                 uint32 unknown16;
402                 uint32 unknown17;
403                 uint32 unknown18;
404                 uint32 unknown19;
405                 uint32 unknown20;
406                 uint32 unknown21;
407                 uint32 unknown22;
408                 uint32 unknown23;
409                 uint32 unknown24;
410                 uint32 unknown25;
411                 uint32 unknown26;
412                 uint32 unknown27;
413                 uint32 unknown28;
414                 uint32 unknown29;
415                 uint32 unknown30;
416                 uint32 unknown31;
417                 uint32 unknown32;
418                 uint32 unknown33;
419                 uint32 unknown34;
420                 uint32 unknown35;
421                 uint32 unknown36;
422                 uint32 unknown37;
423                 uint32 unknown38;
424                 uint32 unknown39;
425                 uint32 unknown40;
426         } wkssvc_NetrWorkstationStatistics;
427
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
434                 );
435
436         /*****************************/
437         /* Function        0x0e      */
438         WERROR wkssvc_NetrLogonDomainNameAdd(
439                 [in,ref] [string,charset(UTF16)] uint16 *domain_name
440                 );
441
442         /*****************************/
443         /* Function        0x0f      */
444         WERROR wkssvc_NetrLogonDomainNameDel(
445                 [in,ref] [string,charset(UTF16)] uint16 *domain_name
446                 );
447
448         /*****************************/
449         /* Function        0x10      */
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
457                 );
458
459         /*****************************/
460         /* Function        0x11      */
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
466                 );
467
468         /*****************************/
469         /* Function        0x12      */
470         typedef [bitmap32bit] bitmap {
471                 /* TRUE: create the account in the domain */
472                 WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE        = 0x00000002
473         } wkssvc_renameflags;
474
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
481                 );
482
483         /*****************************/
484         /* Function        0x13      */
485         typedef enum {
486                 NetSetupUnknown = 0,
487                 NetSetupMachine = 1,
488                 NetSetupWorkgroup = 2,
489                 NetSetupDomain = 3,
490                 NetSetupNonExistentDomain = 4,
491                 NetSetupDnsMachine = 5
492         } wkssvc_NetValidateNameType;
493
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
500                 );
501
502         /*****************************/
503         /* Function        0x14      */
504         typedef enum {
505                 NetSetupUnknownStatus = 0,
506                 NetSetupUnjoined = 1,
507                 NetSetupWorkgroupName = 2,
508                 NetSetupDomainName = 3
509         } wkssvc_NetJoinStatus;
510
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
515                 );
516
517         /*****************************/
518         /* Function        0x15      */
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
526                 );
527
528         typedef struct {
529                 uint8 data[524];
530         } wkssvc_PasswordBuffer;
531
532         typedef [bitmap32bit] bitmap {
533                 /* TRUE: defer setting the SPN and dNSHostName until a rename operation */
534                 WKSSVC_JOIN_FLAGS_DEFER_SPN             = 0x00000100,
535
536                 /* TRUE: set the machine password to the provided one after the join completes */
537                 WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED    = 0x00000080,
538
539                 /* TRUE: perform an unsecured join */
540                 WKSSVC_JOIN_FLAGS_JOIN_UNSECURE         = 0x00000040,
541
542                 /* TRUE: allow the join to complete even if the account already exists */
543                 WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED = 0x00000020,
544         
545                 /* TRUE: this join is part of a w9x upgrade */
546                 WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE         = 0x00000010,
547
548                 /* TRUE: delete the account when the domain is left */
549                 WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE        = 0x00000004,
550
551                 /* TRUE: create the account in the domain */
552                 WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE        = 0x00000002,
553
554                 /* TRUE: join domain    FALSE: join workgroup */
555                 WKSSVC_JOIN_FLAGS_JOIN_TYPE             = 0x00000001
556                 
557         } wkssvc_joinflags;
558
559         /*****************************/
560         /* Function        0x16      */
561         WERROR wkssvc_NetrJoinDomain2 (
562                 [in]         [string,charset(UTF16)] uint16 *server_name,
563                 [in]         [string,charset(UTF16),ref] 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
568                 );
569
570         /*****************************/
571         /* Function        0x17      */
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
577                 );
578
579         /*****************************/
580         /* Function        0x18      */
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
587                 );
588
589         /*****************************/
590         /* Function        0x19      */
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
597                 );
598
599         /*****************************/
600         /* Function        0x1a      */
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
608                 );
609
610         /*****************************/
611         /* Function        0x1b      */
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,
617                 [in] uint32 Reserved
618                 );
619
620         /*****************************/
621         /* Function        0x1c      */
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,
627                 [in] uint32 Reserved
628                 );
629
630         /*****************************/
631         /* Function        0x1d      */
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,
637                 [in] uint32 Reserved
638                 );
639
640         /*****************************/
641         /* Function        0x1e      */
642         typedef enum {
643                 NetPrimaryComputerName = 0,
644                 NetAlternateComputerNames = 1,
645                 NetAllComputerNames = 2,
646                 NetComputerNameTypeMax = 3
647         } wkssvc_ComputerNameType;
648
649         typedef struct {
650                 uint32 count;
651                 [size_is(count)] lsa_String *computer_name;
652         } wkssvc_ComputerNamesCtr;
653
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
659                 );
660 }