]>
Commit | Line | Data |
---|---|---|
ff7c6d11 XL |
1 | // Licensed under the Apache License, Version 2.0 |
2 | // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | |
3 | // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. | |
4 | // All files in the project carrying such notice may not be copied, modified, or distributed | |
5 | // except according to those terms. | |
6 | //! This module defines the API function prototypes and data structures | |
7 | use shared::basetsd::PDWORD_PTR; | |
8 | use shared::guiddef::GUID; | |
9 | use shared::lmcons::{LMSTR, NET_API_STATUS, PARMNUM_BASE_INFOLEVEL}; | |
10 | use shared::minwindef::{DWORD, LPBYTE, LPDWORD, ULONG}; | |
11 | use um::winnt::{BOOLEAN, PSECURITY_DESCRIPTOR}; | |
12 | extern "system" { | |
13 | pub fn NetShareAdd( | |
14 | servername: LMSTR, | |
15 | level: DWORD, | |
16 | buf: LPBYTE, | |
17 | parm_err: LPDWORD, | |
18 | ) -> NET_API_STATUS; | |
19 | pub fn NetShareEnum( | |
20 | servername: LMSTR, | |
21 | level: DWORD, | |
22 | bufptr: *mut LPBYTE, | |
23 | prefmaxlen: DWORD, | |
24 | entriesread: LPDWORD, | |
25 | totalentries: LPDWORD, | |
26 | resumehandle: LPDWORD, | |
27 | ) -> NET_API_STATUS; | |
28 | pub fn NetShareEnumSticky( | |
29 | servername: LMSTR, | |
30 | level: DWORD, | |
31 | bufptr: *mut LPBYTE, | |
32 | prefmaxlen: DWORD, | |
33 | entriesread: LPDWORD, | |
34 | totalentries: LPDWORD, | |
35 | resumehandle: LPDWORD, | |
36 | ) -> NET_API_STATUS; | |
37 | pub fn NetShareGetInfo( | |
38 | servername: LMSTR, | |
39 | netname: LMSTR, | |
40 | level: DWORD, | |
41 | bufptr: *mut LPBYTE, | |
42 | ) -> NET_API_STATUS; | |
43 | pub fn NetShareSetInfo( | |
44 | servername: LMSTR, | |
45 | netname: LMSTR, | |
46 | level: DWORD, | |
47 | buf: LPBYTE, | |
48 | parm_err: LPDWORD, | |
49 | ) -> NET_API_STATUS; | |
50 | pub fn NetShareDel( | |
51 | servername: LMSTR, | |
52 | netname: LMSTR, | |
53 | reserved: DWORD, | |
54 | ) -> NET_API_STATUS; | |
55 | pub fn NetShareDelSticky( | |
56 | servername: LMSTR, | |
57 | netname: LMSTR, | |
58 | reserved: DWORD, | |
59 | ) -> NET_API_STATUS; | |
60 | pub fn NetShareCheck( | |
61 | servername: LMSTR, | |
62 | device: LMSTR, | |
63 | _type: LPDWORD, | |
64 | ) -> NET_API_STATUS; | |
65 | pub fn NetShareDelEx( | |
66 | servername: LMSTR, | |
67 | level: DWORD, | |
68 | buf: LPBYTE, | |
69 | ) -> NET_API_STATUS; | |
70 | } | |
71 | STRUCT!{struct SHARE_INFO_0 { | |
72 | shi0_netname: LMSTR, | |
73 | }} | |
74 | pub type PSHARE_INFO_0 = *mut SHARE_INFO_0; | |
75 | pub type LPSHARE_INFO_0 = *mut SHARE_INFO_0; | |
76 | STRUCT!{struct SHARE_INFO_1 { | |
77 | shi1_netname: LMSTR, | |
78 | shi1_type: DWORD, | |
79 | shi1_remark: LMSTR, | |
80 | }} | |
81 | pub type PSHARE_INFO_1 = *mut SHARE_INFO_1; | |
82 | pub type LPSHARE_INFO_1 = *mut SHARE_INFO_1; | |
83 | STRUCT!{struct SHARE_INFO_2 { | |
84 | shi2_netname: LMSTR, | |
85 | shi2_type: DWORD, | |
86 | shi2_remark: LMSTR, | |
87 | shi2_permissions: DWORD, | |
88 | shi2_max_uses: DWORD, | |
89 | shi2_current_uses: DWORD, | |
90 | shi2_path: LMSTR, | |
91 | shi2_passwd: LMSTR, | |
92 | }} | |
93 | pub type PSHARE_INFO_2 = *mut SHARE_INFO_2; | |
94 | pub type LPSHARE_INFO_2 = *mut SHARE_INFO_2; | |
95 | STRUCT!{struct SHARE_INFO_501 { | |
96 | shi501_netname: LMSTR, | |
97 | shi501_type: DWORD, | |
98 | shi501_remark: LMSTR, | |
99 | shi501_flags: DWORD, | |
100 | }} | |
101 | pub type PSHARE_INFO_501 = *mut SHARE_INFO_501; | |
102 | pub type LPSHARE_INFO_501 = *mut SHARE_INFO_501; | |
103 | STRUCT!{struct SHARE_INFO_502 { | |
104 | shi502_netname: LMSTR, | |
105 | shi502_type: DWORD, | |
106 | shi502_remark: LMSTR, | |
107 | shi502_permissions: DWORD, | |
108 | shi502_max_uses: DWORD, | |
109 | shi502_current_uses: DWORD, | |
110 | shi502_path: LMSTR, | |
111 | shi502_passwd: LMSTR, | |
112 | shi502_reserved: DWORD, | |
113 | shi502_security_descriptor: PSECURITY_DESCRIPTOR, | |
114 | }} | |
115 | pub type PSHARE_INFO_502 = *mut SHARE_INFO_502; | |
116 | pub type LPSHARE_INFO_502 = *mut SHARE_INFO_502; | |
117 | STRUCT!{struct SHARE_INFO_503 { | |
118 | shi503_netname: LMSTR, | |
119 | shi503_type: DWORD, | |
120 | shi503_remark: LMSTR, | |
121 | shi503_permissions: DWORD, | |
122 | shi503_max_uses: DWORD, | |
123 | shi503_current_uses: DWORD, | |
124 | shi503_path: LMSTR, | |
125 | shi503_passwd: LMSTR, | |
126 | shi503_servername: LMSTR, | |
127 | shi503_reserved: DWORD, | |
128 | shi503_security_descriptor: PSECURITY_DESCRIPTOR, | |
129 | }} | |
130 | pub type PSHARE_INFO_503 = *mut SHARE_INFO_503; | |
131 | pub type LPSHARE_INFO_503 = *mut SHARE_INFO_503; | |
132 | STRUCT!{struct SHARE_INFO_1004 { | |
133 | shi1004_remark: LMSTR, | |
134 | }} | |
135 | pub type PSHARE_INFO_1004 = *mut SHARE_INFO_1004; | |
136 | pub type LPSHARE_INFO_1004 = *mut SHARE_INFO_1004; | |
137 | STRUCT!{struct SHARE_INFO_1005 { | |
138 | shi1005_flags: DWORD, | |
139 | }} | |
140 | pub type PSHARE_INFO_1005 = *mut SHARE_INFO_1005; | |
141 | pub type LPSHARE_INFO_1005 = *mut SHARE_INFO_1005; | |
142 | STRUCT!{struct SHARE_INFO_1006 { | |
143 | shi1006_max_uses: DWORD, | |
144 | }} | |
145 | pub type PSHARE_INFO_1006 = *mut SHARE_INFO_1006; | |
146 | pub type LPSHARE_INFO_1006 = *mut SHARE_INFO_1006; | |
147 | STRUCT!{struct SHARE_INFO_1501 { | |
148 | shi1501_reserved: DWORD, | |
149 | shi1501_security_descriptor: PSECURITY_DESCRIPTOR, | |
150 | }} | |
151 | pub type PSHARE_INFO_1501 = *mut SHARE_INFO_1501; | |
152 | pub type LPSHARE_INFO_1501 = *mut SHARE_INFO_1501; | |
153 | STRUCT!{struct SHARE_INFO_1503 { | |
154 | shi1503_sharefilter: GUID, | |
155 | }} | |
156 | pub type PSHARE_INFO_1503 = *mut SHARE_INFO_1503; | |
157 | pub type LPSHARE_INFO_1503 = *mut SHARE_INFO_1503; | |
158 | extern "system" { | |
159 | pub fn NetServerAliasAdd( | |
160 | servername: LMSTR, | |
161 | level: DWORD, | |
162 | buf: LPBYTE, | |
163 | ) -> NET_API_STATUS; | |
164 | pub fn NetServerAliasDel( | |
165 | servername: LMSTR, | |
166 | level: DWORD, | |
167 | buf: LPBYTE, | |
168 | ) -> NET_API_STATUS; | |
169 | pub fn NetServerAliasEnum( | |
170 | servername: LMSTR, | |
171 | level: DWORD, | |
172 | bufptr: *mut LPBYTE, | |
173 | prefmaxlen: DWORD, | |
174 | entriesread: LPDWORD, | |
175 | totalentries: LPDWORD, | |
176 | resumehandle: LPDWORD, | |
177 | ) -> NET_API_STATUS; | |
178 | } | |
179 | STRUCT!{struct SERVER_ALIAS_INFO_0 { | |
180 | srvai0_alias: LMSTR, | |
181 | srvai0_target: LMSTR, | |
182 | srvai0_default: BOOLEAN, | |
183 | srvai0_reserved: ULONG, | |
184 | }} | |
185 | pub type PSERVER_ALIAS_INFO_0 = *mut SERVER_ALIAS_INFO_0; | |
186 | pub type LPSERVER_ALIAS_INFO_0 = *mut SERVER_ALIAS_INFO_0; | |
187 | pub const SHARE_NETNAME_PARMNUM: DWORD = 1; | |
188 | pub const SHARE_TYPE_PARMNUM: DWORD = 3; | |
189 | pub const SHARE_REMARK_PARMNUM: DWORD = 4; | |
190 | pub const SHARE_PERMISSIONS_PARMNUM: DWORD = 5; | |
191 | pub const SHARE_MAX_USES_PARMNUM: DWORD = 6; | |
192 | pub const SHARE_CURRENT_USES_PARMNUM: DWORD = 7; | |
193 | pub const SHARE_PATH_PARMNUM: DWORD = 8; | |
194 | pub const SHARE_PASSWD_PARMNUM: DWORD = 9; | |
195 | pub const SHARE_FILE_SD_PARMNUM: DWORD = 501; | |
196 | pub const SHARE_SERVER_PARMNUM: DWORD = 503; | |
197 | pub const SHARE_REMARK_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM; | |
198 | pub const SHARE_MAX_USES_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM; | |
199 | pub const SHARE_FILE_SD_INFOLEVEL: DWORD = PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM; | |
200 | pub const SHI1_NUM_ELEMENTS: DWORD = 4; | |
201 | pub const SHI2_NUM_ELEMENTS: DWORD = 10; | |
202 | pub const STYPE_DISKTREE: DWORD = 0; | |
203 | pub const STYPE_PRINTQ: DWORD = 1; | |
204 | pub const STYPE_DEVICE: DWORD = 2; | |
205 | pub const STYPE_IPC: DWORD = 3; | |
206 | pub const STYPE_MASK: DWORD = 0x000000FF; | |
207 | pub const STYPE_RESERVED1: DWORD = 0x01000000; | |
208 | pub const STYPE_RESERVED2: DWORD = 0x02000000; | |
209 | pub const STYPE_RESERVED3: DWORD = 0x04000000; | |
210 | pub const STYPE_RESERVED4: DWORD = 0x08000000; | |
211 | pub const STYPE_RESERVED_ALL: DWORD = 0x3FFFFF00; | |
212 | pub const STYPE_TEMPORARY: DWORD = 0x40000000; | |
213 | pub const STYPE_SPECIAL: DWORD = 0x80000000; | |
214 | pub const SHI_USES_UNLIMITED: DWORD = -1i32 as u32; | |
215 | pub const SHI1005_FLAGS_DFS: DWORD = 0x0001; | |
216 | pub const SHI1005_FLAGS_DFS_ROOT: DWORD = 0x0002; | |
217 | pub const CSC_MASK_EXT: DWORD = 0x2030; | |
218 | pub const CSC_MASK: DWORD = 0x0030; | |
219 | pub const CSC_CACHE_MANUAL_REINT: DWORD = 0x0000; | |
220 | pub const CSC_CACHE_AUTO_REINT: DWORD = 0x0010; | |
221 | pub const CSC_CACHE_VDO: DWORD = 0x0020; | |
222 | pub const CSC_CACHE_NONE: DWORD = 0x0030; | |
223 | pub const SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS: DWORD = 0x00100; | |
224 | pub const SHI1005_FLAGS_FORCE_SHARED_DELETE: DWORD = 0x00200; | |
225 | pub const SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING: DWORD = 0x00400; | |
226 | pub const SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM: DWORD = 0x00800; | |
227 | pub const SHI1005_FLAGS_FORCE_LEVELII_OPLOCK: DWORD = 0x01000; | |
228 | pub const SHI1005_FLAGS_ENABLE_HASH: DWORD = 0x02000; | |
229 | pub const SHI1005_FLAGS_ENABLE_CA: DWORD = 0x04000; | |
230 | pub const SHI1005_FLAGS_ENCRYPT_DATA: DWORD = 0x08000; | |
231 | pub const SHI1005_FLAGS_RESERVED: DWORD = 0x10000; | |
232 | pub const SHI1005_VALID_FLAGS_SET: DWORD = CSC_MASK | SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS | |
233 | | SHI1005_FLAGS_FORCE_SHARED_DELETE | SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING | |
234 | | SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM | SHI1005_FLAGS_FORCE_LEVELII_OPLOCK | |
235 | | SHI1005_FLAGS_ENABLE_HASH | SHI1005_FLAGS_ENABLE_CA | SHI1005_FLAGS_ENCRYPT_DATA | |
236 | | SHI1005_FLAGS_RESERVED; | |
237 | extern "system" { | |
238 | pub fn NetSessionEnum( | |
239 | servername: LMSTR, | |
240 | UncClientName: LMSTR, | |
241 | username: LMSTR, | |
242 | level: DWORD, | |
243 | bufptr: *mut LPBYTE, | |
244 | prefmaxlen: DWORD, | |
245 | entriesread: LPDWORD, | |
246 | totalentries: LPDWORD, | |
247 | resumehandle: LPDWORD, | |
248 | ) -> NET_API_STATUS; | |
249 | pub fn NetSessionDel( | |
250 | servername: LMSTR, | |
251 | UncClientName: LMSTR, | |
252 | username: LMSTR, | |
253 | ) -> NET_API_STATUS; | |
254 | pub fn NetSessionGetInfo( | |
255 | servername: LMSTR, | |
256 | UncClientName: LMSTR, | |
257 | username: LMSTR, | |
258 | level: DWORD, | |
259 | bufptr: *mut LPBYTE, | |
260 | ) -> NET_API_STATUS; | |
261 | } | |
262 | STRUCT!{struct SESSION_INFO_0 { | |
263 | sesi0_cname: LMSTR, | |
264 | }} | |
265 | pub type PSESSION_INFO_0 = *mut SESSION_INFO_0; | |
266 | pub type LPSESSION_INFO_0 = *mut SESSION_INFO_0; | |
267 | STRUCT!{struct SESSION_INFO_1 { | |
268 | sesi1_cname: LMSTR, | |
269 | sesi1_username: LMSTR, | |
270 | sesi1_num_opens: DWORD, | |
271 | sesi1_time: DWORD, | |
272 | sesi1_idle_time: DWORD, | |
273 | sesi1_user_flags: DWORD, | |
274 | }} | |
275 | pub type PSESSION_INFO_1 = *mut SESSION_INFO_1; | |
276 | pub type LPSESSION_INFO_1 = *mut SESSION_INFO_1; | |
277 | STRUCT!{struct SESSION_INFO_2 { | |
278 | sesi2_cname: LMSTR, | |
279 | sesi2_username: LMSTR, | |
280 | sesi2_num_opens: DWORD, | |
281 | sesi2_time: DWORD, | |
282 | sesi2_idle_time: DWORD, | |
283 | sesi2_user_flags: DWORD, | |
284 | sesi2_cltype_name: LMSTR, | |
285 | }} | |
286 | pub type PSESSION_INFO_2 = *mut SESSION_INFO_2; | |
287 | pub type LPSESSION_INFO_2 = *mut SESSION_INFO_2; | |
288 | STRUCT!{struct SESSION_INFO_10 { | |
289 | sesi10_cname: LMSTR, | |
290 | sesi10_username: LMSTR, | |
291 | sesi10_time: DWORD, | |
292 | sesi10_idle_time: DWORD, | |
293 | }} | |
294 | pub type PSESSION_INFO_10 = *mut SESSION_INFO_10; | |
295 | pub type LPSESSION_INFO_10 = *mut SESSION_INFO_10; | |
296 | STRUCT!{struct SESSION_INFO_502 { | |
297 | sesi502_cname: LMSTR, | |
298 | sesi502_username: LMSTR, | |
299 | sesi502_num_opens: DWORD, | |
300 | sesi502_time: DWORD, | |
301 | sesi502_idle_time: DWORD, | |
302 | sesi502_user_flags: DWORD, | |
303 | sesi502_cltype_name: LMSTR, | |
304 | sesi502_transport: LMSTR, | |
305 | }} | |
306 | pub type PSESSION_INFO_502 = *mut SESSION_INFO_502; | |
307 | pub type LPSESSION_INFO_502 = *mut SESSION_INFO_502; | |
308 | pub const SESS_GUEST: DWORD = 0x00000001; | |
309 | pub const SESS_NOENCRYPTION: DWORD = 0x00000002; | |
310 | pub const SESI1_NUM_ELEMENTS: DWORD = 8; | |
311 | pub const SESI2_NUM_ELEMENTS: DWORD = 9; | |
312 | extern "system" { | |
313 | pub fn NetConnectionEnum( | |
314 | servername: LMSTR, | |
315 | qualifier: LMSTR, | |
316 | level: DWORD, | |
317 | bufptr: *mut LPBYTE, | |
318 | prefmaxlen: DWORD, | |
319 | entriesread: LPDWORD, | |
320 | totalentries: LPDWORD, | |
321 | resume_handle: LPDWORD, | |
322 | ) -> NET_API_STATUS; | |
323 | } | |
324 | STRUCT!{struct CONNECTION_INFO_0 { | |
325 | coni0_id: DWORD, | |
326 | }} | |
327 | pub type PCONNECTION_INFO_0 = *mut CONNECTION_INFO_0; | |
328 | pub type LPCONNECTION_INFO_0 = *mut CONNECTION_INFO_0; | |
329 | STRUCT!{struct CONNECTION_INFO_1 { | |
330 | coni1_id: DWORD, | |
331 | coni1_type: DWORD, | |
332 | coni1_num_opens: DWORD, | |
333 | coni1_num_users: DWORD, | |
334 | coni1_time: DWORD, | |
335 | coni1_username: LMSTR, | |
336 | coni1_netname: LMSTR, | |
337 | }} | |
338 | pub type PCONNECTION_INFO_1 = *mut CONNECTION_INFO_1; | |
339 | pub type LPCONNECTION_INFO_1 = *mut CONNECTION_INFO_1; | |
340 | extern "system" { | |
341 | pub fn NetFileClose( | |
342 | servername: LMSTR, | |
343 | fileid: DWORD, | |
344 | ) -> NET_API_STATUS; | |
345 | pub fn NetFileEnum( | |
346 | servername: LMSTR, | |
347 | basepath: LMSTR, | |
348 | username: LMSTR, | |
349 | level: DWORD, | |
350 | bufptr: *mut LPBYTE, | |
351 | prefmaxlen: DWORD, | |
352 | entriesread: LPDWORD, | |
353 | totalentries: LPDWORD, | |
354 | resume_handle: PDWORD_PTR, | |
355 | ) -> NET_API_STATUS; | |
356 | pub fn NetFileGetInfo( | |
357 | servername: LMSTR, | |
358 | fileid: DWORD, | |
359 | level: DWORD, | |
360 | bufptr: *mut LPBYTE, | |
361 | ) -> NET_API_STATUS; | |
362 | } | |
363 | STRUCT!{struct FILE_INFO_2 { | |
364 | fi2_id: DWORD, | |
365 | }} | |
366 | pub type PFILE_INFO_2 = *mut FILE_INFO_2; | |
367 | pub type LPFILE_INFO_2 = *mut FILE_INFO_2; | |
368 | STRUCT!{struct FILE_INFO_3 { | |
369 | fi3_id: DWORD, | |
370 | fi3_permissions: DWORD, | |
371 | fi3_num_locks: DWORD, | |
372 | fi3_pathname: LMSTR, | |
373 | fi3_username: LMSTR, | |
374 | }} | |
375 | pub type PFILE_INFO_3 = *mut FILE_INFO_3; | |
376 | pub type LPFILE_INFO_3 = *mut FILE_INFO_3; | |
377 | pub const PERM_FILE_READ: DWORD = 0x1; | |
378 | pub const PERM_FILE_WRITE: DWORD = 0x2; | |
379 | pub const PERM_FILE_CREATE: DWORD = 0x4; |