r26157: Add IDL and torture test for wkssvc_NetrSetPrimaryComputername().
[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
452         /*****************************/
453         /* Function        0x11      */
454         WERROR WKSSVC_NETRUNJOINDOMAIN ();
455
456         /*****************************/
457         /* Function        0x12      */
458         WERROR WKSSVC_NETRRENAMEMACHINEINDOMAIN ();
459
460         /*****************************/
461         /* Function        0x13      */
462         typedef enum {
463                 NetSetupUnknown = 0,
464                 NetSetupMachine = 1,
465                 NetSetupWorkgroup = 2,
466                 NetSetupDomain = 3,
467                 NetSetupNonExistentDomain = 4,
468                 NetSetupDnsMachine = 5
469         } wkssvc_NetValidateNameType;
470
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
477                 );
478
479         /*****************************/
480         /* Function        0x14      */
481         WERROR WKSSVC_NETRGETJOININFORMATION ();
482
483         /*****************************/
484         /* Function        0x15      */
485         WERROR WKSSVC_NETRGETJOINABLEOUS ();
486
487         typedef struct {
488                 uint8 data[524];
489         } wkssvc_PasswordBuffer;
490
491         typedef [bitmap32bit] bitmap {
492                 /* TRUE: defer setting the SPN and dNSHostName until a rename operation */
493                 WKSSVC_JOIN_FLAGS_DEFER_SPN             = 0x00000100,
494
495                 /* TRUE: set the machine password to the provided one after the join completes */
496                 WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED    = 0x00000080,
497
498                 /* TRUE: perform an unsecured join */
499                 WKSSVC_JOIN_FLAGS_JOIN_UNSECURE         = 0x00000040,
500
501                 /* TRUE: allow the join to complete even if the account already exists */
502                 WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED = 0x00000020,
503         
504                 /* TRUE: this join is part of a w9x upgrade */
505                 WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE         = 0x00000010,
506
507                 /* TRUE: delete the account when the domain is left */
508                 WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE        = 0x00000004,
509
510                 /* TRUE: create the account in the domain */
511                 WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE        = 0x00000002,
512
513                 /* TRUE: join domain    FALSE: join workgroup */
514                 WKSSVC_JOIN_FLAGS_JOIN_TYPE             = 0x00000001
515                 
516         } wkssvc_joinflags;
517
518         /*****************************/
519         /* Function        0x16      */
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
527                 );
528
529         /*****************************/
530         /* Function        0x17      */
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
536                 );
537
538         typedef [bitmap32bit] bitmap {
539                 /* TRUE: create the account in the domain */
540                 WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE        = 0x00000002
541         } wkssvc_renameflags;
542
543         /*****************************/
544         /* Function        0x18      */
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
551                 );
552
553         /*****************************/
554         /* Function        0x19      */
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
561                 );
562
563         /*****************************/
564         /* Function        0x1a      */
565         WERROR WKSSVC_NETRGETJOINABLEOUS2 ();
566
567         /*****************************/
568         /* Function        0x1b      */
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,
574                 [in] uint32 Reserved
575                 );
576
577         /*****************************/
578         /* Function        0x1c      */
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,
584                 [in] uint32 Reserved
585                 );
586
587         /*****************************/
588         /* Function        0x1d      */
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,
594                 [in] uint32 Reserved
595                 );
596
597         /*****************************/
598         /* Function        0x1e      */
599         typedef enum {
600                 NetPrimaryComputerName = 0,
601                 NetAlternateComputerNames = 1,
602                 NetAllComputerNames = 2,
603                 NetComputerNameTypeMax = 3
604         } wkssvc_ComputerNameType;
605
606         typedef struct {
607                 uint32 count;
608                 [size_is(count)] lsa_String *computer_name;
609         } wkssvc_ComputerNamesCtr;
610
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
616                 );
617 }