1use shared::lmcons::{LMSTR, NET_API_STATUS};
7use shared::minwindef::{BOOL, DWORD, LPBYTE, LPDWORD};
8use um::winnt::LPCWSTR;
9extern "system" {
10 pub fn NetWkstaGetInfo(
11 servername: LMSTR,
12 level: DWORD,
13 bufptr: *mut LPBYTE,
14 ) -> NET_API_STATUS;
15 pub fn NetWkstaSetInfo(
16 servername: LMSTR,
17 level: DWORD,
18 buffer: LPBYTE,
19 parm_err: LPDWORD,
20 ) -> NET_API_STATUS;
21 pub fn NetWkstaUserGetInfo(
22 reserved: LMSTR,
23 level: DWORD,
24 bufptr: *mut LPBYTE,
25 ) -> NET_API_STATUS;
26 pub fn NetWkstaUserSetInfo(
27 reserved: LMSTR,
28 level: DWORD,
29 buf: LPBYTE,
30 parm_err: LPDWORD,
31 ) -> NET_API_STATUS;
32 pub fn NetWkstaUserEnum(
33 servername: LMSTR,
34 level: DWORD,
35 bufptr: *mut LPBYTE,
36 prefmaxlen: DWORD,
37 entriesread: LPDWORD,
38 totalentries: LPDWORD,
39 resumehandle: LPDWORD,
40 ) -> NET_API_STATUS;
41 pub fn NetWkstaTransportAdd(
42 servername: LPCWSTR,
43 level: DWORD,
44 buf: LPBYTE,
45 parm_err: LPDWORD,
46 ) -> NET_API_STATUS;
47 pub fn NetWkstaTransportDel(
48 servername: LMSTR,
49 transportname: LMSTR,
50 ucond: DWORD,
51 ) -> NET_API_STATUS;
52 pub fn NetWkstaTransportEnum(
53 servername: LPCWSTR,
54 level: DWORD,
55 bufptr: *mut LPBYTE,
56 prefmaxlen: DWORD,
57 entriesread: LPDWORD,
58 totalentries: LPDWORD,
59 resumehandle: LPDWORD,
60 ) -> NET_API_STATUS;
61}
62STRUCT!{struct WKSTA_INFO_100 {
63 wki100_platform_id: DWORD,
64 wki100_computername: LMSTR,
65 wki100_langroup: LMSTR,
66 wki100_ver_major: DWORD,
67 wki100_ver_minor: DWORD,
68}}
69pub type PWKSTA_INFO_100 = *mut WKSTA_INFO_100;
70pub type LPWKSTA_INFO_100 = *mut WKSTA_INFO_100;
71STRUCT!{struct WKSTA_INFO_101 {
72 wki101_platform_id: DWORD,
73 wki101_computername: LMSTR,
74 wki101_langroup: LMSTR,
75 wki101_ver_major: DWORD,
76 wki101_ver_minor: DWORD,
77 wki101_lanroot: LMSTR,
78}}
79pub type PWKSTA_INFO_101 = *mut WKSTA_INFO_101;
80pub type LPWKSTA_INFO_101 = *mut WKSTA_INFO_101;
81STRUCT!{struct WKSTA_INFO_102 {
82 wki102_platform_id: DWORD,
83 wki102_computername: LMSTR,
84 wki102_langroup: LMSTR,
85 wki102_ver_major: DWORD,
86 wki102_ver_minor: DWORD,
87 wki102_lanroot: LMSTR,
88 wki102_logged_on_users: DWORD,
89}}
90pub type PWKSTA_INFO_102 = *mut WKSTA_INFO_102;
91pub type LPWKSTA_INFO_102 = *mut WKSTA_INFO_102;
92STRUCT!{struct WKSTA_INFO_302 {
93 wki302_char_wait: DWORD,
94 wki302_collection_time: DWORD,
95 wki302_maximum_collection_count: DWORD,
96 wki302_keep_conn: DWORD,
97 wki302_keep_search: DWORD,
98 wki302_max_cmds: DWORD,
99 wki302_num_work_buf: DWORD,
100 wki302_siz_work_buf: DWORD,
101 wki302_max_wrk_cache: DWORD,
102 wki302_sess_timeout: DWORD,
103 wki302_siz_error: DWORD,
104 wki302_num_alerts: DWORD,
105 wki302_num_services: DWORD,
106 wki302_errlog_sz: DWORD,
107 wki302_print_buf_time: DWORD,
108 wki302_num_char_buf: DWORD,
109 wki302_siz_char_buf: DWORD,
110 wki302_wrk_heuristics: LMSTR,
111 wki302_mailslots: DWORD,
112 wki302_num_dgram_buf: DWORD,
113}}
114pub type PWKSTA_INFO_302 = *mut WKSTA_INFO_302;
115pub type LPWKSTA_INFO_302 = *mut WKSTA_INFO_302;
116STRUCT!{struct WKSTA_INFO_402 {
117 wki402_char_wait: DWORD,
118 wki402_collection_time: DWORD,
119 wki402_maximum_collection_count: DWORD,
120 wki402_keep_conn: DWORD,
121 wki402_keep_search: DWORD,
122 wki402_max_cmds: DWORD,
123 wki402_num_work_buf: DWORD,
124 wki402_siz_work_buf: DWORD,
125 wki402_max_wrk_cache: DWORD,
126 wki402_sess_timeout: DWORD,
127 wki402_siz_error: DWORD,
128 wki402_num_alerts: DWORD,
129 wki402_num_services: DWORD,
130 wki402_errlog_sz: DWORD,
131 wki402_print_buf_time: DWORD,
132 wki402_num_char_buf: DWORD,
133 wki402_siz_char_buf: DWORD,
134 wki402_wrk_heuristics: LMSTR,
135 wki402_mailslots: DWORD,
136 wki402_num_dgram_buf: DWORD,
137 wki402_max_threads: DWORD,
138}}
139pub type PWKSTA_INFO_402 = *mut WKSTA_INFO_402;
140pub type LPWKSTA_INFO_402 = *mut WKSTA_INFO_402;
141STRUCT!{struct WKSTA_INFO_502 {
142 wki502_char_wait: DWORD,
143 wki502_collection_time: DWORD,
144 wki502_maximum_collection_count: DWORD,
145 wki502_keep_conn: DWORD,
146 wki502_max_cmds: DWORD,
147 wki502_sess_timeout: DWORD,
148 wki502_siz_char_buf: DWORD,
149 wki502_max_threads: DWORD,
150 wki502_lock_quota: DWORD,
151 wki502_lock_increment: DWORD,
152 wki502_lock_maximum: DWORD,
153 wki502_pipe_increment: DWORD,
154 wki502_pipe_maximum: DWORD,
155 wki502_cache_file_timeout: DWORD,
156 wki502_dormant_file_limit: DWORD,
157 wki502_read_ahead_throughput: DWORD,
158 wki502_num_mailslot_buffers: DWORD,
159 wki502_num_srv_announce_buffers: DWORD,
160 wki502_max_illegal_datagram_events: DWORD,
161 wki502_illegal_datagram_event_reset_frequency: DWORD,
162 wki502_log_election_packets: BOOL,
163 wki502_use_opportunistic_locking: BOOL,
164 wki502_use_unlock_behind: BOOL,
165 wki502_use_close_behind: BOOL,
166 wki502_buf_named_pipes: BOOL,
167 wki502_use_lock_read_unlock: BOOL,
168 wki502_utilize_nt_caching: BOOL,
169 wki502_use_raw_read: BOOL,
170 wki502_use_raw_write: BOOL,
171 wki502_use_write_raw_data: BOOL,
172 wki502_use_encryption: BOOL,
173 wki502_buf_files_deny_write: BOOL,
174 wki502_buf_read_only_files: BOOL,
175 wki502_force_core_create_mode: BOOL,
176 wki502_use_512_byte_max_transfer: BOOL,
177}}
178pub type PWKSTA_INFO_502 = *mut WKSTA_INFO_502;
179pub type LPWKSTA_INFO_502 = *mut WKSTA_INFO_502;
180STRUCT!{struct WKSTA_INFO_1010 {
181 wki1010_char_wait: DWORD,
182}}
183pub type PWKSTA_INFO_1010 = *mut WKSTA_INFO_1010;
184pub type LPWKSTA_INFO_1010 = *mut WKSTA_INFO_1010;
185STRUCT!{struct WKSTA_INFO_1011 {
186 wki1011_collection_time: DWORD,
187}}
188pub type PWKSTA_INFO_1011 = *mut WKSTA_INFO_1011;
189pub type LPWKSTA_INFO_1011 = *mut WKSTA_INFO_1011;
190STRUCT!{struct WKSTA_INFO_1012 {
191 wki1012_maximum_collection_count: DWORD,
192}}
193pub type PWKSTA_INFO_1012 = *mut WKSTA_INFO_1012;
194pub type LPWKSTA_INFO_1012 = *mut WKSTA_INFO_1012;
195STRUCT!{struct WKSTA_INFO_1027 {
196 wki1027_errlog_sz: DWORD,
197}}
198pub type PWKSTA_INFO_1027 = *mut WKSTA_INFO_1027;
199pub type LPWKSTA_INFO_1027 = *mut WKSTA_INFO_1027;
200STRUCT!{struct WKSTA_INFO_1028 {
201 wki1028_print_buf_time: DWORD,
202}}
203pub type PWKSTA_INFO_1028 = *mut WKSTA_INFO_1028;
204pub type LPWKSTA_INFO_1028 = *mut WKSTA_INFO_1028;
205STRUCT!{struct WKSTA_INFO_1032 {
206 wki1032_wrk_heuristics: DWORD,
207}}
208pub type PWKSTA_INFO_1032 = *mut WKSTA_INFO_1032;
209pub type LPWKSTA_INFO_1032 = *mut WKSTA_INFO_1032;
210STRUCT!{struct WKSTA_INFO_1013 {
211 wki1013_keep_conn: DWORD,
212}}
213pub type PWKSTA_INFO_1013 = *mut WKSTA_INFO_1013;
214pub type LPWKSTA_INFO_1013 = *mut WKSTA_INFO_1013;
215STRUCT!{struct WKSTA_INFO_1018 {
216 wki1018_sess_timeout: DWORD,
217}}
218pub type PWKSTA_INFO_1018 = *mut WKSTA_INFO_1018;
219pub type LPWKSTA_INFO_1018 = *mut WKSTA_INFO_1018;
220STRUCT!{struct WKSTA_INFO_1023 {
221 wki1023_siz_char_buf: DWORD,
222}}
223pub type PWKSTA_INFO_1023 = *mut WKSTA_INFO_1023;
224pub type LPWKSTA_INFO_1023 = *mut WKSTA_INFO_1023;
225STRUCT!{struct WKSTA_INFO_1033 {
226 wki1033_max_threads: DWORD,
227}}
228pub type PWKSTA_INFO_1033 = *mut WKSTA_INFO_1033;
229pub type LPWKSTA_INFO_1033 = *mut WKSTA_INFO_1033;
230STRUCT!{struct WKSTA_INFO_1041 {
231 wki1041_lock_quota: DWORD,
232}}
233pub type PWKSTA_INFO_1041 = *mut WKSTA_INFO_1041;
234pub type LPWKSTA_INFO_1041 = *mut WKSTA_INFO_1041;
235STRUCT!{struct WKSTA_INFO_1042 {
236 wki1042_lock_increment: DWORD,
237}}
238pub type PWKSTA_INFO_1042 = *mut WKSTA_INFO_1042;
239pub type LPWKSTA_INFO_1042 = *mut WKSTA_INFO_1042;
240STRUCT!{struct WKSTA_INFO_1043 {
241 wki1043_lock_maximum: DWORD,
242}}
243pub type PWKSTA_INFO_1043 = *mut WKSTA_INFO_1043;
244pub type LPWKSTA_INFO_1043 = *mut WKSTA_INFO_1043;
245STRUCT!{struct WKSTA_INFO_1044 {
246 wki1044_pipe_increment: DWORD,
247}}
248pub type PWKSTA_INFO_1044 = *mut WKSTA_INFO_1044;
249pub type LPWKSTA_INFO_1044 = *mut WKSTA_INFO_1044;
250STRUCT!{struct WKSTA_INFO_1045 {
251 wki1045_pipe_maximum: DWORD,
252}}
253pub type PWKSTA_INFO_1045 = *mut WKSTA_INFO_1045;
254pub type LPWKSTA_INFO_1045 = *mut WKSTA_INFO_1045;
255STRUCT!{struct WKSTA_INFO_1046 {
256 wki1046_dormant_file_limit: DWORD,
257}}
258pub type PWKSTA_INFO_1046 = *mut WKSTA_INFO_1046;
259pub type LPWKSTA_INFO_1046 = *mut WKSTA_INFO_1046;
260STRUCT!{struct WKSTA_INFO_1047 {
261 wki1047_cache_file_timeout: DWORD,
262}}
263pub type PWKSTA_INFO_1047 = *mut WKSTA_INFO_1047;
264pub type LPWKSTA_INFO_1047 = *mut WKSTA_INFO_1047;
265STRUCT!{struct WKSTA_INFO_1048 {
266 wki1048_use_opportunistic_locking: BOOL,
267}}
268pub type PWKSTA_INFO_1048 = *mut WKSTA_INFO_1048;
269pub type LPWKSTA_INFO_1048 = *mut WKSTA_INFO_1048;
270STRUCT!{struct WKSTA_INFO_1049 {
271 wki1049_use_unlock_behind: BOOL,
272}}
273pub type PWKSTA_INFO_1049 = *mut WKSTA_INFO_1049;
274pub type LPWKSTA_INFO_1049 = *mut WKSTA_INFO_1049;
275STRUCT!{struct WKSTA_INFO_1050 {
276 wki1050_use_close_behind: BOOL,
277}}
278pub type PWKSTA_INFO_1050 = *mut WKSTA_INFO_1050;
279pub type LPWKSTA_INFO_1050 = *mut WKSTA_INFO_1050;
280STRUCT!{struct WKSTA_INFO_1051 {
281 wki1051_buf_named_pipes: BOOL,
282}}
283pub type PWKSTA_INFO_1051 = *mut WKSTA_INFO_1051;
284pub type LPWKSTA_INFO_1051 = *mut WKSTA_INFO_1051;
285STRUCT!{struct WKSTA_INFO_1052 {
286 wki1052_use_lock_read_unlock: BOOL,
287}}
288pub type PWKSTA_INFO_1052 = *mut WKSTA_INFO_1052;
289pub type LPWKSTA_INFO_1052 = *mut WKSTA_INFO_1052;
290STRUCT!{struct WKSTA_INFO_1053 {
291 wki1053_utilize_nt_caching: BOOL,
292}}
293pub type PWKSTA_INFO_1053 = *mut WKSTA_INFO_1053;
294pub type LPWKSTA_INFO_1053 = *mut WKSTA_INFO_1053;
295STRUCT!{struct WKSTA_INFO_1054 {
296 wki1054_use_raw_read: BOOL,
297}}
298pub type PWKSTA_INFO_1054 = *mut WKSTA_INFO_1054;
299pub type LPWKSTA_INFO_1054 = *mut WKSTA_INFO_1054;
300STRUCT!{struct WKSTA_INFO_1055 {
301 wki1055_use_raw_write: BOOL,
302}}
303pub type PWKSTA_INFO_1055 = *mut WKSTA_INFO_1055;
304pub type LPWKSTA_INFO_1055 = *mut WKSTA_INFO_1055;
305STRUCT!{struct WKSTA_INFO_1056 {
306 wki1056_use_write_raw_data: BOOL,
307}}
308pub type PWKSTA_INFO_1056 = *mut WKSTA_INFO_1056;
309pub type LPWKSTA_INFO_1056 = *mut WKSTA_INFO_1056;
310STRUCT!{struct WKSTA_INFO_1057 {
311 wki1057_use_encryption: BOOL,
312}}
313pub type PWKSTA_INFO_1057 = *mut WKSTA_INFO_1057;
314pub type LPWKSTA_INFO_1057 = *mut WKSTA_INFO_1057;
315STRUCT!{struct WKSTA_INFO_1058 {
316 wki1058_buf_files_deny_write: BOOL,
317}}
318pub type PWKSTA_INFO_1058 = *mut WKSTA_INFO_1058;
319pub type LPWKSTA_INFO_1058 = *mut WKSTA_INFO_1058;
320STRUCT!{struct WKSTA_INFO_1059 {
321 wki1059_buf_read_only_files: BOOL,
322}}
323pub type PWKSTA_INFO_1059 = *mut WKSTA_INFO_1059;
324pub type LPWKSTA_INFO_1059 = *mut WKSTA_INFO_1059;
325STRUCT!{struct WKSTA_INFO_1060 {
326 wki1060_force_core_create_mode: BOOL,
327}}
328pub type PWKSTA_INFO_1060 = *mut WKSTA_INFO_1060;
329pub type LPWKSTA_INFO_1060 = *mut WKSTA_INFO_1060;
330STRUCT!{struct WKSTA_INFO_1061 {
331 wki1061_use_512_byte_max_transfer: BOOL,
332}}
333pub type PWKSTA_INFO_1061 = *mut WKSTA_INFO_1061;
334pub type LPWKSTA_INFO_1061 = *mut WKSTA_INFO_1061;
335STRUCT!{struct WKSTA_INFO_1062 {
336 wki1062_read_ahead_throughput: DWORD,
337}}
338pub type PWKSTA_INFO_1062 = *mut WKSTA_INFO_1062;
339pub type LPWKSTA_INFO_1062 = *mut WKSTA_INFO_1062;
340STRUCT!{struct WKSTA_USER_INFO_0 {
341 wkui0_username: LMSTR,
342}}
343pub type PWKSTA_USER_INFO_0 = *mut WKSTA_USER_INFO_0;
344pub type LPWKSTA_USER_INFO_0 = *mut WKSTA_USER_INFO_0;
345STRUCT!{struct WKSTA_USER_INFO_1 {
346 wkui1_username: LMSTR,
347 wkui1_logon_domain: LMSTR,
348 wkui1_oth_domains: LMSTR,
349 wkui1_logon_server: LMSTR,
350}}
351pub type PWKSTA_USER_INFO_1 = *mut WKSTA_USER_INFO_1;
352pub type LPWKSTA_USER_INFO_1 = *mut WKSTA_USER_INFO_1;
353STRUCT!{struct WKSTA_USER_INFO_1101 {
354 wkui1101_oth_domains: LMSTR,
355}}
356pub type PWKSTA_USER_INFO_1101 = *mut WKSTA_USER_INFO_1101;
357pub type LPWKSTA_USER_INFO_1101 = *mut WKSTA_USER_INFO_1101;
358STRUCT!{struct WKSTA_TRANSPORT_INFO_0 {
359 wkti0_quality_of_service: DWORD,
360 wkti0_number_of_vcs: DWORD,
361 wkti0_transport_name: LMSTR,
362 wkti0_transport_address: LMSTR,
363 wkti0_wan_ish: BOOL,
364}}
365pub type PWKSTA_TRANSPORT_INFO_0 = *mut WKSTA_TRANSPORT_INFO_0;
366pub type LPWKSTA_TRANSPORT_INFO_0 = *mut WKSTA_TRANSPORT_INFO_0;
367pub const WKSTA_PLATFORM_ID_PARMNUM: DWORD = 100;
368pub const WKSTA_COMPUTERNAME_PARMNUM: DWORD = 1;
369pub const WKSTA_LANGROUP_PARMNUM: DWORD = 2;
370pub const WKSTA_VER_MAJOR_PARMNUM: DWORD = 4;
371pub const WKSTA_VER_MINOR_PARMNUM: DWORD = 5;
372pub const WKSTA_LOGGED_ON_USERS_PARMNUM: DWORD = 6;
373pub const WKSTA_LANROOT_PARMNUM: DWORD = 7;
374pub const WKSTA_LOGON_DOMAIN_PARMNUM: DWORD = 8;
375pub const WKSTA_LOGON_SERVER_PARMNUM: DWORD = 9;
376pub const WKSTA_CHARWAIT_PARMNUM: DWORD = 10;
377pub const WKSTA_CHARTIME_PARMNUM: DWORD = 11;
378pub const WKSTA_CHARCOUNT_PARMNUM: DWORD = 12;
379pub const WKSTA_KEEPCONN_PARMNUM: DWORD = 13;
380pub const WKSTA_KEEPSEARCH_PARMNUM: DWORD = 14;
381pub const WKSTA_MAXCMDS_PARMNUM: DWORD = 15;
382pub const WKSTA_NUMWORKBUF_PARMNUM: DWORD = 16;
383pub const WKSTA_MAXWRKCACHE_PARMNUM: DWORD = 17;
384pub const WKSTA_SESSTIMEOUT_PARMNUM: DWORD = 18;
385pub const WKSTA_SIZERROR_PARMNUM: DWORD = 19;
386pub const WKSTA_NUMALERTS_PARMNUM: DWORD = 20;
387pub const WKSTA_NUMSERVICES_PARMNUM: DWORD = 21;
388pub const WKSTA_NUMCHARBUF_PARMNUM: DWORD = 22;
389pub const WKSTA_SIZCHARBUF_PARMNUM: DWORD = 23;
390pub const WKSTA_ERRLOGSZ_PARMNUM: DWORD = 27;
391pub const WKSTA_PRINTBUFTIME_PARMNUM: DWORD = 28;
392pub const WKSTA_SIZWORKBUF_PARMNUM: DWORD = 29;
393pub const WKSTA_MAILSLOTS_PARMNUM: DWORD = 30;
394pub const WKSTA_NUMDGRAMBUF_PARMNUM: DWORD = 31;
395pub const WKSTA_WRKHEURISTICS_PARMNUM: DWORD = 32;
396pub const WKSTA_MAXTHREADS_PARMNUM: DWORD = 33;
397pub const WKSTA_LOCKQUOTA_PARMNUM: DWORD = 41;
398pub const WKSTA_LOCKINCREMENT_PARMNUM: DWORD = 42;
399pub const WKSTA_LOCKMAXIMUM_PARMNUM: DWORD = 43;
400pub const WKSTA_PIPEINCREMENT_PARMNUM: DWORD = 44;
401pub const WKSTA_PIPEMAXIMUM_PARMNUM: DWORD = 45;
402pub const WKSTA_DORMANTFILELIMIT_PARMNUM: DWORD = 46;
403pub const WKSTA_CACHEFILETIMEOUT_PARMNUM: DWORD = 47;
404pub const WKSTA_USEOPPORTUNISTICLOCKING_PARMNUM: DWORD = 48;
405pub const WKSTA_USEUNLOCKBEHIND_PARMNUM: DWORD = 49;
406pub const WKSTA_USECLOSEBEHIND_PARMNUM: DWORD = 50;
407pub const WKSTA_BUFFERNAMEDPIPES_PARMNUM: DWORD = 51;
408pub const WKSTA_USELOCKANDREADANDUNLOCK_PARMNUM: DWORD = 52;
409pub const WKSTA_UTILIZENTCACHING_PARMNUM: DWORD = 53;
410pub const WKSTA_USERAWREAD_PARMNUM: DWORD = 54;
411pub const WKSTA_USERAWWRITE_PARMNUM: DWORD = 55;
412pub const WKSTA_USEWRITERAWWITHDATA_PARMNUM: DWORD = 56;
413pub const WKSTA_USEENCRYPTION_PARMNUM: DWORD = 57;
414pub const WKSTA_BUFFILESWITHDENYWRITE_PARMNUM: DWORD = 58;
415pub const WKSTA_BUFFERREADONLYFILES_PARMNUM: DWORD = 59;
416pub const WKSTA_FORCECORECREATEMODE_PARMNUM: DWORD = 60;
417pub const WKSTA_USE512BYTESMAXTRANSFER_PARMNUM: DWORD = 61;
418pub const WKSTA_READAHEADTHRUPUT_PARMNUM: DWORD = 62;
419pub const WKSTA_OTH_DOMAINS_PARMNUM: DWORD = 101;
420pub const TRANSPORT_QUALITYOFSERVICE_PARMNUM: DWORD = 201;
421pub const TRANSPORT_NAME_PARMNUM: DWORD = 202;