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
20 extern "C" {
21 #endif
22 
23 typedef struct in_addr RASIPV4ADDR;
24 typedef 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 
996 typedef struct _tagRasNapState {
997   DWORD          dwSize;
998   DWORD          dwFlags;
999   IsolationState isolationState;
1000   ProbationTime  probationTime;
1001 } RASNAPSTATE, *LPRASNAPSTATE;
1002 
1003 typedef 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 
1012 DWORD rasgetnapstatus(
1013   HRASCONN hRasConn,
1014   LPRASNAPSTATE pNapState
1015 );
1016 
1017 #endif /*(_WIN32_WINNT >= 0x0600)*/
1018 
1019 #if (_WIN32_WINNT >= 0x0601)
1020 typedef enum  {
1021   RASAPIVERSION_500   = 1,
1022   RASAPIVERSION_501   = 2,
1023   RASAPIVERSION_600   = 3,
1024   RASAPIVERSION_601   = 4
1025 } RASAPIVERSION;
1026 
1027 typedef struct _RASTUNNELENDPOINT {
1028   DWORD dwType;
1029   __C89_NAMELESS union {
1030     RASIPV4ADDR ipv4;
1031     RASIPV6ADDR ipv6;
1032   } DUMMYUNIONNAME;
1033 } RASTUNNELENDPOINT, *PRASTUNNELENDPOINT;
1034 
1035 typedef 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
1052