Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1870 lines
50 KiB

  1. /*++
  2. Copyright (c) Microsoft Corporation. All rights reserved.
  3. Module Name:
  4. ras.h
  5. Abstract:
  6. Remote Access external API
  7. WINVER values in this file:
  8. WINVER < 0x400 = Windows NT 3.5, Windows NT 3.51
  9. WINVER = 0x400 = Windows 95, Windows98, Windows NT4 (default)
  10. WINVER > 0x400 = Windows NT4 enhancements
  11. WINVER = 0x500 = Windows 2000
  12. --*/
  13. #ifndef _RAS_H_
  14. #define _RAS_H_
  15. #if _MSC_VER > 1000
  16. #pragma once
  17. #endif
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21. #ifndef UNLEN
  22. #include <lmcons.h>
  23. #endif
  24. #include <pshpack4.h>
  25. #define RAS_MaxDeviceType 16
  26. #define RAS_MaxPhoneNumber 128
  27. #define RAS_MaxIpAddress 15
  28. #define RAS_MaxIpxAddress 21
  29. #if (WINVER >= 0x400)
  30. #define RAS_MaxEntryName 256
  31. #define RAS_MaxDeviceName 128
  32. #define RAS_MaxCallbackNumber RAS_MaxPhoneNumber
  33. #else
  34. #define RAS_MaxEntryName 20
  35. #define RAS_MaxDeviceName 32
  36. #define RAS_MaxCallbackNumber 48
  37. #endif
  38. #define RAS_MaxAreaCode 10
  39. #define RAS_MaxPadType 32
  40. #define RAS_MaxX25Address 200
  41. #define RAS_MaxFacilities 200
  42. #define RAS_MaxUserData 200
  43. #define RAS_MaxReplyMessage 1024
  44. #define RAS_MaxDnsSuffix 256
  45. DECLARE_HANDLE( HRASCONN );
  46. #define LPHRASCONN HRASCONN*
  47. #if (WINVER >= 0x501)
  48. #define RASCF_AllUsers 0x00000001
  49. #define RASCF_GlobalCreds 0x00000002
  50. #endif
  51. /* Identifies an active RAS connection. (See RasEnumConnections)
  52. */
  53. #define RASCONNW struct tagRASCONNW
  54. RASCONNW
  55. {
  56. DWORD dwSize;
  57. HRASCONN hrasconn;
  58. WCHAR szEntryName[ RAS_MaxEntryName + 1 ];
  59. #if (WINVER >= 0x400)
  60. WCHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
  61. WCHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
  62. #endif
  63. #if (WINVER >= 0x401)
  64. WCHAR szPhonebook [ MAX_PATH ];
  65. DWORD dwSubEntry;
  66. #endif
  67. #if (WINVER >= 0x500)
  68. GUID guidEntry;
  69. #endif
  70. #if (WINVER >= 0x501)
  71. DWORD dwFlags;
  72. LUID luid;
  73. #endif
  74. };
  75. #define RASCONNA struct tagRASCONNA
  76. RASCONNA
  77. {
  78. DWORD dwSize;
  79. HRASCONN hrasconn;
  80. CHAR szEntryName[ RAS_MaxEntryName + 1 ];
  81. #if (WINVER >= 0x400)
  82. CHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
  83. CHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
  84. #endif
  85. #if (WINVER >= 0x401)
  86. CHAR szPhonebook [ MAX_PATH ];
  87. DWORD dwSubEntry;
  88. #endif
  89. #if (WINVER >= 0x500)
  90. GUID guidEntry;
  91. #endif
  92. #if (WINVER >= 0x501)
  93. DWORD dwFlags;
  94. LUID luid;
  95. #endif
  96. };
  97. #ifdef UNICODE
  98. #define RASCONN RASCONNW
  99. #else
  100. #define RASCONN RASCONNA
  101. #endif
  102. #define LPRASCONNW RASCONNW*
  103. #define LPRASCONNA RASCONNA*
  104. #define LPRASCONN RASCONN*
  105. /* Enumerates intermediate states to a connection. (See RasDial)
  106. */
  107. #define RASCS_PAUSED 0x1000
  108. #define RASCS_DONE 0x2000
  109. #define RASCONNSTATE enum tagRASCONNSTATE
  110. RASCONNSTATE
  111. {
  112. RASCS_OpenPort = 0,
  113. RASCS_PortOpened,
  114. RASCS_ConnectDevice,
  115. RASCS_DeviceConnected,
  116. RASCS_AllDevicesConnected,
  117. RASCS_Authenticate,
  118. RASCS_AuthNotify,
  119. RASCS_AuthRetry,
  120. RASCS_AuthCallback,
  121. RASCS_AuthChangePassword,
  122. RASCS_AuthProject,
  123. RASCS_AuthLinkSpeed,
  124. RASCS_AuthAck,
  125. RASCS_ReAuthenticate,
  126. RASCS_Authenticated,
  127. RASCS_PrepareForCallback,
  128. RASCS_WaitForModemReset,
  129. RASCS_WaitForCallback,
  130. RASCS_Projected,
  131. #if (WINVER >= 0x400)
  132. RASCS_StartAuthentication,
  133. RASCS_CallbackComplete,
  134. RASCS_LogonNetwork,
  135. #endif
  136. RASCS_SubEntryConnected,
  137. RASCS_SubEntryDisconnected,
  138. RASCS_Interactive = RASCS_PAUSED,
  139. RASCS_RetryAuthentication,
  140. RASCS_CallbackSetByCaller,
  141. RASCS_PasswordExpired,
  142. #if (WINVER >= 0x500)
  143. RASCS_InvokeEapUI,
  144. #endif
  145. RASCS_Connected = RASCS_DONE,
  146. RASCS_Disconnected
  147. };
  148. #define LPRASCONNSTATE RASCONNSTATE*
  149. /* Describes the status of a RAS connection. (See RasConnectionStatus)
  150. */
  151. #define RASCONNSTATUSW struct tagRASCONNSTATUSW
  152. RASCONNSTATUSW
  153. {
  154. DWORD dwSize;
  155. RASCONNSTATE rasconnstate;
  156. DWORD dwError;
  157. WCHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
  158. WCHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
  159. #if (WINVER >= 0x401)
  160. WCHAR szPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
  161. #endif
  162. };
  163. #define RASCONNSTATUSA struct tagRASCONNSTATUSA
  164. RASCONNSTATUSA
  165. {
  166. DWORD dwSize;
  167. RASCONNSTATE rasconnstate;
  168. DWORD dwError;
  169. CHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
  170. CHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
  171. #if (WINVER >= 0x401)
  172. CHAR szPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
  173. #endif
  174. };
  175. #ifdef UNICODE
  176. #define RASCONNSTATUS RASCONNSTATUSW
  177. #else
  178. #define RASCONNSTATUS RASCONNSTATUSA
  179. #endif
  180. #define LPRASCONNSTATUSW RASCONNSTATUSW*
  181. #define LPRASCONNSTATUSA RASCONNSTATUSA*
  182. #define LPRASCONNSTATUS RASCONNSTATUS*
  183. /* Describes connection establishment parameters. (See RasDial)
  184. */
  185. #define RASDIALPARAMSW struct tagRASDIALPARAMSW
  186. RASDIALPARAMSW
  187. {
  188. DWORD dwSize;
  189. WCHAR szEntryName[ RAS_MaxEntryName + 1 ];
  190. WCHAR szPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
  191. WCHAR szCallbackNumber[ RAS_MaxCallbackNumber + 1 ];
  192. WCHAR szUserName[ UNLEN + 1 ];
  193. WCHAR szPassword[ PWLEN + 1 ];
  194. WCHAR szDomain[ DNLEN + 1 ];
  195. #if (WINVER >= 0x401)
  196. DWORD dwSubEntry;
  197. ULONG_PTR dwCallbackId;
  198. #endif
  199. };
  200. #define RASDIALPARAMSA struct tagRASDIALPARAMSA
  201. RASDIALPARAMSA
  202. {
  203. DWORD dwSize;
  204. CHAR szEntryName[ RAS_MaxEntryName + 1 ];
  205. CHAR szPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
  206. CHAR szCallbackNumber[ RAS_MaxCallbackNumber + 1 ];
  207. CHAR szUserName[ UNLEN + 1 ];
  208. CHAR szPassword[ PWLEN + 1 ];
  209. CHAR szDomain[ DNLEN + 1 ];
  210. #if (WINVER >= 0x401)
  211. DWORD dwSubEntry;
  212. ULONG_PTR dwCallbackId;
  213. #endif
  214. };
  215. #ifdef UNICODE
  216. #define RASDIALPARAMS RASDIALPARAMSW
  217. #else
  218. #define RASDIALPARAMS RASDIALPARAMSA
  219. #endif
  220. #define LPRASDIALPARAMSW RASDIALPARAMSW*
  221. #define LPRASDIALPARAMSA RASDIALPARAMSA*
  222. #define LPRASDIALPARAMS RASDIALPARAMS*
  223. #if (WINVER >= 0x500)
  224. #define RASEAPINFO struct tagRASEAPINFO
  225. RASEAPINFO
  226. {
  227. DWORD dwSizeofEapInfo;
  228. BYTE *pbEapInfo;
  229. };
  230. #endif
  231. /* Describes extended connection establishment options. (See RasDial)
  232. */
  233. #define RASDIALEXTENSIONS struct tagRASDIALEXTENSIONS
  234. RASDIALEXTENSIONS
  235. {
  236. DWORD dwSize;
  237. DWORD dwfOptions;
  238. HWND hwndParent;
  239. ULONG_PTR reserved;
  240. #if (WINVER >= 0x500)
  241. ULONG_PTR reserved1;
  242. RASEAPINFO RasEapInfo;
  243. #endif
  244. };
  245. #define LPRASDIALEXTENSIONS RASDIALEXTENSIONS*
  246. /* 'dwfOptions' bit flags.
  247. */
  248. #define RDEOPT_UsePrefixSuffix 0x00000001
  249. #define RDEOPT_PausedStates 0x00000002
  250. #define RDEOPT_IgnoreModemSpeaker 0x00000004
  251. #define RDEOPT_SetModemSpeaker 0x00000008
  252. #define RDEOPT_IgnoreSoftwareCompression 0x00000010
  253. #define RDEOPT_SetSoftwareCompression 0x00000020
  254. #define RDEOPT_DisableConnectedUI 0x00000040
  255. #define RDEOPT_DisableReconnectUI 0x00000080
  256. #define RDEOPT_DisableReconnect 0x00000100
  257. #define RDEOPT_NoUser 0x00000200
  258. #define RDEOPT_PauseOnScript 0x00000400
  259. #define RDEOPT_Router 0x00000800
  260. #if (WINVER >= 0x500)
  261. #define RDEOPT_CustomDial 0x00001000
  262. #endif
  263. #if (WINVER >= 0x501)
  264. #define RDEOPT_UseCustomScripting 0x00002000
  265. #endif
  266. //
  267. // This flag when set in the RASENTRYNAME structure
  268. // indicates that the phonebook to which this entry
  269. // belongs is a system phonebook.
  270. //
  271. #define REN_User 0x00000000
  272. #define REN_AllUsers 0x00000001
  273. /* Describes an enumerated RAS phone book entry name. (See RasEntryEnum)
  274. */
  275. #define RASENTRYNAMEW struct tagRASENTRYNAMEW
  276. RASENTRYNAMEW
  277. {
  278. DWORD dwSize;
  279. WCHAR szEntryName[ RAS_MaxEntryName + 1 ];
  280. #if (WINVER >= 0x500)
  281. //
  282. // If this flag is REN_AllUsers then its a
  283. // system phonebook.
  284. //
  285. DWORD dwFlags;
  286. WCHAR szPhonebookPath[MAX_PATH + 1];
  287. #endif
  288. };
  289. #define RASENTRYNAMEA struct tagRASENTRYNAMEA
  290. RASENTRYNAMEA
  291. {
  292. DWORD dwSize;
  293. CHAR szEntryName[ RAS_MaxEntryName + 1 ];
  294. #if (WINVER >= 0x500)
  295. DWORD dwFlags;
  296. CHAR szPhonebookPath[MAX_PATH + 1];
  297. #endif
  298. };
  299. #ifdef UNICODE
  300. #define RASENTRYNAME RASENTRYNAMEW
  301. #else
  302. #define RASENTRYNAME RASENTRYNAMEA
  303. #endif
  304. #define LPRASENTRYNAMEW RASENTRYNAMEW*
  305. #define LPRASENTRYNAMEA RASENTRYNAMEA*
  306. #define LPRASENTRYNAME RASENTRYNAME*
  307. /* Protocol code to projection data structure mapping.
  308. */
  309. #define RASPROJECTION enum tagRASPROJECTION
  310. RASPROJECTION
  311. {
  312. RASP_Amb = 0x10000,
  313. RASP_PppNbf = 0x803F,
  314. RASP_PppIpx = 0x802B,
  315. RASP_PppIp = 0x8021,
  316. #if (WINVER >= 0x500)
  317. RASP_PppCcp = 0x80FD,
  318. #endif
  319. RASP_PppLcp = 0xC021,
  320. RASP_Slip = 0x20000
  321. };
  322. #define LPRASPROJECTION RASPROJECTION*
  323. /* Describes the result of a RAS AMB (Authentication Message Block)
  324. ** projection. This protocol is used with NT 3.1 and OS/2 1.3 downlevel
  325. ** RAS servers.
  326. */
  327. #define RASAMBW struct tagRASAMBW
  328. RASAMBW
  329. {
  330. DWORD dwSize;
  331. DWORD dwError;
  332. WCHAR szNetBiosError[ NETBIOS_NAME_LEN + 1 ];
  333. BYTE bLana;
  334. };
  335. #define RASAMBA struct tagRASAMBA
  336. RASAMBA
  337. {
  338. DWORD dwSize;
  339. DWORD dwError;
  340. CHAR szNetBiosError[ NETBIOS_NAME_LEN + 1 ];
  341. BYTE bLana;
  342. };
  343. #ifdef UNICODE
  344. #define RASAMB RASAMBW
  345. #else
  346. #define RASAMB RASAMBA
  347. #endif
  348. #define LPRASAMBW RASAMBW*
  349. #define LPRASAMBA RASAMBA*
  350. #define LPRASAMB RASAMB*
  351. /* Describes the result of a PPP NBF (NetBEUI) projection.
  352. */
  353. #define RASPPPNBFW struct tagRASPPPNBFW
  354. RASPPPNBFW
  355. {
  356. DWORD dwSize;
  357. DWORD dwError;
  358. DWORD dwNetBiosError;
  359. WCHAR szNetBiosError[ NETBIOS_NAME_LEN + 1 ];
  360. WCHAR szWorkstationName[ NETBIOS_NAME_LEN + 1 ];
  361. BYTE bLana;
  362. };
  363. #define RASPPPNBFA struct tagRASPPPNBFA
  364. RASPPPNBFA
  365. {
  366. DWORD dwSize;
  367. DWORD dwError;
  368. DWORD dwNetBiosError;
  369. CHAR szNetBiosError[ NETBIOS_NAME_LEN + 1 ];
  370. CHAR szWorkstationName[ NETBIOS_NAME_LEN + 1 ];
  371. BYTE bLana;
  372. };
  373. #ifdef UNICODE
  374. #define RASPPPNBF RASPPPNBFW
  375. #else
  376. #define RASPPPNBF RASPPPNBFA
  377. #endif
  378. #define LPRASPPPNBFW RASPPPNBFW*
  379. #define LPRASPPPNBFA RASPPPNBFA*
  380. #define LPRASPPPNBF RASPPPNBF*
  381. /* Describes the results of a PPP IPX (Internetwork Packet Exchange)
  382. ** projection.
  383. */
  384. #define RASPPPIPXW struct tagRASIPXW
  385. RASPPPIPXW
  386. {
  387. DWORD dwSize;
  388. DWORD dwError;
  389. WCHAR szIpxAddress[ RAS_MaxIpxAddress + 1 ];
  390. };
  391. #define RASPPPIPXA struct tagRASPPPIPXA
  392. RASPPPIPXA
  393. {
  394. DWORD dwSize;
  395. DWORD dwError;
  396. CHAR szIpxAddress[ RAS_MaxIpxAddress + 1 ];
  397. };
  398. #ifdef UNICODE
  399. #define RASPPPIPX RASPPPIPXW
  400. #else
  401. #define RASPPPIPX RASPPPIPXA
  402. #endif
  403. #define LPRASPPPIPXW RASPPPIPXW*
  404. #define LPRASPPPIPXA RASPPPIPXA*
  405. #define LPRASPPPIPX RASPPPIPX*
  406. /* Describes the results of a PPP IP (Internet) projection.
  407. */
  408. #if (WINVER >= 0x500)
  409. /* RASPPPIP 'dwOptions' and 'dwServerOptions' flags.
  410. */
  411. #define RASIPO_VJ 0x00000001
  412. #endif
  413. #define RASPPPIPW struct tagRASPPPIPW
  414. RASPPPIPW
  415. {
  416. DWORD dwSize;
  417. DWORD dwError;
  418. WCHAR szIpAddress[ RAS_MaxIpAddress + 1 ];
  419. #ifndef WINNT35COMPATIBLE
  420. /* This field was added between Windows NT 3.51 beta and Windows NT 3.51
  421. ** final, and between Windows 95 M8 beta and Windows 95 final. If you do
  422. ** not require the server address and wish to retrieve PPP IP information
  423. ** from Windows NT 3.5 or early Windows NT 3.51 betas, or on early Windows
  424. ** 95 betas, define WINNT35COMPATIBLE.
  425. **
  426. ** The server IP address is not provided by all PPP implementations,
  427. ** though Windows NT server's do provide it.
  428. */
  429. WCHAR szServerIpAddress[ RAS_MaxIpAddress + 1 ];
  430. #endif
  431. #if (WINVER >= 0x500)
  432. DWORD dwOptions;
  433. DWORD dwServerOptions;
  434. #endif
  435. };
  436. #define RASPPPIPA struct tagRASPPPIPA
  437. RASPPPIPA
  438. {
  439. DWORD dwSize;
  440. DWORD dwError;
  441. CHAR szIpAddress[ RAS_MaxIpAddress + 1 ];
  442. #ifndef WINNT35COMPATIBLE
  443. /* See RASPPPIPW comment.
  444. */
  445. CHAR szServerIpAddress[ RAS_MaxIpAddress + 1 ];
  446. #endif
  447. #if (WINVER >= 0x500)
  448. DWORD dwOptions;
  449. DWORD dwServerOptions;
  450. #endif
  451. };
  452. #ifdef UNICODE
  453. #define RASPPPIP RASPPPIPW
  454. #else
  455. #define RASPPPIP RASPPPIPA
  456. #endif
  457. #define LPRASPPPIPW RASPPPIPW*
  458. #define LPRASPPPIPA RASPPPIPA*
  459. #define LPRASPPPIP RASPPPIP*
  460. /* Describes the results of a PPP LCP/multi-link negotiation.
  461. */
  462. #if (WINVER >= 0x500)
  463. /* RASPPPLCP 'dwAuthenticatonProtocol' values.
  464. */
  465. #define RASLCPAP_PAP 0xC023
  466. #define RASLCPAP_SPAP 0xC027
  467. #define RASLCPAP_CHAP 0xC223
  468. #define RASLCPAP_EAP 0xC227
  469. /* RASPPPLCP 'dwAuthenticatonData' values.
  470. */
  471. #define RASLCPAD_CHAP_MD5 0x05
  472. #define RASLCPAD_CHAP_MS 0x80
  473. #define RASLCPAD_CHAP_MSV2 0x81
  474. /* RASPPPLCP 'dwOptions' and 'dwServerOptions' flags.
  475. */
  476. #define RASLCPO_PFC 0x00000001
  477. #define RASLCPO_ACFC 0x00000002
  478. #define RASLCPO_SSHF 0x00000004
  479. #define RASLCPO_DES_56 0x00000008
  480. #define RASLCPO_3_DES 0x00000010
  481. #endif
  482. #define RASPPPLCPW struct tagRASPPPLCPW
  483. RASPPPLCPW
  484. {
  485. DWORD dwSize;
  486. BOOL fBundled;
  487. #if (WINVER >= 0x500)
  488. DWORD dwError;
  489. DWORD dwAuthenticationProtocol;
  490. DWORD dwAuthenticationData;
  491. DWORD dwEapTypeId;
  492. DWORD dwServerAuthenticationProtocol;
  493. DWORD dwServerAuthenticationData;
  494. DWORD dwServerEapTypeId;
  495. BOOL fMultilink;
  496. DWORD dwTerminateReason;
  497. DWORD dwServerTerminateReason;
  498. WCHAR szReplyMessage[RAS_MaxReplyMessage];
  499. DWORD dwOptions;
  500. DWORD dwServerOptions;
  501. #endif
  502. };
  503. #define RASPPPLCPA struct tagRASPPPLCPA
  504. RASPPPLCPA
  505. {
  506. DWORD dwSize;
  507. BOOL fBundled;
  508. #if (WINVER >= 0x500)
  509. DWORD dwError;
  510. DWORD dwAuthenticationProtocol;
  511. DWORD dwAuthenticationData;
  512. DWORD dwEapTypeId;
  513. DWORD dwServerAuthenticationProtocol;
  514. DWORD dwServerAuthenticationData;
  515. DWORD dwServerEapTypeId;
  516. BOOL fMultilink;
  517. DWORD dwTerminateReason;
  518. DWORD dwServerTerminateReason;
  519. CHAR szReplyMessage[RAS_MaxReplyMessage];
  520. DWORD dwOptions;
  521. DWORD dwServerOptions;
  522. #endif
  523. };
  524. #ifdef UNICODE
  525. #define RASPPPLCP RASPPPLCPW
  526. #else
  527. #define RASPPPLCP RASPPPLCPA
  528. #endif
  529. #define LPRASPPPLCPW RASPPPLCPW*
  530. #define LPRASPPPLCPA RASPPPLCPA*
  531. #define LPRASPPPLCP RASPPPLCP*
  532. /* Describes the results of a SLIP (Serial Line IP) projection.
  533. */
  534. #define RASSLIPW struct tagRASSLIPW
  535. RASSLIPW
  536. {
  537. DWORD dwSize;
  538. DWORD dwError;
  539. WCHAR szIpAddress[ RAS_MaxIpAddress + 1 ];
  540. };
  541. #define RASSLIPA struct tagRASSLIPA
  542. RASSLIPA
  543. {
  544. DWORD dwSize;
  545. DWORD dwError;
  546. CHAR szIpAddress[ RAS_MaxIpAddress + 1 ];
  547. };
  548. #ifdef UNICODE
  549. #define RASSLIP RASSLIPW
  550. #else
  551. #define RASSLIP RASSLIPA
  552. #endif
  553. #define LPRASSLIPW RASSLIPW*
  554. #define LPRASSLIPA RASSLIPA*
  555. #define LPRASSLIP RASSLIP*
  556. #if (WINVER >= 0x500)
  557. /* Describes the results of a PPP CCP (Compression Control Protocol)
  558. projection.
  559. */
  560. /* RASPPPCCP 'dwCompressionAlgorithm' values.
  561. */
  562. #define RASCCPCA_MPPC 0x00000006
  563. #define RASCCPCA_STAC 0x00000005
  564. /* RASPPPCCP 'dwOptions' values.
  565. */
  566. #define RASCCPO_Compression 0x00000001
  567. #define RASCCPO_HistoryLess 0x00000002
  568. #define RASCCPO_Encryption56bit 0x00000010
  569. #define RASCCPO_Encryption40bit 0x00000020
  570. #define RASCCPO_Encryption128bit 0x00000040
  571. #define RASPPPCCP struct tagRASPPPCCP
  572. RASPPPCCP
  573. {
  574. DWORD dwSize;
  575. DWORD dwError;
  576. DWORD dwCompressionAlgorithm;
  577. DWORD dwOptions;
  578. DWORD dwServerCompressionAlgorithm;
  579. DWORD dwServerOptions;
  580. };
  581. #define LPRASPPPCCP RASPPPCCP*
  582. #endif
  583. /* If using RasDial message notifications, get the notification message code
  584. ** by passing this string to the RegisterWindowMessageA() API.
  585. ** WM_RASDIALEVENT is used only if a unique message cannot be registered.
  586. */
  587. #define RASDIALEVENT "RasDialEvent"
  588. #define WM_RASDIALEVENT 0xCCCD
  589. /* Prototypes for caller's RasDial callback handler. Arguments are the
  590. ** message ID (currently always WM_RASDIALEVENT), the current RASCONNSTATE and
  591. ** the error that has occurred (or 0 if none). Extended arguments are the
  592. ** handle of the RAS connection and an extended error code.
  593. **
  594. ** For RASDIALFUNC2, subsequent callback notifications for all
  595. ** subentries can be cancelled by returning FALSE.
  596. */
  597. typedef VOID (WINAPI *RASDIALFUNC)( UINT, RASCONNSTATE, DWORD );
  598. typedef VOID (WINAPI *RASDIALFUNC1)( HRASCONN, UINT, RASCONNSTATE, DWORD, DWORD );
  599. typedef DWORD (WINAPI *RASDIALFUNC2)( ULONG_PTR, DWORD, HRASCONN, UINT, RASCONNSTATE, DWORD, DWORD );
  600. /* Information describing a RAS-capable device.
  601. */
  602. #define RASDEVINFOW struct tagRASDEVINFOW
  603. RASDEVINFOW
  604. {
  605. DWORD dwSize;
  606. WCHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
  607. WCHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
  608. };
  609. #define RASDEVINFOA struct tagRASDEVINFOA
  610. RASDEVINFOA
  611. {
  612. DWORD dwSize;
  613. CHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
  614. CHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
  615. };
  616. #ifdef UNICODE
  617. #define RASDEVINFO RASDEVINFOW
  618. #else
  619. #define RASDEVINFO RASDEVINFOA
  620. #endif
  621. #define LPRASDEVINFOW RASDEVINFOW*
  622. #define LPRASDEVINFOA RASDEVINFOA*
  623. #define LPRASDEVINFO RASDEVINFO*
  624. /* RAS country information (currently retrieved from TAPI).
  625. */
  626. #define RASCTRYINFO struct RASCTRYINFO
  627. RASCTRYINFO
  628. {
  629. DWORD dwSize;
  630. DWORD dwCountryID;
  631. DWORD dwNextCountryID;
  632. DWORD dwCountryCode;
  633. DWORD dwCountryNameOffset;
  634. };
  635. /* There is currently no difference between
  636. ** RASCTRYINFOA and RASCTRYINFOW. This may
  637. ** change in the future.
  638. */
  639. #define RASCTRYINFOW RASCTRYINFO
  640. #define RASCTRYINFOA RASCTRYINFO
  641. #define LPRASCTRYINFOW RASCTRYINFOW*
  642. #define LPRASCTRYINFOA RASCTRYINFOW*
  643. #define LPRASCTRYINFO RASCTRYINFO*
  644. /* A RAS IP address.
  645. */
  646. #define RASIPADDR struct RASIPADDR
  647. RASIPADDR
  648. {
  649. BYTE a;
  650. BYTE b;
  651. BYTE c;
  652. BYTE d;
  653. };
  654. #if (WINVER >= 0x500)
  655. #define ET_None 0 // No encryption
  656. #define ET_Require 1 // Require Encryption
  657. #define ET_RequireMax 2 // Require max encryption
  658. #define ET_Optional 3 // Do encryption if possible. None Ok.
  659. #endif
  660. #define VS_Default 0 // default (PPTP for now)
  661. #define VS_PptpOnly 1 // Only PPTP is attempted.
  662. #define VS_PptpFirst 2 // PPTP is tried first.
  663. #define VS_L2tpOnly 3 // Only L2TP is attempted.
  664. #define VS_L2tpFirst 4 // L2TP is tried first.
  665. /* A RAS phone book entry.
  666. */
  667. #define RASENTRYA struct tagRASENTRYA
  668. RASENTRYA
  669. {
  670. DWORD dwSize;
  671. DWORD dwfOptions;
  672. //
  673. // Location/phone number.
  674. //
  675. DWORD dwCountryID;
  676. DWORD dwCountryCode;
  677. CHAR szAreaCode[ RAS_MaxAreaCode + 1 ];
  678. CHAR szLocalPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
  679. DWORD dwAlternateOffset;
  680. //
  681. // PPP/Ip
  682. //
  683. RASIPADDR ipaddr;
  684. RASIPADDR ipaddrDns;
  685. RASIPADDR ipaddrDnsAlt;
  686. RASIPADDR ipaddrWins;
  687. RASIPADDR ipaddrWinsAlt;
  688. //
  689. // Framing
  690. //
  691. DWORD dwFrameSize;
  692. DWORD dwfNetProtocols;
  693. DWORD dwFramingProtocol;
  694. //
  695. // Scripting
  696. //
  697. CHAR szScript[ MAX_PATH ];
  698. //
  699. // AutoDial
  700. //
  701. CHAR szAutodialDll[ MAX_PATH ];
  702. CHAR szAutodialFunc[ MAX_PATH ];
  703. //
  704. // Device
  705. //
  706. CHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
  707. CHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
  708. //
  709. // X.25
  710. //
  711. CHAR szX25PadType[ RAS_MaxPadType + 1 ];
  712. CHAR szX25Address[ RAS_MaxX25Address + 1 ];
  713. CHAR szX25Facilities[ RAS_MaxFacilities + 1 ];
  714. CHAR szX25UserData[ RAS_MaxUserData + 1 ];
  715. DWORD dwChannels;
  716. //
  717. // Reserved
  718. //
  719. DWORD dwReserved1;
  720. DWORD dwReserved2;
  721. #if (WINVER >= 0x401)
  722. //
  723. // Multilink
  724. //
  725. DWORD dwSubEntries;
  726. DWORD dwDialMode;
  727. DWORD dwDialExtraPercent;
  728. DWORD dwDialExtraSampleSeconds;
  729. DWORD dwHangUpExtraPercent;
  730. DWORD dwHangUpExtraSampleSeconds;
  731. //
  732. // Idle timeout
  733. //
  734. DWORD dwIdleDisconnectSeconds;
  735. #endif
  736. #if (WINVER >= 0x500)
  737. //
  738. // Entry Type
  739. //
  740. DWORD dwType;
  741. //
  742. // Encryption type
  743. //
  744. DWORD dwEncryptionType;
  745. //
  746. // CustomAuthKey to be used for EAP
  747. //
  748. DWORD dwCustomAuthKey;
  749. //
  750. // Guid of the connection
  751. //
  752. GUID guidId;
  753. //
  754. // Custom Dial Dll
  755. //
  756. CHAR szCustomDialDll[MAX_PATH];
  757. //
  758. // DwVpnStrategy
  759. //
  760. DWORD dwVpnStrategy;
  761. #endif
  762. #if (WINVER >= 0x501)
  763. //
  764. // More RASEO_* options
  765. //
  766. DWORD dwfOptions2;
  767. //
  768. // For future use
  769. //
  770. DWORD dwfOptions3;
  771. CHAR szDnsSuffix[RAS_MaxDnsSuffix];
  772. DWORD dwTcpWindowSize;
  773. CHAR szPrerequisitePbk[MAX_PATH];
  774. CHAR szPrerequisiteEntry[RAS_MaxEntryName + 1];
  775. DWORD dwRedialCount;
  776. DWORD dwRedialPause;
  777. #endif
  778. };
  779. #define RASENTRYW struct tagRASENTRYW
  780. RASENTRYW
  781. {
  782. DWORD dwSize;
  783. DWORD dwfOptions;
  784. //
  785. // Location/phone number
  786. //
  787. DWORD dwCountryID;
  788. DWORD dwCountryCode;
  789. WCHAR szAreaCode[ RAS_MaxAreaCode + 1 ];
  790. WCHAR szLocalPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
  791. DWORD dwAlternateOffset;
  792. //
  793. // PPP/Ip
  794. //
  795. RASIPADDR ipaddr;
  796. RASIPADDR ipaddrDns;
  797. RASIPADDR ipaddrDnsAlt;
  798. RASIPADDR ipaddrWins;
  799. RASIPADDR ipaddrWinsAlt;
  800. //
  801. // Framing
  802. //
  803. DWORD dwFrameSize;
  804. DWORD dwfNetProtocols;
  805. DWORD dwFramingProtocol;
  806. //
  807. // Scripting
  808. //
  809. WCHAR szScript[ MAX_PATH ];
  810. //
  811. // AutoDial
  812. //
  813. WCHAR szAutodialDll[ MAX_PATH ];
  814. WCHAR szAutodialFunc[ MAX_PATH ];
  815. //
  816. // Device
  817. //
  818. WCHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
  819. WCHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
  820. //
  821. // X.25
  822. //
  823. WCHAR szX25PadType[ RAS_MaxPadType + 1 ];
  824. WCHAR szX25Address[ RAS_MaxX25Address + 1 ];
  825. WCHAR szX25Facilities[ RAS_MaxFacilities + 1 ];
  826. WCHAR szX25UserData[ RAS_MaxUserData + 1 ];
  827. DWORD dwChannels;
  828. //
  829. // Reserved
  830. //
  831. DWORD dwReserved1;
  832. DWORD dwReserved2;
  833. #if (WINVER >= 0x401)
  834. //
  835. // Multilink
  836. //
  837. DWORD dwSubEntries;
  838. DWORD dwDialMode;
  839. DWORD dwDialExtraPercent;
  840. DWORD dwDialExtraSampleSeconds;
  841. DWORD dwHangUpExtraPercent;
  842. DWORD dwHangUpExtraSampleSeconds;
  843. //
  844. // Idle timeout
  845. //
  846. DWORD dwIdleDisconnectSeconds;
  847. #endif
  848. #if (WINVER >= 0x500)
  849. //
  850. // Entry Type
  851. //
  852. DWORD dwType;
  853. //
  854. // EncryptionType
  855. //
  856. DWORD dwEncryptionType;
  857. //
  858. // CustomAuthKey to be used for EAP
  859. //
  860. DWORD dwCustomAuthKey;
  861. //
  862. // Guid of the connection
  863. //
  864. GUID guidId;
  865. //
  866. // Custom Dial Dll
  867. //
  868. WCHAR szCustomDialDll[MAX_PATH];
  869. //
  870. // Vpn Strategy
  871. //
  872. DWORD dwVpnStrategy;
  873. #endif
  874. #if (WINVER >= 0x501)
  875. //
  876. // More RASEO_* options
  877. //
  878. DWORD dwfOptions2;
  879. //
  880. // For future use
  881. //
  882. DWORD dwfOptions3;
  883. WCHAR szDnsSuffix[RAS_MaxDnsSuffix];
  884. DWORD dwTcpWindowSize;
  885. WCHAR szPrerequisitePbk[MAX_PATH];
  886. WCHAR szPrerequisiteEntry[RAS_MaxEntryName + 1];
  887. DWORD dwRedialCount;
  888. DWORD dwRedialPause;
  889. #endif
  890. };
  891. #ifdef UNICODE
  892. #define RASENTRY RASENTRYW
  893. #else
  894. #define RASENTRY RASENTRYA
  895. #endif
  896. #define LPRASENTRYW RASENTRYW*
  897. #define LPRASENTRYA RASENTRYA*
  898. #define LPRASENTRY RASENTRY*
  899. /* RASENTRY 'dwfOptions' bit flags.
  900. */
  901. #define RASEO_UseCountryAndAreaCodes 0x00000001
  902. #define RASEO_SpecificIpAddr 0x00000002
  903. #define RASEO_SpecificNameServers 0x00000004
  904. #define RASEO_IpHeaderCompression 0x00000008
  905. #define RASEO_RemoteDefaultGateway 0x00000010
  906. #define RASEO_DisableLcpExtensions 0x00000020
  907. #define RASEO_TerminalBeforeDial 0x00000040
  908. #define RASEO_TerminalAfterDial 0x00000080
  909. #define RASEO_ModemLights 0x00000100
  910. #define RASEO_SwCompression 0x00000200
  911. #define RASEO_RequireEncryptedPw 0x00000400
  912. #define RASEO_RequireMsEncryptedPw 0x00000800
  913. #define RASEO_RequireDataEncryption 0x00001000
  914. #define RASEO_NetworkLogon 0x00002000
  915. #define RASEO_UseLogonCredentials 0x00004000
  916. #define RASEO_PromoteAlternates 0x00008000
  917. #if (WINVER >= 0x401)
  918. #define RASEO_SecureLocalFiles 0x00010000
  919. #endif
  920. #if (WINVER >= 0x500)
  921. #define RASEO_RequireEAP 0x00020000
  922. #define RASEO_RequirePAP 0x00040000
  923. #define RASEO_RequireSPAP 0x00080000
  924. #define RASEO_Custom 0x00100000
  925. #define RASEO_PreviewPhoneNumber 0x00200000
  926. #define RASEO_SharedPhoneNumbers 0x00800000
  927. #define RASEO_PreviewUserPw 0x01000000
  928. #define RASEO_PreviewDomain 0x02000000
  929. #define RASEO_ShowDialingProgress 0x04000000
  930. #define RASEO_RequireCHAP 0x08000000
  931. #define RASEO_RequireMsCHAP 0x10000000
  932. #define RASEO_RequireMsCHAP2 0x20000000
  933. #define RASEO_RequireW95MSCHAP 0x40000000
  934. #define RASEO_CustomScript 0x80000000
  935. #endif
  936. #if (WINVER >= 0x501)
  937. //
  938. // RASENTRY dwfOptions2 bit flags
  939. //
  940. #define RASEO2_SecureFileAndPrint 0x00000001
  941. #define RASEO2_SecureClientForMSNet 0x00000002
  942. #define RASEO2_DontNegotiateMultilink 0x00000004
  943. #define RASEO2_DontUseRasCredentials 0x00000008
  944. #define RASEO2_UsePreSharedKey 0x00000010
  945. #define RASEO2_Internet 0x00000020
  946. #define RASEO2_DisableNbtOverIP 0x00000040
  947. #define RASEO2_UseGlobalDeviceSettings 0x00000080
  948. #define RASEO2_ReconnectIfDropped 0x00000100
  949. #define RASEO2_SharePhoneNumbers 0x00000200
  950. #endif
  951. /* RASENTRY 'dwProtocols' bit flags.
  952. */
  953. #define RASNP_NetBEUI 0x00000001
  954. #define RASNP_Ipx 0x00000002
  955. #define RASNP_Ip 0x00000004
  956. /* RASENTRY 'dwFramingProtocols' bit flags.
  957. */
  958. #define RASFP_Ppp 0x00000001
  959. #define RASFP_Slip 0x00000002
  960. #define RASFP_Ras 0x00000004
  961. /* RASENTRY 'szDeviceType' default strings.
  962. */
  963. #define RASDT_Modem TEXT("modem")
  964. #define RASDT_Isdn TEXT("isdn")
  965. #define RASDT_X25 TEXT("x25")
  966. #define RASDT_Vpn TEXT("vpn")
  967. #define RASDT_Pad TEXT("pad")
  968. #define RASDT_Generic TEXT("GENERIC")
  969. #define RASDT_Serial TEXT("SERIAL")
  970. #define RASDT_FrameRelay TEXT("FRAMERELAY")
  971. #define RASDT_Atm TEXT("ATM")
  972. #define RASDT_Sonet TEXT("SONET")
  973. #define RASDT_SW56 TEXT("SW56")
  974. #define RASDT_Irda TEXT("IRDA")
  975. #define RASDT_Parallel TEXT("PARALLEL")
  976. #if (WINVER >= 0x501)
  977. #define RASDT_PPPoE TEXT("PPPoE")
  978. #endif
  979. // The entry type used to determine which UI properties
  980. // are to be presented to user. This generally corresponds
  981. // to a Connections "add" wizard selection.
  982. //
  983. #define RASET_Phone 1 // Phone lines: modem, ISDN, X.25, etc
  984. #define RASET_Vpn 2 // Virtual private network
  985. #define RASET_Direct 3 // Direct connect: serial, parallel
  986. #define RASET_Internet 4 // BaseCamp internet
  987. #if (WINVER >= 0x501)
  988. #define RASET_Broadband 5 // Broadband
  989. #endif
  990. /* Old AutoDial DLL function prototype.
  991. **
  992. ** This prototype is documented for backward-compatibility
  993. ** purposes only. It is superceded by the RASADFUNCA
  994. ** and RASADFUNCW definitions below. DO NOT USE THIS
  995. ** PROTOTYPE IN NEW CODE. SUPPORT FOR IT MAY BE REMOVED
  996. ** IN FUTURE VERSIONS OF RAS.
  997. */
  998. typedef BOOL (WINAPI *ORASADFUNC)( HWND, LPSTR, DWORD, LPDWORD );
  999. #if (WINVER >= 0x400)
  1000. /* Flags for RasConnectionNotification().
  1001. */
  1002. #define RASCN_Connection 0x00000001
  1003. #define RASCN_Disconnection 0x00000002
  1004. #define RASCN_BandwidthAdded 0x00000004
  1005. #define RASCN_BandwidthRemoved 0x00000008
  1006. #endif
  1007. #if (WINVER >= 0x401)
  1008. /* RASENTRY 'dwDialMode' values.
  1009. */
  1010. #define RASEDM_DialAll 1
  1011. #define RASEDM_DialAsNeeded 2
  1012. /* RASENTRY 'dwIdleDisconnectSeconds' constants.
  1013. */
  1014. #define RASIDS_Disabled 0xffffffff
  1015. #define RASIDS_UseGlobalValue 0
  1016. /* AutoDial DLL function parameter block.
  1017. */
  1018. #define RASADPARAMS struct tagRASADPARAMS
  1019. RASADPARAMS
  1020. {
  1021. DWORD dwSize;
  1022. HWND hwndOwner;
  1023. DWORD dwFlags;
  1024. LONG xDlg;
  1025. LONG yDlg;
  1026. };
  1027. #define LPRASADPARAMS RASADPARAMS*
  1028. /* AutoDial DLL function parameter block 'dwFlags.'
  1029. */
  1030. #define RASADFLG_PositionDlg 0x00000001
  1031. /* Prototype AutoDial DLL function.
  1032. */
  1033. typedef BOOL (WINAPI *RASADFUNCA)( LPSTR, LPSTR, LPRASADPARAMS, LPDWORD );
  1034. typedef BOOL (WINAPI *RASADFUNCW)( LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD );
  1035. #ifdef UNICODE
  1036. #define RASADFUNC RASADFUNCW
  1037. #else
  1038. #define RASADFUNC RASADFUNCA
  1039. #endif
  1040. /* A RAS phone book multilinked sub-entry.
  1041. */
  1042. #define RASSUBENTRYA struct tagRASSUBENTRYA
  1043. RASSUBENTRYA
  1044. {
  1045. DWORD dwSize;
  1046. DWORD dwfFlags;
  1047. //
  1048. // Device
  1049. //
  1050. CHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
  1051. CHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
  1052. //
  1053. // Phone numbers
  1054. //
  1055. CHAR szLocalPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
  1056. DWORD dwAlternateOffset;
  1057. };
  1058. #define RASSUBENTRYW struct tagRASSUBENTRYW
  1059. RASSUBENTRYW
  1060. {
  1061. DWORD dwSize;
  1062. DWORD dwfFlags;
  1063. //
  1064. // Device
  1065. //
  1066. WCHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
  1067. WCHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
  1068. //
  1069. // Phone numbers
  1070. //
  1071. WCHAR szLocalPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
  1072. DWORD dwAlternateOffset;
  1073. };
  1074. #ifdef UNICODE
  1075. #define RASSUBENTRY RASSUBENTRYW
  1076. #else
  1077. #define RASSUBENTRY RASSUBENTRYA
  1078. #endif
  1079. #define LPRASSUBENTRYW RASSUBENTRYW*
  1080. #define LPRASSUBENTRYA RASSUBENTRYA*
  1081. #define LPRASSUBENTRY RASSUBENTRY*
  1082. /* Ras{Get,Set}Credentials structure. These calls
  1083. ** supercede Ras{Get,Set}EntryDialParams.
  1084. */
  1085. #define RASCREDENTIALSA struct tagRASCREDENTIALSA
  1086. RASCREDENTIALSA
  1087. {
  1088. DWORD dwSize;
  1089. DWORD dwMask;
  1090. CHAR szUserName[ UNLEN + 1 ];
  1091. CHAR szPassword[ PWLEN + 1 ];
  1092. CHAR szDomain[ DNLEN + 1 ];
  1093. };
  1094. #define RASCREDENTIALSW struct tagRASCREDENTIALSW
  1095. RASCREDENTIALSW
  1096. {
  1097. DWORD dwSize;
  1098. DWORD dwMask;
  1099. WCHAR szUserName[ UNLEN + 1 ];
  1100. WCHAR szPassword[ PWLEN + 1 ];
  1101. WCHAR szDomain[ DNLEN + 1 ];
  1102. };
  1103. #ifdef UNICODE
  1104. #define RASCREDENTIALS RASCREDENTIALSW
  1105. #else
  1106. #define RASCREDENTIALS RASCREDENTIALSA
  1107. #endif
  1108. #define LPRASCREDENTIALSW RASCREDENTIALSW*
  1109. #define LPRASCREDENTIALSA RASCREDENTIALSA*
  1110. #define LPRASCREDENTIALS RASCREDENTIALS*
  1111. /* RASCREDENTIALS 'dwMask' values.
  1112. */
  1113. #define RASCM_UserName 0x00000001
  1114. #define RASCM_Password 0x00000002
  1115. #define RASCM_Domain 0x00000004
  1116. #if (WINVER >= 501)
  1117. #define RASCM_DefaultCreds 0x00000008
  1118. #define RASCM_PreSharedKey 0x00000010
  1119. #define RASCM_ServerPreSharedKey 0x00000020
  1120. #define RASCM_DDMPreSharedKey 0x00000040
  1121. #endif
  1122. /* AutoDial address properties.
  1123. */
  1124. #define RASAUTODIALENTRYA struct tagRASAUTODIALENTRYA
  1125. RASAUTODIALENTRYA
  1126. {
  1127. DWORD dwSize;
  1128. DWORD dwFlags;
  1129. DWORD dwDialingLocation;
  1130. CHAR szEntry[ RAS_MaxEntryName + 1];
  1131. };
  1132. #define RASAUTODIALENTRYW struct tagRASAUTODIALENTRYW
  1133. RASAUTODIALENTRYW
  1134. {
  1135. DWORD dwSize;
  1136. DWORD dwFlags;
  1137. DWORD dwDialingLocation;
  1138. WCHAR szEntry[ RAS_MaxEntryName + 1];
  1139. };
  1140. #ifdef UNICODE
  1141. #define RASAUTODIALENTRY RASAUTODIALENTRYW
  1142. #else
  1143. #define RASAUTODIALENTRY RASAUTODIALENTRYA
  1144. #endif
  1145. #define LPRASAUTODIALENTRYW RASAUTODIALENTRYW*
  1146. #define LPRASAUTODIALENTRYA RASAUTODIALENTRYA*
  1147. #define LPRASAUTODIALENTRY RASAUTODIALENTRY*
  1148. /* AutoDial control parameter values for
  1149. ** Ras{Get,Set}AutodialParam.
  1150. */
  1151. #define RASADP_DisableConnectionQuery 0
  1152. #define RASADP_LoginSessionDisable 1
  1153. #define RASADP_SavedAddressesLimit 2
  1154. #define RASADP_FailedConnectionTimeout 3
  1155. #define RASADP_ConnectionQueryTimeout 4
  1156. #endif // (WINVER >= 0x401)
  1157. #if (WINVER >= 0x500)
  1158. /* RasGetEapUserIdentity bit flags.
  1159. ** These have the same values as the RAS_EAP_FLAG_ flags in raseapif.h
  1160. */
  1161. #define RASEAPF_NonInteractive 0x00000002
  1162. #define RASEAPF_Logon 0x00000004
  1163. #define RASEAPF_Preview 0x00000008
  1164. /* RasGetEapUserIdentity structure.
  1165. */
  1166. #define RASEAPUSERIDENTITYA struct tagRASEAPUSERIDENTITYA
  1167. RASEAPUSERIDENTITYA
  1168. {
  1169. CHAR szUserName[ UNLEN + 1 ];
  1170. DWORD dwSizeofEapInfo;
  1171. BYTE pbEapInfo[ 1 ];
  1172. };
  1173. #define RASEAPUSERIDENTITYW struct tagRASEAPUSERIDENTITYW
  1174. RASEAPUSERIDENTITYW
  1175. {
  1176. WCHAR szUserName[ UNLEN + 1 ];
  1177. DWORD dwSizeofEapInfo;
  1178. BYTE pbEapInfo[ 1 ];
  1179. };
  1180. #ifdef UNICODE
  1181. #define RASEAPUSERIDENTITY RASEAPUSERIDENTITYW
  1182. #else
  1183. #define RASEAPUSERIDENTITY RASEAPUSERIDENTITYA
  1184. #endif
  1185. #define LPRASEAPUSERIDENTITYW RASEAPUSERIDENTITYW*
  1186. #define LPRASEAPUSERIDENTITYA RASEAPUSERIDENTITYA*
  1187. typedef DWORD (WINAPI *PFNRASGETBUFFER) (
  1188. PBYTE *ppBuffer,
  1189. PDWORD pdwSize
  1190. );
  1191. typedef DWORD (WINAPI *PFNRASFREEBUFFER) (
  1192. PBYTE pBufer);
  1193. typedef DWORD (WINAPI *PFNRASSENDBUFFER) (
  1194. HANDLE hPort,
  1195. PBYTE pBuffer,
  1196. DWORD dwSize
  1197. );
  1198. typedef DWORD (WINAPI *PFNRASRECEIVEBUFFER) (
  1199. HANDLE hPort,
  1200. PBYTE pBuffer,
  1201. PDWORD pdwSize,
  1202. DWORD dwTimeOut,
  1203. HANDLE hEvent
  1204. );
  1205. typedef DWORD (WINAPI *PFNRASRETRIEVEBUFFER) (
  1206. HANDLE hPort,
  1207. PBYTE pBuffer,
  1208. PDWORD pdwSize
  1209. );
  1210. typedef DWORD (WINAPI *RasCustomScriptExecuteFn) (
  1211. HANDLE hPort,
  1212. LPCWSTR lpszPhonebook,
  1213. LPCWSTR lpszEntryName,
  1214. PFNRASGETBUFFER pfnRasGetBuffer,
  1215. PFNRASFREEBUFFER pfnRasFreeBuffer,
  1216. PFNRASSENDBUFFER pfnRasSendBuffer,
  1217. PFNRASRECEIVEBUFFER pfnRasReceiveBuffer,
  1218. PFNRASRETRIEVEBUFFER pfnRasRetrieveBuffer,
  1219. HWND hWnd,
  1220. RASDIALPARAMS *pRasDialParams,
  1221. PVOID pvReserved
  1222. );
  1223. #endif // (WINVER >= 0x500)
  1224. #if (WINVER >= 0x0501)
  1225. #define RASCOMMSETTINGS struct tagRASCOMMSETTINGS
  1226. RASCOMMSETTINGS
  1227. {
  1228. DWORD dwSize;
  1229. BYTE bParity;
  1230. BYTE bStop;
  1231. BYTE bByteSize;
  1232. BYTE bAlign;
  1233. };
  1234. typedef DWORD (WINAPI *PFNRASSETCOMMSETTINGS) (
  1235. HANDLE hPort,
  1236. RASCOMMSETTINGS *pRasCommSettings,
  1237. PVOID pvReserved
  1238. );
  1239. #define RASCUSTOMSCRIPTEXTENSIONS struct tagRASCUSTOMSCRIPTEXTENSIONS
  1240. RASCUSTOMSCRIPTEXTENSIONS
  1241. {
  1242. DWORD dwSize;
  1243. PFNRASSETCOMMSETTINGS pfnRasSetCommSettings;
  1244. };
  1245. #endif
  1246. /* External RAS API function prototypes.
  1247. */
  1248. DWORD APIENTRY RasDialA( LPRASDIALEXTENSIONS, LPCSTR, LPRASDIALPARAMSA, DWORD,
  1249. LPVOID, LPHRASCONN );
  1250. DWORD APIENTRY RasDialW( LPRASDIALEXTENSIONS, LPCWSTR, LPRASDIALPARAMSW, DWORD,
  1251. LPVOID, LPHRASCONN );
  1252. DWORD APIENTRY RasEnumConnectionsA( LPRASCONNA, LPDWORD, LPDWORD );
  1253. DWORD APIENTRY RasEnumConnectionsW( LPRASCONNW, LPDWORD, LPDWORD );
  1254. DWORD APIENTRY RasEnumEntriesA( LPCSTR, LPCSTR, LPRASENTRYNAMEA, LPDWORD,
  1255. LPDWORD );
  1256. DWORD APIENTRY RasEnumEntriesW( LPCWSTR, LPCWSTR, LPRASENTRYNAMEW, LPDWORD,
  1257. LPDWORD );
  1258. DWORD APIENTRY RasGetConnectStatusA( HRASCONN, LPRASCONNSTATUSA );
  1259. DWORD APIENTRY RasGetConnectStatusW( HRASCONN, LPRASCONNSTATUSW );
  1260. DWORD APIENTRY RasGetErrorStringA( UINT, LPSTR, DWORD );
  1261. DWORD APIENTRY RasGetErrorStringW( UINT, LPWSTR, DWORD );
  1262. DWORD APIENTRY RasHangUpA( HRASCONN );
  1263. DWORD APIENTRY RasHangUpW( HRASCONN );
  1264. DWORD APIENTRY RasGetProjectionInfoA( HRASCONN, RASPROJECTION, LPVOID,
  1265. LPDWORD );
  1266. DWORD APIENTRY RasGetProjectionInfoW( HRASCONN, RASPROJECTION, LPVOID,
  1267. LPDWORD );
  1268. DWORD APIENTRY RasCreatePhonebookEntryA( HWND, LPCSTR );
  1269. DWORD APIENTRY RasCreatePhonebookEntryW( HWND, LPCWSTR );
  1270. DWORD APIENTRY RasEditPhonebookEntryA( HWND, LPCSTR, LPCSTR );
  1271. DWORD APIENTRY RasEditPhonebookEntryW( HWND, LPCWSTR, LPCWSTR );
  1272. DWORD APIENTRY RasSetEntryDialParamsA( LPCSTR, LPRASDIALPARAMSA, BOOL );
  1273. DWORD APIENTRY RasSetEntryDialParamsW( LPCWSTR, LPRASDIALPARAMSW, BOOL );
  1274. DWORD APIENTRY RasGetEntryDialParamsA( LPCSTR, LPRASDIALPARAMSA, LPBOOL );
  1275. DWORD APIENTRY RasGetEntryDialParamsW( LPCWSTR, LPRASDIALPARAMSW, LPBOOL );
  1276. DWORD APIENTRY RasEnumDevicesA( LPRASDEVINFOA, LPDWORD, LPDWORD );
  1277. DWORD APIENTRY RasEnumDevicesW( LPRASDEVINFOW, LPDWORD, LPDWORD );
  1278. DWORD APIENTRY RasGetCountryInfoA( LPRASCTRYINFOA, LPDWORD );
  1279. DWORD APIENTRY RasGetCountryInfoW( LPRASCTRYINFOW, LPDWORD );
  1280. DWORD APIENTRY RasGetEntryPropertiesA( LPCSTR, LPCSTR, LPRASENTRYA, LPDWORD, LPBYTE, LPDWORD );
  1281. DWORD APIENTRY RasGetEntryPropertiesW( LPCWSTR, LPCWSTR, LPRASENTRYW, LPDWORD, LPBYTE, LPDWORD );
  1282. DWORD APIENTRY RasSetEntryPropertiesA( LPCSTR, LPCSTR, LPRASENTRYA, DWORD, LPBYTE, DWORD );
  1283. DWORD APIENTRY RasSetEntryPropertiesW( LPCWSTR, LPCWSTR, LPRASENTRYW, DWORD, LPBYTE, DWORD );
  1284. DWORD APIENTRY RasRenameEntryA( LPCSTR, LPCSTR, LPCSTR );
  1285. DWORD APIENTRY RasRenameEntryW( LPCWSTR, LPCWSTR, LPCWSTR );
  1286. DWORD APIENTRY RasDeleteEntryA( LPCSTR, LPCSTR );
  1287. DWORD APIENTRY RasDeleteEntryW( LPCWSTR, LPCWSTR );
  1288. DWORD APIENTRY RasValidateEntryNameA( LPCSTR, LPCSTR );
  1289. DWORD APIENTRY RasValidateEntryNameW( LPCWSTR, LPCWSTR );
  1290. DWORD APIENTRY RasConnectionNotificationA( HRASCONN, HANDLE, DWORD );
  1291. DWORD APIENTRY RasConnectionNotificationW( HRASCONN, HANDLE, DWORD );
  1292. #if (WINVER >= 0x401)
  1293. DWORD APIENTRY RasGetSubEntryHandleA( HRASCONN, DWORD, LPHRASCONN );
  1294. DWORD APIENTRY RasGetSubEntryHandleW( HRASCONN, DWORD, LPHRASCONN );
  1295. DWORD APIENTRY RasGetCredentialsA( LPCSTR, LPCSTR, LPRASCREDENTIALSA);
  1296. DWORD APIENTRY RasGetCredentialsW( LPCWSTR, LPCWSTR, LPRASCREDENTIALSW );
  1297. DWORD APIENTRY RasSetCredentialsA( LPCSTR, LPCSTR, LPRASCREDENTIALSA, BOOL );
  1298. DWORD APIENTRY RasSetCredentialsW( LPCWSTR, LPCWSTR, LPRASCREDENTIALSW, BOOL );
  1299. DWORD APIENTRY RasGetSubEntryPropertiesA( LPCSTR, LPCSTR, DWORD,
  1300. LPRASSUBENTRYA, LPDWORD, LPBYTE, LPDWORD );
  1301. DWORD APIENTRY RasGetSubEntryPropertiesW( LPCWSTR, LPCWSTR, DWORD,
  1302. LPRASSUBENTRYW, LPDWORD, LPBYTE, LPDWORD );
  1303. DWORD APIENTRY RasSetSubEntryPropertiesA( LPCSTR, LPCSTR, DWORD,
  1304. LPRASSUBENTRYA, DWORD, LPBYTE, DWORD );
  1305. DWORD APIENTRY RasSetSubEntryPropertiesW( LPCWSTR, LPCWSTR, DWORD,
  1306. LPRASSUBENTRYW, DWORD, LPBYTE, DWORD );
  1307. DWORD APIENTRY RasGetAutodialAddressA( LPCSTR, LPDWORD, LPRASAUTODIALENTRYA,
  1308. LPDWORD, LPDWORD );
  1309. DWORD APIENTRY RasGetAutodialAddressW( LPCWSTR, LPDWORD, LPRASAUTODIALENTRYW,
  1310. LPDWORD, LPDWORD);
  1311. DWORD APIENTRY RasSetAutodialAddressA( LPCSTR, DWORD, LPRASAUTODIALENTRYA,
  1312. DWORD, DWORD );
  1313. DWORD APIENTRY RasSetAutodialAddressW( LPCWSTR, DWORD, LPRASAUTODIALENTRYW,
  1314. DWORD, DWORD );
  1315. DWORD APIENTRY RasEnumAutodialAddressesA( LPSTR *, LPDWORD, LPDWORD );
  1316. DWORD APIENTRY RasEnumAutodialAddressesW( LPWSTR *, LPDWORD, LPDWORD );
  1317. DWORD APIENTRY RasGetAutodialEnableA( DWORD, LPBOOL );
  1318. DWORD APIENTRY RasGetAutodialEnableW( DWORD, LPBOOL );
  1319. DWORD APIENTRY RasSetAutodialEnableA( DWORD, BOOL );
  1320. DWORD APIENTRY RasSetAutodialEnableW( DWORD, BOOL );
  1321. DWORD APIENTRY RasGetAutodialParamA( DWORD, LPVOID, LPDWORD );
  1322. DWORD APIENTRY RasGetAutodialParamW( DWORD, LPVOID, LPDWORD );
  1323. DWORD APIENTRY RasSetAutodialParamA( DWORD, LPVOID, DWORD );
  1324. DWORD APIENTRY RasSetAutodialParamW( DWORD, LPVOID, DWORD );
  1325. #endif
  1326. #if (WINVER >= 0x500)
  1327. typedef struct _RAS_STATS
  1328. {
  1329. DWORD dwSize;
  1330. DWORD dwBytesXmited;
  1331. DWORD dwBytesRcved;
  1332. DWORD dwFramesXmited;
  1333. DWORD dwFramesRcved;
  1334. DWORD dwCrcErr;
  1335. DWORD dwTimeoutErr;
  1336. DWORD dwAlignmentErr;
  1337. DWORD dwHardwareOverrunErr;
  1338. DWORD dwFramingErr;
  1339. DWORD dwBufferOverrunErr;
  1340. DWORD dwCompressionRatioIn;
  1341. DWORD dwCompressionRatioOut;
  1342. DWORD dwBps;
  1343. DWORD dwConnectDuration;
  1344. } RAS_STATS, *PRAS_STATS;
  1345. typedef DWORD (WINAPI *RasCustomHangUpFn) (
  1346. HRASCONN hRasConn
  1347. );
  1348. typedef DWORD (WINAPI *RasCustomDialFn) (
  1349. HINSTANCE hInstDll,
  1350. LPRASDIALEXTENSIONS lpRasDialExtensions,
  1351. LPCWSTR lpszPhonebook,
  1352. LPRASDIALPARAMS lpRasDialParams,
  1353. DWORD dwNotifierType,
  1354. LPVOID lpvNotifier,
  1355. LPHRASCONN lphRasConn,
  1356. DWORD dwFlags
  1357. );
  1358. typedef DWORD (WINAPI *RasCustomDeleteEntryNotifyFn) (
  1359. LPCWSTR lpszPhonebook,
  1360. LPCWSTR lpszEntry,
  1361. DWORD dwFlags);
  1362. #define RCD_SingleUser 0
  1363. #define RCD_AllUsers 0x00000001
  1364. #define RCD_Eap 0x00000002
  1365. #define RCD_Logon 0x00000004
  1366. DWORD APIENTRY RasInvokeEapUI( HRASCONN, DWORD, LPRASDIALEXTENSIONS, HWND);
  1367. DWORD APIENTRY RasGetLinkStatistics(HRASCONN hRasConn,
  1368. DWORD dwSubEntry,
  1369. RAS_STATS *lpStatistics);
  1370. DWORD APIENTRY RasGetConnectionStatistics(HRASCONN hRasConn,
  1371. RAS_STATS *lpStatistics);
  1372. DWORD APIENTRY RasClearLinkStatistics(HRASCONN hRasConn,
  1373. DWORD dwSubEntry);
  1374. DWORD APIENTRY RasClearConnectionStatistics(HRASCONN hRasConn);
  1375. DWORD APIENTRY RasGetEapUserDataA(
  1376. HANDLE hToken,
  1377. LPCSTR pszPhonebook,
  1378. LPCSTR pszEntry,
  1379. BYTE *pbEapData,
  1380. DWORD *pdwSizeofEapData);
  1381. DWORD APIENTRY RasGetEapUserDataW(
  1382. HANDLE hToken,
  1383. LPCWSTR pszPhonebook,
  1384. LPCWSTR pszEntry,
  1385. BYTE *pbEapData,
  1386. DWORD *pdwSizeofEapData);
  1387. DWORD APIENTRY RasSetEapUserDataA(
  1388. HANDLE hToken,
  1389. LPCSTR pszPhonebook,
  1390. LPCSTR pszEntry,
  1391. BYTE *pbEapData,
  1392. DWORD dwSizeofEapData);
  1393. DWORD APIENTRY RasSetEapUserDataW(
  1394. HANDLE hToken,
  1395. LPCWSTR pszPhonebook,
  1396. LPCWSTR pszEntry,
  1397. BYTE *pbEapData,
  1398. DWORD dwSizeofEapData);
  1399. DWORD APIENTRY RasGetCustomAuthDataA(
  1400. LPCSTR pszPhonebook,
  1401. LPCSTR pszEntry,
  1402. BYTE *pbCustomAuthData,
  1403. DWORD *pdwSizeofCustomAuthData);
  1404. DWORD APIENTRY RasGetCustomAuthDataW(
  1405. LPCWSTR pszPhonebook,
  1406. LPCWSTR pszEntry,
  1407. BYTE *pbCustomAuthData,
  1408. DWORD *pdwSizeofCustomAuthData);
  1409. DWORD APIENTRY RasSetCustomAuthDataA(
  1410. LPCSTR pszPhonebook,
  1411. LPCSTR pszEntry,
  1412. BYTE *pbCustomAuthData,
  1413. DWORD dwSizeofCustomAuthData
  1414. );
  1415. DWORD APIENTRY RasSetCustomAuthDataW(
  1416. LPCWSTR pszPhonebook,
  1417. LPCWSTR pszEntry,
  1418. BYTE *pbCustomAuthData,
  1419. DWORD dwSizeofCustomAuthData
  1420. );
  1421. DWORD APIENTRY RasGetEapUserIdentityW(
  1422. LPCWSTR pszPhonebook,
  1423. LPCWSTR pszEntry,
  1424. DWORD dwFlags,
  1425. HWND hwnd,
  1426. LPRASEAPUSERIDENTITYW* ppRasEapUserIdentity
  1427. );
  1428. DWORD APIENTRY RasGetEapUserIdentityA(
  1429. LPCSTR pszPhonebook,
  1430. LPCSTR pszEntry,
  1431. DWORD dwFlags,
  1432. HWND hwnd,
  1433. LPRASEAPUSERIDENTITYA* ppRasEapUserIdentity
  1434. );
  1435. VOID APIENTRY RasFreeEapUserIdentityW(
  1436. LPRASEAPUSERIDENTITYW pRasEapUserIdentity
  1437. );
  1438. VOID APIENTRY RasFreeEapUserIdentityA(
  1439. LPRASEAPUSERIDENTITYA pRasEapUserIdentity
  1440. );
  1441. #endif
  1442. #if (WINVER >= 0x501)
  1443. DWORD APIENTRY RasDeleteSubEntryA(
  1444. LPCSTR pszPhonebook,
  1445. LPCSTR pszEntry,
  1446. DWORD dwSubentryId);
  1447. DWORD APIENTRY RasDeleteSubEntryW(
  1448. LPCWSTR pszPhonebook,
  1449. LPCWSTR pszEntry,
  1450. DWORD dwSubEntryId);
  1451. #endif
  1452. #ifdef UNICODE
  1453. #define RasDial RasDialW
  1454. #define RasEnumConnections RasEnumConnectionsW
  1455. #define RasEnumEntries RasEnumEntriesW
  1456. #define RasGetConnectStatus RasGetConnectStatusW
  1457. #define RasGetErrorString RasGetErrorStringW
  1458. #define RasHangUp RasHangUpW
  1459. #define RasGetProjectionInfo RasGetProjectionInfoW
  1460. #define RasCreatePhonebookEntry RasCreatePhonebookEntryW
  1461. #define RasEditPhonebookEntry RasEditPhonebookEntryW
  1462. #define RasSetEntryDialParams RasSetEntryDialParamsW
  1463. #define RasGetEntryDialParams RasGetEntryDialParamsW
  1464. #define RasEnumDevices RasEnumDevicesW
  1465. #define RasGetCountryInfo RasGetCountryInfoW
  1466. #define RasGetEntryProperties RasGetEntryPropertiesW
  1467. #define RasSetEntryProperties RasSetEntryPropertiesW
  1468. #define RasRenameEntry RasRenameEntryW
  1469. #define RasDeleteEntry RasDeleteEntryW
  1470. #define RasValidateEntryName RasValidateEntryNameW
  1471. #if (WINVER >= 0x401)
  1472. #define RasGetSubEntryHandle RasGetSubEntryHandleW
  1473. #define RasConnectionNotification RasConnectionNotificationW
  1474. #define RasGetSubEntryProperties RasGetSubEntryPropertiesW
  1475. #define RasSetSubEntryProperties RasSetSubEntryPropertiesW
  1476. #define RasGetCredentials RasGetCredentialsW
  1477. #define RasSetCredentials RasSetCredentialsW
  1478. #define RasGetAutodialAddress RasGetAutodialAddressW
  1479. #define RasSetAutodialAddress RasSetAutodialAddressW
  1480. #define RasEnumAutodialAddresses RasEnumAutodialAddressesW
  1481. #define RasGetAutodialEnable RasGetAutodialEnableW
  1482. #define RasSetAutodialEnable RasSetAutodialEnableW
  1483. #define RasGetAutodialParam RasGetAutodialParamW
  1484. #define RasSetAutodialParam RasSetAutodialParamW
  1485. #endif
  1486. #if (WINVER >= 0x500)
  1487. #define RasGetEapUserData RasGetEapUserDataW
  1488. #define RasSetEapUserData RasSetEapUserDataW
  1489. #define RasGetCustomAuthData RasGetCustomAuthDataW
  1490. #define RasSetCustomAuthData RasSetCustomAuthDataW
  1491. #define RasGetEapUserIdentity RasGetEapUserIdentityW
  1492. #define RasFreeEapUserIdentity RasFreeEapUserIdentityW
  1493. #endif
  1494. #if(WINVER >= 0x501)
  1495. #define RasDeleteSubEntry RasDeleteSubEntryW
  1496. #endif
  1497. #else
  1498. #define RasDial RasDialA
  1499. #define RasEnumConnections RasEnumConnectionsA
  1500. #define RasEnumEntries RasEnumEntriesA
  1501. #define RasGetConnectStatus RasGetConnectStatusA
  1502. #define RasGetErrorString RasGetErrorStringA
  1503. #define RasHangUp RasHangUpA
  1504. #define RasGetProjectionInfo RasGetProjectionInfoA
  1505. #define RasCreatePhonebookEntry RasCreatePhonebookEntryA
  1506. #define RasEditPhonebookEntry RasEditPhonebookEntryA
  1507. #define RasSetEntryDialParams RasSetEntryDialParamsA
  1508. #define RasGetEntryDialParams RasGetEntryDialParamsA
  1509. #define RasEnumDevices RasEnumDevicesA
  1510. #define RasGetCountryInfo RasGetCountryInfoA
  1511. #define RasGetEntryProperties RasGetEntryPropertiesA
  1512. #define RasSetEntryProperties RasSetEntryPropertiesA
  1513. #define RasRenameEntry RasRenameEntryA
  1514. #define RasDeleteEntry RasDeleteEntryA
  1515. #define RasValidateEntryName RasValidateEntryNameA
  1516. #if (WINVER >= 0x401)
  1517. #define RasGetSubEntryHandle RasGetSubEntryHandleA
  1518. #define RasConnectionNotification RasConnectionNotificationA
  1519. #define RasGetSubEntryProperties RasGetSubEntryPropertiesA
  1520. #define RasSetSubEntryProperties RasSetSubEntryPropertiesA
  1521. #define RasGetCredentials RasGetCredentialsA
  1522. #define RasSetCredentials RasSetCredentialsA
  1523. #define RasGetAutodialAddress RasGetAutodialAddressA
  1524. #define RasSetAutodialAddress RasSetAutodialAddressA
  1525. #define RasEnumAutodialAddresses RasEnumAutodialAddressesA
  1526. #define RasGetAutodialEnable RasGetAutodialEnableA
  1527. #define RasSetAutodialEnable RasSetAutodialEnableA
  1528. #define RasGetAutodialParam RasGetAutodialParamA
  1529. #define RasSetAutodialParam RasSetAutodialParamA
  1530. #endif
  1531. #if (WINVER >= 0x500)
  1532. #define RasGetEapUserData RasGetEapUserDataA
  1533. #define RasSetEapUserData RasSetEapUserDataA
  1534. #define RasGetCustomAuthData RasGetCustomAuthDataA
  1535. #define RasSetCustomAuthData RasSetCustomAuthDataA
  1536. #define RasGetEapUserIdentity RasGetEapUserIdentityA
  1537. #define RasFreeEapUserIdentity RasFreeEapUserIdentityA
  1538. #endif
  1539. #if (WINVER >= 0x501)
  1540. #define RasDeleteSubEntry RasDeleteSubEntryA
  1541. #endif
  1542. #endif
  1543. #ifdef __cplusplus
  1544. }
  1545. #endif
  1546. #include <poppack.h>
  1547. #endif // _RAS_H_