winapi_ui_automation/um/
winnetwk.rs

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//! Standard WINNET Header File for WIN32
7use shared::basetsd::ULONG_PTR;
8use shared::minwindef::{BOOL, DWORD, LPDWORD, LPHANDLE, LPVOID, WORD};
9use shared::windef::HWND;
10use shared::winerror::{
11    ERROR_ACCESS_DENIED, ERROR_ALREADY_ASSIGNED, ERROR_ALREADY_INITIALIZED, ERROR_BAD_DEVICE,
12    ERROR_BAD_DEV_TYPE, ERROR_BAD_NET_NAME, ERROR_BAD_PROFILE, ERROR_BAD_PROVIDER,
13    ERROR_BAD_USERNAME, ERROR_BUSY, ERROR_CANCELLED, ERROR_CANNOT_OPEN_PROFILE,
14    ERROR_CONNECTED_OTHER_PASSWORD, ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT,
15    ERROR_CONNECTION_UNAVAIL, ERROR_DEVICE_ALREADY_REMEMBERED, ERROR_DEVICE_IN_USE,
16    ERROR_EXTENDED_ERROR, ERROR_GEN_FAILURE, ERROR_INVALID_ADDRESS, ERROR_INVALID_HANDLE,
17    ERROR_INVALID_LEVEL, ERROR_INVALID_PARAMETER, ERROR_INVALID_PASSWORD, ERROR_MORE_DATA,
18    ERROR_NOT_AUTHENTICATED, ERROR_NOT_CONNECTED, ERROR_NOT_CONTAINER, ERROR_NOT_ENOUGH_MEMORY,
19    ERROR_NOT_LOGGED_ON, ERROR_NOT_SUPPORTED, ERROR_NO_LOGON_SERVERS, ERROR_NO_MORE_DEVICES,
20    ERROR_NO_MORE_ITEMS, ERROR_NO_NETWORK, ERROR_NO_NET_OR_BAD_PATH, ERROR_OPEN_FILES, ERROR_RETRY,
21    ERROR_UNEXP_NET_ERR, NO_ERROR
22};
23use um::winnt::{HANDLE, LPCSTR, LPCWSTR, LPSTR, LPWSTR};
24pub const RESOURCE_CONNECTED: DWORD = 0x00000001;
25pub const RESOURCE_GLOBALNET: DWORD = 0x00000002;
26pub const RESOURCE_REMEMBERED: DWORD = 0x00000003;
27pub const RESOURCE_RECENT: DWORD = 0x00000004;
28pub const RESOURCE_CONTEXT: DWORD = 0x00000005;
29pub const RESOURCETYPE_ANY: DWORD = 0x00000000;
30pub const RESOURCETYPE_DISK: DWORD = 0x00000001;
31pub const RESOURCETYPE_PRINT: DWORD = 0x00000002;
32pub const RESOURCETYPE_RESERVED: DWORD = 0x00000008;
33pub const RESOURCETYPE_UNKNOWN: DWORD = 0xFFFFFFFF;
34pub const RESOURCEUSAGE_CONNECTABLE: DWORD = 0x00000001;
35pub const RESOURCEUSAGE_CONTAINER: DWORD = 0x00000002;
36pub const RESOURCEUSAGE_NOLOCALDEVICE: DWORD = 0x00000004;
37pub const RESOURCEUSAGE_SIBLING: DWORD = 0x00000008;
38pub const RESOURCEUSAGE_ATTACHED: DWORD = 0x00000010;
39pub const RESOURCEUSAGE_ALL: DWORD = RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER
40    | RESOURCEUSAGE_ATTACHED;
41pub const RESOURCEUSAGE_RESERVED: DWORD = 0x80000000;
42pub const RESOURCEDISPLAYTYPE_GENERIC: DWORD = 0x00000000;
43pub const RESOURCEDISPLAYTYPE_DOMAIN: DWORD = 0x00000001;
44pub const RESOURCEDISPLAYTYPE_SERVER: DWORD = 0x00000002;
45pub const RESOURCEDISPLAYTYPE_SHARE: DWORD = 0x00000003;
46pub const RESOURCEDISPLAYTYPE_FILE: DWORD = 0x00000004;
47pub const RESOURCEDISPLAYTYPE_GROUP: DWORD = 0x00000005;
48pub const RESOURCEDISPLAYTYPE_NETWORK: DWORD = 0x00000006;
49pub const RESOURCEDISPLAYTYPE_ROOT: DWORD = 0x00000007;
50pub const RESOURCEDISPLAYTYPE_SHAREADMIN: DWORD = 0x00000008;
51pub const RESOURCEDISPLAYTYPE_DIRECTORY: DWORD = 0x00000009;
52pub const RESOURCEDISPLAYTYPE_TREE: DWORD = 0x0000000A;
53pub const RESOURCEDISPLAYTYPE_NDSCONTAINER: DWORD = 0x0000000B;
54STRUCT!{struct NETRESOURCEA {
55    dwScope: DWORD,
56    dwType: DWORD,
57    dwDisplayType: DWORD,
58    dwUsage: DWORD,
59    lpLocalName: LPSTR,
60    lpRemoteName: LPSTR,
61    lpComment: LPSTR,
62    lpProvider: LPSTR,
63}}
64pub type LPNETRESOURCEA = *mut NETRESOURCEA;
65STRUCT!{struct NETRESOURCEW {
66    dwScope: DWORD,
67    dwType: DWORD,
68    dwDisplayType: DWORD,
69    dwUsage: DWORD,
70    lpLocalName: LPWSTR,
71    lpRemoteName: LPWSTR,
72    lpComment: LPWSTR,
73    lpProvider: LPWSTR,
74}}
75pub type LPNETRESOURCEW = *mut NETRESOURCEW;
76pub const NETPROPERTY_PERSISTENT: DWORD = 1;
77pub const CONNECT_UPDATE_PROFILE: DWORD = 0x00000001;
78pub const CONNECT_UPDATE_RECENT: DWORD = 0x00000002;
79pub const CONNECT_TEMPORARY: DWORD = 0x00000004;
80pub const CONNECT_INTERACTIVE: DWORD = 0x00000008;
81pub const CONNECT_PROMPT: DWORD = 0x00000010;
82pub const CONNECT_NEED_DRIVE: DWORD = 0x00000020;
83pub const CONNECT_REFCOUNT: DWORD = 0x00000040;
84pub const CONNECT_REDIRECT: DWORD = 0x00000080;
85pub const CONNECT_LOCALDRIVE: DWORD = 0x00000100;
86pub const CONNECT_CURRENT_MEDIA: DWORD = 0x00000200;
87pub const CONNECT_DEFERRED: DWORD = 0x00000400;
88pub const CONNECT_RESERVED: DWORD = 0xFF000000;
89pub const CONNECT_COMMANDLINE: DWORD = 0x00000800;
90pub const CONNECT_CMD_SAVECRED: DWORD = 0x00001000;
91pub const CONNECT_CRED_RESET: DWORD = 0x00002000;
92extern "system" {
93    pub fn WNetAddConnection2A(
94        lpNetResource: LPNETRESOURCEA,
95        lpPassword: LPCSTR,
96        lpUsername: LPCSTR,
97        dwFlags: DWORD,
98    ) -> DWORD;
99    pub fn WNetAddConnection2W(
100        lpNetResource: LPNETRESOURCEW,
101        lpPassword: LPCWSTR,
102        lpUsername: LPCWSTR,
103        dwFlags: DWORD,
104    ) -> DWORD;
105    pub fn WNetAddConnection3A(
106        hwndOwner: HWND,
107        lpNetResource: LPNETRESOURCEA,
108        lpPassword: LPCSTR,
109        lpUsername: LPCSTR,
110        dwFlags: DWORD,
111    ) -> DWORD;
112    pub fn WNetAddConnection3W(
113        hwndOwner: HWND,
114        lpNetResource: LPNETRESOURCEW,
115        lpPassword: LPCWSTR,
116        lpUsername: LPCWSTR,
117        dwFlags: DWORD,
118    ) -> DWORD;
119    pub fn WNetCancelConnectionA(
120        lpName: LPCSTR,
121        fForce: BOOL,
122    ) -> DWORD;
123    pub fn WNetCancelConnectionW(
124        lpName: LPCWSTR,
125        fForce: BOOL,
126    ) -> DWORD;
127    pub fn WNetCancelConnection2A(
128        lpName: LPCSTR,
129        dwFlags: DWORD,
130        fForce: BOOL,
131    ) -> DWORD;
132    pub fn WNetCancelConnection2W(
133        lpName: LPCWSTR,
134        dwFlags: DWORD,
135        fForce: BOOL,
136    ) -> DWORD;
137    pub fn WNetGetConnectionA(
138        lpLocalName: LPCSTR,
139        lpRemoteName: LPSTR,
140        lpnLength: LPDWORD,
141    ) -> DWORD;
142    pub fn WNetGetConnectionW(
143        lpLocalName: LPCWSTR,
144        lpRemoteName: LPWSTR,
145        lpnLength: LPDWORD,
146    ) -> DWORD;
147    pub fn WNetUseConnectionA(
148        hwndOwner: HWND,
149        lpNetResource: LPNETRESOURCEA,
150        lpPassword: LPCSTR,
151        lpUserId: LPCSTR,
152        dwFlags: DWORD,
153        lpAccessName: LPSTR,
154        lpBufferSize: LPDWORD,
155        lpResult: LPDWORD,
156    ) -> DWORD;
157    pub fn WNetUseConnectionW(
158        hwndOwner: HWND,
159        lpNetResource: LPNETRESOURCEW,
160        lpPassword: LPCWSTR,
161        lpUserId: LPCWSTR,
162        dwFlags: DWORD,
163        lpAccessName: LPWSTR,
164        lpBufferSize: LPDWORD,
165        lpResult: LPDWORD,
166    ) -> DWORD;
167    pub fn WNetConnectionDialog(
168        hwnd: HWND,
169        dwType: DWORD,
170    ) -> DWORD;
171    pub fn WNetDisconnectDialog(
172        hwnd: HWND,
173        dwType: DWORD,
174    ) -> DWORD;
175}
176STRUCT!{struct CONNECTDLGSTRUCTA {
177    cbStructure: DWORD,
178    hwndOwner: HWND,
179    lpConnRes: LPNETRESOURCEA,
180    dwFlags: DWORD,
181    dwDevNum: DWORD,
182}}
183pub type LPCONNECTDLGSTRUCTA = *mut CONNECTDLGSTRUCTA;
184STRUCT!{struct CONNECTDLGSTRUCTW {
185    cbStructure: DWORD,
186    hwndOwner: HWND,
187    lpConnRes: LPNETRESOURCEW,
188    dwFlags: DWORD,
189    dwDevNum: DWORD,
190}}
191pub type LPCONNECTDLGSTRUCTW = *mut CONNECTDLGSTRUCTW;
192pub const CONNDLG_RO_PATH: DWORD = 0x00000001;
193pub const CONNDLG_CONN_POINT: DWORD = 0x00000002;
194pub const CONNDLG_USE_MRU: DWORD = 0x00000004;
195pub const CONNDLG_HIDE_BOX: DWORD = 0x00000008;
196pub const CONNDLG_PERSIST: DWORD = 0x00000010;
197pub const CONNDLG_NOT_PERSIST: DWORD = 0x00000020;
198extern "system" {
199    pub fn WNetConnectionDialog1A(
200        lpConnDlgStruct: LPCONNECTDLGSTRUCTA,
201    ) -> DWORD;
202    pub fn WNetConnectionDialog1W(
203        lpConnDlgStruct: LPCONNECTDLGSTRUCTW,
204    ) -> DWORD;
205}
206STRUCT!{struct DISCDLGSTRUCTA {
207    cbStructure: DWORD,
208    hwndOwner: HWND,
209    lpLocalName: LPSTR,
210    lpRemoteName: LPSTR,
211    dwFlags: DWORD,
212}}
213pub type LPDISCDLGSTRUCTA = *mut DISCDLGSTRUCTA;
214STRUCT!{struct DISCDLGSTRUCTW {
215    cbStructure: DWORD,
216    hwndOwner: HWND,
217    lpLocalName: LPWSTR,
218    lpRemoteName: LPWSTR,
219    dwFlags: DWORD,
220}}
221pub type LPDISCDLGSTRUCTW = *mut DISCDLGSTRUCTW;
222pub const DISC_UPDATE_PROFILE: DWORD = 0x00000001;
223pub const DISC_NO_FORCE: DWORD = 0x00000040;
224extern "system" {
225    pub fn WNetDisconnectDialog1A(
226        lpConnDlgStruct: LPDISCDLGSTRUCTA,
227    ) -> DWORD;
228    pub fn WNetDisconnectDialog1W(
229        lpConnDlgStruct: LPDISCDLGSTRUCTW,
230    ) -> DWORD;
231    pub fn WNetOpenEnumA(
232        dwScope: DWORD,
233        dwType: DWORD,
234        dwUsage: DWORD,
235        lpNetResource: LPNETRESOURCEA,
236        lphEnum: LPHANDLE,
237    ) -> DWORD;
238    pub fn WNetOpenEnumW(
239        dwScope: DWORD,
240        dwType: DWORD,
241        dwUsage: DWORD,
242        lpNetResource: LPNETRESOURCEW,
243        lphEnum: LPHANDLE,
244    ) -> DWORD;
245    pub fn WNetEnumResourceA(
246        hEnum: HANDLE,
247        lpcCount: LPDWORD,
248        lpBuffer: LPVOID,
249        lpBufferSize: LPDWORD,
250    ) -> DWORD;
251    pub fn WNetEnumResourceW(
252        hEnum: HANDLE,
253        lpcCount: LPDWORD,
254        lpBuffer: LPVOID,
255        lpBufferSize: LPDWORD,
256    ) -> DWORD;
257    pub fn WNetCloseEnum(
258        hEnum: HANDLE,
259    ) -> DWORD;
260    pub fn WNetGetResourceParentA(
261        lpNetResource: LPNETRESOURCEA,
262        lpBuffer: LPVOID,
263        lpcbBuffer: LPDWORD,
264    ) -> DWORD;
265    pub fn WNetGetResourceParentW(
266        lpNetResource: LPNETRESOURCEW,
267        lpBuffer: LPVOID,
268        lpcbBuffer: LPDWORD,
269    ) -> DWORD;
270    pub fn WNetGetResourceInformationA(
271        lpNetResource: LPNETRESOURCEA,
272        lpBuffer: LPVOID,
273        lpcbBuffer: LPDWORD,
274        lplpSystem: *mut LPSTR,
275    ) -> DWORD;
276    pub fn WNetGetResourceInformationW(
277        lpNetResource: LPNETRESOURCEW,
278        lpBuffer: LPVOID,
279        lpcbBuffer: LPDWORD,
280        lplpSystem: *mut LPWSTR,
281    ) -> DWORD;
282}
283pub const UNIVERSAL_NAME_INFO_LEVEL: DWORD = 0x00000001;
284pub const REMOTE_NAME_INFO_LEVEL: DWORD = 0x00000002;
285STRUCT!{struct UNIVERSAL_NAME_INFOA {
286    lpUniversalName: LPSTR,
287}}
288pub type LPUNIVERSAL_NAME_INFOA = *mut UNIVERSAL_NAME_INFOA;
289STRUCT!{struct UNIVERSAL_NAME_INFOW {
290    lpUniversalName: LPWSTR,
291}}
292pub type LPUNIVERSAL_NAME_INFOW = *mut UNIVERSAL_NAME_INFOW;
293STRUCT!{struct REMOTE_NAME_INFOA {
294    lpUniversalName: LPSTR,
295    lpConnectionName: LPSTR,
296    lpRemainingPath: LPSTR,
297}}
298pub type LPREMOTE_NAME_INFOA = *mut REMOTE_NAME_INFOA;
299STRUCT!{struct REMOTE_NAME_INFOW {
300    lpUniversalName: LPWSTR,
301    lpConnectionName: LPWSTR,
302    lpRemainingPath: LPWSTR,
303}}
304pub type LPREMOTE_NAME_INFOW = *mut REMOTE_NAME_INFOW;
305extern "system" {
306    pub fn WNetGetUniversalNameA(
307        lpLocalPath: LPCSTR,
308        dwInfoLevel: DWORD,
309        lpBuffer: LPVOID,
310        lpBufferSize: LPDWORD,
311    ) -> DWORD;
312    pub fn WNetGetUniversalNameW(
313        lpLocalPath: LPCWSTR,
314        dwInfoLevel: DWORD,
315        lpBuffer: LPVOID,
316        lpBufferSize: LPDWORD,
317    ) -> DWORD;
318    pub fn WNetGetUserA(
319        lpName: LPCSTR,
320        lpUserName: LPSTR,
321        lpnLength: LPDWORD,
322    ) -> DWORD;
323    pub fn WNetGetUserW(
324        lpName: LPCWSTR,
325        lpUserName: LPWSTR,
326        lpnLength: LPDWORD,
327    ) -> DWORD;
328}
329pub const WNFMT_MULTILINE: DWORD = 0x01;
330pub const WNFMT_ABBREVIATED: DWORD = 0x02;
331pub const WNFMT_INENUM: DWORD = 0x10;
332pub const WNFMT_CONNECTION: DWORD = 0x20;
333extern "system" {
334    pub fn WNetGetProviderNameA(
335        dwNetType: DWORD,
336        lpProviderName: LPSTR,
337        lpBufferSize: LPDWORD,
338    ) -> DWORD;
339    pub fn WNetGetProviderNameW(
340        dwNetType: DWORD,
341        lpProviderName: LPWSTR,
342        lpBufferSize: LPDWORD,
343    ) -> DWORD;
344}
345STRUCT!{struct NETINFOSTRUCT {
346    cbStructure: DWORD,
347    dwProviderVersion: DWORD,
348    dwStatus: DWORD,
349    dwCharacteristics: DWORD,
350    dwHandle: ULONG_PTR,
351    wNetType: WORD,
352    dwPrinters: DWORD,
353    dwDrives: DWORD,
354}}
355pub type LPNETINFOSTRUCT = *mut NETINFOSTRUCT;
356pub const NETINFO_DLL16: DWORD = 0x00000001;
357pub const NETINFO_DISKRED: DWORD = 0x00000004;
358pub const NETINFO_PRINTERRED: DWORD = 0x00000008;
359extern "system" {
360    pub fn WNetGetNetworkInformationA(
361        lpProvider: LPCSTR,
362        lpNetInfoStruct: LPNETINFOSTRUCT,
363    ) -> DWORD;
364    pub fn WNetGetNetworkInformationW(
365        lpProvider: LPCWSTR,
366        lpNetInfoStruct: LPNETINFOSTRUCT,
367    ) -> DWORD;
368    pub fn WNetGetLastErrorA(
369        lpError: LPDWORD,
370        lpErrorBuf: LPSTR,
371        nErrorBufSize: DWORD,
372        lpNameBuf: LPSTR,
373        nNameBufSize: DWORD,
374    ) -> DWORD;
375    pub fn WNetGetLastErrorW(
376        lpError: LPDWORD,
377        lpErrorBuf: LPWSTR,
378        nErrorBufSize: DWORD,
379        lpNameBuf: LPWSTR,
380        nNameBufSize: DWORD,
381    ) -> DWORD;
382}
383pub const WN_SUCCESS: DWORD = NO_ERROR;
384pub const WN_NO_ERROR: DWORD = NO_ERROR;
385pub const WN_NOT_SUPPORTED: DWORD = ERROR_NOT_SUPPORTED;
386pub const WN_CANCEL: DWORD = ERROR_CANCELLED;
387pub const WN_RETRY: DWORD = ERROR_RETRY;
388pub const WN_NET_ERROR: DWORD = ERROR_UNEXP_NET_ERR;
389pub const WN_MORE_DATA: DWORD = ERROR_MORE_DATA;
390pub const WN_BAD_POINTER: DWORD = ERROR_INVALID_ADDRESS;
391pub const WN_BAD_VALUE: DWORD = ERROR_INVALID_PARAMETER;
392pub const WN_BAD_USER: DWORD = ERROR_BAD_USERNAME;
393pub const WN_BAD_PASSWORD: DWORD = ERROR_INVALID_PASSWORD;
394pub const WN_ACCESS_DENIED: DWORD = ERROR_ACCESS_DENIED;
395pub const WN_FUNCTION_BUSY: DWORD = ERROR_BUSY;
396pub const WN_WINDOWS_ERROR: DWORD = ERROR_UNEXP_NET_ERR;
397pub const WN_OUT_OF_MEMORY: DWORD = ERROR_NOT_ENOUGH_MEMORY;
398pub const WN_NO_NETWORK: DWORD = ERROR_NO_NETWORK;
399pub const WN_EXTENDED_ERROR: DWORD = ERROR_EXTENDED_ERROR;
400pub const WN_BAD_LEVEL: DWORD = ERROR_INVALID_LEVEL;
401pub const WN_BAD_HANDLE: DWORD = ERROR_INVALID_HANDLE;
402pub const WN_NOT_INITIALIZING: DWORD = ERROR_ALREADY_INITIALIZED;
403pub const WN_NO_MORE_DEVICES: DWORD = ERROR_NO_MORE_DEVICES;
404pub const WN_NOT_CONNECTED: DWORD = ERROR_NOT_CONNECTED;
405pub const WN_OPEN_FILES: DWORD = ERROR_OPEN_FILES;
406pub const WN_DEVICE_IN_USE: DWORD = ERROR_DEVICE_IN_USE;
407pub const WN_BAD_NETNAME: DWORD = ERROR_BAD_NET_NAME;
408pub const WN_BAD_LOCALNAME: DWORD = ERROR_BAD_DEVICE;
409pub const WN_ALREADY_CONNECTED: DWORD = ERROR_ALREADY_ASSIGNED;
410pub const WN_DEVICE_ERROR: DWORD = ERROR_GEN_FAILURE;
411pub const WN_CONNECTION_CLOSED: DWORD = ERROR_CONNECTION_UNAVAIL;
412pub const WN_NO_NET_OR_BAD_PATH: DWORD = ERROR_NO_NET_OR_BAD_PATH;
413pub const WN_BAD_PROVIDER: DWORD = ERROR_BAD_PROVIDER;
414pub const WN_CANNOT_OPEN_PROFILE: DWORD = ERROR_CANNOT_OPEN_PROFILE;
415pub const WN_BAD_PROFILE: DWORD = ERROR_BAD_PROFILE;
416pub const WN_BAD_DEV_TYPE: DWORD = ERROR_BAD_DEV_TYPE;
417pub const WN_DEVICE_ALREADY_REMEMBERED: DWORD = ERROR_DEVICE_ALREADY_REMEMBERED;
418pub const WN_CONNECTED_OTHER_PASSWORD: DWORD = ERROR_CONNECTED_OTHER_PASSWORD;
419pub const WN_CONNECTED_OTHER_PASSWORD_DEFAULT: DWORD = ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT;
420pub const WN_NO_MORE_ENTRIES: DWORD = ERROR_NO_MORE_ITEMS;
421pub const WN_NOT_CONTAINER: DWORD = ERROR_NOT_CONTAINER;
422pub const WN_NOT_AUTHENTICATED: DWORD = ERROR_NOT_AUTHENTICATED;
423pub const WN_NOT_LOGGED_ON: DWORD = ERROR_NOT_LOGGED_ON;
424pub const WN_NOT_VALIDATED: DWORD = ERROR_NO_LOGON_SERVERS;
425STRUCT!{struct NETCONNECTINFOSTRUCT {
426    cbStructure: DWORD,
427    dwFlags: DWORD,
428    dwSpeed: DWORD,
429    dwDelay: DWORD,
430    dwOptDataSize: DWORD,
431}}
432pub type LPNETCONNECTINFOSTRUCT = *mut NETCONNECTINFOSTRUCT;
433pub const WNCON_FORNETCARD: DWORD = 0x00000001;
434pub const WNCON_NOTROUTED: DWORD = 0x00000002;
435pub const WNCON_SLOWLINK: DWORD = 0x00000004;
436pub const WNCON_DYNAMIC: DWORD = 0x00000008;
437extern "system" {
438    pub fn MultinetGetConnectionPerformanceA(
439        lpNetResource: LPNETRESOURCEA,
440        lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT,
441    ) -> DWORD;
442    pub fn MultinetGetConnectionPerformanceW(
443        lpNetResource: LPNETRESOURCEW,
444        lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT,
445    ) -> DWORD;
446}