1 /***********************************************************************\ 2 * winnetwk.d * 3 * * 4 * Windows API header module * 5 * * 6 * Translated from MinGW Windows headers * 7 * by Stewart Gordon * 8 * * 9 * Placed into public domain * 10 \***********************************************************************/ 11 module win32.winnetwk; 12 pragma(lib, "mpr.lib"); 13 14 private import win32.winbase, win32.winerror, win32.winnt; 15 16 enum : DWORD { 17 WNNC_NET_MSNET = 0x00010000, 18 WNNC_NET_LANMAN = 0x00020000, 19 WNNC_NET_NETWARE = 0x00030000, 20 WNNC_NET_VINES = 0x00040000, 21 WNNC_NET_10NET = 0x00050000, 22 WNNC_NET_LOCUS = 0x00060000, 23 WNNC_NET_SUN_PC_NFS = 0x00070000, 24 WNNC_NET_LANSTEP = 0x00080000, 25 WNNC_NET_9TILES = 0x00090000, 26 WNNC_NET_LANTASTIC = 0x000A0000, 27 WNNC_NET_AS400 = 0x000B0000, 28 WNNC_NET_FTP_NFS = 0x000C0000, 29 WNNC_NET_PATHWORKS = 0x000D0000, 30 WNNC_NET_LIFENET = 0x000E0000, 31 WNNC_NET_POWERLAN = 0x000F0000, 32 WNNC_NET_BWNFS = 0x00100000, 33 WNNC_NET_COGENT = 0x00110000, 34 WNNC_NET_FARALLON = 0x00120000, 35 WNNC_NET_APPLETALK = 0x00130000, 36 WNNC_NET_INTERGRAPH = 0x00140000, 37 WNNC_NET_SYMFONET = 0x00150000, 38 WNNC_NET_CLEARCASE = 0x00160000, 39 WNNC_NET_FRONTIER = 0x00170000, 40 WNNC_NET_BMC = 0x00180000, 41 WNNC_NET_DCE = 0x00190000, 42 WNNC_NET_AVID = 0x001A0000, 43 WNNC_NET_DOCUSPACE = 0x001B0000, 44 WNNC_NET_MANGOSOFT = 0x001C0000, 45 WNNC_NET_SERNET = 0x001D0000, 46 WNNC_NET_DECORB = 0x00200000, 47 WNNC_NET_PROTSTOR = 0x00210000, 48 WNNC_NET_FJ_REDIR = 0x00220000, 49 WNNC_NET_DISTINCT = 0x00230000, 50 WNNC_NET_TWINS = 0x00240000, 51 WNNC_NET_RDR2SAMPLE = 0x00250000, 52 WNNC_NET_CSC = 0x00260000, 53 WNNC_NET_3IN1 = 0x00270000, 54 WNNC_NET_EXTENDNET = 0x00290000, 55 WNNC_NET_OBJECT_DIRE = 0x00300000, 56 WNNC_NET_MASFAX = 0x00310000, 57 WNNC_NET_HOB_NFS = 0x00320000, 58 WNNC_NET_SHIVA = 0x00330000, 59 WNNC_NET_IBMAL = 0x00340000, 60 WNNC_CRED_MANAGER = 0xFFFF0000 61 } 62 63 enum : DWORD { 64 RESOURCE_CONNECTED = 1, 65 RESOURCE_GLOBALNET = 2, 66 RESOURCE_REMEMBERED = 3, 67 RESOURCE_RECENT = 4, 68 RESOURCE_CONTEXT = 5 69 } 70 71 const DWORD 72 RESOURCETYPE_ANY = 0, 73 RESOURCETYPE_DISK = 1, 74 RESOURCETYPE_PRINT = 2, 75 RESOURCETYPE_RESERVED = 8, 76 RESOURCETYPE_UNKNOWN = 0xFFFFFFFF; 77 78 const DWORD 79 RESOURCEUSAGE_CONNECTABLE = 0x00000001, 80 RESOURCEUSAGE_CONTAINER = 0x00000002, 81 RESOURCEUSAGE_NOLOCALDEVICE = 0x00000004, 82 RESOURCEUSAGE_SIBLING = 0x00000008, 83 RESOURCEUSAGE_ATTACHED = 0x00000010, 84 RESOURCEUSAGE_ALL = (RESOURCEUSAGE_CONNECTABLE 85 | RESOURCEUSAGE_CONTAINER 86 | RESOURCEUSAGE_ATTACHED), 87 RESOURCEUSAGE_RESERVED = 0x80000000; 88 89 enum : DWORD { 90 RESOURCEDISPLAYTYPE_GENERIC, 91 RESOURCEDISPLAYTYPE_DOMAIN, 92 RESOURCEDISPLAYTYPE_SERVER, 93 RESOURCEDISPLAYTYPE_SHARE, 94 RESOURCEDISPLAYTYPE_FILE, 95 RESOURCEDISPLAYTYPE_GROUP, 96 RESOURCEDISPLAYTYPE_NETWORK, 97 RESOURCEDISPLAYTYPE_ROOT, 98 RESOURCEDISPLAYTYPE_SHAREADMIN, 99 RESOURCEDISPLAYTYPE_DIRECTORY, 100 RESOURCEDISPLAYTYPE_TREE // = 10 101 } 102 103 const NETPROPERTY_PERSISTENT = 1; 104 105 const DWORD 106 CONNECT_UPDATE_PROFILE = 1, 107 CONNECT_UPDATE_RECENT = 2, 108 CONNECT_TEMPORARY = 4, 109 CONNECT_INTERACTIVE = 8, 110 CONNECT_PROMPT = 16, 111 CONNECT_NEED_DRIVE = 32, 112 CONNECT_REFCOUNT = 64, 113 CONNECT_REDIRECT = 128, 114 CONNECT_LOCALDRIVE = 256, 115 CONNECT_CURRENT_MEDIA = 512; 116 117 const DWORD 118 CONNDLG_RO_PATH = 1, 119 CONNDLG_CONN_POINT = 2, 120 CONNDLG_USE_MRU = 4, 121 CONNDLG_HIDE_BOX = 8, 122 CONNDLG_PERSIST = 16, 123 CONNDLG_NOT_PERSIST = 32; 124 125 const DWORD 126 DISC_UPDATE_PROFILE = 1, 127 DISC_NO_FORCE = 64; 128 129 const DWORD 130 WNFMT_MULTILINE = 1, 131 WNFMT_ABBREVIATED = 2, 132 WNFMT_INENUM = 16, 133 WNFMT_CONNECTION = 32; 134 135 enum : DWORD { 136 WN_SUCCESS = NO_ERROR, 137 WN_NO_ERROR = NO_ERROR, 138 WN_NOT_SUPPORTED = ERROR_NOT_SUPPORTED, 139 WN_CANCEL = ERROR_CANCELLED, 140 WN_RETRY = ERROR_RETRY, 141 WN_NET_ERROR = ERROR_UNEXP_NET_ERR, 142 WN_MORE_DATA = ERROR_MORE_DATA, 143 WN_BAD_POINTER = ERROR_INVALID_ADDRESS, 144 WN_BAD_VALUE = ERROR_INVALID_PARAMETER, 145 WN_BAD_USER = ERROR_BAD_USERNAME, 146 WN_BAD_PASSWORD = ERROR_INVALID_PASSWORD, 147 WN_ACCESS_DENIED = ERROR_ACCESS_DENIED, 148 WN_FUNCTION_BUSY = ERROR_BUSY, 149 WN_WINDOWS_ERROR = ERROR_UNEXP_NET_ERR, 150 WN_OUT_OF_MEMORY = ERROR_NOT_ENOUGH_MEMORY, 151 WN_NO_NETWORK = ERROR_NO_NETWORK, 152 WN_EXTENDED_ERROR = ERROR_EXTENDED_ERROR, 153 WN_BAD_LEVEL = ERROR_INVALID_LEVEL, 154 WN_BAD_HANDLE = ERROR_INVALID_HANDLE, 155 WN_NOT_INITIALIZING = ERROR_ALREADY_INITIALIZED, 156 WN_NO_MORE_DEVICES = ERROR_NO_MORE_DEVICES, 157 WN_NOT_CONNECTED = ERROR_NOT_CONNECTED, 158 WN_OPEN_FILES = ERROR_OPEN_FILES, 159 WN_DEVICE_IN_USE = ERROR_DEVICE_IN_USE, 160 WN_BAD_NETNAME = ERROR_BAD_NET_NAME, 161 WN_BAD_LOCALNAME = ERROR_BAD_DEVICE, 162 WN_ALREADY_CONNECTED = ERROR_ALREADY_ASSIGNED, 163 WN_DEVICE_ERROR = ERROR_GEN_FAILURE, 164 WN_CONNECTION_CLOSED = ERROR_CONNECTION_UNAVAIL, 165 WN_NO_NET_OR_BAD_PATH = ERROR_NO_NET_OR_BAD_PATH, 166 WN_BAD_PROVIDER = ERROR_BAD_PROVIDER, 167 WN_CANNOT_OPEN_PROFILE = ERROR_CANNOT_OPEN_PROFILE, 168 WN_BAD_PROFILE = ERROR_BAD_PROFILE, 169 WN_BAD_DEV_TYPE = ERROR_BAD_DEV_TYPE, 170 WN_DEVICE_ALREADY_REMEMBERED = ERROR_DEVICE_ALREADY_REMEMBERED, 171 WN_NO_MORE_ENTRIES = ERROR_NO_MORE_ITEMS, 172 WN_NOT_CONTAINER = ERROR_NOT_CONTAINER, 173 WN_NOT_AUTHENTICATED = ERROR_NOT_AUTHENTICATED, 174 WN_NOT_LOGGED_ON = ERROR_NOT_LOGGED_ON, 175 WN_NOT_VALIDATED = ERROR_NO_LOGON_SERVERS 176 } 177 178 enum : DWORD { 179 UNIVERSAL_NAME_INFO_LEVEL = 1, 180 REMOTE_NAME_INFO_LEVEL 181 } 182 183 const DWORD 184 NETINFO_DLL16 = 1, 185 NETINFO_DISKRED = 4, 186 NETINFO_PRINTERRED = 8; 187 188 const DWORD 189 RP_LOGON = 1, 190 RP_INIFILE = 2; 191 192 const DWORD PP_DISPLAYERRORS = 1; 193 194 const DWORD 195 WNCON_FORNETCARD = 1, 196 WNCON_NOTROUTED = 2, 197 WNCON_SLOWLINK = 4, 198 WNCON_DYNAMIC = 8; 199 200 struct NETRESOURCEA { 201 DWORD dwScope; 202 DWORD dwType; 203 DWORD dwDisplayType; 204 DWORD dwUsage; 205 LPSTR lpLocalName; 206 LPSTR lpRemoteName; 207 LPSTR lpComment; 208 LPSTR lpProvider; 209 } 210 alias NETRESOURCEA* LPNETRESOURCEA; 211 212 struct NETRESOURCEW { 213 DWORD dwScope; 214 DWORD dwType; 215 DWORD dwDisplayType; 216 DWORD dwUsage; 217 LPWSTR lpLocalName; 218 LPWSTR lpRemoteName; 219 LPWSTR lpComment ; 220 LPWSTR lpProvider; 221 } 222 alias NETRESOURCEW* LPNETRESOURCEW; 223 224 struct CONNECTDLGSTRUCTA { 225 DWORD cbStructure; 226 HWND hwndOwner; 227 LPNETRESOURCEA lpConnRes; 228 DWORD dwFlags; 229 DWORD dwDevNum; 230 } 231 alias CONNECTDLGSTRUCTA* LPCONNECTDLGSTRUCTA; 232 233 struct CONNECTDLGSTRUCTW { 234 DWORD cbStructure; 235 HWND hwndOwner; 236 LPNETRESOURCEW lpConnRes; 237 DWORD dwFlags; 238 DWORD dwDevNum; 239 } 240 alias CONNECTDLGSTRUCTW* LPCONNECTDLGSTRUCTW; 241 242 struct DISCDLGSTRUCTA { 243 DWORD cbStructure; 244 HWND hwndOwner; 245 LPSTR lpLocalName; 246 LPSTR lpRemoteName; 247 DWORD dwFlags; 248 } 249 alias DISCDLGSTRUCTA* LPDISCDLGSTRUCTA; 250 251 struct DISCDLGSTRUCTW { 252 DWORD cbStructure; 253 HWND hwndOwner; 254 LPWSTR lpLocalName; 255 LPWSTR lpRemoteName; 256 DWORD dwFlags; 257 } 258 alias DISCDLGSTRUCTW* LPDISCDLGSTRUCTW; 259 260 struct UNIVERSAL_NAME_INFOA { 261 LPSTR lpUniversalName; 262 } 263 alias UNIVERSAL_NAME_INFOA* LPUNIVERSAL_NAME_INFOA; 264 265 struct UNIVERSAL_NAME_INFOW { 266 LPWSTR lpUniversalName; 267 } 268 alias UNIVERSAL_NAME_INFOW* LPUNIVERSAL_NAME_INFOW; 269 270 struct REMOTE_NAME_INFOA { 271 LPSTR lpUniversalName; 272 LPSTR lpConnectionName; 273 LPSTR lpRemainingPath; 274 } 275 alias REMOTE_NAME_INFOA* LPREMOTE_NAME_INFOA; 276 277 struct REMOTE_NAME_INFOW { 278 LPWSTR lpUniversalName; 279 LPWSTR lpConnectionName; 280 LPWSTR lpRemainingPath; 281 } 282 alias REMOTE_NAME_INFOW* LPREMOTE_NAME_INFOW; 283 284 struct NETINFOSTRUCT { 285 DWORD cbStructure; 286 DWORD dwProviderVersion; 287 DWORD dwStatus; 288 DWORD dwCharacteristics; 289 DWORD dwHandle; 290 WORD wNetType; 291 DWORD dwPrinters; 292 DWORD dwDrives; 293 } 294 alias NETINFOSTRUCT* LPNETINFOSTRUCT; 295 296 extern (Pascal) { 297 alias UINT function(LPCSTR, LPSTR, UINT) PFNGETPROFILEPATHA; 298 alias UINT function(LPCWSTR, LPWSTR, UINT) PFNGETPROFILEPATHW; 299 alias UINT function(LPCSTR, LPCSTR, DWORD) PFNRECONCILEPROFILEA; 300 alias UINT function(LPCWSTR, LPCWSTR, DWORD) PFNRECONCILEPROFILEW; 301 alias BOOL function(HWND, LPCSTR, LPCSTR, LPCSTR, DWORD) 302 PFNPROCESSPOLICIESA; 303 alias BOOL function(HWND, LPCWSTR, LPCWSTR, LPCWSTR, DWORD) 304 PFNPROCESSPOLICIESW; 305 } 306 307 struct NETCONNECTINFOSTRUCT { 308 DWORD cbStructure; 309 DWORD dwFlags; 310 DWORD dwSpeed; 311 DWORD dwDelay; 312 DWORD dwOptDataSize; 313 } 314 alias NETCONNECTINFOSTRUCT* LPNETCONNECTINFOSTRUCT; 315 316 extern (Windows) { 317 DWORD WNetAddConnection2A(LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD); 318 DWORD WNetAddConnection2W(LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD); 319 DWORD WNetAddConnection3A(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD); 320 DWORD WNetAddConnection3W(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD); 321 DWORD WNetCancelConnection2A(LPCSTR, DWORD, BOOL); 322 DWORD WNetCancelConnection2W(LPCWSTR, DWORD, BOOL); 323 DWORD WNetGetConnectionA(LPCSTR, LPSTR, PDWORD); 324 DWORD WNetGetConnectionW(LPCWSTR, LPWSTR, PDWORD); 325 DWORD WNetUseConnectionA(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD, 326 LPSTR, PDWORD, PDWORD); 327 DWORD WNetUseConnectionW(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD, 328 LPWSTR, PDWORD, PDWORD); 329 DWORD WNetSetConnectionA(LPCSTR, DWORD, PVOID); 330 DWORD WNetSetConnectionW(LPCWSTR, DWORD, PVOID); 331 DWORD WNetConnectionDialog(HWND, DWORD); 332 DWORD WNetDisconnectDialog(HWND, DWORD); 333 DWORD WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA); 334 DWORD WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW); 335 DWORD WNetDisconnectDialog1A(LPDISCDLGSTRUCTA); 336 DWORD WNetDisconnectDialog1W(LPDISCDLGSTRUCTW); 337 DWORD WNetOpenEnumA(DWORD, DWORD, DWORD, LPNETRESOURCEA, LPHANDLE); 338 DWORD WNetOpenEnumW(DWORD, DWORD, DWORD, LPNETRESOURCEW, LPHANDLE); 339 DWORD WNetEnumResourceA(HANDLE, PDWORD, PVOID, PDWORD); 340 DWORD WNetEnumResourceW(HANDLE, PDWORD, PVOID, PDWORD); 341 DWORD WNetCloseEnum(HANDLE); 342 DWORD WNetGetUniversalNameA(LPCSTR, DWORD, PVOID, PDWORD); 343 DWORD WNetGetUniversalNameW(LPCWSTR, DWORD, PVOID, PDWORD); 344 DWORD WNetGetUserA(LPCSTR, LPSTR, PDWORD); 345 DWORD WNetGetUserW(LPCWSTR, LPWSTR, PDWORD); 346 DWORD WNetGetProviderNameA(DWORD, LPSTR, PDWORD); 347 DWORD WNetGetProviderNameW(DWORD, LPWSTR, PDWORD); 348 DWORD WNetGetNetworkInformationA(LPCSTR, LPNETINFOSTRUCT); 349 DWORD WNetGetNetworkInformationW(LPCWSTR, LPNETINFOSTRUCT); 350 DWORD WNetGetResourceInformationA(LPNETRESOURCEA, LPVOID, LPDWORD, 351 LPSTR*); 352 DWORD WNetGetResourceInformationW(LPNETRESOURCEA, LPVOID, LPDWORD, 353 LPWSTR*); 354 DWORD WNetGetResourceParentA(LPNETRESOURCEA, LPVOID, LPDWORD); 355 DWORD WNetGetResourceParentW(LPNETRESOURCEW, LPVOID, LPDWORD); 356 DWORD WNetGetLastErrorA(PDWORD, LPSTR, DWORD, LPSTR, DWORD); 357 DWORD WNetGetLastErrorW(PDWORD, LPWSTR, DWORD, LPWSTR, DWORD); 358 DWORD MultinetGetConnectionPerformanceA(LPNETRESOURCEA, 359 LPNETCONNECTINFOSTRUCT); 360 DWORD MultinetGetConnectionPerformanceW(LPNETRESOURCEW, 361 LPNETCONNECTINFOSTRUCT); 362 deprecated { 363 DWORD WNetAddConnectionA(LPCSTR, LPCSTR, LPCSTR); 364 DWORD WNetAddConnectionW(LPCWSTR, LPCWSTR, LPCWSTR); 365 DWORD WNetCancelConnectionA(LPCSTR, BOOL); 366 DWORD WNetCancelConnectionW(LPCWSTR, BOOL); 367 } 368 } 369 370 version (Unicode) { 371 alias PFNGETPROFILEPATHW PFNGETPROFILEPATH; 372 alias PFNRECONCILEPROFILEW PFNRECONCILEPROFILE; 373 alias PFNPROCESSPOLICIESW PFNPROCESSPOLICIES; 374 alias NETRESOURCEW NETRESOURCE; 375 alias CONNECTDLGSTRUCTW CONNECTDLGSTRUCT; 376 alias DISCDLGSTRUCTW DISCDLGSTRUCT; 377 alias REMOTE_NAME_INFOW REMOTE_NAME_INFO; 378 alias UNIVERSAL_NAME_INFOW UNIVERSAL_NAME_INFO; 379 alias WNetAddConnection2W WNetAddConnection2; 380 alias WNetAddConnection3W WNetAddConnection3; 381 alias WNetCancelConnection2W WNetCancelConnection2; 382 alias WNetGetConnectionW WNetGetConnection; 383 alias WNetUseConnectionW WNetUseConnection; 384 alias WNetSetConnectionW WNetSetConnection; 385 alias WNetConnectionDialog1W WNetConnectionDialog1; 386 alias WNetDisconnectDialog1W WNetDisconnectDialog1; 387 alias WNetOpenEnumW WNetOpenEnum; 388 alias WNetEnumResourceW WNetEnumResource; 389 alias WNetGetUniversalNameW WNetGetUniversalName; 390 alias WNetGetUserW WNetGetUser; 391 alias WNetGetProviderNameW WNetGetProviderName; 392 alias WNetGetNetworkInformationW WNetGetNetworkInformation; 393 alias WNetGetResourceInformationW WNetGetResourceInformation; 394 alias WNetGetResourceParentW WNetGetResourceParent; 395 alias WNetGetLastErrorW WNetGetLastError; 396 alias MultinetGetConnectionPerformanceW MultinetGetConnectionPerformance; 397 deprecated { 398 alias WNetAddConnectionW WNetAddConnection; 399 alias WNetCancelConnectionW WNetCancelConnection; 400 } 401 } else { 402 alias PFNGETPROFILEPATHA PFNGETPROFILEPATH; 403 alias PFNRECONCILEPROFILEA PFNRECONCILEPROFILE; 404 alias PFNPROCESSPOLICIESA PFNPROCESSPOLICIES; 405 alias NETRESOURCEA NETRESOURCE; 406 alias CONNECTDLGSTRUCTA CONNECTDLGSTRUCT; 407 alias DISCDLGSTRUCTA DISCDLGSTRUCT; 408 alias REMOTE_NAME_INFOA REMOTE_NAME_INFO; 409 alias UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO; 410 alias WNetAddConnection2A WNetAddConnection2; 411 alias WNetAddConnection3A WNetAddConnection3; 412 alias WNetCancelConnection2A WNetCancelConnection2; 413 alias WNetGetConnectionA WNetGetConnection; 414 alias WNetUseConnectionA WNetUseConnection; 415 alias WNetSetConnectionA WNetSetConnection; 416 alias WNetConnectionDialog1A WNetConnectionDialog1; 417 alias WNetDisconnectDialog1A WNetDisconnectDialog1; 418 alias WNetOpenEnumA WNetOpenEnum; 419 alias WNetEnumResourceA WNetEnumResource; 420 alias WNetGetUniversalNameA WNetGetUniversalName; 421 alias WNetGetUserA WNetGetUser; 422 alias WNetGetProviderNameA WNetGetProviderName; 423 alias WNetGetNetworkInformationA WNetGetNetworkInformation; 424 alias WNetGetResourceInformationA WNetGetResourceInformation; 425 alias WNetGetResourceParentA WNetGetResourceParent; 426 alias WNetGetLastErrorA WNetGetLastError; 427 alias MultinetGetConnectionPerformanceA MultinetGetConnectionPerformance; 428 deprecated { 429 alias WNetAddConnectionA WNetAddConnection; 430 alias WNetCancelConnectionA WNetCancelConnection; 431 } 432 } 433 434 alias NETRESOURCE* LPNETRESOURCE; 435 alias CONNECTDLGSTRUCT* LPCONNECTDLGSTRUCT; 436 alias DISCDLGSTRUCT* LPDISCDLGSTRUCT; 437 alias REMOTE_NAME_INFO* LPREMOTE_NAME_INFO; 438 alias UNIVERSAL_NAME_INFO* LPUNIVERSAL_NAME_INFO;