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