1 /**
2  * @file lmwksta.h
3  * Copyright 2012, 2013 MinGW.org project
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 #ifndef _LMWKSTA_H
25 #define _LMWKSTA_H
26 #pragma GCC system_header
27 #include <_mingw.h>
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
33 #include <lmuseflg.h>
34 #define WKSTA_PLATFORM_ID_PARMNUM 100
35 #define WKSTA_COMPUTERNAME_PARMNUM 1
36 #define WKSTA_LANGROUP_PARMNUM 2
37 #define WKSTA_VER_MAJOR_PARMNUM 4
38 #define WKSTA_VER_MINOR_PARMNUM 5
39 #define WKSTA_LOGGED_ON_USERS_PARMNUM 6
40 #define WKSTA_LANROOT_PARMNUM 7
41 #define WKSTA_LOGON_DOMAIN_PARMNUM 8
42 #define WKSTA_LOGON_SERVER_PARMNUM 9
43 #define WKSTA_CHARWAIT_PARMNUM 10
44 #define WKSTA_CHARTIME_PARMNUM 11
45 #define WKSTA_CHARCOUNT_PARMNUM 12
46 #define WKSTA_KEEPCONN_PARMNUM 13
47 #define WKSTA_KEEPSEARCH_PARMNUM 14
48 #define WKSTA_MAXCMDS_PARMNUM 15
49 #define WKSTA_NUMWORKBUF_PARMNUM 16
50 #define WKSTA_MAXWRKCACHE_PARMNUM 17
51 #define WKSTA_SESSTIMEOUT_PARMNUM 18
52 #define WKSTA_SIZERROR_PARMNUM 19
53 #define WKSTA_NUMALERTS_PARMNUM 20
54 #define WKSTA_NUMSERVICES_PARMNUM 21
55 #define WKSTA_NUMCHARBUF_PARMNUM 22
56 #define WKSTA_SIZCHARBUF_PARMNUM 23
57 #define WKSTA_ERRLOGSZ_PARMNUM 27
58 #define WKSTA_PRINTBUFTIME_PARMNUM 28
59 #define WKSTA_SIZWORKBUF_PARMNUM 29
60 #define WKSTA_MAILSLOTS_PARMNUM 30
61 #define WKSTA_NUMDGRAMBUF_PARMNUM 31
62 #define WKSTA_WRKHEURISTICS_PARMNUM 32
63 #define WKSTA_MAXTHREADS_PARMNUM 33
64 #define WKSTA_LOCKQUOTA_PARMNUM 41
65 #define WKSTA_LOCKINCREMENT_PARMNUM 42
66 #define WKSTA_LOCKMAXIMUM_PARMNUM 43
67 #define WKSTA_PIPEINCREMENT_PARMNUM 44
68 #define WKSTA_PIPEMAXIMUM_PARMNUM 45
69 #define WKSTA_DORMANTFILELIMIT_PARMNUM 46
70 #define WKSTA_CACHEFILETIMEOUT_PARMNUM 47
71 #define WKSTA_USEOPPORTUNISTICLOCKING_PARMNUM 48
72 #define WKSTA_USEUNLOCKBEHIND_PARMNUM 49
73 #define WKSTA_USECLOSEBEHIND_PARMNUM 50
74 #define WKSTA_BUFFERNAMEDPIPES_PARMNUM 51
75 #define WKSTA_USELOCKANDREADANDUNLOCK_PARMNUM 52
76 #define WKSTA_UTILIZENTCACHING_PARMNUM 53
77 #define WKSTA_USERAWREAD_PARMNUM 54
78 #define WKSTA_USERAWWRITE_PARMNUM 55
79 #define WKSTA_USEWRITERAWWITHDATA_PARMNUM 56
80 #define WKSTA_USEENCRYPTION_PARMNUM 57
81 #define WKSTA_BUFFILESWITHDENYWRITE_PARMNUM 58
82 #define WKSTA_BUFFERREADONLYFILES_PARMNUM 59
83 #define WKSTA_FORCECORECREATEMODE_PARMNUM 60
84 #define WKSTA_USE512BYTESMAXTRANSFER_PARMNUM 61
85 #define WKSTA_READAHEADTHRUPUT_PARMNUM 62
86 #define WKSTA_OTH_DOMAINS_PARMNUM 101
87 #define TRANSPORT_QUALITYOFSERVICE_PARMNUM 201
88 #define TRANSPORT_NAME_PARMNUM 202
89 
90 typedef struct _WKSTA_INFO_100 {
91 	DWORD wki100_platform_id;
92 	LPWSTR wki100_computername;
93 	LPWSTR wki100_langroup;
94 	DWORD wki100_ver_major;
95 	DWORD wki100_ver_minor;
96 }WKSTA_INFO_100,*PWKSTA_INFO_100,*LPWKSTA_INFO_100;
97 typedef struct _WKSTA_INFO_101 {
98 	DWORD wki101_platform_id;
99 	LPWSTR wki101_computername;
100 	LPWSTR wki101_langroup;
101 	DWORD wki101_ver_major;
102 	DWORD wki101_ver_minor;
103 	LPWSTR wki101_lanroot;
104 }WKSTA_INFO_101,*PWKSTA_INFO_101,*LPWKSTA_INFO_101;
105 typedef struct _WKSTA_INFO_102 {
106 	DWORD wki102_platform_id;
107 	LPWSTR wki102_computername;
108 	LPWSTR wki102_langroup;
109 	DWORD wki102_ver_major;
110 	DWORD wki102_ver_minor;
111 	LPWSTR wki102_lanroot;
112 	DWORD wki102_logged_on_users;
113 }WKSTA_INFO_102,*PWKSTA_INFO_102,*LPWKSTA_INFO_102;
114 typedef struct _WKSTA_INFO_302{
115 	DWORD wki302_char_wait;
116 	DWORD wki302_collection_time;
117 	DWORD wki302_maximum_collection_count;
118 	DWORD wki302_keep_conn;
119 	DWORD wki302_keep_search;
120 	DWORD wki302_max_cmds;
121 	DWORD wki302_num_work_buf;
122 	DWORD wki302_siz_work_buf;
123 	DWORD wki302_max_wrk_cache;
124 	DWORD wki302_sess_timeout;
125 	DWORD wki302_siz_error;
126 	DWORD wki302_num_alerts;
127 	DWORD wki302_num_services;
128 	DWORD wki302_errlog_sz;
129 	DWORD wki302_print_buf_time;
130 	DWORD wki302_num_char_buf;
131 	DWORD wki302_siz_char_buf;
132 	LPWSTR wki302_wrk_heuristics;
133 	DWORD wki302_mailslots;
134 	DWORD wki302_num_dgram_buf;
135 }WKSTA_INFO_302,*PWKSTA_INFO_302,*LPWKSTA_INFO_302;
136 typedef struct _WKSTA_INFO_402{
137 	DWORD wki402_char_wait;
138 	DWORD wki402_collection_time;
139 	DWORD wki402_maximum_collection_count;
140 	DWORD wki402_keep_conn;
141 	DWORD wki402_keep_search;
142 	DWORD wki402_max_cmds;
143 	DWORD wki402_num_work_buf;
144 	DWORD wki402_siz_work_buf;
145 	DWORD wki402_max_wrk_cache;
146 	DWORD wki402_sess_timeout;
147 	DWORD wki402_siz_error;
148 	DWORD wki402_num_alerts;
149 	DWORD wki402_num_services;
150 	DWORD wki402_errlog_sz;
151 	DWORD wki402_print_buf_time;
152 	DWORD wki402_num_char_buf;
153 	DWORD wki402_siz_char_buf;
154 	LPWSTR wki402_wrk_heuristics;
155 	DWORD wki402_mailslots;
156 	DWORD wki402_num_dgram_buf;
157 	DWORD wki402_max_threads;
158 }WKSTA_INFO_402,*PWKSTA_INFO_402,*LPWKSTA_INFO_402;
159 typedef struct _WKSTA_INFO_502{
160 	DWORD wki502_char_wait;
161 	DWORD wki502_collection_time;
162 	DWORD wki502_maximum_collection_count;
163 	DWORD wki502_keep_conn;
164 	DWORD wki502_max_cmds;
165 	DWORD wki502_sess_timeout;
166 	DWORD wki502_siz_char_buf;
167 	DWORD wki502_max_threads;
168 	DWORD wki502_lock_quota;
169 	DWORD wki502_lock_increment;
170 	DWORD wki502_lock_maximum;
171 	DWORD wki502_pipe_increment;
172 	DWORD wki502_pipe_maximum;
173 	DWORD wki502_cache_file_timeout;
174 	DWORD wki502_dormant_file_limit;
175 	DWORD wki502_read_ahead_throughput;
176 	DWORD wki502_num_mailslot_buffers;
177 	DWORD wki502_num_srv_announce_buffers;
178 	DWORD wki502_max_illegal_datagram_events;
179 	DWORD wki502_illegal_datagram_event_reset_frequency;
180 	BOOL wki502_log_election_packets;
181 	BOOL wki502_use_opportunistic_locking;
182 	BOOL wki502_use_unlock_behind;
183 	BOOL wki502_use_close_behind;
184 	BOOL wki502_buf_named_pipes;
185 	BOOL wki502_use_lock_read_unlock;
186 	BOOL wki502_utilize_nt_caching;
187 	BOOL wki502_use_raw_read;
188 	BOOL wki502_use_raw_write;
189 	BOOL wki502_use_write_raw_data;
190 	BOOL wki502_use_encryption;
191 	BOOL wki502_buf_files_deny_write;
192 	BOOL wki502_buf_read_only_files;
193 	BOOL wki502_force_core_create_mode;
194 	BOOL wki502_use_512_byte_max_transfer;
195 }WKSTA_INFO_502,*PWKSTA_INFO_502,*LPWKSTA_INFO_502;
196 typedef struct _WKSTA_INFO_1010 { DWORD wki1010_char_wait;} WKSTA_INFO_1010,*PWKSTA_INFO_1010,*LPWKSTA_INFO_1010;
197 typedef struct _WKSTA_INFO_1011 { DWORD wki1011_collection_time;} WKSTA_INFO_1011,*PWKSTA_INFO_1011,*LPWKSTA_INFO_1011;
198 typedef struct _WKSTA_INFO_1012 { DWORD wki1012_maximum_collection_count;} WKSTA_INFO_1012,*PWKSTA_INFO_1012,*LPWKSTA_INFO_1012;
199 typedef struct _WKSTA_INFO_1027 { DWORD wki1027_errlog_sz;} WKSTA_INFO_1027,*PWKSTA_INFO_1027,*LPWKSTA_INFO_1027;
200 typedef struct _WKSTA_INFO_1028 { DWORD wki1028_print_buf_time;} WKSTA_INFO_1028,*PWKSTA_INFO_1028,*LPWKSTA_INFO_1028;
201 typedef struct _WKSTA_INFO_1032 { DWORD wki1032_wrk_heuristics;} WKSTA_INFO_1032,*PWKSTA_INFO_1032,*LPWKSTA_INFO_1032;
202 typedef struct _WKSTA_INFO_1013 { DWORD wki1013_keep_conn;} WKSTA_INFO_1013,*PWKSTA_INFO_1013,*LPWKSTA_INFO_1013;
203 typedef struct _WKSTA_INFO_1018 { DWORD wki1018_sess_timeout;} WKSTA_INFO_1018,*PWKSTA_INFO_1018,*LPWKSTA_INFO_1018;
204 typedef struct _WKSTA_INFO_1023 { DWORD wki1023_siz_char_buf;} WKSTA_INFO_1023,*PWKSTA_INFO_1023,*LPWKSTA_INFO_1023;
205 typedef struct _WKSTA_INFO_1033 { DWORD wki1033_max_threads;} WKSTA_INFO_1033,*PWKSTA_INFO_1033,*LPWKSTA_INFO_1033;
206 typedef struct _WKSTA_INFO_1041 { DWORD wki1041_lock_quota;} WKSTA_INFO_1041,*PWKSTA_INFO_1041,*LPWKSTA_INFO_1041;
207 typedef struct _WKSTA_INFO_1042 { DWORD wki1042_lock_increment;} WKSTA_INFO_1042,*PWKSTA_INFO_1042,*LPWKSTA_INFO_1042;
208 typedef struct _WKSTA_INFO_1043 { DWORD wki1043_lock_maximum;} WKSTA_INFO_1043,*PWKSTA_INFO_1043,*LPWKSTA_INFO_1043;
209 typedef struct _WKSTA_INFO_1044 { DWORD wki1044_pipe_increment;} WKSTA_INFO_1044,*PWKSTA_INFO_1044,*LPWKSTA_INFO_1044;
210 typedef struct _WKSTA_INFO_1045 { DWORD wki1045_pipe_maximum;} WKSTA_INFO_1045,*PWKSTA_INFO_1045,*LPWKSTA_INFO_1045;
211 typedef struct _WKSTA_INFO_1046 { DWORD wki1046_dormant_file_limit;} WKSTA_INFO_1046,*PWKSTA_INFO_1046,*LPWKSTA_INFO_1046;
212 typedef struct _WKSTA_INFO_1047 { DWORD wki1047_cache_file_timeout;} WKSTA_INFO_1047,*PWKSTA_INFO_1047,*LPWKSTA_INFO_1047;
213 typedef struct _WKSTA_INFO_1048 { BOOL wki1048_use_opportunistic_locking;} WKSTA_INFO_1048,*PWKSTA_INFO_1048,*LPWKSTA_INFO_1048;
214 typedef struct _WKSTA_INFO_1049 { BOOL wki1049_use_unlock_behind;} WKSTA_INFO_1049,*PWKSTA_INFO_1049,*LPWKSTA_INFO_1049;
215 typedef struct _WKSTA_INFO_1050 { BOOL wki1050_use_close_behind;} WKSTA_INFO_1050,*PWKSTA_INFO_1050,*LPWKSTA_INFO_1050;
216 typedef struct _WKSTA_INFO_1051 { BOOL wki1051_buf_named_pipes;} WKSTA_INFO_1051,*PWKSTA_INFO_1051,*LPWKSTA_INFO_1051;
217 typedef struct _WKSTA_INFO_1052 { BOOL wki1052_use_lock_read_unlock;} WKSTA_INFO_1052,*PWKSTA_INFO_1052,*LPWKSTA_INFO_1052;
218 typedef struct _WKSTA_INFO_1053 { BOOL wki1053_utilize_nt_caching;} WKSTA_INFO_1053,*PWKSTA_INFO_1053,*LPWKSTA_INFO_1053;
219 typedef struct _WKSTA_INFO_1054 { BOOL wki1054_use_raw_read;} WKSTA_INFO_1054,*PWKSTA_INFO_1054,*LPWKSTA_INFO_1054;
220 typedef struct _WKSTA_INFO_1055 { BOOL wki1055_use_raw_write;} WKSTA_INFO_1055,*PWKSTA_INFO_1055,*LPWKSTA_INFO_1055;
221 typedef struct _WKSTA_INFO_1056 { BOOL wki1056_use_write_raw_data;} WKSTA_INFO_1056,*PWKSTA_INFO_1056,*LPWKSTA_INFO_1056;
222 typedef struct _WKSTA_INFO_1057 { BOOL wki1057_use_encryption;} WKSTA_INFO_1057,*PWKSTA_INFO_1057,*LPWKSTA_INFO_1057;
223 typedef struct _WKSTA_INFO_1058 { BOOL wki1058_buf_files_deny_write;} WKSTA_INFO_1058,*PWKSTA_INFO_1058,*LPWKSTA_INFO_1058;
224 typedef struct _WKSTA_INFO_1059 { BOOL wki1059_buf_read_only_files;} WKSTA_INFO_1059,*PWKSTA_INFO_1059,*LPWKSTA_INFO_1059;
225 typedef struct _WKSTA_INFO_1060 { BOOL wki1060_force_core_create_mode;} WKSTA_INFO_1060,*PWKSTA_INFO_1060,*LPWKSTA_INFO_1060;
226 typedef struct _WKSTA_INFO_1061 { BOOL wki1061_use_512_byte_max_transfer;} WKSTA_INFO_1061,*PWKSTA_INFO_1061,*LPWKSTA_INFO_1061;
227 typedef struct _WKSTA_INFO_1062 { DWORD wki1062_read_ahead_throughput;} WKSTA_INFO_1062,*PWKSTA_INFO_1062,*LPWKSTA_INFO_1062;
228 typedef struct _WKSTA_USER_INFO_0 { LPWSTR wkui0_username;}WKSTA_USER_INFO_0,*PWKSTA_USER_INFO_0,*LPWKSTA_USER_INFO_0;
229 typedef struct _WKSTA_USER_INFO_1 {
230 	LPWSTR wkui1_username;
231 	LPWSTR wkui1_logon_domain;
232 	LPWSTR wkui1_oth_domains;
233 	LPWSTR wkui1_logon_server;
234 }WKSTA_USER_INFO_1,*PWKSTA_USER_INFO_1,*LPWKSTA_USER_INFO_1;
235 typedef struct _WKSTA_USER_INFO_1101 { LPWSTR wkui1101_oth_domains;} WKSTA_USER_INFO_1101,*PWKSTA_USER_INFO_1101,*LPWKSTA_USER_INFO_1101;
236 typedef struct _WKSTA_TRANSPORT_INFO_0 {
237 	DWORD wkti0_quality_of_service;
238 	DWORD wkti0_number_of_vcs;
239 	LPWSTR wkti0_transport_name;
240 	LPWSTR wkti0_transport_address;
241 	BOOL wkti0_wan_ish;
242 }WKSTA_TRANSPORT_INFO_0,*PWKSTA_TRANSPORT_INFO_0,*LPWKSTA_TRANSPORT_INFO_0;
243 
244 NET_API_STATUS WINAPI NetWkstaGetInfo(LPWSTR,DWORD,PBYTE*);
245 NET_API_STATUS WINAPI NetWkstaSetInfo(LPWSTR,DWORD,PBYTE,PDWORD);
246 NET_API_STATUS WINAPI NetWkstaUserGetInfo(LPWSTR,DWORD,PBYTE*);
247 NET_API_STATUS WINAPI NetWkstaUserSetInfo(LPWSTR,DWORD,PBYTE,PDWORD);
248 NET_API_STATUS WINAPI NetWkstaUserEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
249 NET_API_STATUS WINAPI NetWkstaTransportAdd(LPWSTR,DWORD,PBYTE,PDWORD);
250 NET_API_STATUS WINAPI NetWkstaTransportDel(LPWSTR,LPWSTR,DWORD);
251 NET_API_STATUS WINAPI NetWkstaTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
252 
253 #ifdef __cplusplus
254 }
255 #endif
256 
257 #endif
258