1/**
   2 * This file is part of the mingw-w64 runtime package.
   3 * No warranty is given; refer to the file DISCLAIMER within this package.
   4 */
   5
   6#include <winapifamily.h>
   7
   8#ifndef _RAS_H_
   9#define _RAS_H_
  10
  11#include <_mingw_unicode.h>
  12
  13#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
  14
  15#include <inaddr.h>
  16#include <in6addr.h>
  17#include <naptypes.h>
  18
  19#ifdef __cplusplus
  20extern "C" {
  21#endif
  22
  23typedef struct in_addr RASIPV4ADDR;
  24typedef struct in6_addr RASIPV6ADDR;
  25
  26
  27#ifndef UNLEN
  28#include <lmcons.h>
  29#endif
  30
  31#include <pshpack4.h>
  32
  33#define RAS_MaxDeviceType 16
  34#define RAS_MaxPhoneNumber 128
  35#define RAS_MaxIpAddress 15
  36#define RAS_MaxIpxAddress 21
  37
  38#define RAS_MaxEntryName 256
  39#define RAS_MaxDeviceName 128
  40#define RAS_MaxCallbackNumber RAS_MaxPhoneNumber
  41#define RAS_MaxAreaCode 10
  42#define RAS_MaxPadType 32
  43#define RAS_MaxX25Address 200
  44#define RAS_MaxFacilities 200
  45#define RAS_MaxUserData 200
  46#define RAS_MaxReplyMessage 1024
  47#define RAS_MaxDnsSuffix 256
  48
  49  DECLARE_HANDLE(HRASCONN);
  50#define LPHRASCONN HRASCONN*
  51
  52#define RASCF_AllUsers 0x00000001
  53#define RASCF_GlobalCreds 0x00000002
  54
  55#define RASCONNW struct tagRASCONNW
  56  RASCONNW {
  57    DWORD dwSize;
  58    HRASCONN hrasconn;
  59    WCHAR szEntryName[RAS_MaxEntryName + 1 ];
  60
  61    WCHAR szDeviceType[RAS_MaxDeviceType + 1 ];
  62    WCHAR szDeviceName[RAS_MaxDeviceName + 1 ];
  63    WCHAR szPhonebook [MAX_PATH ];
  64    DWORD dwSubEntry;
  65    GUID guidEntry;
  66    DWORD dwFlags;
  67    LUID luid;
  68  };
  69
  70#define RASCONNA struct tagRASCONNA
  71  RASCONNA {
  72    DWORD dwSize;
  73    HRASCONN hrasconn;
  74    CHAR szEntryName[RAS_MaxEntryName + 1 ];
  75    CHAR szDeviceType[RAS_MaxDeviceType + 1 ];
  76    CHAR szDeviceName[RAS_MaxDeviceName + 1 ];
  77    CHAR szPhonebook [MAX_PATH ];
  78    DWORD dwSubEntry;
  79    GUID guidEntry;
  80    DWORD dwFlags;
  81    LUID luid;
  82  };
  83
  84#define RASCONN __MINGW_NAME_AW(RASCONN)
  85
  86#define LPRASCONNW RASCONNW*
  87#define LPRASCONNA RASCONNA*
  88#define LPRASCONN RASCONN*
  89
  90#define RASCS_PAUSED 0x1000
  91#define RASCS_DONE 0x2000
  92
  93#define RASCONNSTATE enum tagRASCONNSTATE
  94  RASCONNSTATE {
  95    RASCS_OpenPort = 0,RASCS_PortOpened,RASCS_ConnectDevice,RASCS_DeviceConnected,RASCS_AllDevicesConnected,RASCS_Authenticate,
  96    RASCS_AuthNotify,RASCS_AuthRetry,RASCS_AuthCallback,RASCS_AuthChangePassword,RASCS_AuthProject,RASCS_AuthLinkSpeed,
  97    RASCS_AuthAck,RASCS_ReAuthenticate,RASCS_Authenticated,RASCS_PrepareForCallback,RASCS_WaitForModemReset,RASCS_WaitForCallback,RASCS_Projected,
  98    RASCS_StartAuthentication,RASCS_CallbackComplete,RASCS_LogonNetwork,RASCS_SubEntryConnected,
  99    RASCS_SubEntryDisconnected,RASCS_Interactive = RASCS_PAUSED,RASCS_RetryAuthentication,RASCS_CallbackSetByCaller,RASCS_PasswordExpired,
 100    RASCS_InvokeEapUI,RASCS_Connected = RASCS_DONE,RASCS_Disconnected
 101  };
 102
 103#define LPRASCONNSTATE RASCONNSTATE*
 104
 105#define RASCONNSTATUSW struct tagRASCONNSTATUSW
 106  RASCONNSTATUSW {
 107    DWORD dwSize;
 108    RASCONNSTATE rasconnstate;
 109    DWORD dwError;
 110    WCHAR szDeviceType[RAS_MaxDeviceType + 1 ];
 111    WCHAR szDeviceName[RAS_MaxDeviceName + 1 ];
 112    WCHAR szPhoneNumber[RAS_MaxPhoneNumber + 1 ];
 113  };
 114
 115#define RASCONNSTATUSA struct tagRASCONNSTATUSA
 116  RASCONNSTATUSA {
 117    DWORD dwSize;
 118    RASCONNSTATE rasconnstate;
 119    DWORD dwError;
 120    CHAR szDeviceType[RAS_MaxDeviceType + 1 ];
 121    CHAR szDeviceName[RAS_MaxDeviceName + 1 ];
 122    CHAR szPhoneNumber[RAS_MaxPhoneNumber + 1 ];
 123  };
 124
 125#define RASCONNSTATUS __MINGW_NAME_AW(RASCONNSTATUS)
 126
 127#define LPRASCONNSTATUSW RASCONNSTATUSW*
 128#define LPRASCONNSTATUSA RASCONNSTATUSA*
 129#define LPRASCONNSTATUS RASCONNSTATUS*
 130
 131#define RASDIALPARAMSW struct tagRASDIALPARAMSW
 132  RASDIALPARAMSW {
 133    DWORD dwSize;
 134    WCHAR szEntryName[RAS_MaxEntryName + 1 ];
 135    WCHAR szPhoneNumber[RAS_MaxPhoneNumber + 1 ];
 136    WCHAR szCallbackNumber[RAS_MaxCallbackNumber + 1 ];
 137    WCHAR szUserName[UNLEN + 1 ];
 138    WCHAR szPassword[PWLEN + 1 ];
 139    WCHAR szDomain[DNLEN + 1 ];
 140    DWORD dwSubEntry;
 141    ULONG_PTR dwCallbackId;
 142#if _WIN32_WINNT >= 0x0601
 143    DWORD dwIfIndex;
 144#endif
 145  };
 146
 147#define RASDIALPARAMSA struct tagRASDIALPARAMSA
 148  RASDIALPARAMSA {
 149    DWORD dwSize;
 150    CHAR szEntryName[RAS_MaxEntryName + 1 ];
 151    CHAR szPhoneNumber[RAS_MaxPhoneNumber + 1 ];
 152    CHAR szCallbackNumber[RAS_MaxCallbackNumber + 1 ];
 153    CHAR szUserName[UNLEN + 1 ];
 154    CHAR szPassword[PWLEN + 1 ];
 155    CHAR szDomain[DNLEN + 1 ];
 156    DWORD dwSubEntry;
 157    ULONG_PTR dwCallbackId;
 158#if _WIN32_WINNT >= 0x0601
 159    DWORD dwIfIndex;
 160#endif
 161  };
 162
 163#define RASDIALPARAMS __MINGW_NAME_AW(RASDIALPARAMS)
 164
 165#define LPRASDIALPARAMSW RASDIALPARAMSW*
 166#define LPRASDIALPARAMSA RASDIALPARAMSA*
 167#define LPRASDIALPARAMS RASDIALPARAMS*
 168
 169#define RASEAPINFO struct tagRASEAPINFO
 170  RASEAPINFO {
 171    DWORD dwSizeofEapInfo;
 172    BYTE *pbEapInfo;
 173  };
 174
 175#define RASDIALEXTENSIONS struct tagRASDIALEXTENSIONS
 176  RASDIALEXTENSIONS {
 177    DWORD dwSize;
 178    DWORD dwfOptions;
 179    HWND hwndParent;
 180    ULONG_PTR reserved;
 181    ULONG_PTR reserved1;
 182    RASEAPINFO RasEapInfo;
 183  };
 184
 185#define LPRASDIALEXTENSIONS RASDIALEXTENSIONS*
 186
 187#define RDEOPT_UsePrefixSuffix 0x00000001
 188#define RDEOPT_PausedStates 0x00000002
 189#define RDEOPT_IgnoreModemSpeaker 0x00000004
 190#define RDEOPT_SetModemSpeaker 0x00000008
 191#define RDEOPT_IgnoreSoftwareCompression 0x00000010
 192#define RDEOPT_SetSoftwareCompression 0x00000020
 193#define RDEOPT_DisableConnectedUI 0x00000040
 194#define RDEOPT_DisableReconnectUI 0x00000080
 195#define RDEOPT_DisableReconnect 0x00000100
 196#define RDEOPT_NoUser 0x00000200
 197#define RDEOPT_PauseOnScript 0x00000400
 198#define RDEOPT_Router 0x00000800
 199#define RDEOPT_CustomDial 0x00001000
 200#define RDEOPT_UseCustomScripting 0x00002000
 201
 202#define REN_User 0x00000000
 203#define REN_AllUsers 0x00000001
 204
 205#define RASENTRYNAMEW struct tagRASENTRYNAMEW
 206  RASENTRYNAMEW {
 207    DWORD dwSize;
 208    WCHAR szEntryName[RAS_MaxEntryName + 1 ];
 209    DWORD dwFlags;
 210    WCHAR szPhonebookPath[MAX_PATH + 1];
 211  };
 212
 213#define RASENTRYNAMEA struct tagRASENTRYNAMEA
 214  RASENTRYNAMEA {
 215    DWORD dwSize;
 216    CHAR szEntryName[RAS_MaxEntryName + 1 ];
 217    DWORD dwFlags;
 218    CHAR szPhonebookPath[MAX_PATH + 1];
 219  };
 220
 221#define RASENTRYNAME __MINGW_NAME_AW(RASENTRYNAME)
 222
 223#define LPRASENTRYNAMEW RASENTRYNAMEW*
 224#define LPRASENTRYNAMEA RASENTRYNAMEA*
 225#define LPRASENTRYNAME RASENTRYNAME*
 226
 227#define RASPROJECTION enum tagRASPROJECTION
 228  RASPROJECTION {
 229    RASP_Amb = 0x10000,RASP_PppNbf = 0x803F,RASP_PppIpx = 0x802B,RASP_PppIp = 0x8021,
 230    RASP_PppCcp = 0x80FD,RASP_PppLcp = 0xC021,RASP_Slip = 0x20000
 231  };
 232
 233#define LPRASPROJECTION RASPROJECTION *
 234
 235#define RASAMBW struct tagRASAMBW
 236  RASAMBW {
 237    DWORD dwSize;
 238    DWORD dwError;
 239    WCHAR szNetBiosError[NETBIOS_NAME_LEN + 1 ];
 240    BYTE bLana;
 241  };
 242
 243#define RASAMBA struct tagRASAMBA
 244  RASAMBA {
 245    DWORD dwSize;
 246    DWORD dwError;
 247    CHAR szNetBiosError[NETBIOS_NAME_LEN + 1 ];
 248    BYTE bLana;
 249  };
 250
 251#define RASAMB __MINGW_NAME_AW(RASAMB)
 252
 253#define LPRASAMBW RASAMBW*
 254#define LPRASAMBA RASAMBA*
 255#define LPRASAMB RASAMB*
 256
 257#define RASPPPNBFW struct tagRASPPPNBFW
 258  RASPPPNBFW {
 259    DWORD dwSize;
 260    DWORD dwError;
 261    DWORD dwNetBiosError;
 262    WCHAR szNetBiosError[NETBIOS_NAME_LEN + 1 ];
 263    WCHAR szWorkstationName[NETBIOS_NAME_LEN + 1 ];
 264    BYTE bLana;
 265  };
 266
 267#define RASPPPNBFA struct tagRASPPPNBFA
 268  RASPPPNBFA {
 269    DWORD dwSize;
 270    DWORD dwError;
 271    DWORD dwNetBiosError;
 272    CHAR szNetBiosError[NETBIOS_NAME_LEN + 1 ];
 273    CHAR szWorkstationName[NETBIOS_NAME_LEN + 1 ];
 274    BYTE bLana;
 275  };
 276
 277#define RASPPPNBF __MINGW_NAME_AW(RASPPPNBF)
 278
 279#define LPRASPPPNBFW RASPPPNBFW*
 280#define LPRASPPPNBFA RASPPPNBFA*
 281#define LPRASPPPNBF RASPPPNBF*
 282
 283#define RASPPPIPXW struct tagRASIPXW
 284  RASPPPIPXW {
 285    DWORD dwSize;
 286    DWORD dwError;
 287    WCHAR szIpxAddress[RAS_MaxIpxAddress + 1 ];
 288  };
 289
 290#define RASPPPIPXA struct tagRASPPPIPXA
 291  RASPPPIPXA {
 292    DWORD dwSize;
 293    DWORD dwError;
 294    CHAR szIpxAddress[RAS_MaxIpxAddress + 1 ];
 295  };
 296
 297#define RASPPPIPX __MINGW_NAME_AW(RASPPPIPX)
 298
 299#define LPRASPPPIPXW RASPPPIPXW *
 300#define LPRASPPPIPXA RASPPPIPXA *
 301#define LPRASPPPIPX RASPPPIPX *
 302
 303#define RASIPO_VJ 0x00000001
 304
 305#define RASPPPIPW struct tagRASPPPIPW
 306  RASPPPIPW {
 307    DWORD dwSize;
 308    DWORD dwError;
 309    WCHAR szIpAddress[RAS_MaxIpAddress + 1 ];
 310
 311#ifndef WINNT35COMPATIBLE
 312
 313    WCHAR szServerIpAddress[RAS_MaxIpAddress + 1 ];
 314#endif
 315    DWORD dwOptions;
 316    DWORD dwServerOptions;
 317  };
 318
 319#define RASPPPIPA struct tagRASPPPIPA
 320  RASPPPIPA {
 321    DWORD dwSize;
 322    DWORD dwError;
 323    CHAR szIpAddress[RAS_MaxIpAddress + 1 ];
 324#ifndef WINNT35COMPATIBLE
 325    CHAR szServerIpAddress[RAS_MaxIpAddress + 1 ];
 326#endif
 327    DWORD dwOptions;
 328    DWORD dwServerOptions;
 329  };
 330
 331#define RASPPPIP __MINGW_NAME_AW(RASPPPIP)
 332
 333#define LPRASPPPIPW RASPPPIPW*
 334#define LPRASPPPIPA RASPPPIPA*
 335#define LPRASPPPIP RASPPPIP*
 336
 337#define RASLCPAP_PAP 0xC023
 338#define RASLCPAP_SPAP 0xC027
 339#define RASLCPAP_CHAP 0xC223
 340#define RASLCPAP_EAP 0xC227
 341
 342#define RASLCPAD_CHAP_MD5 0x05
 343#define RASLCPAD_CHAP_MS 0x80
 344#define RASLCPAD_CHAP_MSV2 0x81
 345
 346#define RASLCPO_PFC 0x00000001
 347#define RASLCPO_ACFC 0x00000002
 348#define RASLCPO_SSHF 0x00000004
 349#define RASLCPO_DES_56 0x00000008
 350#define RASLCPO_3_DES 0x00000010
 351
 352#define RASPPPLCPW struct tagRASPPPLCPW
 353  RASPPPLCPW {
 354    DWORD dwSize;
 355    WINBOOL fBundled;
 356    DWORD dwError;
 357    DWORD dwAuthenticationProtocol;
 358    DWORD dwAuthenticationData;
 359    DWORD dwEapTypeId;
 360    DWORD dwServerAuthenticationProtocol;
 361    DWORD dwServerAuthenticationData;
 362    DWORD dwServerEapTypeId;
 363    WINBOOL fMultilink;
 364    DWORD dwTerminateReason;
 365    DWORD dwServerTerminateReason;
 366    WCHAR szReplyMessage[RAS_MaxReplyMessage];
 367    DWORD dwOptions;
 368    DWORD dwServerOptions;
 369  };
 370
 371#define RASPPPLCPA struct tagRASPPPLCPA
 372  RASPPPLCPA {
 373    DWORD dwSize;
 374    WINBOOL fBundled;
 375    DWORD dwError;
 376    DWORD dwAuthenticationProtocol;
 377    DWORD dwAuthenticationData;
 378    DWORD dwEapTypeId;
 379    DWORD dwServerAuthenticationProtocol;
 380    DWORD dwServerAuthenticationData;
 381    DWORD dwServerEapTypeId;
 382    WINBOOL fMultilink;
 383    DWORD dwTerminateReason;
 384    DWORD dwServerTerminateReason;
 385    CHAR szReplyMessage[RAS_MaxReplyMessage];
 386    DWORD dwOptions;
 387    DWORD dwServerOptions;
 388  };
 389
 390#define RASPPPLCP __MINGW_NAME_AW(RASPPPLCP)
 391
 392#define LPRASPPPLCPW RASPPPLCPW *
 393#define LPRASPPPLCPA RASPPPLCPA *
 394#define LPRASPPPLCP RASPPPLCP *
 395
 396#define RASSLIPW struct tagRASSLIPW
 397  RASSLIPW {
 398    DWORD dwSize;
 399    DWORD dwError;
 400    WCHAR szIpAddress[RAS_MaxIpAddress + 1 ];
 401  };
 402
 403#define RASSLIPA struct tagRASSLIPA
 404  RASSLIPA {
 405    DWORD dwSize;
 406    DWORD dwError;
 407    CHAR szIpAddress[RAS_MaxIpAddress + 1 ];
 408  };
 409
 410#define RASSLIP __MINGW_NAME_AW(RASSLIP)
 411
 412#define LPRASSLIPW RASSLIPW*
 413#define LPRASSLIPA RASSLIPA*
 414#define LPRASSLIP RASSLIP*
 415
 416#define RASCCPCA_MPPC 0x00000006
 417#define RASCCPCA_STAC 0x00000005
 418
 419#define RASCCPO_Compression 0x00000001
 420#define RASCCPO_HistoryLess 0x00000002
 421#define RASCCPO_Encryption56bit 0x00000010
 422#define RASCCPO_Encryption40bit 0x00000020
 423#define RASCCPO_Encryption128bit 0x00000040
 424
 425#define RASPPPCCP struct tagRASPPPCCP
 426  RASPPPCCP {
 427    DWORD dwSize;
 428    DWORD dwError;
 429    DWORD dwCompressionAlgorithm;
 430    DWORD dwOptions;
 431    DWORD dwServerCompressionAlgorithm;
 432    DWORD dwServerOptions;
 433  };
 434
 435#define LPRASPPPCCP RASPPPCCP *
 436
 437#define RASDIALEVENT "RasDialEvent"
 438#define WM_RASDIALEVENT 0xCCCD
 439
 440  typedef VOID (WINAPI *RASDIALFUNC)(UINT,RASCONNSTATE,DWORD);
 441  typedef VOID (WINAPI *RASDIALFUNC1)(HRASCONN,UINT,RASCONNSTATE,DWORD,DWORD);
 442  typedef DWORD (WINAPI *RASDIALFUNC2)(ULONG_PTR,DWORD,HRASCONN,UINT,RASCONNSTATE,DWORD,DWORD);
 443
 444#define RASDEVINFOW struct tagRASDEVINFOW
 445  RASDEVINFOW {
 446    DWORD dwSize;
 447    WCHAR szDeviceType[RAS_MaxDeviceType + 1 ];
 448    WCHAR szDeviceName[RAS_MaxDeviceName + 1 ];
 449  };
 450
 451#define RASDEVINFOA struct tagRASDEVINFOA
 452  RASDEVINFOA {
 453    DWORD dwSize;
 454    CHAR szDeviceType[RAS_MaxDeviceType + 1 ];
 455    CHAR szDeviceName[RAS_MaxDeviceName + 1 ];
 456  };
 457
 458#define RASDEVINFO __MINGW_NAME_AW(RASDEVINFO)
 459
 460#define LPRASDEVINFOW RASDEVINFOW*
 461#define LPRASDEVINFOA RASDEVINFOA*
 462#define LPRASDEVINFO RASDEVINFO*
 463
 464#define RASCTRYINFO struct RASCTRYINFO
 465  RASCTRYINFO {
 466    DWORD dwSize;
 467    DWORD dwCountryID;
 468    DWORD dwNextCountryID;
 469    DWORD dwCountryCode;
 470    DWORD dwCountryNameOffset;
 471  };
 472
 473#define RASCTRYINFOW RASCTRYINFO
 474#define RASCTRYINFOA RASCTRYINFO
 475
 476#define LPRASCTRYINFOW RASCTRYINFOW*
 477#define LPRASCTRYINFOA RASCTRYINFOW*
 478#define LPRASCTRYINFO RASCTRYINFO*
 479
 480#define RASIPADDR struct RASIPADDR
 481  RASIPADDR {
 482    BYTE a;
 483    BYTE b;
 484    BYTE c;
 485    BYTE d;
 486  };
 487
 488#define ET_None 0
 489#define ET_Require 1
 490#define ET_RequireMax 2
 491#define ET_Optional 3
 492
 493#define VS_Default 0
 494#define VS_PptpOnly 1
 495#define VS_PptpFirst 2
 496#define VS_L2tpOnly 3
 497#define VS_L2tpFirst 4
 498
 499#define RASENTRYA struct tagRASENTRYA
 500  RASENTRYA {
 501    DWORD dwSize;
 502    DWORD dwfOptions;
 503    DWORD dwCountryID;
 504    DWORD dwCountryCode;
 505    CHAR szAreaCode[RAS_MaxAreaCode + 1 ];
 506    CHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1 ];
 507    DWORD dwAlternateOffset;
 508    RASIPADDR ipaddr;
 509    RASIPADDR ipaddrDns;
 510    RASIPADDR ipaddrDnsAlt;
 511    RASIPADDR ipaddrWins;
 512    RASIPADDR ipaddrWinsAlt;
 513    DWORD dwFrameSize;
 514    DWORD dwfNetProtocols;
 515    DWORD dwFramingProtocol;
 516    CHAR szScript[MAX_PATH ];
 517    CHAR szAutodialDll[MAX_PATH ];
 518    CHAR szAutodialFunc[MAX_PATH ];
 519    CHAR szDeviceType[RAS_MaxDeviceType + 1 ];
 520    CHAR szDeviceName[RAS_MaxDeviceName + 1 ];
 521    CHAR szX25PadType[RAS_MaxPadType + 1 ];
 522    CHAR szX25Address[RAS_MaxX25Address + 1 ];
 523    CHAR szX25Facilities[RAS_MaxFacilities + 1 ];
 524    CHAR szX25UserData[RAS_MaxUserData + 1 ];
 525    DWORD dwChannels;
 526    DWORD dwReserved1;
 527    DWORD dwReserved2;
 528    DWORD dwSubEntries;
 529    DWORD dwDialMode;
 530    DWORD dwDialExtraPercent;
 531    DWORD dwDialExtraSampleSeconds;
 532    DWORD dwHangUpExtraPercent;
 533    DWORD dwHangUpExtraSampleSeconds;
 534    DWORD dwIdleDisconnectSeconds;
 535    DWORD dwType;
 536    DWORD dwEncryptionType;
 537    DWORD dwCustomAuthKey;
 538    GUID guidId;
 539    CHAR szCustomDialDll[MAX_PATH];
 540    DWORD dwVpnStrategy;
 541    DWORD dwfOptions2;
 542    DWORD dwfOptions3;
 543    CHAR szDnsSuffix[RAS_MaxDnsSuffix];
 544    DWORD dwTcpWindowSize;
 545    CHAR szPrerequisitePbk[MAX_PATH];
 546    CHAR szPrerequisiteEntry[RAS_MaxEntryName + 1];
 547    DWORD dwRedialCount;
 548    DWORD dwRedialPause;
 549  };
 550
 551#define RASENTRYW struct tagRASENTRYW
 552  RASENTRYW {
 553    DWORD dwSize;
 554    DWORD dwfOptions;
 555    DWORD dwCountryID;
 556    DWORD dwCountryCode;
 557    WCHAR szAreaCode[RAS_MaxAreaCode + 1 ];
 558    WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1 ];
 559    DWORD dwAlternateOffset;
 560    RASIPADDR ipaddr;
 561    RASIPADDR ipaddrDns;
 562    RASIPADDR ipaddrDnsAlt;
 563    RASIPADDR ipaddrWins;
 564    RASIPADDR ipaddrWinsAlt;
 565    DWORD dwFrameSize;
 566    DWORD dwfNetProtocols;
 567    DWORD dwFramingProtocol;
 568    WCHAR szScript[MAX_PATH ];
 569    WCHAR szAutodialDll[MAX_PATH ];
 570    WCHAR szAutodialFunc[MAX_PATH ];
 571    WCHAR szDeviceType[RAS_MaxDeviceType + 1 ];
 572    WCHAR szDeviceName[RAS_MaxDeviceName + 1 ];
 573    WCHAR szX25PadType[RAS_MaxPadType + 1 ];
 574    WCHAR szX25Address[RAS_MaxX25Address + 1 ];
 575    WCHAR szX25Facilities[RAS_MaxFacilities + 1 ];
 576    WCHAR szX25UserData[RAS_MaxUserData + 1 ];
 577    DWORD dwChannels;
 578    DWORD dwReserved1;
 579    DWORD dwReserved2;
 580    DWORD dwSubEntries;
 581    DWORD dwDialMode;
 582    DWORD dwDialExtraPercent;
 583    DWORD dwDialExtraSampleSeconds;
 584    DWORD dwHangUpExtraPercent;
 585    DWORD dwHangUpExtraSampleSeconds;
 586    DWORD dwIdleDisconnectSeconds;
 587    DWORD dwType;
 588    DWORD dwEncryptionType;
 589    DWORD dwCustomAuthKey;
 590    GUID guidId;
 591    WCHAR szCustomDialDll[MAX_PATH];
 592    DWORD dwVpnStrategy;
 593    DWORD dwfOptions2;
 594    DWORD dwfOptions3;
 595    WCHAR szDnsSuffix[RAS_MaxDnsSuffix];
 596    DWORD dwTcpWindowSize;
 597    WCHAR szPrerequisitePbk[MAX_PATH];
 598    WCHAR szPrerequisiteEntry[RAS_MaxEntryName + 1];
 599    DWORD dwRedialCount;
 600    DWORD dwRedialPause;
 601  };
 602
 603#define RASENTRY __MINGW_NAME_AW(RASENTRY)
 604
 605#define LPRASENTRYW RASENTRYW*
 606#define LPRASENTRYA RASENTRYA*
 607#define LPRASENTRY RASENTRY*
 608
 609#define RASEO_UseCountryAndAreaCodes 0x00000001
 610#define RASEO_SpecificIpAddr 0x00000002
 611#define RASEO_SpecificNameServers 0x00000004
 612#define RASEO_IpHeaderCompression 0x00000008
 613#define RASEO_RemoteDefaultGateway 0x00000010
 614#define RASEO_DisableLcpExtensions 0x00000020
 615#define RASEO_TerminalBeforeDial 0x00000040
 616#define RASEO_TerminalAfterDial 0x00000080
 617#define RASEO_ModemLights 0x00000100
 618#define RASEO_SwCompression 0x00000200
 619#define RASEO_RequireEncryptedPw 0x00000400
 620#define RASEO_RequireMsEncryptedPw 0x00000800
 621#define RASEO_RequireDataEncryption 0x00001000
 622#define RASEO_NetworkLogon 0x00002000
 623#define RASEO_UseLogonCredentials 0x00004000
 624#define RASEO_PromoteAlternates 0x00008000
 625#define RASEO_SecureLocalFiles 0x00010000
 626#define RASEO_RequireEAP 0x00020000
 627#define RASEO_RequirePAP 0x00040000
 628#define RASEO_RequireSPAP 0x00080000
 629#define RASEO_Custom 0x00100000
 630#define RASEO_PreviewPhoneNumber 0x00200000
 631#define RASEO_SharedPhoneNumbers 0x00800000
 632#define RASEO_PreviewUserPw 0x01000000
 633#define RASEO_PreviewDomain 0x02000000
 634#define RASEO_ShowDialingProgress 0x04000000
 635#define RASEO_RequireCHAP 0x08000000
 636#define RASEO_RequireMsCHAP 0x10000000
 637#define RASEO_RequireMsCHAP2 0x20000000
 638#define RASEO_RequireW95MSCHAP 0x40000000
 639#define RASEO_CustomScript 0x80000000
 640
 641#define RASEO2_SecureFileAndPrint 0x00000001
 642#define RASEO2_SecureClientForMSNet 0x00000002
 643#define RASEO2_DontNegotiateMultilink 0x00000004
 644#define RASEO2_DontUseRasCredentials 0x00000008
 645#define RASEO2_UsePreSharedKey 0x00000010
 646#define RASEO2_Internet 0x00000020
 647#define RASEO2_DisableNbtOverIP 0x00000040
 648#define RASEO2_UseGlobalDeviceSettings 0x00000080
 649#define RASEO2_ReconnectIfDropped 0x00000100
 650#define RASEO2_SharePhoneNumbers 0x00000200
 651
 652#define RASNP_NetBEUI 0x00000001
 653#define RASNP_Ipx 0x00000002
 654#define RASNP_Ip 0x00000004
 655
 656#define RASFP_Ppp 0x00000001
 657#define RASFP_Slip 0x00000002
 658#define RASFP_Ras 0x00000004
 659
 660#define RASDT_Modem TEXT("modem")
 661#define RASDT_Isdn TEXT("isdn")
 662#define RASDT_X25 TEXT("x25")
 663#define RASDT_Vpn TEXT("vpn")
 664#define RASDT_Pad TEXT("pad")
 665#define RASDT_Generic TEXT("GENERIC")
 666#define RASDT_Serial TEXT("SERIAL")
 667#define RASDT_FrameRelay TEXT("FRAMERELAY")
 668#define RASDT_Atm TEXT("ATM")
 669#define RASDT_Sonet TEXT("SONET")
 670#define RASDT_SW56 TEXT("SW56")
 671#define RASDT_Irda TEXT("IRDA")
 672#define RASDT_Parallel TEXT("PARALLEL")
 673#define RASDT_PPPoE TEXT("PPPoE")
 674
 675#define RASET_Phone 1
 676#define RASET_Vpn 2
 677#define RASET_Direct 3
 678#define RASET_Internet 4
 679#define RASET_Broadband 5
 680
 681  typedef WINBOOL (WINAPI *ORASADFUNC)(HWND,LPSTR,DWORD,LPDWORD);
 682
 683#define RASCN_Connection 0x00000001
 684#define RASCN_Disconnection 0x00000002
 685#define RASCN_BandwidthAdded 0x00000004
 686#define RASCN_BandwidthRemoved 0x00000008
 687
 688#define RASEDM_DialAll 1
 689#define RASEDM_DialAsNeeded 2
 690
 691#define RASIDS_Disabled 0xffffffff
 692#define RASIDS_UseGlobalValue 0
 693
 694#define RASADPARAMS struct tagRASADPARAMS
 695  RASADPARAMS {
 696    DWORD dwSize;
 697    HWND hwndOwner;
 698    DWORD dwFlags;
 699    LONG xDlg;
 700    LONG yDlg;
 701  };
 702
 703#define LPRASADPARAMS RASADPARAMS*
 704
 705#define RASADFLG_PositionDlg 0x00000001
 706
 707  typedef WINBOOL (WINAPI *RASADFUNCA)(LPSTR,LPSTR,LPRASADPARAMS,LPDWORD);
 708  typedef WINBOOL (WINAPI *RASADFUNCW)(LPWSTR,LPWSTR,LPRASADPARAMS,LPDWORD);
 709
 710#define RASADFUNC __MINGW_NAME_AW(RASADFUNC)
 711
 712#define RASSUBENTRYA struct tagRASSUBENTRYA
 713  RASSUBENTRYA {
 714    DWORD dwSize;
 715    DWORD dwfFlags;
 716    CHAR szDeviceType[RAS_MaxDeviceType + 1 ];
 717    CHAR szDeviceName[RAS_MaxDeviceName + 1 ];
 718    CHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1 ];
 719    DWORD dwAlternateOffset;
 720  };
 721
 722#define RASSUBENTRYW struct tagRASSUBENTRYW
 723  RASSUBENTRYW {
 724    DWORD dwSize;
 725    DWORD dwfFlags;
 726    WCHAR szDeviceType[RAS_MaxDeviceType + 1 ];
 727    WCHAR szDeviceName[RAS_MaxDeviceName + 1 ];
 728    WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1 ];
 729    DWORD dwAlternateOffset;
 730  };
 731
 732#define RASSUBENTRY __MINGW_NAME_AW(RASSUBENTRY)
 733
 734#define LPRASSUBENTRYW RASSUBENTRYW*
 735#define LPRASSUBENTRYA RASSUBENTRYA*
 736#define LPRASSUBENTRY RASSUBENTRY*
 737
 738#define RASCREDENTIALSA struct tagRASCREDENTIALSA
 739  RASCREDENTIALSA {
 740    DWORD dwSize;
 741    DWORD dwMask;
 742    CHAR szUserName[UNLEN + 1 ];
 743    CHAR szPassword[PWLEN + 1 ];
 744    CHAR szDomain[DNLEN + 1 ];
 745  };
 746
 747#define RASCREDENTIALSW struct tagRASCREDENTIALSW
 748  RASCREDENTIALSW {
 749    DWORD dwSize;
 750    DWORD dwMask;
 751    WCHAR szUserName[UNLEN + 1 ];
 752    WCHAR szPassword[PWLEN + 1 ];
 753    WCHAR szDomain[DNLEN + 1 ];
 754  };
 755
 756#define RASCREDENTIALS __MINGW_NAME_AW(RASCREDENTIALS)
 757
 758#define LPRASCREDENTIALSW RASCREDENTIALSW*
 759#define LPRASCREDENTIALSA RASCREDENTIALSA*
 760#define LPRASCREDENTIALS RASCREDENTIALS*
 761
 762#define RASCM_UserName 0x00000001
 763#define RASCM_Password 0x00000002
 764#define RASCM_Domain 0x00000004
 765#define RASCM_DefaultCreds 0x00000008
 766#define RASCM_PreSharedKey 0x00000010
 767#define RASCM_ServerPreSharedKey 0x00000020
 768#define RASCM_DDMPreSharedKey 0x00000040
 769
 770#define RASAUTODIALENTRYA struct tagRASAUTODIALENTRYA
 771  RASAUTODIALENTRYA {
 772    DWORD dwSize;
 773    DWORD dwFlags;
 774    DWORD dwDialingLocation;
 775    CHAR szEntry[RAS_MaxEntryName + 1];
 776  };
 777
 778#define RASAUTODIALENTRYW struct tagRASAUTODIALENTRYW
 779  RASAUTODIALENTRYW {
 780    DWORD dwSize;
 781    DWORD dwFlags;
 782    DWORD dwDialingLocation;
 783    WCHAR szEntry[RAS_MaxEntryName + 1];
 784  };
 785
 786#define RASAUTODIALENTRY __MINGW_NAME_AW(RASAUTODIALENTRY)
 787
 788#define LPRASAUTODIALENTRYW RASAUTODIALENTRYW*
 789#define LPRASAUTODIALENTRYA RASAUTODIALENTRYA*
 790#define LPRASAUTODIALENTRY RASAUTODIALENTRY*
 791
 792#define RASADP_DisableConnectionQuery 0
 793#define RASADP_LoginSessionDisable 1
 794#define RASADP_SavedAddressesLimit 2
 795#define RASADP_FailedConnectionTimeout 3
 796#define RASADP_ConnectionQueryTimeout 4
 797
 798#define RASEAPF_NonInteractive 0x00000002
 799#define RASEAPF_Logon 0x00000004
 800#define RASEAPF_Preview 0x00000008
 801
 802#define RASEAPUSERIDENTITYA struct tagRASEAPUSERIDENTITYA
 803  RASEAPUSERIDENTITYA {
 804    CHAR szUserName[UNLEN + 1 ];
 805    DWORD dwSizeofEapInfo;
 806    BYTE pbEapInfo[1 ];
 807  };
 808
 809#define RASEAPUSERIDENTITYW struct tagRASEAPUSERIDENTITYW
 810  RASEAPUSERIDENTITYW {
 811    WCHAR szUserName[UNLEN + 1 ];
 812    DWORD dwSizeofEapInfo;
 813    BYTE pbEapInfo[1 ];
 814  };
 815
 816#define RASEAPUSERIDENTITY __MINGW_NAME_AW(RASEAPUSERIDENTITY)
 817
 818#define LPRASEAPUSERIDENTITYW RASEAPUSERIDENTITYW*
 819#define LPRASEAPUSERIDENTITYA RASEAPUSERIDENTITYA*
 820
 821  typedef DWORD (WINAPI *PFNRASGETBUFFER) (PBYTE *ppBuffer,PDWORD pdwSize);
 822  typedef DWORD (WINAPI *PFNRASFREEBUFFER) (PBYTE pBufer);
 823  typedef DWORD (WINAPI *PFNRASSENDBUFFER) (HANDLE hPort,PBYTE pBuffer,DWORD dwSize);
 824  typedef DWORD (WINAPI *PFNRASRECEIVEBUFFER) (HANDLE hPort,PBYTE pBuffer,PDWORD pdwSize,DWORD dwTimeOut,HANDLE hEvent);
 825  typedef DWORD (WINAPI *PFNRASRETRIEVEBUFFER) (HANDLE hPort,PBYTE pBuffer,PDWORD pdwSize);
 826  typedef DWORD (WINAPI *RasCustomScriptExecuteFn) (HANDLE hPort,LPCWSTR lpszPhonebook,LPCWSTR lpszEntryName,PFNRASGETBUFFER pfnRasGetBuffer,PFNRASFREEBUFFER pfnRasFreeBuffer,PFNRASSENDBUFFER pfnRasSendBuffer,PFNRASRECEIVEBUFFER pfnRasReceiveBuffer,PFNRASRETRIEVEBUFFER pfnRasRetrieveBuffer,HWND hWnd,RASDIALPARAMS *pRasDialParams,PVOID pvReserved);
 827
 828#define RASCOMMSETTINGS struct tagRASCOMMSETTINGS
 829  RASCOMMSETTINGS {
 830    DWORD dwSize;
 831    BYTE bParity;
 832    BYTE bStop;
 833    BYTE bByteSize;
 834    BYTE bAlign;
 835  };
 836
 837  typedef DWORD (WINAPI *PFNRASSETCOMMSETTINGS) (HANDLE hPort,RASCOMMSETTINGS *pRasCommSettings,PVOID pvReserved);
 838
 839#define RASCUSTOMSCRIPTEXTENSIONS struct tagRASCUSTOMSCRIPTEXTENSIONS
 840  RASCUSTOMSCRIPTEXTENSIONS {
 841    DWORD dwSize;
 842    PFNRASSETCOMMSETTINGS pfnRasSetCommSettings;
 843  };
 844
 845  DWORD WINAPI RasDialA(LPRASDIALEXTENSIONS,LPCSTR,LPRASDIALPARAMSA,DWORD,LPVOID,LPHRASCONN);
 846  DWORD WINAPI RasDialW(LPRASDIALEXTENSIONS,LPCWSTR,LPRASDIALPARAMSW,DWORD,LPVOID,LPHRASCONN);
 847  DWORD WINAPI RasEnumConnectionsA(LPRASCONNA,LPDWORD,LPDWORD);
 848  DWORD WINAPI RasEnumConnectionsW(LPRASCONNW,LPDWORD,LPDWORD);
 849  DWORD WINAPI RasEnumEntriesA(LPCSTR,LPCSTR,LPRASENTRYNAMEA,LPDWORD,LPDWORD);
 850  DWORD WINAPI RasEnumEntriesW(LPCWSTR,LPCWSTR,LPRASENTRYNAMEW,LPDWORD,LPDWORD);
 851  DWORD WINAPI RasGetConnectStatusA(HRASCONN,LPRASCONNSTATUSA);
 852  DWORD WINAPI RasGetConnectStatusW(HRASCONN,LPRASCONNSTATUSW);
 853  DWORD WINAPI RasGetErrorStringA(UINT,LPSTR,DWORD);
 854  DWORD WINAPI RasGetErrorStringW(UINT,LPWSTR,DWORD);
 855  DWORD WINAPI RasHangUpA(HRASCONN);
 856  DWORD WINAPI RasHangUpW(HRASCONN);
 857  DWORD WINAPI RasGetProjectionInfoA(HRASCONN,RASPROJECTION,LPVOID,LPDWORD);
 858  DWORD WINAPI RasGetProjectionInfoW(HRASCONN,RASPROJECTION,LPVOID,LPDWORD);
 859  DWORD WINAPI RasCreatePhonebookEntryA(HWND,LPCSTR);
 860  DWORD WINAPI RasCreatePhonebookEntryW(HWND,LPCWSTR);
 861  DWORD WINAPI RasEditPhonebookEntryA(HWND,LPCSTR,LPCSTR);
 862  DWORD WINAPI RasEditPhonebookEntryW(HWND,LPCWSTR,LPCWSTR);
 863  DWORD WINAPI RasSetEntryDialParamsA(LPCSTR,LPRASDIALPARAMSA,WINBOOL);
 864  DWORD WINAPI RasSetEntryDialParamsW(LPCWSTR,LPRASDIALPARAMSW,WINBOOL);
 865  DWORD WINAPI RasGetEntryDialParamsA(LPCSTR,LPRASDIALPARAMSA,LPBOOL);
 866  DWORD WINAPI RasGetEntryDialParamsW(LPCWSTR,LPRASDIALPARAMSW,LPBOOL);
 867  DWORD WINAPI RasEnumDevicesA(LPRASDEVINFOA,LPDWORD,LPDWORD);
 868  DWORD WINAPI RasEnumDevicesW(LPRASDEVINFOW,LPDWORD,LPDWORD);
 869  DWORD WINAPI RasGetCountryInfoA(LPRASCTRYINFOA,LPDWORD);
 870  DWORD WINAPI RasGetCountryInfoW(LPRASCTRYINFOW,LPDWORD);
 871  DWORD WINAPI RasGetEntryPropertiesA(LPCSTR,LPCSTR,LPRASENTRYA,LPDWORD,LPBYTE,LPDWORD);
 872  DWORD WINAPI RasGetEntryPropertiesW(LPCWSTR,LPCWSTR,LPRASENTRYW,LPDWORD,LPBYTE,LPDWORD);
 873  DWORD WINAPI RasSetEntryPropertiesA(LPCSTR,LPCSTR,LPRASENTRYA,DWORD,LPBYTE,DWORD);
 874  DWORD WINAPI RasSetEntryPropertiesW(LPCWSTR,LPCWSTR,LPRASENTRYW,DWORD,LPBYTE,DWORD);
 875  DWORD WINAPI RasRenameEntryA(LPCSTR,LPCSTR,LPCSTR);
 876  DWORD WINAPI RasRenameEntryW(LPCWSTR,LPCWSTR,LPCWSTR);
 877  DWORD WINAPI RasDeleteEntryA(LPCSTR,LPCSTR);
 878  DWORD WINAPI RasDeleteEntryW(LPCWSTR,LPCWSTR);
 879  DWORD WINAPI RasValidateEntryNameA(LPCSTR,LPCSTR);
 880  DWORD WINAPI RasValidateEntryNameW(LPCWSTR,LPCWSTR);
 881  DWORD WINAPI RasConnectionNotificationA(HRASCONN,HANDLE,DWORD);
 882  DWORD WINAPI RasConnectionNotificationW(HRASCONN,HANDLE,DWORD);
 883  DWORD WINAPI RasGetSubEntryHandleA(HRASCONN,DWORD,LPHRASCONN);
 884  DWORD WINAPI RasGetSubEntryHandleW(HRASCONN,DWORD,LPHRASCONN);
 885  DWORD WINAPI RasGetCredentialsA(LPCSTR,LPCSTR,LPRASCREDENTIALSA);
 886  DWORD WINAPI RasGetCredentialsW(LPCWSTR,LPCWSTR,LPRASCREDENTIALSW);
 887  DWORD WINAPI RasSetCredentialsA(LPCSTR,LPCSTR,LPRASCREDENTIALSA,WINBOOL);
 888  DWORD WINAPI RasSetCredentialsW(LPCWSTR,LPCWSTR,LPRASCREDENTIALSW,WINBOOL);
 889  DWORD WINAPI RasGetSubEntryPropertiesA(LPCSTR,LPCSTR,DWORD,LPRASSUBENTRYA,LPDWORD,LPBYTE,LPDWORD);
 890  DWORD WINAPI RasGetSubEntryPropertiesW(LPCWSTR,LPCWSTR,DWORD,LPRASSUBENTRYW,LPDWORD,LPBYTE,LPDWORD);
 891  DWORD WINAPI RasSetSubEntryPropertiesA(LPCSTR,LPCSTR,DWORD,LPRASSUBENTRYA,DWORD,LPBYTE,DWORD);
 892  DWORD WINAPI RasSetSubEntryPropertiesW(LPCWSTR,LPCWSTR,DWORD,LPRASSUBENTRYW,DWORD,LPBYTE,DWORD);
 893  DWORD WINAPI RasGetAutodialAddressA(LPCSTR,LPDWORD,LPRASAUTODIALENTRYA,LPDWORD,LPDWORD);
 894  DWORD WINAPI RasGetAutodialAddressW(LPCWSTR,LPDWORD,LPRASAUTODIALENTRYW,LPDWORD,LPDWORD);
 895  DWORD WINAPI RasSetAutodialAddressA(LPCSTR,DWORD,LPRASAUTODIALENTRYA,DWORD,DWORD);
 896  DWORD WINAPI RasSetAutodialAddressW(LPCWSTR,DWORD,LPRASAUTODIALENTRYW,DWORD,DWORD);
 897  DWORD WINAPI RasEnumAutodialAddressesA(LPSTR *,LPDWORD,LPDWORD);
 898  DWORD WINAPI RasEnumAutodialAddressesW(LPWSTR *,LPDWORD,LPDWORD);
 899  DWORD WINAPI RasGetAutodialEnableA(DWORD,LPBOOL);
 900  DWORD WINAPI RasGetAutodialEnableW(DWORD,LPBOOL);
 901  DWORD WINAPI RasSetAutodialEnableA(DWORD,WINBOOL);
 902  DWORD WINAPI RasSetAutodialEnableW(DWORD,WINBOOL);
 903  DWORD WINAPI RasGetAutodialParamA(DWORD,LPVOID,LPDWORD);
 904  DWORD WINAPI RasGetAutodialParamW(DWORD,LPVOID,LPDWORD);
 905  DWORD WINAPI RasSetAutodialParamA(DWORD,LPVOID,DWORD);
 906  DWORD WINAPI RasSetAutodialParamW(DWORD,LPVOID,DWORD);
 907
 908  typedef struct _RAS_STATS {
 909    DWORD dwSize;
 910    DWORD dwBytesXmited;
 911    DWORD dwBytesRcved;
 912    DWORD dwFramesXmited;
 913    DWORD dwFramesRcved;
 914    DWORD dwCrcErr;
 915    DWORD dwTimeoutErr;
 916    DWORD dwAlignmentErr;
 917    DWORD dwHardwareOverrunErr;
 918    DWORD dwFramingErr;
 919    DWORD dwBufferOverrunErr;
 920    DWORD dwCompressionRatioIn;
 921    DWORD dwCompressionRatioOut;
 922    DWORD dwBps;
 923    DWORD dwConnectDuration;
 924  } RAS_STATS,*PRAS_STATS;
 925
 926  typedef DWORD (WINAPI *RasCustomHangUpFn)(HRASCONN hRasConn);
 927  typedef DWORD (WINAPI *RasCustomDialFn)(HINSTANCE hInstDll,LPRASDIALEXTENSIONS lpRasDialExtensions,LPCWSTR lpszPhonebook,LPRASDIALPARAMS lpRasDialParams,DWORD dwNotifierType,LPVOID lpvNotifier,LPHRASCONN lphRasConn,DWORD dwFlags);
 928  typedef DWORD (WINAPI *RasCustomDeleteEntryNotifyFn)(LPCWSTR lpszPhonebook,LPCWSTR lpszEntry,DWORD dwFlags);
 929
 930#define RCD_SingleUser 0
 931#define RCD_AllUsers 0x00000001
 932#define RCD_Eap 0x00000002
 933#define RCD_Logon 0x00000004
 934
 935  DWORD WINAPI RasInvokeEapUI(HRASCONN,DWORD,LPRASDIALEXTENSIONS,HWND);
 936  DWORD WINAPI RasGetLinkStatistics(HRASCONN hRasConn,DWORD dwSubEntry,RAS_STATS *lpStatistics);
 937  DWORD WINAPI RasGetConnectionStatistics(HRASCONN hRasConn,RAS_STATS *lpStatistics);
 938  DWORD WINAPI RasClearLinkStatistics(HRASCONN hRasConn,DWORD dwSubEntry);
 939  DWORD WINAPI RasClearConnectionStatistics(HRASCONN hRasConn);
 940  DWORD WINAPI RasGetEapUserDataA(HANDLE hToken,LPCSTR pszPhonebook,LPCSTR pszEntry,BYTE *pbEapData,DWORD *pdwSizeofEapData);
 941  DWORD WINAPI RasGetEapUserDataW(HANDLE hToken,LPCWSTR pszPhonebook,LPCWSTR pszEntry,BYTE *pbEapData,DWORD *pdwSizeofEapData);
 942  DWORD WINAPI RasSetEapUserDataA(HANDLE hToken,LPCSTR pszPhonebook,LPCSTR pszEntry,BYTE *pbEapData,DWORD dwSizeofEapData);
 943  DWORD WINAPI RasSetEapUserDataW(HANDLE hToken,LPCWSTR pszPhonebook,LPCWSTR pszEntry,BYTE *pbEapData,DWORD dwSizeofEapData);
 944  DWORD WINAPI RasGetCustomAuthDataA(LPCSTR pszPhonebook,LPCSTR pszEntry,BYTE *pbCustomAuthData,DWORD *pdwSizeofCustomAuthData);
 945  DWORD WINAPI RasGetCustomAuthDataW(LPCWSTR pszPhonebook,LPCWSTR pszEntry,BYTE *pbCustomAuthData,DWORD *pdwSizeofCustomAuthData);
 946  DWORD WINAPI RasSetCustomAuthDataA(LPCSTR pszPhonebook,LPCSTR pszEntry,BYTE *pbCustomAuthData,DWORD dwSizeofCustomAuthData);
 947  DWORD WINAPI RasSetCustomAuthDataW(LPCWSTR pszPhonebook,LPCWSTR pszEntry,BYTE *pbCustomAuthData,DWORD dwSizeofCustomAuthData);
 948  DWORD WINAPI RasGetEapUserIdentityW(LPCWSTR pszPhonebook,LPCWSTR pszEntry,DWORD dwFlags,HWND hwnd,LPRASEAPUSERIDENTITYW *ppRasEapUserIdentity);
 949  DWORD WINAPI RasGetEapUserIdentityA(LPCSTR pszPhonebook,LPCSTR pszEntry,DWORD dwFlags,HWND hwnd,LPRASEAPUSERIDENTITYA *ppRasEapUserIdentity);
 950  VOID WINAPI RasFreeEapUserIdentityW(LPRASEAPUSERIDENTITYW pRasEapUserIdentity);
 951  VOID WINAPI RasFreeEapUserIdentityA(LPRASEAPUSERIDENTITYA pRasEapUserIdentity);
 952  DWORD WINAPI RasDeleteSubEntryA(LPCSTR pszPhonebook,LPCSTR pszEntry,DWORD dwSubentryId);
 953  DWORD WINAPI RasDeleteSubEntryW(LPCWSTR pszPhonebook,LPCWSTR pszEntry,DWORD dwSubEntryId);
 954
 955#define RasDial __MINGW_NAME_AW(RasDial)
 956#define RasEnumConnections __MINGW_NAME_AW(RasEnumConnections)
 957#define RasEnumEntries __MINGW_NAME_AW(RasEnumEntries)
 958#define RasGetConnectStatus __MINGW_NAME_AW(RasGetConnectStatus)
 959#define RasGetErrorString __MINGW_NAME_AW(RasGetErrorString)
 960#define RasHangUp __MINGW_NAME_AW(RasHangUp)
 961#define RasGetProjectionInfo __MINGW_NAME_AW(RasGetProjectionInfo)
 962#define RasCreatePhonebookEntry __MINGW_NAME_AW(RasCreatePhonebookEntry)
 963#define RasEditPhonebookEntry __MINGW_NAME_AW(RasEditPhonebookEntry)
 964#define RasSetEntryDialParams __MINGW_NAME_AW(RasSetEntryDialParams)
 965#define RasGetEntryDialParams __MINGW_NAME_AW(RasGetEntryDialParams)
 966#define RasEnumDevices __MINGW_NAME_AW(RasEnumDevices)
 967#define RasGetCountryInfo __MINGW_NAME_AW(RasGetCountryInfo)
 968#define RasGetEntryProperties __MINGW_NAME_AW(RasGetEntryProperties)
 969#define RasSetEntryProperties __MINGW_NAME_AW(RasSetEntryProperties)
 970#define RasRenameEntry __MINGW_NAME_AW(RasRenameEntry)
 971#define RasDeleteEntry __MINGW_NAME_AW(RasDeleteEntry)
 972#define RasValidateEntryName __MINGW_NAME_AW(RasValidateEntryName)
 973#define RasGetSubEntryHandle __MINGW_NAME_AW(RasGetSubEntryHandle)
 974#define RasConnectionNotification __MINGW_NAME_AW(RasConnectionNotification)
 975#define RasGetSubEntryProperties __MINGW_NAME_AW(RasGetSubEntryProperties)
 976#define RasSetSubEntryProperties __MINGW_NAME_AW(RasSetSubEntryProperties)
 977#define RasGetCredentials __MINGW_NAME_AW(RasGetCredentials)
 978#define RasSetCredentials __MINGW_NAME_AW(RasSetCredentials)
 979#define RasGetAutodialAddress __MINGW_NAME_AW(RasGetAutodialAddress)
 980#define RasSetAutodialAddress __MINGW_NAME_AW(RasSetAutodialAddress)
 981#define RasEnumAutodialAddresses __MINGW_NAME_AW(RasEnumAutodialAddresses)
 982#define RasGetAutodialEnable __MINGW_NAME_AW(RasGetAutodialEnable)
 983#define RasSetAutodialEnable __MINGW_NAME_AW(RasSetAutodialEnable)
 984#define RasGetAutodialParam __MINGW_NAME_AW(RasGetAutodialParam)
 985#define RasSetAutodialParam __MINGW_NAME_AW(RasSetAutodialParam)
 986#define RasGetEapUserData __MINGW_NAME_AW(RasGetEapUserData)
 987#define RasSetEapUserData __MINGW_NAME_AW(RasSetEapUserData)
 988#define RasGetCustomAuthData __MINGW_NAME_AW(RasGetCustomAuthData)
 989#define RasSetCustomAuthData __MINGW_NAME_AW(RasSetCustomAuthData)
 990#define RasGetEapUserIdentity __MINGW_NAME_AW(RasGetEapUserIdentity)
 991#define RasFreeEapUserIdentity __MINGW_NAME_AW(RasFreeEapUserIdentity)
 992#define RasDeleteSubEntry __MINGW_NAME_AW(RasDeleteSubEntry)
 993
 994#if (_WIN32_WINNT >= 0x0600)
 995
 996typedef struct _tagRasNapState {
 997  DWORD          dwSize;
 998  DWORD          dwFlags;
 999  IsolationState isolationState;
1000  ProbationTime  probationTime;
1001} RASNAPSTATE, *LPRASNAPSTATE;
1002
1003typedef struct _RASPPPIPV6 {
1004  DWORD dwSize;
1005  DWORD dwError;
1006  BYTE  bLocalInterfaceIdentifier[8];
1007  BYTE  bPeerInterfaceIdentifier[8];
1008  BYTE  bLocalCompressionProtocol[2];
1009  BYTE  bPeerCompressionProtocol[2];
1010} RASPPPIPV6, *LPRASPPPIPV6;
1011
1012DWORD rasgetnapstatus(
1013  HRASCONN hRasConn,
1014  LPRASNAPSTATE pNapState
1015);
1016
1017#endif /*(_WIN32_WINNT >= 0x0600)*/
1018
1019#if (_WIN32_WINNT >= 0x0601)
1020typedef enum  {
1021  RASAPIVERSION_500   = 1,
1022  RASAPIVERSION_501   = 2,
1023  RASAPIVERSION_600   = 3,
1024  RASAPIVERSION_601   = 4 
1025} RASAPIVERSION;
1026
1027typedef struct _RASTUNNELENDPOINT {
1028  DWORD dwType;
1029  __C89_NAMELESS union {
1030    RASIPV4ADDR ipv4;
1031    RASIPV6ADDR ipv6;
1032  } DUMMYUNIONNAME;
1033} RASTUNNELENDPOINT, *PRASTUNNELENDPOINT;
1034
1035typedef struct _RASUPDATECONN {
1036  RASAPIVERSION     version;
1037  DWORD             dwSize;
1038  DWORD             dwFlags;
1039  DWORD             dwIfIndex;
1040  RASTUNNELENDPOINT  localEndPoint;
1041  RASTUNNELENDPOINT  remoteEndPoint;
1042} RASUPDATECONN, *LPRASUPDATECONN;
1043#endif /*(_WIN32_WINNT >= 0x0601)*/
1044
1045#ifdef __cplusplus
1046}
1047#endif
1048
1049#include <poppack.h>
1050#endif
1051#endif