home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / C++ / FreeCommandLineTools.exe / Include / winnetwk.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-31  |  24.4 KB  |  859 lines

  1. /*++
  2.  
  3. Copyright (c) 1991-1998  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     winnetwk.h
  8.  
  9. Abstract:
  10.  
  11.     Standard WINNET Header File for WIN32
  12.  
  13. Environment:
  14.  
  15.     User Mode -Win32
  16.  
  17. Notes:
  18.  
  19.     optional-notes
  20.  
  21. --*/
  22.  
  23. #ifndef _WINNETWK_
  24. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  25. #define _WINNETWK_
  26.  
  27.  
  28. #ifdef __cplusplus
  29. extern "C" {
  30. #endif
  31.  
  32.  
  33. //
  34. // Network types
  35. //
  36.  
  37. #define     WNNC_NET_MSNET       0x00010000
  38. #define     WNNC_NET_LANMAN      0x00020000
  39. #define     WNNC_NET_NETWARE     0x00030000
  40. #define     WNNC_NET_VINES       0x00040000
  41. #define     WNNC_NET_10NET       0x00050000
  42. #define     WNNC_NET_LOCUS       0x00060000
  43. #define     WNNC_NET_SUN_PC_NFS  0x00070000
  44. #define     WNNC_NET_LANSTEP     0x00080000
  45. #define     WNNC_NET_9TILES      0x00090000
  46. #define     WNNC_NET_LANTASTIC   0x000A0000
  47. #define     WNNC_NET_AS400       0x000B0000
  48. #define     WNNC_NET_FTP_NFS     0x000C0000
  49. #define     WNNC_NET_PATHWORKS   0x000D0000
  50. #define     WNNC_NET_LIFENET     0x000E0000
  51. #define     WNNC_NET_POWERLAN    0x000F0000
  52. #define     WNNC_NET_BWNFS       0x00100000
  53. #define     WNNC_NET_COGENT      0x00110000
  54. #define     WNNC_NET_FARALLON    0x00120000
  55. #define     WNNC_NET_APPLETALK   0x00130000
  56. #define     WNNC_NET_INTERGRAPH  0x00140000
  57. #define     WNNC_NET_SYMFONET    0x00150000
  58. #define     WNNC_NET_CLEARCASE   0x00160000
  59. #define     WNNC_NET_FRONTIER    0x00170000
  60. #define     WNNC_NET_BMC         0x00180000
  61. #define     WNNC_NET_DCE         0x00190000
  62. #define     WNNC_NET_AVID        0x001A0000
  63. #define     WNNC_NET_DOCUSPACE   0x001B0000
  64. #define     WNNC_NET_DECORB      0x00200000
  65. #define     WNNC_NET_PROTSTOR    0x00210000
  66. #define     WNNC_NET_FJ_REDIR    0x00220000
  67. #define     WNNC_NET_DISTINCT    0x00230000
  68. #define     WNNC_NET_TWINS       0x00240000
  69. #define     WNNC_NET_RDR2SAMPLE  0x00250000
  70. #define     WNNC_NET_CSC         0x00260000
  71. #define     WNNC_NET_3IN1        0x00270000
  72. #define     WNNC_NET_EXTENDNET   0x00290000
  73. #define     WNNC_NET_OBJECT_DIRE 0x00300000
  74. #define     WNNC_NET_MASFAX      0x00310000
  75. #define     WNNC_NET_HOB_NFS     0x00320000
  76. #define     WNNC_NET_SHIVA       0x00330000
  77. #define     WNNC_NET_IBMAL       0x00340000
  78.  
  79. #define     WNNC_CRED_MANAGER   0xFFFF0000
  80.  
  81. //
  82. //  Network Resources.
  83. //
  84.  
  85. #define RESOURCE_CONNECTED      0x00000001
  86. #define RESOURCE_GLOBALNET      0x00000002
  87. #define RESOURCE_REMEMBERED     0x00000003
  88. #if(WINVER >= 0x0400)
  89. #define RESOURCE_RECENT         0x00000004
  90. #define RESOURCE_CONTEXT        0x00000005
  91. #endif /* WINVER >= 0x0400 */
  92.  
  93. #define RESOURCETYPE_ANY        0x00000000
  94. #define RESOURCETYPE_DISK       0x00000001
  95. #define RESOURCETYPE_PRINT      0x00000002
  96. #if(WINVER >= 0x0400)
  97. #define RESOURCETYPE_RESERVED   0x00000008
  98. #endif /* WINVER >= 0x0400 */
  99. #define RESOURCETYPE_UNKNOWN    0xFFFFFFFF
  100.  
  101. #define RESOURCEUSAGE_CONNECTABLE   0x00000001
  102. #define RESOURCEUSAGE_CONTAINER     0x00000002
  103. #if(WINVER >= 0x0400)
  104. #define RESOURCEUSAGE_NOLOCALDEVICE 0x00000004
  105. #define RESOURCEUSAGE_SIBLING       0x00000008
  106. #define RESOURCEUSAGE_ATTACHED      0x00000010
  107. #define RESOURCEUSAGE_ALL           (RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER | RESOURCEUSAGE_ATTACHED)
  108. #endif /* WINVER >= 0x0400 */
  109. #define RESOURCEUSAGE_RESERVED      0x80000000
  110.  
  111. #define RESOURCEDISPLAYTYPE_GENERIC        0x00000000
  112. #define RESOURCEDISPLAYTYPE_DOMAIN         0x00000001
  113. #define RESOURCEDISPLAYTYPE_SERVER         0x00000002
  114. #define RESOURCEDISPLAYTYPE_SHARE          0x00000003
  115. #define RESOURCEDISPLAYTYPE_FILE           0x00000004
  116. #define RESOURCEDISPLAYTYPE_GROUP          0x00000005
  117. #if(WINVER >= 0x0400)
  118. #define RESOURCEDISPLAYTYPE_NETWORK        0x00000006
  119. #define RESOURCEDISPLAYTYPE_ROOT           0x00000007
  120. #define RESOURCEDISPLAYTYPE_SHAREADMIN     0x00000008
  121. #define RESOURCEDISPLAYTYPE_DIRECTORY      0x00000009
  122. #endif /* WINVER >= 0x0400 */
  123. #define RESOURCEDISPLAYTYPE_TREE           0x0000000A
  124. #if(WINVER >= 0x0400)
  125. #define RESOURCEDISPLAYTYPE_NDSCONTAINER   0x0000000B
  126. #endif /* WINVER >= 0x0400 */
  127.  
  128. typedef struct  _NETRESOURCEA {
  129.     DWORD    dwScope;
  130.     DWORD    dwType;
  131.     DWORD    dwDisplayType;
  132.     DWORD    dwUsage;
  133.     LPSTR    lpLocalName;
  134.     LPSTR    lpRemoteName;
  135.     LPSTR    lpComment ;
  136.     LPSTR    lpProvider;
  137. }NETRESOURCEA, *LPNETRESOURCEA;
  138. typedef struct  _NETRESOURCEW {
  139.     DWORD    dwScope;
  140.     DWORD    dwType;
  141.     DWORD    dwDisplayType;
  142.     DWORD    dwUsage;
  143.     LPWSTR   lpLocalName;
  144.     LPWSTR   lpRemoteName;
  145.     LPWSTR   lpComment ;
  146.     LPWSTR   lpProvider;
  147. }NETRESOURCEW, *LPNETRESOURCEW;
  148. #ifdef UNICODE
  149. typedef NETRESOURCEW NETRESOURCE;
  150. typedef LPNETRESOURCEW LPNETRESOURCE;
  151. #else
  152. typedef NETRESOURCEA NETRESOURCE;
  153. typedef LPNETRESOURCEA LPNETRESOURCE;
  154. #endif // UNICODE
  155.  
  156.  
  157. //
  158. //  Network Connections.
  159. //
  160.  
  161. #define NETPROPERTY_PERSISTENT       1
  162.  
  163. #define CONNECT_UPDATE_PROFILE      0x00000001
  164. #define CONNECT_UPDATE_RECENT       0x00000002
  165. #define CONNECT_TEMPORARY           0x00000004
  166. #define CONNECT_INTERACTIVE         0x00000008
  167. #define CONNECT_PROMPT              0x00000010
  168. #define CONNECT_NEED_DRIVE          0x00000020
  169. #if(WINVER >= 0x0400)
  170. #define CONNECT_REFCOUNT            0x00000040
  171. #define CONNECT_REDIRECT            0x00000080
  172. #define CONNECT_LOCALDRIVE          0x00000100
  173. #define CONNECT_CURRENT_MEDIA       0x00000200
  174. #define CONNECT_DEFERRED            0x00000400
  175. #define CONNECT_RESERVED            0xFF000000
  176. #endif /* WINVER >= 0x0400 */
  177.  
  178. DWORD APIENTRY
  179. WNetAddConnectionA(
  180.      IN LPCSTR   lpRemoteName,
  181.      IN LPCSTR   lpPassword,
  182.      IN LPCSTR   lpLocalName
  183.     );
  184. DWORD APIENTRY
  185. WNetAddConnectionW(
  186.      IN LPCWSTR   lpRemoteName,
  187.      IN LPCWSTR   lpPassword,
  188.      IN LPCWSTR   lpLocalName
  189.     );
  190. #ifdef UNICODE
  191. #define WNetAddConnection  WNetAddConnectionW
  192. #else
  193. #define WNetAddConnection  WNetAddConnectionA
  194. #endif // !UNICODE
  195.  
  196. DWORD APIENTRY
  197. WNetAddConnection2A(
  198.      IN LPNETRESOURCEA lpNetResource,
  199.      IN LPCSTR       lpPassword,
  200.      IN LPCSTR       lpUserName,
  201.      IN DWORD          dwFlags
  202.     );
  203. DWORD APIENTRY
  204. WNetAddConnection2W(
  205.      IN LPNETRESOURCEW lpNetResource,
  206.      IN LPCWSTR       lpPassword,
  207.      IN LPCWSTR       lpUserName,
  208.      IN DWORD          dwFlags
  209.     );
  210. #ifdef UNICODE
  211. #define WNetAddConnection2  WNetAddConnection2W
  212. #else
  213. #define WNetAddConnection2  WNetAddConnection2A
  214. #endif // !UNICODE
  215.  
  216. DWORD APIENTRY
  217. WNetAddConnection3A(
  218.      IN HWND           hwndOwner,
  219.      IN LPNETRESOURCEA lpNetResource,
  220.      IN LPCSTR       lpPassword,
  221.      IN LPCSTR       lpUserName,
  222.      IN DWORD          dwFlags
  223.     );
  224. DWORD APIENTRY
  225. WNetAddConnection3W(
  226.      IN HWND           hwndOwner,
  227.      IN LPNETRESOURCEW lpNetResource,
  228.      IN LPCWSTR       lpPassword,
  229.      IN LPCWSTR       lpUserName,
  230.      IN DWORD          dwFlags
  231.     );
  232. #ifdef UNICODE
  233. #define WNetAddConnection3  WNetAddConnection3W
  234. #else
  235. #define WNetAddConnection3  WNetAddConnection3A
  236. #endif // !UNICODE
  237.  
  238. DWORD APIENTRY
  239. WNetCancelConnectionA(
  240.      IN LPCSTR lpName,
  241.      IN BOOL     fForce
  242.     );
  243. DWORD APIENTRY
  244. WNetCancelConnectionW(
  245.      IN LPCWSTR lpName,
  246.      IN BOOL     fForce
  247.     );
  248. #ifdef UNICODE
  249. #define WNetCancelConnection  WNetCancelConnectionW
  250. #else
  251. #define WNetCancelConnection  WNetCancelConnectionA
  252. #endif // !UNICODE
  253.  
  254. DWORD APIENTRY
  255. WNetCancelConnection2A(
  256.      IN LPCSTR lpName,
  257.      IN DWORD    dwFlags,
  258.      IN BOOL     fForce
  259.     );
  260. DWORD APIENTRY
  261. WNetCancelConnection2W(
  262.      IN LPCWSTR lpName,
  263.      IN DWORD    dwFlags,
  264.      IN BOOL     fForce
  265.     );
  266. #ifdef UNICODE
  267. #define WNetCancelConnection2  WNetCancelConnection2W
  268. #else
  269. #define WNetCancelConnection2  WNetCancelConnection2A
  270. #endif // !UNICODE
  271.  
  272. DWORD APIENTRY
  273. WNetGetConnectionA(
  274.      IN LPCSTR lpLocalName,
  275.      OUT LPSTR  lpRemoteName,
  276.      IN OUT LPDWORD  lpnLength
  277.     );
  278. DWORD APIENTRY
  279. WNetGetConnectionW(
  280.      IN LPCWSTR lpLocalName,
  281.      OUT LPWSTR  lpRemoteName,
  282.      IN OUT LPDWORD  lpnLength
  283.     );
  284. #ifdef UNICODE
  285. #define WNetGetConnection  WNetGetConnectionW
  286. #else
  287. #define WNetGetConnection  WNetGetConnectionA
  288. #endif // !UNICODE
  289.  
  290.  
  291. #if(WINVER >= 0x0400)
  292. DWORD APIENTRY
  293. WNetUseConnectionA(
  294.     IN HWND            hwndOwner,
  295.     IN LPNETRESOURCEA  lpNetResource,
  296.     IN LPCSTR        lpUserID,
  297.     IN LPCSTR        lpPassword,
  298.     IN DWORD           dwFlags,
  299.     OUT LPSTR         lpAccessName,
  300.     IN OUT LPDWORD     lpBufferSize,
  301.     OUT LPDWORD        lpResult
  302.     );
  303. DWORD APIENTRY
  304. WNetUseConnectionW(
  305.     IN HWND            hwndOwner,
  306.     IN LPNETRESOURCEW  lpNetResource,
  307.     IN LPCWSTR        lpUserID,
  308.     IN LPCWSTR        lpPassword,
  309.     IN DWORD           dwFlags,
  310.     OUT LPWSTR         lpAccessName,
  311.     IN OUT LPDWORD     lpBufferSize,
  312.     OUT LPDWORD        lpResult
  313.     );
  314. #ifdef UNICODE
  315. #define WNetUseConnection  WNetUseConnectionW
  316. #else
  317. #define WNetUseConnection  WNetUseConnectionA
  318. #endif // !UNICODE
  319. #endif /* WINVER >= 0x0400 */
  320.  
  321.  
  322. //
  323. //  Network Connection Dialogs.
  324. //
  325.  
  326. DWORD APIENTRY
  327. WNetConnectionDialog(
  328.     IN HWND  hwnd,
  329.     IN DWORD dwType
  330.     );
  331.  
  332. DWORD APIENTRY
  333. WNetDisconnectDialog(
  334.     IN HWND  hwnd,
  335.     IN DWORD dwType
  336.     );
  337.  
  338. #if(WINVER >= 0x0400)
  339. typedef struct _CONNECTDLGSTRUCTA{
  340.     DWORD cbStructure;       /* size of this structure in bytes */
  341.     HWND hwndOwner;          /* owner window for the dialog */
  342.     LPNETRESOURCEA lpConnRes;/* Requested Resource info    */
  343.     DWORD dwFlags;           /* flags (see below) */
  344.     DWORD dwDevNum;          /* number of devices connected to */
  345. } CONNECTDLGSTRUCTA, FAR *LPCONNECTDLGSTRUCTA;
  346. typedef struct _CONNECTDLGSTRUCTW{
  347.     DWORD cbStructure;       /* size of this structure in bytes */
  348.     HWND hwndOwner;          /* owner window for the dialog */
  349.     LPNETRESOURCEW lpConnRes;/* Requested Resource info    */
  350.     DWORD dwFlags;           /* flags (see below) */
  351.     DWORD dwDevNum;          /* number of devices connected to */
  352. } CONNECTDLGSTRUCTW, FAR *LPCONNECTDLGSTRUCTW;
  353. #ifdef UNICODE
  354. typedef CONNECTDLGSTRUCTW CONNECTDLGSTRUCT;
  355. typedef LPCONNECTDLGSTRUCTW LPCONNECTDLGSTRUCT;
  356. #else
  357. typedef CONNECTDLGSTRUCTA CONNECTDLGSTRUCT;
  358. typedef LPCONNECTDLGSTRUCTA LPCONNECTDLGSTRUCT;
  359. #endif // UNICODE
  360.  
  361. #define CONNDLG_RO_PATH     0x00000001 /* Resource path should be read-only    */
  362. #define CONNDLG_CONN_POINT  0x00000002 /* Netware -style movable connection point enabled */
  363. #define CONNDLG_USE_MRU     0x00000004 /* Use MRU combobox  */
  364. #define CONNDLG_HIDE_BOX    0x00000008 /* Hide persistent connect checkbox  */
  365.  
  366. /*
  367.  * NOTE:  Set at most ONE of the below flags.  If neither flag is set,
  368.  *        then the persistence is set to whatever the user chose during
  369.  *        a previous connection
  370.  */
  371. #define CONNDLG_PERSIST     0x00000010 /* Force persistent connection */
  372. #define CONNDLG_NOT_PERSIST 0x00000020 /* Force connection NOT persistent */
  373.  
  374. DWORD APIENTRY
  375. WNetConnectionDialog1A(
  376.     IN OUT LPCONNECTDLGSTRUCTA lpConnDlgStruct
  377.     );
  378. DWORD APIENTRY
  379. WNetConnectionDialog1W(
  380.     IN OUT LPCONNECTDLGSTRUCTW lpConnDlgStruct
  381.     );
  382. #ifdef UNICODE
  383. #define WNetConnectionDialog1  WNetConnectionDialog1W
  384. #else
  385. #define WNetConnectionDialog1  WNetConnectionDialog1A
  386. #endif // !UNICODE
  387.  
  388. typedef struct _DISCDLGSTRUCTA{
  389.     DWORD           cbStructure;      /* size of this structure in bytes */
  390.     HWND            hwndOwner;        /* owner window for the dialog */
  391.     LPSTR           lpLocalName;      /* local device name */
  392.     LPSTR           lpRemoteName;     /* network resource name */
  393.     DWORD           dwFlags;          /* flags */
  394. } DISCDLGSTRUCTA, FAR *LPDISCDLGSTRUCTA;
  395. typedef struct _DISCDLGSTRUCTW{
  396.     DWORD           cbStructure;      /* size of this structure in bytes */
  397.     HWND            hwndOwner;        /* owner window for the dialog */
  398.     LPWSTR          lpLocalName;      /* local device name */
  399.     LPWSTR          lpRemoteName;     /* network resource name */
  400.     DWORD           dwFlags;          /* flags */
  401. } DISCDLGSTRUCTW, FAR *LPDISCDLGSTRUCTW;
  402. #ifdef UNICODE
  403. typedef DISCDLGSTRUCTW DISCDLGSTRUCT;
  404. typedef LPDISCDLGSTRUCTW LPDISCDLGSTRUCT;
  405. #else
  406. typedef DISCDLGSTRUCTA DISCDLGSTRUCT;
  407. typedef LPDISCDLGSTRUCTA LPDISCDLGSTRUCT;
  408. #endif // UNICODE
  409.  
  410. #define DISC_UPDATE_PROFILE         0x00000001
  411. #define DISC_NO_FORCE               0x00000040
  412.  
  413. DWORD APIENTRY
  414. WNetDisconnectDialog1A(
  415.     IN LPDISCDLGSTRUCTA lpConnDlgStruct
  416.     );
  417. DWORD APIENTRY
  418. WNetDisconnectDialog1W(
  419.     IN LPDISCDLGSTRUCTW lpConnDlgStruct
  420.     );
  421. #ifdef UNICODE
  422. #define WNetDisconnectDialog1  WNetDisconnectDialog1W
  423. #else
  424. #define WNetDisconnectDialog1  WNetDisconnectDialog1A
  425. #endif // !UNICODE
  426. #endif /* WINVER >= 0x0400 */
  427.  
  428. //
  429. //  Network Browsing.
  430. //
  431.  
  432. DWORD APIENTRY
  433. WNetOpenEnumA(
  434.      IN DWORD          dwScope,
  435.      IN DWORD          dwType,
  436.      IN DWORD          dwUsage,
  437.      IN LPNETRESOURCEA lpNetResource,
  438.      OUT LPHANDLE       lphEnum
  439.     );
  440. DWORD APIENTRY
  441. WNetOpenEnumW(
  442.      IN DWORD          dwScope,
  443.      IN DWORD          dwType,
  444.      IN DWORD          dwUsage,
  445.      IN LPNETRESOURCEW lpNetResource,
  446.      OUT LPHANDLE       lphEnum
  447.     );
  448. #ifdef UNICODE
  449. #define WNetOpenEnum  WNetOpenEnumW
  450. #else
  451. #define WNetOpenEnum  WNetOpenEnumA
  452. #endif // !UNICODE
  453.  
  454. DWORD APIENTRY
  455. WNetEnumResourceA(
  456.      IN HANDLE  hEnum,
  457.      IN OUT LPDWORD lpcCount,
  458.      OUT LPVOID  lpBuffer,
  459.      IN OUT LPDWORD lpBufferSize
  460.     );
  461. DWORD APIENTRY
  462. WNetEnumResourceW(
  463.      IN HANDLE  hEnum,
  464.      IN OUT LPDWORD lpcCount,
  465.      OUT LPVOID  lpBuffer,
  466.      IN OUT LPDWORD lpBufferSize
  467.     );
  468. #ifdef UNICODE
  469. #define WNetEnumResource  WNetEnumResourceW
  470. #else
  471. #define WNetEnumResource  WNetEnumResourceA
  472. #endif // !UNICODE
  473.  
  474. DWORD APIENTRY
  475. WNetCloseEnum(
  476.     IN HANDLE   hEnum
  477.     );
  478.  
  479. #if(WINVER >= 0x0400)
  480. DWORD APIENTRY
  481. WNetGetResourceParentA(
  482.     IN LPNETRESOURCEA lpNetResource,
  483.     OUT LPVOID lpBuffer,
  484.     IN OUT LPDWORD lpcbBuffer
  485.     );
  486. DWORD APIENTRY
  487. WNetGetResourceParentW(
  488.     IN LPNETRESOURCEW lpNetResource,
  489.     OUT LPVOID lpBuffer,
  490.     IN OUT LPDWORD lpcbBuffer
  491.     );
  492. #ifdef UNICODE
  493. #define WNetGetResourceParent  WNetGetResourceParentW
  494. #else
  495. #define WNetGetResourceParent  WNetGetResourceParentA
  496. #endif // !UNICODE
  497.  
  498. DWORD APIENTRY
  499. WNetGetResourceInformationA(
  500.     IN LPNETRESOURCEA  lpNetResource,
  501.     OUT LPVOID          lpBuffer,
  502.     IN OUT LPDWORD         lpcbBuffer,
  503.     OUT LPSTR         *lplpSystem
  504.     );
  505. DWORD APIENTRY
  506. WNetGetResourceInformationW(
  507.     IN LPNETRESOURCEW  lpNetResource,
  508.     OUT LPVOID          lpBuffer,
  509.     IN OUT LPDWORD         lpcbBuffer,
  510.     OUT LPWSTR         *lplpSystem
  511.     );
  512. #ifdef UNICODE
  513. #define WNetGetResourceInformation  WNetGetResourceInformationW
  514. #else
  515. #define WNetGetResourceInformation  WNetGetResourceInformationA
  516. #endif // !UNICODE
  517. #endif /* WINVER >= 0x0400 */
  518.  
  519. //
  520. //  Universal Naming.
  521. //
  522.  
  523. #define UNIVERSAL_NAME_INFO_LEVEL   0x00000001
  524. #define REMOTE_NAME_INFO_LEVEL      0x00000002
  525.  
  526. typedef struct  _UNIVERSAL_NAME_INFOA {
  527.     LPSTR    lpUniversalName;
  528. }UNIVERSAL_NAME_INFOA, *LPUNIVERSAL_NAME_INFOA;
  529. typedef struct  _UNIVERSAL_NAME_INFOW {
  530.     LPWSTR   lpUniversalName;
  531. }UNIVERSAL_NAME_INFOW, *LPUNIVERSAL_NAME_INFOW;
  532. #ifdef UNICODE
  533. typedef UNIVERSAL_NAME_INFOW UNIVERSAL_NAME_INFO;
  534. typedef LPUNIVERSAL_NAME_INFOW LPUNIVERSAL_NAME_INFO;
  535. #else
  536. typedef UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO;
  537. typedef LPUNIVERSAL_NAME_INFOA LPUNIVERSAL_NAME_INFO;
  538. #endif // UNICODE
  539.  
  540. typedef struct  _REMOTE_NAME_INFOA {
  541.     LPSTR    lpUniversalName;
  542.     LPSTR    lpConnectionName;
  543.     LPSTR    lpRemainingPath;
  544. }REMOTE_NAME_INFOA, *LPREMOTE_NAME_INFOA;
  545. typedef struct  _REMOTE_NAME_INFOW {
  546.     LPWSTR   lpUniversalName;
  547.     LPWSTR   lpConnectionName;
  548.     LPWSTR   lpRemainingPath;
  549. }REMOTE_NAME_INFOW, *LPREMOTE_NAME_INFOW;
  550. #ifdef UNICODE
  551. typedef REMOTE_NAME_INFOW REMOTE_NAME_INFO;
  552. typedef LPREMOTE_NAME_INFOW LPREMOTE_NAME_INFO;
  553. #else
  554. typedef REMOTE_NAME_INFOA REMOTE_NAME_INFO;
  555. typedef LPREMOTE_NAME_INFOA LPREMOTE_NAME_INFO;
  556. #endif // UNICODE
  557.  
  558. DWORD APIENTRY
  559. WNetGetUniversalNameA(
  560.      IN LPCSTR lpLocalPath,
  561.      IN DWORD    dwInfoLevel,
  562.      OUT LPVOID   lpBuffer,
  563.      IN OUT LPDWORD  lpBufferSize
  564.      );
  565. DWORD APIENTRY
  566. WNetGetUniversalNameW(
  567.      IN LPCWSTR lpLocalPath,
  568.      IN DWORD    dwInfoLevel,
  569.      OUT LPVOID   lpBuffer,
  570.      IN OUT LPDWORD  lpBufferSize
  571.      );
  572. #ifdef UNICODE
  573. #define WNetGetUniversalName  WNetGetUniversalNameW
  574. #else
  575. #define WNetGetUniversalName  WNetGetUniversalNameA
  576. #endif // !UNICODE
  577.  
  578. //
  579. //  Authentication and Logon/Logoff.
  580. //
  581.  
  582. DWORD APIENTRY
  583. WNetGetUserA(
  584.      IN LPCSTR  lpName,
  585.      OUT LPSTR   lpUserName,
  586.      IN OUT LPDWORD   lpnLength
  587.     );
  588. DWORD APIENTRY
  589. WNetGetUserW(
  590.      IN LPCWSTR  lpName,
  591.      OUT LPWSTR   lpUserName,
  592.      IN OUT LPDWORD   lpnLength
  593.     );
  594. #ifdef UNICODE
  595. #define WNetGetUser  WNetGetUserW
  596. #else
  597. #define WNetGetUser  WNetGetUserA
  598. #endif // !UNICODE
  599.  
  600.  
  601. //
  602. // Other.
  603. //
  604.  
  605. #if(WINVER >= 0x0400)
  606. #define WNFMT_MULTILINE         0x01
  607. #define WNFMT_ABBREVIATED       0x02
  608. #define WNFMT_INENUM            0x10
  609. #define WNFMT_CONNECTION        0x20
  610. #endif /* WINVER >= 0x0400 */
  611.  
  612.  
  613. #if(WINVER >= 0x0400)
  614. DWORD APIENTRY
  615. WNetGetProviderNameA(
  616.     IN DWORD   dwNetType,
  617.     OUT LPSTR lpProviderName,
  618.     IN OUT LPDWORD lpBufferSize
  619.     );
  620. DWORD APIENTRY
  621. WNetGetProviderNameW(
  622.     IN DWORD   dwNetType,
  623.     OUT LPWSTR lpProviderName,
  624.     IN OUT LPDWORD lpBufferSize
  625.     );
  626. #ifdef UNICODE
  627. #define WNetGetProviderName  WNetGetProviderNameW
  628. #else
  629. #define WNetGetProviderName  WNetGetProviderNameA
  630. #endif // !UNICODE
  631.  
  632. typedef struct _NETINFOSTRUCT{
  633.     DWORD cbStructure;
  634.     DWORD dwProviderVersion;
  635.     DWORD dwStatus;
  636.     DWORD dwCharacteristics;
  637.     ULONG_PTR dwHandle;
  638.     WORD  wNetType;
  639.     DWORD dwPrinters;
  640.     DWORD dwDrives;
  641. } NETINFOSTRUCT, FAR *LPNETINFOSTRUCT;
  642.  
  643. #define NETINFO_DLL16       0x00000001  /* Provider running as 16 bit Winnet Driver */
  644. #define NETINFO_DISKRED     0x00000004  /* Provider requires disk redirections to connect */
  645. #define NETINFO_PRINTERRED  0x00000008  /* Provider requires printer redirections to connect */
  646.  
  647. DWORD APIENTRY
  648. WNetGetNetworkInformationA(
  649.     IN LPCSTR          lpProvider,
  650.     OUT LPNETINFOSTRUCT   lpNetInfoStruct
  651.     );
  652. DWORD APIENTRY
  653. WNetGetNetworkInformationW(
  654.     IN LPCWSTR          lpProvider,
  655.     OUT LPNETINFOSTRUCT   lpNetInfoStruct
  656.     );
  657. #ifdef UNICODE
  658. #define WNetGetNetworkInformation  WNetGetNetworkInformationW
  659. #else
  660. #define WNetGetNetworkInformation  WNetGetNetworkInformationA
  661. #endif // !UNICODE
  662.  
  663. //
  664. //  User Profiles.
  665. //
  666.  
  667. typedef UINT (FAR PASCAL *PFNGETPROFILEPATHA) (
  668.     LPCSTR    pszUsername,
  669.     LPSTR     pszBuffer,
  670.     UINT        cbBuffer
  671.     );
  672. typedef UINT (FAR PASCAL *PFNGETPROFILEPATHW) (
  673.     LPCWSTR    pszUsername,
  674.     LPWSTR     pszBuffer,
  675.     UINT        cbBuffer
  676.     );
  677. #ifdef UNICODE
  678. #define PFNGETPROFILEPATH  PFNGETPROFILEPATHW
  679. #else
  680. #define PFNGETPROFILEPATH  PFNGETPROFILEPATHA
  681. #endif // !UNICODE
  682.  
  683. typedef UINT (FAR PASCAL *PFNRECONCILEPROFILEA) (
  684.     LPCSTR    pszCentralFile,
  685.     LPCSTR    pszLocalFile,
  686.     DWORD       dwFlags
  687.     );
  688. typedef UINT (FAR PASCAL *PFNRECONCILEPROFILEW) (
  689.     LPCWSTR    pszCentralFile,
  690.     LPCWSTR    pszLocalFile,
  691.     DWORD       dwFlags
  692.     );
  693. #ifdef UNICODE
  694. #define PFNRECONCILEPROFILE  PFNRECONCILEPROFILEW
  695. #else
  696. #define PFNRECONCILEPROFILE  PFNRECONCILEPROFILEA
  697. #endif // !UNICODE
  698.  
  699. #define RP_LOGON    0x01        /* if set, do for logon, else for logoff */
  700. #define RP_INIFILE  0x02        /* if set, reconcile .INI file, else reg. hive */
  701.  
  702.  
  703. //
  704. //  Policies.
  705. //
  706.  
  707. typedef BOOL (FAR PASCAL *PFNPROCESSPOLICIESA) (
  708.     HWND        hwnd,
  709.     LPCSTR    pszPath,
  710.     LPCSTR    pszUsername,
  711.     LPCSTR    pszComputerName,
  712.     DWORD       dwFlags
  713.     );
  714. typedef BOOL (FAR PASCAL *PFNPROCESSPOLICIESW) (
  715.     HWND        hwnd,
  716.     LPCWSTR    pszPath,
  717.     LPCWSTR    pszUsername,
  718.     LPCWSTR    pszComputerName,
  719.     DWORD       dwFlags
  720.     );
  721. #ifdef UNICODE
  722. #define PFNPROCESSPOLICIES  PFNPROCESSPOLICIESW
  723. #else
  724. #define PFNPROCESSPOLICIES  PFNPROCESSPOLICIESA
  725. #endif // !UNICODE
  726.  
  727. #define PP_DISPLAYERRORS    0x01    /* if set, display error messages, else fail silently if error */
  728. #endif /* WINVER >= 0x0400 */
  729.  
  730. //
  731. //  Error handling.
  732. //
  733.  
  734. DWORD APIENTRY
  735. WNetGetLastErrorA(
  736.      OUT LPDWORD    lpError,
  737.      OUT LPSTR    lpErrorBuf,
  738.      IN DWORD      nErrorBufSize,
  739.      OUT LPSTR    lpNameBuf,
  740.      IN DWORD      nNameBufSize
  741.     );
  742. DWORD APIENTRY
  743. WNetGetLastErrorW(
  744.      OUT LPDWORD    lpError,
  745.      OUT LPWSTR    lpErrorBuf,
  746.      IN DWORD      nErrorBufSize,
  747.      OUT LPWSTR    lpNameBuf,
  748.      IN DWORD      nNameBufSize
  749.     );
  750. #ifdef UNICODE
  751. #define WNetGetLastError  WNetGetLastErrorW
  752. #else
  753. #define WNetGetLastError  WNetGetLastErrorA
  754. #endif // !UNICODE
  755.  
  756. //
  757. //  STATUS CODES
  758. //
  759.  
  760. // General
  761.  
  762. #define WN_SUCCESS                      NO_ERROR
  763. #define WN_NO_ERROR                     NO_ERROR
  764. #define WN_NOT_SUPPORTED                ERROR_NOT_SUPPORTED
  765. #define WN_CANCEL                       ERROR_CANCELLED
  766. #define WN_RETRY                        ERROR_RETRY
  767. #define WN_NET_ERROR                    ERROR_UNEXP_NET_ERR
  768. #define WN_MORE_DATA                    ERROR_MORE_DATA
  769. #define WN_BAD_POINTER                  ERROR_INVALID_ADDRESS
  770. #define WN_BAD_VALUE                    ERROR_INVALID_PARAMETER
  771. #define WN_BAD_USER                     ERROR_BAD_USERNAME
  772. #define WN_BAD_PASSWORD                 ERROR_INVALID_PASSWORD
  773. #define WN_ACCESS_DENIED                ERROR_ACCESS_DENIED
  774. #define WN_FUNCTION_BUSY                ERROR_BUSY
  775. #define WN_WINDOWS_ERROR                ERROR_UNEXP_NET_ERR
  776. #define WN_OUT_OF_MEMORY                ERROR_NOT_ENOUGH_MEMORY
  777. #define WN_NO_NETWORK                   ERROR_NO_NETWORK
  778. #define WN_EXTENDED_ERROR               ERROR_EXTENDED_ERROR
  779. #define WN_BAD_LEVEL                    ERROR_INVALID_LEVEL
  780. #define WN_BAD_HANDLE                   ERROR_INVALID_HANDLE
  781. #if(WINVER >= 0x0400)
  782. #define WN_NOT_INITIALIZING             ERROR_ALREADY_INITIALIZED
  783. #define WN_NO_MORE_DEVICES              ERROR_NO_MORE_DEVICES
  784. #endif /* WINVER >= 0x0400 */
  785.  
  786. // Connection
  787.  
  788. #define WN_NOT_CONNECTED                ERROR_NOT_CONNECTED
  789. #define WN_OPEN_FILES                   ERROR_OPEN_FILES
  790. #define WN_DEVICE_IN_USE                ERROR_DEVICE_IN_USE
  791. #define WN_BAD_NETNAME                  ERROR_BAD_NET_NAME
  792. #define WN_BAD_LOCALNAME                ERROR_BAD_DEVICE
  793. #define WN_ALREADY_CONNECTED            ERROR_ALREADY_ASSIGNED
  794. #define WN_DEVICE_ERROR                 ERROR_GEN_FAILURE
  795. #define WN_CONNECTION_CLOSED            ERROR_CONNECTION_UNAVAIL
  796. #define WN_NO_NET_OR_BAD_PATH           ERROR_NO_NET_OR_BAD_PATH
  797. #define WN_BAD_PROVIDER                 ERROR_BAD_PROVIDER
  798. #define WN_CANNOT_OPEN_PROFILE          ERROR_CANNOT_OPEN_PROFILE
  799. #define WN_BAD_PROFILE                  ERROR_BAD_PROFILE
  800. #define WN_BAD_DEV_TYPE                 ERROR_BAD_DEV_TYPE
  801. #define WN_DEVICE_ALREADY_REMEMBERED    ERROR_DEVICE_ALREADY_REMEMBERED
  802. #define WN_CONNECTED_OTHER_PASSWORD     ERROR_CONNECTED_OTHER_PASSWORD
  803.  
  804. // Enumeration
  805.  
  806. #define WN_NO_MORE_ENTRIES              ERROR_NO_MORE_ITEMS
  807. #define WN_NOT_CONTAINER                ERROR_NOT_CONTAINER
  808.  
  809. #if(WINVER >= 0x0400)
  810. // Authentication
  811.  
  812. #define WN_NOT_AUTHENTICATED            ERROR_NOT_AUTHENTICATED
  813. #define WN_NOT_LOGGED_ON                ERROR_NOT_LOGGED_ON
  814. #define WN_NOT_VALIDATED                ERROR_NO_LOGON_SERVERS
  815. #endif /* WINVER >= 0x0400 */
  816.  
  817. //
  818. //  For Shell
  819. //
  820.  
  821. #if(WINVER >= 0x0400)
  822. typedef struct _NETCONNECTINFOSTRUCT{
  823.     DWORD cbStructure;
  824.     DWORD dwFlags;
  825.     DWORD dwSpeed;
  826.     DWORD dwDelay;
  827.     DWORD dwOptDataSize;
  828. } NETCONNECTINFOSTRUCT,  *LPNETCONNECTINFOSTRUCT;
  829.  
  830. #define WNCON_FORNETCARD        0x00000001
  831. #define WNCON_NOTROUTED         0x00000002
  832. #define WNCON_SLOWLINK          0x00000004
  833. #define WNCON_DYNAMIC           0x00000008
  834.  
  835. DWORD APIENTRY
  836. MultinetGetConnectionPerformanceA(
  837.         IN LPNETRESOURCEA lpNetResource,
  838.         OUT LPNETCONNECTINFOSTRUCT lpNetConnectInfoStruct
  839.         );
  840. DWORD APIENTRY
  841. MultinetGetConnectionPerformanceW(
  842.         IN LPNETRESOURCEW lpNetResource,
  843.         OUT LPNETCONNECTINFOSTRUCT lpNetConnectInfoStruct
  844.         );
  845. #ifdef UNICODE
  846. #define MultinetGetConnectionPerformance  MultinetGetConnectionPerformanceW
  847. #else
  848. #define MultinetGetConnectionPerformance  MultinetGetConnectionPerformanceA
  849. #endif // !UNICODE
  850. #endif /* WINVER >= 0x0400 */
  851.  
  852. #ifdef __cplusplus
  853. }
  854. #endif
  855.  
  856. #pragma option pop /*P_O_Pop*/
  857. #endif  // _WINNETWK_
  858.  
  859.