2 * Copyright 2009 Microsoft
4 * Used with permission.
10 uuid(6BFFD098-A112-3610-9833-46C3F87E345A),version(1.0),
11 pointer_default(unique)
16 typedef enum _NETSETUP_JOIN_STATUS {
17 NetSetupUnknownStatus = 0,
19 NetSetupWorkgroupName,
21 } NETSETUP_JOIN_STATUS, *PNETSETUP_JOIN_STATUS;
23 typedef enum _NETSETUP_NAME_TYPE {
28 NetSetupNonExistentDomain,
30 } NETSETUP_NAME_TYPE, *PNETSETUP_NAME_TYPE;
32 typedef enum _NET_COMPUTER_NAME_TYPE {
33 NetPrimaryComputerName = 0,
34 NetAlternateComputerNames,
36 NetComputerNameTypeMax
37 } NET_COMPUTER_NAME_TYPE, *PNET_COMPUTER_NAME_TYPE;
39 typedef struct _STAT_WORKSTATION_0 {
40 LARGE_INTEGER StatisticsStartTime;
41 LARGE_INTEGER BytesReceived;
42 LARGE_INTEGER SmbsReceived;
43 LARGE_INTEGER PagingReadBytesRequested;
44 LARGE_INTEGER NonPagingReadBytesRequested;
45 LARGE_INTEGER CacheReadBytesRequested;
46 LARGE_INTEGER NetworkReadBytesRequested;
47 LARGE_INTEGER BytesTransmitted;
48 LARGE_INTEGER SmbsTransmitted;
49 LARGE_INTEGER PagingWriteBytesRequested;
50 LARGE_INTEGER NonPagingWriteBytesRequested;
51 LARGE_INTEGER CacheWriteBytesRequested;
52 LARGE_INTEGER NetworkWriteBytesRequested;
53 unsigned long InitiallyFailedOperations;
54 unsigned long FailedCompletionOperations;
55 unsigned long ReadOperations;
56 unsigned long RandomReadOperations;
57 unsigned long ReadSmbs;
58 unsigned long LargeReadSmbs;
59 unsigned long SmallReadSmbs;
60 unsigned long WriteOperations;
61 unsigned long RandomWriteOperations;
62 unsigned long WriteSmbs;
63 unsigned long LargeWriteSmbs;
64 unsigned long SmallWriteSmbs;
65 unsigned long RawReadsDenied;
66 unsigned long RawWritesDenied;
67 unsigned long NetworkErrors;
68 unsigned long Sessions;
69 unsigned long FailedSessions;
70 unsigned long Reconnects;
71 unsigned long CoreConnects;
72 unsigned long Lanman20Connects;
73 unsigned long Lanman21Connects;
74 unsigned long LanmanNtConnects;
75 unsigned long ServerDisconnects;
76 unsigned long HungSessions;
77 unsigned long UseCount;
78 unsigned long FailedUseCount;
79 unsigned long CurrentCommands;
80 } STAT_WORKSTATION_0, *PSTAT_WORKSTATION_0, *LPSTAT_WORKSTATION_0;
82 typedef struct _WKSTA_INFO_100 {
83 unsigned long wki100_platform_id;
84 [string] wchar_t* wki100_computername;
85 [string] wchar_t* wki100_langroup;
86 unsigned long wki100_ver_major;
87 unsigned long wki100_ver_minor;
88 } WKSTA_INFO_100, *PWKSTA_INFO_100, *LPWKSTA_INFO_100;
90 typedef struct _WKSTA_INFO_101 {
91 unsigned long wki101_platform_id;
92 [string] wchar_t* wki101_computername;
93 [string] wchar_t* wki101_langroup;
94 unsigned long wki101_ver_major;
95 unsigned long wki101_ver_minor;
96 [string] wchar_t* wki101_lanroot;
97 } WKSTA_INFO_101, *PWKSTA_INFO_101, *LPWKSTA_INFO_101;
99 typedef struct _WKSTA_INFO_102 {
100 unsigned long wki102_platform_id;
101 [string] wchar_t* wki102_computername;
102 [string] wchar_t* wki102_langroup;
103 unsigned long wki102_ver_major;
104 unsigned long wki102_ver_minor;
105 [string] wchar_t* wki102_lanroot;
106 unsigned long wki102_logged_on_users;
107 } WKSTA_INFO_102, *PWKSTA_INFO_102, *LPWKSTA_INFO_102;
109 typedef struct _WKSTA_INFO_502{
110 unsigned long wki502_char_wait;
111 unsigned long wki502_collection_time;
112 unsigned long wki502_maximum_collection_count;
113 unsigned long wki502_keep_conn;
114 unsigned long wki502_max_cmds;
115 unsigned long wki502_sess_timeout;
116 unsigned long wki502_siz_char_buf;
117 unsigned long wki502_max_threads;
118 unsigned long wki502_lock_quota;
119 unsigned long wki502_lock_increment;
120 unsigned long wki502_lock_maximum;
121 unsigned long wki502_pipe_increment;
122 unsigned long wki502_pipe_maximum;
123 unsigned long wki502_cache_file_timeout;
124 unsigned long wki502_dormant_file_limit;
125 unsigned long wki502_read_ahead_throughput;
126 unsigned long wki502_num_mailslot_buffers;
127 unsigned long wki502_num_srv_announce_buffers;
128 unsigned long wki502_max_illegal_datagram_events;
129 unsigned long wki502_illegal_datagram_event_reset_frequency;
130 int wki502_log_election_packets;
131 int wki502_use_opportunistic_locking;
132 int wki502_use_unlock_behind;
133 int wki502_use_close_behind;
134 int wki502_buf_named_pipes;
135 int wki502_use_lock_read_unlock;
136 int wki502_utilize_nt_caching;
137 int wki502_use_raw_read;
138 int wki502_use_raw_write;
139 int wki502_use_write_raw_data;
140 int wki502_use_encryption;
141 int wki502_buf_files_deny_write;
142 int wki502_buf_read_only_files;
143 int wki502_force_core_create_mode;
144 int wki502_use_512_byte_max_transfer;
145 } WKSTA_INFO_502, *PWKSTA_INFO_502, *LPWKSTA_INFO_502;
147 typedef struct _WKSTA_INFO_1013 {
148 unsigned long wki1013_keep_conn;
149 } WKSTA_INFO_1013, *PWKSTA_INFO_1013, *LPWKSTA_INFO_1013;
151 typedef struct _WKSTA_INFO_1018 {
152 unsigned long wki1018_sess_timeout;
153 } WKSTA_INFO_1018, *PWKSTA_INFO_1018, *LPWKSTA_INFO_1018;
155 typedef struct _WKSTA_INFO_1046 {
156 unsigned long wki1046_dormant_file_limit;
157 } WKSTA_INFO_1046, *PWKSTA_INFO_1046, *LPWKSTA_INFO_1046;
159 typedef struct _WKSTA_USER_INFO_0 {
160 [string] wchar_t* wkui0_username;
161 } WKSTA_USER_INFO_0, *PWKSTA_USER_INFO_0, *LPWKSTA_USER_INFO_0;
163 typedef struct _WKSTA_USER_INFO_1 {
164 [string] wchar_t* wkui1_username;
165 [string] wchar_t* wkui1_logon_domain;
166 [string] wchar_t* wkui1_oth_domains;
167 [string] wchar_t* wkui1_logon_server;
168 } WKSTA_USER_INFO_1, *PWKSTA_USER_INFO_1, *LPWKSTA_USER_INFO_1;
170 typedef struct _WKSTA_TRANSPORT_INFO_0 {
171 unsigned long wkti0_quality_of_service;
172 unsigned long wkti0_number_of_vcs;
173 [string] wchar_t* wkti0_transport_name;
174 [string] wchar_t* wkti0_transport_address;
175 unsigned long wkti0_wan_ish;
176 } WKSTA_TRANSPORT_INFO_0, *PWKSTA_TRANSPORT_INFO_0,
177 *LPWKSTA_TRANSPORT_INFO_0;
179 typedef [handle] wchar_t* WKSSVC_IDENTIFY_HANDLE;
181 typedef [handle] wchar_t* WKSSVC_IMPERSONATE_HANDLE;
183 typedef [switch_type(unsigned long)] union _WKSTA_INFO {
185 LPWKSTA_INFO_100 WkstaInfo100;
187 LPWKSTA_INFO_101 WkstaInfo101;
189 LPWKSTA_INFO_102 WkstaInfo102;
191 LPWKSTA_INFO_502 WkstaInfo502;
193 LPWKSTA_INFO_1013 WkstaInfo1013;
195 LPWKSTA_INFO_1018 WkstaInfo1018;
197 LPWKSTA_INFO_1046 WkstaInfo1046;
200 } WKSTA_INFO, *PWKSTA_INFO, *LPWKSTA_INFO;
204 [in,string,unique] WKSSVC_IDENTIFY_HANDLE ServerName,
205 [in] unsigned long Level,
206 [out, switch_is(Level)] LPWKSTA_INFO WkstaInfo
211 [in,string,unique] WKSSVC_IDENTIFY_HANDLE ServerName,
212 [in] unsigned long Level,
213 [in, switch_is(Level)] LPWKSTA_INFO WkstaInfo,
214 [in,out,unique] unsigned long* ErrorParameter
217 typedef struct _WKSTA_USER_INFO_0_CONTAINER {
218 unsigned long EntriesRead;
219 [size_is(EntriesRead)] LPWKSTA_USER_INFO_0 Buffer;
220 } WKSTA_USER_INFO_0_CONTAINER, *PWKSTA_USER_INFO_0_CONTAINER,
221 *LPWKSTA_USER_INFO_0_CONTAINER;
223 typedef struct _WKSTA_USER_INFO_1_CONTAINER {
224 unsigned long EntriesRead;
225 [size_is(EntriesRead)] LPWKSTA_USER_INFO_1 Buffer;
226 } WKSTA_USER_INFO_1_CONTAINER, *PWKSTA_USER_INFO_1_CONTAINER,
227 *LPWKSTA_USER_INFO_1_CONTAINER;
230 typedef struct _WKSTA_USER_ENUM_STRUCT {
232 [switch_is(Level)] union _WKSTA_USER_ENUM_UNION {
234 LPWKSTA_USER_INFO_0_CONTAINER Level0;
236 LPWKSTA_USER_INFO_1_CONTAINER Level1;
240 } WKSTA_USER_ENUM_STRUCT,
241 *PWKSTA_USER_ENUM_STRUCT,
242 *LPWKSTA_USER_ENUM_STRUCT;
246 [in,string,unique] WKSSVC_IDENTIFY_HANDLE ServerName,
247 [in,out] LPWKSTA_USER_ENUM_STRUCT UserInfo,
248 [in] unsigned long PreferredMaximumLength,
249 [out] unsigned long* TotalEntries,
250 [in,out,unique] unsigned long* ResumeHandle
253 void Opnum3NotUsedOnWire(void);
255 void Opnum4NotUsedOnWire(void);
257 typedef struct _WKSTA_TRANSPORT_INFO_0_CONTAINER {
258 unsigned long EntriesRead;
259 [size_is(EntriesRead)] LPWKSTA_TRANSPORT_INFO_0 Buffer;
260 } WKSTA_TRANSPORT_INFO_0_CONTAINER,
261 *PWKSTA_TRANSPORT_INFO_0_CONTAINER,
262 *LPWKSTA_TRANSPORT_INFO_0_CONTAINER;
264 typedef struct _WKSTA_TRANSPORT_ENUM_STRUCT {
266 [switch_is(Level)] union _WKSTA_TRANSPORT_ENUM_UNION {
268 LPWKSTA_TRANSPORT_INFO_0_CONTAINER Level0;
271 } WkstaTransportInfo;
272 } WKSTA_TRANSPORT_ENUM_STRUCT, *PWKSTA_TRANSPORT_ENUM_STRUCT,
273 *LPWKSTA_TRANSPORT_ENUM_STRUCT;
276 NetrWkstaTransportEnum (
277 [in,string,unique] WKSSVC_IDENTIFY_HANDLE ServerName,
278 [in,out] LPWKSTA_TRANSPORT_ENUM_STRUCT TransportInfo,
279 [in] unsigned long PreferredMaximumLength,
280 [out] unsigned long* TotalEntries,
281 [in,out,unique] unsigned long* ResumeHandle
285 NetrWkstaTransportAdd (
286 [in,string,unique] WKSSVC_IDENTIFY_HANDLE ServerName,
287 [in] unsigned long Level,
288 [in] LPWKSTA_TRANSPORT_INFO_0 TransportInfo,
289 [in,out,unique] unsigned long* ErrorParameter
293 NetrWkstaTransportDel (
294 [in,string,unique] WKSSVC_IDENTIFY_HANDLE ServerName,
295 [in,string,unique] wchar_t* TransportName,
296 [in] unsigned long ForceLevel
299 void Opnum8NotUsedOnWire(void);
301 void Opnum9NotUsedOnWire(void);
303 void Opnum10NotUsedOnWire(void);
305 void Opnum11NotUsedOnWire(void);
307 void Opnum12NotUsedOnWire(void);
310 NetrWorkstationStatisticsGet(
311 [in,string,unique] WKSSVC_IDENTIFY_HANDLE ServerName,
312 [in,string,unique] wchar_t* ServiceName,
313 [in] unsigned long Level,
314 [in] unsigned long Options,
315 [out] LPSTAT_WORKSTATION_0* Buffer
318 void Opnum14NotUsedOnWire(void);
320 void Opnum15NotUsedOnWire(void);
322 void Opnum16NotUsedOnWire(void);
324 void Opnum17NotUsedOnWire(void);
326 void Opnum18NotUsedOnWire(void);
328 void Opnum19NotUsedOnWire(void);
331 NetrGetJoinInformation(
332 [in,string,unique] WKSSVC_IMPERSONATE_HANDLE ServerName,
333 [in,out,string] wchar_t** NameBuffer,
334 [out] PNETSETUP_JOIN_STATUS BufferType
337 void Opnum21NotUsedOnWire(void);
339 #define JOIN_OBFUSCATOR_LENGTH 8
340 #define JOIN_MAX_PASSWORD_LENGTH 256
342 typedef struct _JOINPR_USER_PASSWORD {
343 unsigned char Obfuscator[JOIN_OBFUSCATOR_LENGTH];
344 wchar_t Buffer[JOIN_MAX_PASSWORD_LENGTH];
345 unsigned long Length;
346 } JOINPR_USER_PASSWORD,
347 *PJOINPR_USER_PASSWORD;
349 typedef struct _JOINPR_ENCRYPTED_USER_PASSWORD {
350 unsigned char Buffer[JOIN_OBFUSCATOR_LENGTH +
351 (JOIN_MAX_PASSWORD_LENGTH * sizeof(wchar_t)) +
352 sizeof(unsigned long)];
353 } JOINPR_ENCRYPTED_USER_PASSWORD,
354 *PJOINPR_ENCRYPTED_USER_PASSWORD;
356 typedef struct _UNICODE_STRING {
357 unsigned short Length;
358 unsigned short MaximumLength;
359 [size_is(MaximumLength / 2), length_is((Length) / 2)]
360 unsigned short* Buffer;
366 [in] handle_t RpcBindingHandle,
367 [in,string,unique] wchar_t* ServerName,
368 [in,string] wchar_t* DomainName,
369 [in,string,unique] wchar_t* MachineAccountOU,
370 [in,string,unique] wchar_t* AccountName,
371 [in,unique] PJOINPR_ENCRYPTED_USER_PASSWORD Password,
372 [in] unsigned long Options
377 [in] handle_t RpcBindingHandle,
378 [in,string,unique] wchar_t* ServerName,
379 [in,string,unique] wchar_t* AccountName,
380 [in,unique] PJOINPR_ENCRYPTED_USER_PASSWORD Password,
381 [in] unsigned long Options
385 NetrRenameMachineInDomain2(
386 [in] handle_t RpcBindingHandle,
387 [in,string,unique] wchar_t* ServerName,
388 [in,string,unique] wchar_t* MachineName,
389 [in,string,unique] wchar_t* AccountName,
390 [in,unique] PJOINPR_ENCRYPTED_USER_PASSWORD Password,
391 [in] unsigned long Options
396 [in] handle_t RpcBindingHandle,
397 [in,string,unique] wchar_t* ServerName,
398 [in,string] wchar_t* NameToValidate,
399 [in,string,unique] wchar_t* AccountName,
400 [in,unique] PJOINPR_ENCRYPTED_USER_PASSWORD Password,
401 [in] NETSETUP_NAME_TYPE NameType
406 [in] handle_t RpcBindingHandle,
407 [in,string,unique] wchar_t* ServerName,
408 [in,string] wchar_t* DomainName,
409 [in,string,unique] wchar_t* AccountName,
410 [in,unique] PJOINPR_ENCRYPTED_USER_PASSWORD Password,
411 [in,out] unsigned long* OUCount,
412 [out,string,size_is(,*OUCount)] wchar_t*** OUs
416 NetrAddAlternateComputerName(
417 [in] handle_t RpcBindingHandle,
418 [in,string,unique] wchar_t* ServerName,
419 [in,string,unique] wchar_t* AlternateName,
420 [in,string,unique] wchar_t* DomainAccount,
421 [in,unique] PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword,
422 [in] unsigned long Reserved
426 NetrRemoveAlternateComputerName(
427 [in] handle_t RpcBindingHandle,
428 [in,string,unique] wchar_t* ServerName,
429 [in,string,unique] wchar_t* AlternateName,
430 [in,string,unique] wchar_t* DomainAccount,
431 [in,unique] PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword,
432 [in] unsigned long Reserved
436 NetrSetPrimaryComputerName(
437 [in] handle_t RpcBindingHandle,
438 [in,string,unique] wchar_t* ServerName,
439 [in,string,unique] wchar_t* PrimaryName,
440 [in,string,unique] wchar_t* DomainAccount,
441 [in,unique] PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword,
442 [in] unsigned long Reserved
445 typedef struct _NET_COMPUTER_NAME_ARRAY {
446 unsigned long EntryCount;
447 [size_is(EntryCount)] PUNICODE_STRING ComputerNames;
448 } NET_COMPUTER_NAME_ARRAY, *PNET_COMPUTER_NAME_ARRAY;
451 NetrEnumerateComputerNames(
452 [in,string,unique] WKSSVC_IMPERSONATE_HANDLE ServerName,
453 [in] NET_COMPUTER_NAME_TYPE NameType,
454 [in] unsigned long Reserved,
455 [out] PNET_COMPUTER_NAME_ARRAY *ComputerNames