home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / bc45 / geninc32.pak / RAS.H < prev    next >
C/C++ Source or Header  |  1997-07-23  |  13KB  |  511 lines

  1. /* Copyright (c) 1992-1995, Microsoft Corporation, all rights reserved
  2. **
  3. ** ras.h
  4. ** Remote Access external API
  5. ** Public header for external API clients
  6. */
  7.  
  8. #ifndef _RAS_H_
  9. #define _RAS_H_
  10.  
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14.  
  15. #ifndef UNLEN
  16. #include <lmcons.h>
  17. #endif
  18.  
  19. #include <pshpack4.h>
  20.  
  21. #define RAS_MaxDeviceType     16
  22. #define RAS_MaxPhoneNumber    128
  23. #define RAS_MaxIpAddress      15
  24. #define RAS_MaxIpxAddress     21
  25.  
  26. #if (WINVER >= 0x400)
  27. #define RAS_MaxEntryName      256
  28. #define RAS_MaxDeviceName     128
  29. #define RAS_MaxCallbackNumber RAS_MaxPhoneNumber
  30. #else
  31. #define RAS_MaxEntryName      20
  32. #define RAS_MaxDeviceName     32
  33. #define RAS_MaxCallbackNumber 48
  34. #endif
  35.  
  36.  
  37. DECLARE_HANDLE( HRASCONN );
  38. #define LPHRASCONN HRASCONN*
  39.  
  40.  
  41. /* Identifies an active RAS connection.  (See RasEnumConnections)
  42. */
  43. #define RASCONNW struct tagRASCONNW
  44. RASCONNW
  45. {
  46.     DWORD    dwSize;
  47.     HRASCONN hrasconn;
  48.     WCHAR    szEntryName[ RAS_MaxEntryName + 1 ];
  49.  
  50. #if (WINVER >= 0x400)
  51.     WCHAR    szDeviceType[ RAS_MaxDeviceType + 1 ];
  52.     WCHAR    szDeviceName[ RAS_MaxDeviceName + 1 ];
  53. #endif
  54. };
  55.  
  56. #define RASCONNA struct tagRASCONNA
  57. RASCONNA
  58. {
  59.     DWORD    dwSize;
  60.     HRASCONN hrasconn;
  61.     CHAR     szEntryName[ RAS_MaxEntryName + 1 ];
  62.  
  63. #if (WINVER >= 0x400)
  64.     CHAR     szDeviceType[ RAS_MaxDeviceType + 1 ];
  65.     CHAR     szDeviceName[ RAS_MaxDeviceName + 1 ];
  66. #endif
  67. };
  68.  
  69. #ifdef UNICODE
  70. #define RASCONN RASCONNW
  71. #else
  72. #define RASCONN RASCONNA
  73. #endif
  74.  
  75. #define LPRASCONNW RASCONNW*
  76. #define LPRASCONNA RASCONNA*
  77. #define LPRASCONN  RASCONN*
  78.  
  79.  
  80. /* Enumerates intermediate states to a connection.  (See RasDial)
  81. */
  82. #define RASCS_PAUSED 0x1000
  83. #define RASCS_DONE   0x2000
  84.  
  85. #define RASCONNSTATE enum tagRASCONNSTATE
  86. RASCONNSTATE
  87. {
  88.     RASCS_OpenPort = 0,
  89.     RASCS_PortOpened,
  90.     RASCS_ConnectDevice,
  91.     RASCS_DeviceConnected,
  92.     RASCS_AllDevicesConnected,
  93.     RASCS_Authenticate,
  94.     RASCS_AuthNotify,
  95.     RASCS_AuthRetry,
  96.     RASCS_AuthCallback,
  97.     RASCS_AuthChangePassword,
  98.     RASCS_AuthProject,
  99.     RASCS_AuthLinkSpeed,
  100.     RASCS_AuthAck,
  101.     RASCS_ReAuthenticate,
  102.     RASCS_Authenticated,
  103.     RASCS_PrepareForCallback,
  104.     RASCS_WaitForModemReset,
  105.     RASCS_WaitForCallback,
  106.     RASCS_Projected,
  107.  
  108. #if (WINVER >= 0x400)
  109.     RASCS_StartAuthentication,
  110.     RASCS_CallbackComplete,
  111.     RASCS_LogonNetwork,
  112. #endif
  113.  
  114.     RASCS_Interactive = RASCS_PAUSED,
  115.     RASCS_RetryAuthentication,
  116.     RASCS_CallbackSetByCaller,
  117.     RASCS_PasswordExpired,
  118.  
  119.     RASCS_Connected = RASCS_DONE,
  120.     RASCS_Disconnected
  121. };
  122.  
  123. #define LPRASCONNSTATE RASCONNSTATE*
  124.  
  125.  
  126. /* Describes the status of a RAS connection.  (See RasConnectionStatus)
  127. */
  128. #define RASCONNSTATUSW struct tagRASCONNSTATUSW
  129. RASCONNSTATUSW
  130. {
  131.     DWORD        dwSize;
  132.     RASCONNSTATE rasconnstate;
  133.     DWORD        dwError;
  134.     WCHAR        szDeviceType[ RAS_MaxDeviceType + 1 ];
  135.     WCHAR        szDeviceName[ RAS_MaxDeviceName + 1 ];
  136. };
  137.  
  138. #define RASCONNSTATUSA struct tagRASCONNSTATUSA
  139. RASCONNSTATUSA
  140. {
  141.     DWORD        dwSize;
  142.     RASCONNSTATE rasconnstate;
  143.     DWORD        dwError;
  144.     CHAR         szDeviceType[ RAS_MaxDeviceType + 1 ];
  145.     CHAR         szDeviceName[ RAS_MaxDeviceName + 1 ];
  146. };
  147.  
  148. #ifdef UNICODE
  149. #define RASCONNSTATUS RASCONNSTATUSW
  150. #else
  151. #define RASCONNSTATUS RASCONNSTATUSA
  152. #endif
  153.  
  154. #define LPRASCONNSTATUSW RASCONNSTATUSW*
  155. #define LPRASCONNSTATUSA RASCONNSTATUSA*
  156. #define LPRASCONNSTATUS  RASCONNSTATUS*
  157.  
  158.  
  159. /* Describes connection establishment parameters.  (See RasDial)
  160. */
  161. #define RASDIALPARAMSW struct tagRASDIALPARAMSW
  162. RASDIALPARAMSW
  163. {
  164.     DWORD dwSize;
  165.     WCHAR szEntryName[ RAS_MaxEntryName + 1 ];
  166.     WCHAR szPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
  167.     WCHAR szCallbackNumber[ RAS_MaxCallbackNumber + 1 ];
  168.     WCHAR szUserName[ UNLEN + 1 ];
  169.     WCHAR szPassword[ PWLEN + 1 ];
  170.     WCHAR szDomain[ DNLEN + 1 ];
  171. };
  172.  
  173. #define RASDIALPARAMSA struct tagRASDIALPARAMSA
  174. RASDIALPARAMSA
  175. {
  176.     DWORD dwSize;
  177.     CHAR  szEntryName[ RAS_MaxEntryName + 1 ];
  178.     CHAR  szPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
  179.     CHAR  szCallbackNumber[ RAS_MaxCallbackNumber + 1 ];
  180.     CHAR  szUserName[ UNLEN + 1 ];
  181.     CHAR  szPassword[ PWLEN + 1 ];
  182.     CHAR  szDomain[ DNLEN + 1 ];
  183. };
  184.  
  185. #ifdef UNICODE
  186. #define RASDIALPARAMS RASDIALPARAMSW
  187. #else
  188. #define RASDIALPARAMS RASDIALPARAMSA
  189. #endif
  190.  
  191. #define LPRASDIALPARAMSW RASDIALPARAMSW*
  192. #define LPRASDIALPARAMSA RASDIALPARAMSA*
  193. #define LPRASDIALPARAMS  RASDIALPARAMS*
  194.  
  195.  
  196. /* Describes extended connection establishment options.  (See RasDial)
  197. */
  198. #define RASDIALEXTENSIONS struct tagRASDIALEXTENSIONS
  199. RASDIALEXTENSIONS
  200. {
  201.     DWORD dwSize;
  202.     DWORD dwfOptions;
  203.     HWND  hwndParent;
  204.     DWORD reserved;
  205. };
  206.  
  207. #define LPRASDIALEXTENSIONS RASDIALEXTENSIONS*
  208.  
  209. /* 'dwfOptions' bit flags.
  210. */
  211. #define RDEOPT_UsePrefixSuffix           0x00000001
  212. #define RDEOPT_PausedStates              0x00000002
  213. #define RDEOPT_IgnoreModemSpeaker        0x00000004
  214. #define RDEOPT_SetModemSpeaker           0x00000008
  215. #define RDEOPT_IgnoreSoftwareCompression 0x00000010
  216. #define RDEOPT_SetSoftwareCompression    0x00000020
  217.  
  218.  
  219. /* Describes an enumerated RAS phone book entry name.  (See RasEntryEnum)
  220. */
  221. #define RASENTRYNAMEW struct tagRASENTRYNAMEW
  222. RASENTRYNAMEW
  223. {
  224.     DWORD dwSize;
  225.     WCHAR szEntryName[ RAS_MaxEntryName + 1 ];
  226. };
  227.  
  228. #define RASENTRYNAMEA struct tagRASENTRYNAMEA
  229. RASENTRYNAMEA
  230. {
  231.     DWORD dwSize;
  232.     CHAR  szEntryName[ RAS_MaxEntryName + 1 ];
  233. };
  234.  
  235. #ifdef UNICODE
  236. #define RASENTRYNAME RASENTRYNAMEW
  237. #else
  238. #define RASENTRYNAME RASENTRYNAMEA
  239. #endif
  240.  
  241. #define LPRASENTRYNAMEW RASENTRYNAMEW*
  242. #define LPRASENTRYNAMEA RASENTRYNAMEA*
  243. #define LPRASENTRYNAME  RASENTRYNAME*
  244.  
  245.  
  246. /* Protocol code to projection data structure mapping.
  247. */
  248. #define RASPROJECTION enum tagRASPROJECTION
  249. RASPROJECTION
  250. {
  251.     RASP_Amb = 0x10000,
  252.     RASP_PppNbf = 0x803F,
  253.     RASP_PppIpx = 0x802B,
  254.     RASP_PppIp = 0x8021,
  255. };
  256.  
  257. #define LPRASPROJECTION RASPROJECTION*
  258.  
  259.  
  260. /* Describes the result of a RAS AMB (Authentication Message Block)
  261. ** projection.  This protocol is used with NT 3.1 and OS/2 1.3 downlevel
  262. ** RAS servers.
  263. */
  264. #define RASAMBW struct tagRASAMBW
  265. RASAMBW
  266. {
  267.     DWORD dwSize;
  268.     DWORD dwError;
  269.     WCHAR szNetBiosError[ NETBIOS_NAME_LEN + 1 ];
  270.     BYTE  bLana;
  271. };
  272.  
  273. #define RASAMBA struct tagRASAMBA
  274. RASAMBA
  275. {
  276.     DWORD dwSize;
  277.     DWORD dwError;
  278.     CHAR  szNetBiosError[ NETBIOS_NAME_LEN + 1 ];
  279.     BYTE  bLana;
  280. };
  281.  
  282. #ifdef UNICODE
  283. #define RASAMB RASAMBW
  284. #else
  285. #define RASAMB RASAMBA
  286. #endif
  287.  
  288. #define LPRASAMBW RASAMBW*
  289. #define LPRASAMBA RASAMBA*
  290. #define LPRASAMB  RASAMB*
  291.  
  292.  
  293. /* Describes the result of a PPP NBF (NetBEUI) projection.
  294. */
  295. #define RASPPPNBFW struct tagRASPPPNBFW
  296. RASPPPNBFW
  297. {
  298.     DWORD dwSize;
  299.     DWORD dwError;
  300.     DWORD dwNetBiosError;
  301.     WCHAR szNetBiosError[ NETBIOS_NAME_LEN + 1 ];
  302.     WCHAR szWorkstationName[ NETBIOS_NAME_LEN + 1 ];
  303.     BYTE  bLana;
  304. };
  305.  
  306. #define RASPPPNBFA struct tagRASPPPNBFA
  307. RASPPPNBFA
  308. {
  309.     DWORD dwSize;
  310.     DWORD dwError;
  311.     DWORD dwNetBiosError;
  312.     CHAR  szNetBiosError[ NETBIOS_NAME_LEN + 1 ];
  313.     CHAR  szWorkstationName[ NETBIOS_NAME_LEN + 1 ];
  314.     BYTE  bLana;
  315. };
  316.  
  317. #ifdef UNICODE
  318. #define RASPPPNBF RASPPPNBFW
  319. #else
  320. #define RASPPPNBF RASPPPNBFA
  321. #endif
  322.  
  323. #define LPRASPPPNBFW RASPPPNBFW*
  324. #define LPRASPPPNBFA RASPPPNBFA*
  325. #define LPRASPPPNBF  RASPPPNBF*
  326.  
  327.  
  328. /* Describes the results of a PPP IPX (Internetwork Packet Exchange)
  329. ** projection.
  330. */
  331. #define RASPPPIPXW struct tagRASIPXW
  332. RASPPPIPXW
  333. {
  334.     DWORD dwSize;
  335.     DWORD dwError;
  336.     WCHAR szIpxAddress[ RAS_MaxIpxAddress + 1 ];
  337. };
  338.  
  339.  
  340. #define RASPPPIPXA struct tagRASPPPIPXA
  341. RASPPPIPXA
  342. {
  343.     DWORD dwSize;
  344.     DWORD dwError;
  345.     CHAR  szIpxAddress[ RAS_MaxIpxAddress + 1 ];
  346. };
  347.  
  348. #ifdef UNICODE
  349. #define RASPPPIPX RASPPPIPXW
  350. #else
  351. #define RASPPPIPX RASPPPIPXA
  352. #endif
  353.  
  354. #define LPRASPPPIPXW RASPPPIPXW*
  355. #define LPRASPPPIPXA RASPPPIPXA*
  356. #define LPRASPPPIPX  RASPPPIPX*
  357.  
  358.  
  359. /* Describes the results of a PPP IP (Internet) projection.
  360. */
  361. #define RASPPPIPW struct tagRASPPPIPW
  362. RASPPPIPW
  363. {
  364.     DWORD dwSize;
  365.     DWORD dwError;
  366.     WCHAR szIpAddress[ RAS_MaxIpAddress + 1 ];
  367.  
  368. #ifndef WINNT35COMPATIBLE
  369.  
  370.     /* This field was added between Windows NT 3.51 beta and Windows NT 3.51
  371.     ** final, and between Windows 95 M8 beta and Windows 95 final.  If you do
  372.     ** not require the server address and wish to retrieve PPP IP information
  373.     ** from Windows NT 3.5 or early Windows NT 3.51 betas, or on early Windows
  374.     ** 95 betas, define WINNT35COMPATIBLE.
  375.     **
  376.     ** The server IP address is not provided by all PPP implementations,
  377.     ** though Windows NT server's do provide it.
  378.     */
  379.     WCHAR szServerIpAddress[ RAS_MaxIpAddress + 1 ];
  380.  
  381. #endif
  382. };
  383.  
  384. #define RASPPPIPA struct tagRASPPPIPA
  385. RASPPPIPA
  386. {
  387.     DWORD dwSize;
  388.     DWORD dwError;
  389.     CHAR  szIpAddress[ RAS_MaxIpAddress + 1 ];
  390.  
  391. #ifndef WINNT35COMPATIBLE
  392.  
  393.     /* See RASPPPIPW comment.
  394.     */
  395.     CHAR  szServerIpAddress[ RAS_MaxIpAddress + 1 ];
  396.  
  397. #endif
  398. };
  399.  
  400. #ifdef UNICODE
  401. #define RASPPPIP RASPPPIPW
  402. #else
  403. #define RASPPPIP RASPPPIPA
  404. #endif
  405.  
  406. #define LPRASPPPIPW RASPPPIPW*
  407. #define LPRASPPPIPA RASPPPIPA*
  408. #define LPRASPPPIP  RASPPPIP*
  409.  
  410. /* If using RasDial message notifications, get the notification message code
  411. ** by passing this string to the RegisterWindowMessageA() API.
  412. ** WM_RASDIALEVENT is used only if a unique message cannot be registered.
  413. */
  414. #define RASDIALEVENT    "RasDialEvent"
  415. #define WM_RASDIALEVENT 0xCCCD
  416.  
  417. /* Prototypes for caller's RasDial callback handler.  Arguments are the
  418. ** message ID (currently always WM_RASDIALEVENT), the current RASCONNSTATE and
  419. ** the error that has occurred (or 0 if none).  Extended arguments are the
  420. ** handle of the RAS connection and an extended error code.
  421. */
  422. typedef VOID (WINAPI *RASDIALFUNC)( UINT, RASCONNSTATE, DWORD );
  423. typedef VOID (WINAPI *RASDIALFUNC1)( HRASCONN, UINT, RASCONNSTATE, DWORD, DWORD );
  424.  
  425.  
  426. /* External RAS API function prototypes.
  427. */
  428. DWORD APIENTRY RasDialA( LPRASDIALEXTENSIONS, LPSTR, LPRASDIALPARAMSA, DWORD,
  429.                    LPVOID, LPHRASCONN );
  430.  
  431. DWORD APIENTRY RasDialW( LPRASDIALEXTENSIONS, LPWSTR, LPRASDIALPARAMSW, DWORD,
  432.                    LPVOID, LPHRASCONN );
  433.  
  434. DWORD APIENTRY RasEnumConnectionsA( LPRASCONNA, LPDWORD, LPDWORD );
  435.  
  436. DWORD APIENTRY RasEnumConnectionsW( LPRASCONNW, LPDWORD, LPDWORD );
  437.  
  438. DWORD APIENTRY RasEnumEntriesA( LPSTR, LPSTR, LPRASENTRYNAMEA, LPDWORD,
  439.                    LPDWORD );
  440.  
  441. DWORD APIENTRY RasEnumEntriesW( LPWSTR, LPWSTR, LPRASENTRYNAMEW, LPDWORD,
  442.                    LPDWORD );
  443.  
  444. DWORD APIENTRY RasGetConnectStatusA( HRASCONN, LPRASCONNSTATUSA );
  445.  
  446. DWORD APIENTRY RasGetConnectStatusW( HRASCONN, LPRASCONNSTATUSW );
  447.  
  448. DWORD APIENTRY RasGetErrorStringA( UINT, LPSTR, DWORD );
  449.  
  450. DWORD APIENTRY RasGetErrorStringW( UINT, LPWSTR, DWORD );
  451.  
  452. DWORD APIENTRY RasHangUpA( HRASCONN );
  453.  
  454. DWORD APIENTRY RasHangUpW( HRASCONN );
  455.  
  456. DWORD APIENTRY RasGetProjectionInfoA( HRASCONN, RASPROJECTION, LPVOID,
  457.                    LPDWORD );
  458.  
  459. DWORD APIENTRY RasGetProjectionInfoW( HRASCONN, RASPROJECTION, LPVOID,
  460.                    LPDWORD );
  461.  
  462. DWORD APIENTRY RasCreatePhonebookEntryA( HWND, LPSTR );
  463.  
  464. DWORD APIENTRY RasCreatePhonebookEntryW( HWND, LPWSTR );
  465.  
  466. DWORD APIENTRY RasEditPhonebookEntryA( HWND, LPSTR, LPSTR );
  467.  
  468. DWORD APIENTRY RasEditPhonebookEntryW( HWND, LPWSTR, LPWSTR );
  469.  
  470. DWORD APIENTRY RasSetEntryDialParamsA( LPSTR, LPRASDIALPARAMSA, BOOL );
  471.  
  472. DWORD APIENTRY RasSetEntryDialParamsW( LPWSTR, LPRASDIALPARAMSW, BOOL );
  473.  
  474. DWORD APIENTRY RasGetEntryDialParamsA( LPSTR, LPRASDIALPARAMSA, LPBOOL );
  475.  
  476. DWORD APIENTRY RasGetEntryDialParamsW( LPWSTR, LPRASDIALPARAMSW, LPBOOL );
  477.  
  478. #ifdef UNICODE
  479. #define RasDial                 RasDialW
  480. #define RasEnumConnections      RasEnumConnectionsW
  481. #define RasEnumEntries          RasEnumEntriesW
  482. #define RasGetConnectStatus     RasGetConnectStatusW
  483. #define RasGetErrorString       RasGetErrorStringW
  484. #define RasHangUp               RasHangUpW
  485. #define RasGetProjectionInfo    RasGetProjectionInfoW
  486. #define RasCreatePhonebookEntry RasCreatePhonebookEntryW
  487. #define RasEditPhonebookEntry   RasEditPhonebookEntryW
  488. #define RasSetEntryDialParams   RasSetEntryDialParamsW
  489. #define RasGetEntryDialParams   RasGetEntryDialParamsW
  490. #else
  491. #define RasDial                 RasDialA
  492. #define RasEnumConnections      RasEnumConnectionsA
  493. #define RasEnumEntries          RasEnumEntriesA
  494. #define RasGetConnectStatus     RasGetConnectStatusA
  495. #define RasGetErrorString       RasGetErrorStringA
  496. #define RasHangUp               RasHangUpA
  497. #define RasGetProjectionInfo    RasGetProjectionInfoA
  498. #define RasCreatePhonebookEntry RasCreatePhonebookEntryA
  499. #define RasEditPhonebookEntry   RasEditPhonebookEntryA
  500. #define RasSetEntryDialParams   RasSetEntryDialParamsA
  501. #define RasGetEntryDialParams   RasGetEntryDialParamsA
  502. #endif
  503.  
  504. #ifdef __cplusplus
  505. }
  506. #endif
  507.  
  508. #include <poppack.h>
  509.  
  510. #endif // _RAS_H_
  511.