OSDN Git Service

Redo the filters based on assumptions discussed in mingw-dvlpr list.
[mingw/mingw-org-wsl.git] / include / ras.h
1 /**
2  * @file ras.h
3  * @copy 2012 MinGW.org project
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  * 
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  * 
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 #ifndef _RAS_H
25 #define _RAS_H
26 #pragma GCC system_header
27 #include <_mingw.h>
28
29 #ifdef __cplusplus
30 extern "C"
31 {
32 #endif
33
34 #include <lmcons.h>
35
36 /* TODO
37 include <basetsd.h> from winnt.h so that this typedef is not necessary
38 */
39 #ifndef _BASETSD_H
40 typedef unsigned long ULONG_PTR, *PULONG_PTR;
41 #endif
42
43 #include <pshpack4.h>
44
45 #define RAS_MaxDeviceType     16
46 #define RAS_MaxPhoneNumber    128
47 #define RAS_MaxIpAddress      15
48 #define RAS_MaxIpxAddress     21
49 #define RAS_MaxEntryName      256
50 #define RAS_MaxDeviceName     128
51 #define RAS_MaxCallbackNumber RAS_MaxPhoneNumber
52 #define RAS_MaxAreaCode       10
53 #define RAS_MaxPadType        32
54 #define RAS_MaxX25Address     200
55 #define RAS_MaxFacilities     200
56 #define RAS_MaxUserData       200
57 #define RAS_MaxReplyMessage   1024
58 #define RAS_MaxDnsSuffix      256
59 #define RDEOPT_UsePrefixSuffix           0x00000001
60 #define RDEOPT_PausedStates              0x00000002
61 #define RDEOPT_IgnoreModemSpeaker        0x00000004
62 #define RDEOPT_SetModemSpeaker           0x00000008
63 #define RDEOPT_IgnoreSoftwareCompression 0x00000010
64 #define RDEOPT_SetSoftwareCompression    0x00000020
65 #define RDEOPT_DisableConnectedUI        0x00000040
66 #define RDEOPT_DisableReconnectUI        0x00000080
67 #define RDEOPT_DisableReconnect          0x00000100
68 #define RDEOPT_NoUser                    0x00000200
69 #define RDEOPT_PauseOnScript             0x00000400
70 #define RDEOPT_Router                    0x00000800
71 #define REN_User                         0x00000000
72 #define REN_AllUsers                     0x00000001
73 #define VS_Default                              0
74 #define VS_PptpOnly                         1
75 #define VS_PptpFirst                    2
76 #define VS_L2tpOnly                     3
77 #define VS_L2tpFirst                    4
78 #define RASDIALEVENT                    "RasDialEvent"
79 #define WM_RASDIALEVENT                 0xCCCD
80 #define RASEO_UseCountryAndAreaCodes    0x00000001
81 #define RASEO_SpecificIpAddr            0x00000002
82 #define RASEO_SpecificNameServers       0x00000004
83 #define RASEO_IpHeaderCompression       0x00000008
84 #define RASEO_RemoteDefaultGateway      0x00000010
85 #define RASEO_DisableLcpExtensions      0x00000020
86 #define RASEO_TerminalBeforeDial        0x00000040
87 #define RASEO_TerminalAfterDial         0x00000080
88 #define RASEO_ModemLights               0x00000100
89 #define RASEO_SwCompression             0x00000200
90 #define RASEO_RequireEncryptedPw        0x00000400
91 #define RASEO_RequireMsEncryptedPw      0x00000800
92 #define RASEO_RequireDataEncryption     0x00001000
93 #define RASEO_NetworkLogon              0x00002000
94 #define RASEO_UseLogonCredentials       0x00004000
95 #define RASEO_PromoteAlternates         0x00008000
96 #define RASNP_NetBEUI                   0x00000001
97 #define RASNP_Ipx                       0x00000002
98 #define RASNP_Ip                        0x00000004
99 #define RASFP_Ppp                       0x00000001
100 #define RASFP_Slip                      0x00000002
101 #define RASFP_Ras                       0x00000004
102 #define RASDT_Modem                     TEXT("modem")
103 #define RASDT_Isdn                      TEXT("isdn")
104 #define RASDT_X25                       TEXT("x25")
105 #define RASDT_Vpn                       TEXT("vpn")
106 #define RASDT_Pad                       TEXT("pad")
107 #define RASDT_Generic                   TEXT("GENERIC")
108 #define RASDT_Serial                    TEXT("SERIAL")
109 #define RASDT_FrameRelay                TEXT("FRAMERELAY")
110 #define RASDT_Atm                       TEXT("ATM")
111 #define RASDT_Sonet                     TEXT("SONET")
112 #define RASDT_SW56                      TEXT("SW56")
113 #define RASDT_Irda                      TEXT("IRDA")
114 #define RASDT_Parallel                  TEXT("PARALLEL")
115 #define RASET_Phone     1
116 #define RASET_Vpn       2
117 #define RASET_Direct    3
118 #define RASET_Internet  4
119
120 #define RASCS_PAUSED 0x1000
121 #define RASCS_DONE   0x2000
122 typedef enum tagRASCONNSTATE {
123       RASCS_OpenPort = 0,
124       RASCS_PortOpened,
125       RASCS_ConnectDevice,
126       RASCS_DeviceConnected,
127       RASCS_AllDevicesConnected,
128       RASCS_Authenticate,
129       RASCS_AuthNotify,
130       RASCS_AuthRetry,
131       RASCS_AuthCallback,
132       RASCS_AuthChangePassword,
133       RASCS_AuthProject,
134       RASCS_AuthLinkSpeed,
135       RASCS_AuthAck,
136       RASCS_ReAuthenticate,
137       RASCS_Authenticated,
138       RASCS_PrepareForCallback,
139       RASCS_WaitForModemReset,
140       RASCS_WaitForCallback,
141       RASCS_Projected,
142       RASCS_StartAuthentication,
143       RASCS_CallbackComplete,
144       RASCS_LogonNetwork,
145       RASCS_SubEntryConnected,
146       RASCS_SubEntryDisconnected,
147       RASCS_Interactive = RASCS_PAUSED,
148       RASCS_RetryAuthentication,
149       RASCS_CallbackSetByCaller,
150       RASCS_PasswordExpired,
151 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
152       RASCS_InvokeEapUI,
153 #endif
154       RASCS_Connected = RASCS_DONE,
155       RASCS_Disconnected
156 }  RASCONNSTATE, *LPRASCONNSTATE;
157
158 typedef enum tagRASPROJECTION {
159     RASP_Amb =      0x10000,
160     RASP_PppNbf =   0x803F,
161     RASP_PppIpx =   0x802B,
162     RASP_PppIp =    0x8021,
163 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
164     RASP_PppCcp =   0x80FD,
165 #endif
166     RASP_PppLcp =   0xC021,
167     RASP_Slip =     0x20000
168 } RASPROJECTION, *LPRASPROJECTION;
169
170 DECLARE_HANDLE (HRASCONN);
171 typedef  HRASCONN* LPHRASCONN;
172
173 typedef struct tagRASCONNW {
174     DWORD dwSize;
175     HRASCONN hrasconn;
176     WCHAR szEntryName[RAS_MaxEntryName + 1];
177     WCHAR szDeviceType[RAS_MaxDeviceType + 1];
178     WCHAR szDeviceName[RAS_MaxDeviceName + 1];
179 #if (_WIN32_WINNT >= _WIN32_WINNT_NT4E)
180     WCHAR szPhonebook[MAX_PATH];
181     DWORD dwSubEntry;
182 #endif
183 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
184     GUID guidEntry;
185 #endif
186 #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
187     DWORD dwFlags;
188     LUID luid;
189 #endif
190 } RASCONNW, *LPRASCONNW;
191
192 typedef struct tagRASCONNA {
193     DWORD dwSize;
194     HRASCONN hrasconn;
195     CHAR szEntryName[RAS_MaxEntryName + 1];
196     CHAR szDeviceType[RAS_MaxDeviceType + 1];
197     CHAR szDeviceName[RAS_MaxDeviceName + 1];
198 #if (_WIN32_WINNT >= _WIN32_WINNT_NT4E)
199     CHAR szPhonebook[MAX_PATH];
200     DWORD dwSubEntry;
201 #endif
202 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
203     GUID guidEntry;
204 #endif
205 #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
206     DWORD dwFlags;
207     LUID luid;
208 #endif
209 } RASCONNA, *LPRASCONNA;
210
211 typedef struct tagRASCONNSTATUSW {
212     DWORD dwSize;
213     RASCONNSTATE rasconnstate;
214     DWORD dwError;
215     WCHAR szDeviceType[RAS_MaxDeviceType + 1];
216     WCHAR szDeviceName[RAS_MaxDeviceName + 1];
217 #if (_WIN32_WINNT >= _WIN32_WINNT_NT4E)
218     WCHAR szPhoneNumber[RAS_MaxPhoneNumber + 1];
219 #endif
220 } RASCONNSTATUSW, *LPRASCONNSTATUSW;
221
222 typedef struct tagRASCONNSTATUSA {
223     DWORD dwSize;
224     RASCONNSTATE rasconnstate;
225     DWORD dwError;
226     CHAR szDeviceType[RAS_MaxDeviceType + 1];
227     CHAR szDeviceName[RAS_MaxDeviceName + 1];
228 #if (_WIN32_WINNT >= _WIN32_WINNT_NT4E)
229     CHAR szPhoneNumber[RAS_MaxPhoneNumber + 1];
230 #endif
231 } RASCONNSTATUSA, *LPRASCONNSTATUSA;
232
233 typedef struct tagRASDIALPARAMSW {
234     DWORD dwSize;
235     WCHAR szEntryName[RAS_MaxEntryName + 1];
236     WCHAR szPhoneNumber[RAS_MaxPhoneNumber + 1];
237     WCHAR szCallbackNumber[RAS_MaxCallbackNumber + 1];
238     WCHAR szUserName[UNLEN + 1];
239     WCHAR szPassword[PWLEN + 1];
240     WCHAR szDomain[DNLEN + 1];
241 #if (_WIN32_WINNT >= _WIN32_WINNT_NT4E)
242     DWORD dwSubEntry;
243     ULONG_PTR dwCallbackId;
244 #endif
245 } RASDIALPARAMSW, *LPRASDIALPARAMSW;
246
247 typedef struct tagRASDIALPARAMSA {
248     DWORD dwSize;
249     CHAR szEntryName[RAS_MaxEntryName + 1];
250     CHAR szPhoneNumber[RAS_MaxPhoneNumber + 1];
251     CHAR szCallbackNumber[RAS_MaxCallbackNumber + 1];
252     CHAR szUserName[UNLEN + 1];
253     CHAR szPassword[PWLEN + 1];
254     CHAR szDomain[DNLEN + 1];
255 #if (_WIN32_WINNT >= _WIN32_WINNT_NT4E)
256     DWORD dwSubEntry;
257     ULONG_PTR dwCallbackId;
258 #endif
259 } RASDIALPARAMSA, *LPRASDIALPARAMSA;
260
261 typedef struct tagRASDIALEXTENSIONS {
262     DWORD dwSize;
263     DWORD dwfOptions;
264     HWND hwndParent;
265     ULONG_PTR reserved;
266 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
267     ULONG_PTR reserved1;
268     RASEAPINFO RasEapInfo;
269 #endif
270 } RASDIALEXTENSIONS, *LPRASDIALEXTENSIONS;
271
272 typedef struct tagRASENTRYNAMEW {
273     DWORD dwSize;
274     WCHAR szEntryName[RAS_MaxEntryName + 1];
275 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
276     DWORD dwFlags;
277     WCHAR szPhonebookPath[MAX_PATH + 1];
278 #endif
279 } RASENTRYNAMEW, *LPRASENTRYNAMEW;
280
281 typedef struct tagRASENTRYNAMEA {
282     DWORD dwSize;
283     CHAR szEntryName[RAS_MaxEntryName + 1];
284 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
285     DWORD dwFlags;
286     CHAR szPhonebookPath[MAX_PATH + 1];
287 #endif
288 } RASENTRYNAMEA, *LPRASENTRYNAMEA;
289
290 typedef struct tagRASAMBW {
291     DWORD dwSize;
292     DWORD dwError;
293     WCHAR szNetBiosError[NETBIOS_NAME_LEN + 1];
294     BYTE bLana;
295 } RASAMBW, *LPRASAMBW;
296
297 typedef struct tagRASAMBA {
298     DWORD dwSize;
299     DWORD dwError;
300     CHAR szNetBiosError[NETBIOS_NAME_LEN + 1];
301     BYTE bLana;
302 } RASAMBA, *LPRASAMBA;
303
304 typedef struct tagRASPPPNBFW {
305     DWORD dwSize;
306     DWORD dwError;
307     DWORD dwNetBiosError;
308     WCHAR szNetBiosError[NETBIOS_NAME_LEN + 1];
309     WCHAR szWorkstationName[NETBIOS_NAME_LEN + 1];
310     BYTE bLana;
311 } RASPPPNBFW, *LPRASPPPNBFW;
312
313 typedef struct tagRASPPPNBFA {
314     DWORD dwSize;
315     DWORD dwError;
316     DWORD dwNetBiosError;
317     CHAR szNetBiosError[NETBIOS_NAME_LEN + 1];
318     CHAR szWorkstationName[NETBIOS_NAME_LEN + 1];
319     BYTE bLana;
320 } RASPPPNBFA, *LPRASPPPNBFA;
321
322 typedef struct tagRASIPXW {
323     DWORD dwSize;
324     DWORD dwError;
325     WCHAR szIpxAddress[RAS_MaxIpxAddress + 1];
326 } RASPPPIPXW, *LPRASPPPIPXW;
327
328 typedef struct tagRASIPXA {
329     DWORD dwSize;
330     DWORD dwError;
331     CHAR szIpxAddress[RAS_MaxIpxAddress + 1];
332 } RASPPPIPXA, *LPRASPPPIPXA;
333
334 typedef struct tagRASPPPIPW {
335     DWORD dwSize;
336     DWORD dwError;
337     WCHAR szIpAddress[RAS_MaxIpAddress + 1];
338 #ifndef WINNT35COMPATIBLE
339     WCHAR szServerIpAddress[RAS_MaxIpAddress + 1];
340 #endif
341 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
342     DWORD dwOptions;
343     DWORD dwServerOptions;
344 #endif
345 } RASPPPIPW, *LPRASPPPIPW;
346
347 typedef struct tagRASPPPIPA {
348     DWORD dwSize;
349     DWORD dwError;
350     CHAR szIpAddress[RAS_MaxIpAddress + 1];
351 #ifndef WINNT35COMPATIBLE
352     CHAR szServerIpAddress[RAS_MaxIpAddress + 1];
353 #endif
354 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
355     DWORD dwOptions;
356     DWORD dwServerOptions;
357 #endif
358 } RASPPPIPA, *LPRASPPPIPA;
359
360 typedef struct tagRASPPPLCPW {
361     DWORD dwSize;
362     BOOL fBundled;
363 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
364     DWORD dwError;
365     DWORD dwAuthenticationProtocol;
366     DWORD dwAuthenticationData;
367     DWORD dwEapTypeId;
368     DWORD dwServerAuthenticationProtocol;
369     DWORD dwServerAuthenticationData;
370     DWORD dwServerEapTypeId;
371     BOOL fMultilink;
372     DWORD dwTerminateReason;
373     DWORD dwServerTerminateReason;
374     WCHAR szReplyMessage[RAS_MaxReplyMessage];
375     DWORD dwOptions;
376     DWORD dwServerOptions;
377 #endif
378 } RASPPPLCPW, *LPRASPPPLCPW;
379
380 typedef struct tagRASPPPLCPA {
381     DWORD dwSize;
382     BOOL fBundled;
383 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
384     DWORD dwError;
385     DWORD dwAuthenticationProtocol;
386     DWORD dwAuthenticationData;
387     DWORD dwEapTypeId;
388     DWORD dwServerAuthenticationProtocol;
389     DWORD dwServerAuthenticationData;
390     DWORD dwServerEapTypeId;
391     BOOL fMultilink;
392     DWORD dwTerminateReason;
393     DWORD dwServerTerminateReason;
394     CHAR szReplyMessage[RAS_MaxReplyMessage];
395     DWORD dwOptions;
396     DWORD dwServerOptions;
397 #endif
398 } RASPPPLCPA, *LPRASPPPLCPA;
399
400 typedef struct tagRASSLIPW {
401     DWORD dwSize;
402     DWORD dwError;
403     WCHAR szIpAddress[RAS_MaxIpAddress + 1];
404 } RASSLIPW, *LPRASSLIPW;
405
406
407 typedef struct tagRASSLIPA {
408     DWORD dwSize;
409     DWORD dwError;
410     CHAR szIpAddress[RAS_MaxIpAddress + 1];
411 } RASSLIPA, *LPRASSLIPA;
412
413 typedef struct tagRASDEVINFOW {
414     DWORD dwSize;
415     WCHAR szDeviceType[RAS_MaxDeviceType + 1];
416     WCHAR szDeviceName[RAS_MaxDeviceName + 1];
417 } RASDEVINFOW, *LPRASDEVINFOW;
418
419 typedef struct tagRASDEVINFOA {
420     DWORD dwSize;
421     CHAR szDeviceType[RAS_MaxDeviceType + 1];
422     CHAR szDeviceName[RAS_MaxDeviceName + 1];
423 } RASDEVINFOA, *LPRASDEVINFOA;
424
425 typedef struct tagRASCTRYINFO {
426     DWORD dwSize;
427     DWORD dwCountryID;
428     DWORD dwNextCountryID;
429     DWORD dwCountryCode;
430     DWORD dwCountryNameOffset;
431 } RASCTRYINFO, *LPRASCTRYINFO;
432
433 typedef RASCTRYINFO  RASCTRYINFOW, *LPRASCTRYINFOW;
434 typedef RASCTRYINFO  RASCTRYINFOA, *LPRASCTRYINFOA;
435
436 typedef struct tagRASIPADDR {
437     BYTE a;
438     BYTE b;
439     BYTE c;
440     BYTE d;
441 } RASIPADDR;
442
443 typedef struct tagRASENTRYW {
444     DWORD dwSize;
445     DWORD dwfOptions;
446     DWORD dwCountryID;
447     DWORD dwCountryCode;
448     WCHAR szAreaCode[RAS_MaxAreaCode + 1];
449     WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1];
450     DWORD dwAlternateOffset;
451     RASIPADDR ipaddr;
452     RASIPADDR ipaddrDns;
453     RASIPADDR ipaddrDnsAlt;
454     RASIPADDR ipaddrWins;
455     RASIPADDR ipaddrWinsAlt;
456     DWORD dwFrameSize;
457     DWORD dwfNetProtocols;
458     DWORD dwFramingProtocol;
459     WCHAR szScript[MAX_PATH];
460     WCHAR szAutodialDll[MAX_PATH];
461     WCHAR szAutodialFunc[MAX_PATH];
462     WCHAR szDeviceType[RAS_MaxDeviceType + 1];
463     WCHAR szDeviceName[RAS_MaxDeviceName + 1];
464     WCHAR szX25PadType[RAS_MaxPadType + 1];
465     WCHAR szX25Address[RAS_MaxX25Address + 1];
466     WCHAR szX25Facilities[RAS_MaxFacilities + 1];
467     WCHAR szX25UserData[RAS_MaxUserData + 1];
468     DWORD dwChannels;
469     DWORD dwReserved1;
470     DWORD dwReserved2;
471 #if (_WIN32_WINNT >= _WIN32_WINNT_NT4E)
472     DWORD dwSubEntries;
473     DWORD dwDialMode;
474     DWORD dwDialExtraPercent;
475     DWORD dwDialExtraSampleSeconds;
476     DWORD dwHangUpExtraPercent;
477     DWORD dwHangUpExtraSampleSeconds;
478     DWORD dwIdleDisconnectSeconds;
479 #endif
480 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
481     DWORD dwType;
482     DWORD dwEncryptionType;
483     DWORD dwCustomAuthKey;
484     GUID guidId;
485     WCHAR szCustomDialDll[MAX_PATH];
486     DWORD dwVpnStrategy;
487 #endif
488 #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
489         DWORD dwfOptions2;
490         DWORD dwfOptions3;
491         WCHAR szDnsSuffix[RAS_MaxDnsSuffix];
492         DWORD dwTcpWindowSize;
493         WCHAR szPrerequisitePbk[MAX_PATH];
494         WCHAR szPrerequisiteEntry[RAS_MaxEntryName + 1];
495         DWORD dwRedialCount;
496         DWORD dwRedialPause;
497 #endif  
498 } RASENTRYW, *LPRASENTRYW;
499
500 typedef struct tagRASENTRYA {
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 #if (_WIN32_WINNT >= _WIN32_WINNT_NT4E)
529     DWORD dwSubEntries;
530     DWORD dwDialMode;
531     DWORD dwDialExtraPercent;
532     DWORD dwDialExtraSampleSeconds;
533     DWORD dwHangUpExtraPercent;
534     DWORD dwHangUpExtraSampleSeconds;
535     DWORD dwIdleDisconnectSeconds;
536 #endif
537 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
538     DWORD dwType;
539     DWORD dwEncryptionType;
540     DWORD dwCustomAuthKey;
541     GUID guidId;
542     CHAR szCustomDialDll[MAX_PATH];
543     DWORD dwVpnStrategy;
544 #endif
545 #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
546         DWORD dwfOptions2;
547         DWORD dwfOptions3;
548         CHAR szDnsSuffix[RAS_MaxDnsSuffix];
549         DWORD dwTcpWindowSize;
550         CHAR szPrerequisitePbk[MAX_PATH];
551         CHAR szPrerequisiteEntry[RAS_MaxEntryName + 1];
552         DWORD dwRedialCount;
553         DWORD dwRedialPause;
554 #endif          
555 } RASENTRYA, *LPRASENTRYA;
556
557
558
559 /* UNICODE typedefs for structures*/
560 typedef __AW(RASCONN) RASCONN, *LPRASCONN;
561 typedef __AW(RASENTRYW) RASENTRY, *LPRASENTRY;
562 typedef __AW(RASCONNSTATUS) RASCONNSTATUS, *LPRASCONNSTATUS;
563 typedef __AW(RASDIALPARAMS) RASDIALPARAMS, *LPRASDIALPARAMS;
564 typedef __AW(RASAMB) RASAMB, *LPRASAM;
565 typedef __AW(RASPPPNBF) RASPPPNBF, *LPRASPPPNBF;
566 typedef __AW(RASPPPIPX) RASPPPIPX, *LPRASPPPIPX;
567 typedef __AW(RASPPPIP) RASPPPIP, *LPRASPPPIP; 
568 typedef __AW(RASPPPLCP) RASPPPLCP, *LPRASPPPLCP;
569 typedef __AW(RASSLIP) RASSLIP, *LPRASSLIP;
570 typedef __AW(RASDEVINFOW) RASDEVINFO, *LPRASDEVINFO;
571 typedef __AW(RASENTRYNAME) RASENTRYNAME, *LPRASENTRYNAME;
572
573
574 /* Callback prototypes */
575 typedef BOOL (WINAPI * ORASADFUNC) (HWND, LPSTR, DWORD, LPDWORD); /* deprecated */
576 typedef VOID (WINAPI * RASDIALFUNC) (UINT, RASCONNSTATE, DWORD);
577 typedef VOID (WINAPI * RASDIALFUNC1) (HRASCONN, UINT, RASCONNSTATE, DWORD,
578                                         DWORD);
579 typedef DWORD (WINAPI * RASDIALFUNC2) (ULONG_PTR, DWORD, HRASCONN, UINT,
580                                         RASCONNSTATE, DWORD, DWORD);
581
582 /* External functions */
583 DWORD APIENTRY RasDialA (LPRASDIALEXTENSIONS, LPCSTR, LPRASDIALPARAMSA,
584                         DWORD, LPVOID, LPHRASCONN);
585 DWORD APIENTRY RasDialW (LPRASDIALEXTENSIONS, LPCWSTR, LPRASDIALPARAMSW,
586                 DWORD, LPVOID, LPHRASCONN);
587 DWORD APIENTRY RasEnumConnectionsA (LPRASCONNA, LPDWORD, LPDWORD);
588 DWORD APIENTRY RasEnumConnectionsW (LPRASCONNW, LPDWORD, LPDWORD);
589 DWORD APIENTRY RasEnumEntriesA (LPCSTR, LPCSTR, LPRASENTRYNAMEA, LPDWORD,
590                                 LPDWORD);
591 DWORD APIENTRY RasEnumEntriesW (LPCWSTR, LPCWSTR, LPRASENTRYNAMEW, LPDWORD,
592                                 LPDWORD);
593 DWORD APIENTRY RasGetConnectStatusA (HRASCONN, LPRASCONNSTATUSA);
594 DWORD APIENTRY RasGetConnectStatusW (HRASCONN, LPRASCONNSTATUSW);
595 DWORD APIENTRY RasGetErrorStringA (UINT, LPSTR, DWORD);
596 DWORD APIENTRY RasGetErrorStringW (UINT, LPWSTR, DWORD);
597 DWORD APIENTRY RasHangUpA (HRASCONN);
598 DWORD APIENTRY RasHangUpW (HRASCONN);
599 DWORD APIENTRY RasGetProjectionInfoA (HRASCONN, RASPROJECTION, LPVOID,
600                                 LPDWORD);
601 DWORD APIENTRY RasGetProjectionInfoW (HRASCONN, RASPROJECTION, LPVOID,
602                                 LPDWORD);
603 DWORD APIENTRY RasCreatePhonebookEntryA (HWND, LPCSTR);
604 DWORD APIENTRY RasCreatePhonebookEntryW (HWND, LPCWSTR);
605 DWORD APIENTRY RasEditPhonebookEntryA (HWND, LPCSTR, LPCSTR);
606 DWORD APIENTRY RasEditPhonebookEntryW (HWND, LPCWSTR, LPCWSTR);
607 DWORD APIENTRY RasSetEntryDialParamsA (LPCSTR, LPRASDIALPARAMSA, BOOL);
608 DWORD APIENTRY RasSetEntryDialParamsW (LPCWSTR, LPRASDIALPARAMSW, BOOL);
609 DWORD APIENTRY RasGetEntryDialParamsA (LPCSTR, LPRASDIALPARAMSA, LPBOOL);
610 DWORD APIENTRY RasGetEntryDialParamsW (LPCWSTR, LPRASDIALPARAMSW, LPBOOL);
611 DWORD APIENTRY RasEnumDevicesA (LPRASDEVINFOA, LPDWORD, LPDWORD);
612 DWORD APIENTRY RasEnumDevicesW (LPRASDEVINFOW, LPDWORD, LPDWORD);
613 DWORD APIENTRY RasGetCountryInfoA (LPRASCTRYINFOA, LPDWORD);
614 DWORD APIENTRY RasGetCountryInfoW (LPRASCTRYINFOW, LPDWORD);
615 DWORD APIENTRY RasGetEntryPropertiesA (LPCSTR, LPCSTR, LPRASENTRYA, LPDWORD,
616                                  LPBYTE, LPDWORD);
617 DWORD APIENTRY RasGetEntryPropertiesW (LPCWSTR, LPCWSTR, LPRASENTRYW,
618                                  LPDWORD, LPBYTE, LPDWORD);
619 DWORD APIENTRY RasSetEntryPropertiesA (LPCSTR, LPCSTR, LPRASENTRYA, DWORD,
620                                  LPBYTE, DWORD);
621 DWORD APIENTRY RasSetEntryPropertiesW (LPCWSTR, LPCWSTR, LPRASENTRYW, DWORD,
622                                  LPBYTE, DWORD);
623 DWORD APIENTRY RasRenameEntryA (LPCSTR, LPCSTR, LPCSTR);
624 DWORD APIENTRY RasRenameEntryW (LPCWSTR, LPCWSTR, LPCWSTR);
625 DWORD APIENTRY RasDeleteEntryA (LPCSTR, LPCSTR);
626 DWORD APIENTRY RasDeleteEntryW (LPCWSTR, LPCWSTR);
627 DWORD APIENTRY RasValidateEntryNameA (LPCSTR, LPCSTR);
628 DWORD APIENTRY RasValidateEntryNameW (LPCWSTR, LPCWSTR);
629
630
631 /* UNICODE defines for functions */
632 #define RasDial __AW(RasDial)
633 #define RasEnumConnections __AW(RasEnumConnections)
634 #define RasEnumEntries __AW(RasEnumEntries)
635 #define RasGetConnectStatus __AW(RasGetConnectStatus)
636 #define RasGetErrorString __AW(RasGetErrorString)
637 #define RasHangUp __AW(RasHangUp)
638 #define RasGetProjectionInfo __AW(RasGetProjectionInfo)
639 #define RasCreatePhonebookEntry __AW(RasCreatePhonebookEntry)
640 #define RasEditPhonebookEntry __AW(RasEditPhonebookEntry)
641 #define RasSetEntryDialParams __AW(RasSetEntryDialParams)
642 #define RasGetEntryDialParams __AW(RasGetEntryDialParams)
643 #define RasEnumDevices __AW(RasEnumDevices)
644 #define RasGetCountryInfo __AW(RasGetCountryInfo)
645 #define RasGetEntryProperties __AW(RasGetEntryProperties)
646 #define RasSetEntryProperties __AW(RasSetEntryProperties)
647 #define RasRenameEntry __AW(RasRenameEntry)
648 #define RasDeleteEntry __AW(RasDeleteEntry)
649 #define RasValidateEntryName __AW(RasValidateEntryName)
650
651 #if (_WIN32_WINNT >= _WIN32_WINNT_NT4E)
652 #define RASADFUNC __AW(RASADFUNC)
653 #define RasGetSubEntryHandle __AW(RasGetSubEntryHandle)
654 #define RasConnectionNotification __AW(RasConnectionNotification)
655 #define RasGetSubEntryProperties __AW(RasGetSubEntryProperties)
656 #define RasSetSubEntryProperties __AW(RasSetSubEntryProperties)
657 #define RasGetCredentials __AW(RasGetCredentials)
658 #define RasSetCredentials __AW(RasSetCredentials)
659 #define RasGetAutodialAddress __AW(RasGetAutodialAddress)
660 #define RasSetAutodialAddress __AW(RasSetAutodialAddress)
661 #define RasEnumAutodialAddresses __AW(RasEnumAutodialAddresses)
662 #define RasGetAutodialEnable __AW(RasGetAutodialEnable)
663 #define RasSetAutodialEnable __AW(RasSetAutodialEnable)
664 #define RasGetAutodialParam __AW(RasGetAutodialParam)
665 #define RasSetAutodialParam __AW(RasSetAutodialParam)
666 #define RASEO_SecureLocalFiles  0x00010000
667 #define RASCN_Connection        0x00000001
668 #define RASCN_Disconnection     0x00000002
669 #define RASCN_BandwidthAdded    0x00000004
670 #define RASCN_BandwidthRemoved  0x00000008
671 #define RASEDM_DialAll          1
672 #define RASEDM_DialAsNeeded     2
673 #define RASIDS_Disabled         0xffffffff
674 #define RASIDS_UseGlobalValue   0
675 #define RASADFLG_PositionDlg    0x00000001
676 #define RASCM_UserName       0x00000001
677 #define RASCM_Password       0x00000002
678 #define RASCM_Domain         0x00000004
679 #define RASADP_DisableConnectionQuery   0
680 #define RASADP_LoginSessionDisable      1
681 #define RASADP_SavedAddressesLimit      2
682 #define RASADP_FailedConnectionTimeout  3
683 #define RASADP_ConnectionQueryTimeout   4
684
685 typedef BOOL (WINAPI * RASADFUNCA) (LPSTR, LPSTR, LPRASADPARAMS, LPDWORD);
686 typedef BOOL (WINAPI * RASADFUNCW) (LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD);
687
688 DWORD APIENTRY RasGetSubEntryHandleA (HRASCONN, DWORD, LPHRASCONN);
689 DWORD APIENTRY RasGetSubEntryHandleW (HRASCONN, DWORD, LPHRASCONN);
690 DWORD APIENTRY RasGetCredentialsA (LPCSTR, LPCSTR, LPRASCREDENTIALSA);
691 DWORD APIENTRY RasGetCredentialsW (LPCWSTR, LPCWSTR, LPRASCREDENTIALSW);
692 DWORD APIENTRY RasSetCredentialsA (LPCSTR, LPCSTR, LPRASCREDENTIALSA, BOOL);
693 DWORD APIENTRY RasSetCredentialsW (LPCWSTR, LPCWSTR, LPRASCREDENTIALSW, BOOL);
694 DWORD APIENTRY RasConnectionNotificationA (HRASCONN, HANDLE, DWORD);
695 DWORD APIENTRY RasConnectionNotificationW (HRASCONN, HANDLE, DWORD);
696 DWORD APIENTRY RasGetSubEntryPropertiesA (LPCSTR, LPCSTR, DWORD,
697                                         LPRASSUBENTRYA, LPDWORD, LPBYTE, LPDWORD);
698 DWORD APIENTRY RasGetSubEntryPropertiesW (LPCWSTR, LPCWSTR, DWORD,
699                                         LPRASSUBENTRYW, LPDWORD, LPBYTE, LPDWORD);
700 DWORD APIENTRY RasSetSubEntryPropertiesA (LPCSTR, LPCSTR, DWORD,
701                                         LPRASSUBENTRYA, DWORD, LPBYTE, DWORD);
702 DWORD APIENTRY RasSetSubEntryPropertiesW (LPCWSTR, LPCWSTR, DWORD,
703                                         LPRASSUBENTRYW, DWORD, LPBYTE, DWORD);
704 DWORD APIENTRY RasGetAutodialAddressA (LPCSTR, LPDWORD, LPRASAUTODIALENTRYA,
705                                 LPDWORD, LPDWORD);
706 DWORD APIENTRY RasGetAutodialAddressW (LPCWSTR, LPDWORD,
707                                         LPRASAUTODIALENTRYW, LPDWORD, LPDWORD);
708 DWORD APIENTRY RasSetAutodialAddressA (LPCSTR, DWORD, LPRASAUTODIALENTRYA,
709                                         DWORD, DWORD);
710 DWORD APIENTRY RasSetAutodialAddressW (LPCWSTR, DWORD, LPRASAUTODIALENTRYW,
711                                         DWORD, DWORD);
712 DWORD APIENTRY RasEnumAutodialAddressesA (LPSTR *, LPDWORD, LPDWORD);
713 DWORD APIENTRY RasEnumAutodialAddressesW (LPWSTR *, LPDWORD, LPDWORD);
714 DWORD APIENTRY RasGetAutodialEnableA (DWORD, LPBOOL);
715 DWORD APIENTRY RasGetAutodialEnableW (DWORD, LPBOOL);
716 DWORD APIENTRY RasSetAutodialEnableA (DWORD, BOOL);
717 DWORD APIENTRY RasSetAutodialEnableW (DWORD, BOOL);
718 DWORD APIENTRY RasGetAutodialParamA (DWORD, LPVOID, LPDWORD);
719 DWORD APIENTRY RasGetAutodialParamW (DWORD, LPVOID, LPDWORD);
720 DWORD APIENTRY RasSetAutodialParamA (DWORD, LPVOID, DWORD);
721 DWORD APIENTRY RasSetAutodialParamW (DWORD, LPVOID, DWORD);
722 typedef __AW(RASSUBENTRY) RASSUBENTRY, *LPRASSUBENTRY;
723 typedef __AW(RASCREDENTIALS) RASCREDENTIALS, *LPRASCREDENTIALS;
724 typedef __AW(RASAUTODIALENTRY) RASAUTODIALENTRY, *LPRASAUTODIALENTRY;
725 typedef struct tagRASADPARAMS {
726     DWORD dwSize;
727     HWND hwndOwner;
728     DWORD dwFlags;
729     LONG xDlg;
730     LONG yDlg;
731 } RASADPARAMS, *LPRASADPARAMS;
732
733 typedef struct tagRASSUBENTRYW {
734     DWORD dwSize;
735     DWORD dwfFlags;
736     WCHAR szDeviceType[RAS_MaxDeviceType + 1];
737     WCHAR szDeviceName[RAS_MaxDeviceName + 1];
738     WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1];
739     DWORD dwAlternateOffset;
740 } RASSUBENTRYW, *LPRASSUBENTRYW;
741
742 typedef struct tagRASSUBENTRYA {
743     DWORD dwSize;
744     DWORD dwfFlags;
745     CHAR szDeviceType[RAS_MaxDeviceType + 1];
746     CHAR szDeviceName[RAS_MaxDeviceName + 1];
747     CHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1];
748     DWORD dwAlternateOffset;
749 } RASSUBENTRYA, *LPRASSUBENTRYA;
750
751 typedef struct tagRASCREDENTIALSW {
752     DWORD dwSize;
753     DWORD dwMask;
754     WCHAR szUserName[UNLEN + 1];
755     WCHAR szPassword[PWLEN + 1];
756     WCHAR szDomain[DNLEN + 1];
757 } RASCREDENTIALSW, *LPRASCREDENTIALSW;
758
759 typedef struct tagRASCREDENTIALSA {
760     DWORD dwSize;
761     DWORD dwMask;
762     CHAR szUserName[UNLEN + 1];
763     CHAR szPassword[PWLEN + 1];
764     CHAR szDomain[DNLEN + 1];
765 } RASCREDENTIALSA, *LPRASCREDENTIALSA;
766
767 typedef struct tagRASAUTODIALENTRYW {
768     DWORD dwSize;
769     DWORD dwFlags;
770     DWORD dwDialingLocation;
771     WCHAR szEntry[RAS_MaxEntryName + 1];
772 } RASAUTODIALENTRYW, *LPRASAUTODIALENTRYW;
773
774 typedef struct tagRASAUTODIALENTRYA {
775     DWORD dwSize;
776     DWORD dwFlags;
777     DWORD dwDialingLocation;
778     CHAR szEntry[RAS_MaxEntryName + 1];
779 } RASAUTODIALENTRYA, *LPRASAUTODIALENTRYA;
780
781 #endif /* (_WIN32_WINNT >= _WIN32_WINNT_NT4E) */
782
783 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
784 #define RasGetEapUserData __AW(RasGetEapUserData)
785 #define RasSetEapUserData __AW(RasSetEapUserData)
786 #define RasGetCustomAuthData __AW(RasGetCustomAuthData)
787 #define RasSetCustomAuthData __AW(RasSetCustomAuthData)
788 #define RasGetEapUserIdentity __AW(RasGetEapUserIdentity)
789 #define RasFreeEapUserIdentity __AW(RasFreeEapUserIdentity)
790 #define RDEOPT_CustomDial   0x00001000
791 #define RASLCPAP_PAP        0xC023
792 #define RASLCPAP_SPAP       0xC027
793 #define RASLCPAP_CHAP       0xC223
794 #define RASLCPAP_EAP        0xC227
795 #define RASLCPAD_CHAP_MD5   0x05
796 #define RASLCPAD_CHAP_MS    0x80
797 #define RASLCPAD_CHAP_MSV2  0x81
798 #define RASLCPO_PFC         0x00000001
799 #define RASLCPO_ACFC        0x00000002
800 #define RASLCPO_SSHF        0x00000004
801 #define RASLCPO_DES_56      0x00000008
802 #define RASLCPO_3_DES       0x00000010
803 #define RASCCPCA_MPPC       0x00000006
804 #define RASCCPCA_STAC       0x00000005
805 #define RASCCPO_Compression         0x00000001
806 #define RASCCPO_HistoryLess         0x00000002
807 #define RASCCPO_Encryption56bit     0x00000010
808 #define RASCCPO_Encryption40bit     0x00000020
809 #define RASCCPO_Encryption128bit    0x00000040
810 #define RASEO_RequireEAP            0x00020000
811 #define RASEO_RequirePAP            0x00040000
812 #define RASEO_RequireSPAP           0x00080000
813 #define RASEO_Custom                0x00100000
814 #define RASEO_PreviewPhoneNumber    0x00200000
815 #define RASEO_SharedPhoneNumbers    0x00800000
816 #define RASEO_PreviewUserPw         0x01000000
817 #define RASEO_PreviewDomain         0x02000000
818 #define RASEO_ShowDialingProgress   0x04000000
819 #define RASEO_RequireCHAP           0x08000000
820 #define RASEO_RequireMsCHAP         0x10000000
821 #define RASEO_RequireMsCHAP2        0x20000000
822 #define RASEO_RequireW95MSCHAP      0x40000000
823 #define RASEO_CustomScript          0x80000000
824 #define RASIPO_VJ                   0x00000001
825 #define RCD_SingleUser              0
826 #define RCD_AllUsers                0x00000001
827 #define RCD_Eap                     0x00000002
828 #define RASEAPF_NonInteractive      0x00000002
829 #define RASEAPF_Logon               0x00000004
830 #define RASEAPF_Preview             0x00000008
831 #define ET_40Bit        1
832 #define ET_128Bit       2
833 #define ET_None         0
834 #define ET_Require      1
835 #define ET_RequireMax   2
836 #define ET_Optional     3
837
838 typedef struct tagRASEAPINFO {
839     DWORD dwSizeofEapInfo;
840     BYTE *pbEapInfo;
841 } RASEAPINFO;
842 typedef DWORD (WINAPI * RasCustomHangUpFn) (HRASCONN);
843 typedef DWORD (WINAPI * RasCustomDeleteEntryNotifyFn) (LPCTSTR, LPCTSTR, DWORD);
844 typedef DWORD (WINAPI * RasCustomDialFn) (HINSTANCE, LPRASDIALEXTENSIONS,
845                                 LPCTSTR, LPRASDIALPARAMS, DWORD, LPVOID, LPHRASCONN, DWORD);
846
847 DWORD APIENTRY RasInvokeEapUI (HRASCONN, DWORD, LPRASDIALEXTENSIONS, HWND);
848 DWORD APIENTRY RasGetLinkStatistics (HRASCONN, DWORD, RAS_STATS*);
849 DWORD APIENTRY RasGetConnectionStatistics (HRASCONN, RAS_STATS*);
850 DWORD APIENTRY RasClearLinkStatistics (HRASCONN, DWORD);
851 DWORD APIENTRY RasClearConnectionStatistics (HRASCONN);
852 DWORD APIENTRY RasGetEapUserDataA (HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD*);
853 DWORD APIENTRY RasGetEapUserDataW (HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD*);
854 DWORD APIENTRY RasSetEapUserDataA (HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD);
855 DWORD APIENTRY RasSetEapUserDataW (HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD);
856 DWORD APIENTRY RasGetCustomAuthDataA (LPCSTR,   LPCSTR, BYTE*,  DWORD*);
857 DWORD APIENTRY RasGetCustomAuthDataW (LPCWSTR, LPCWSTR, BYTE*, DWORD*);
858 DWORD APIENTRY RasSetCustomAuthDataA (LPCSTR,   LPCSTR, BYTE*,  DWORD);
859 DWORD APIENTRY RasSetCustomAuthDataW (LPCWSTR, LPCWSTR, BYTE*, DWORD);
860 DWORD APIENTRY RasGetEapUserIdentityW (LPCWSTR, LPCWSTR, DWORD, HWND, LPRASEAPUSERIDENTITYW*);
861 DWORD APIENTRY RasGetEapUserIdentityA (LPCSTR, LPCSTR, DWORD, HWND, LPRASEAPUSERIDENTITYA*);
862 VOID APIENTRY RasFreeEapUserIdentityW (LPRASEAPUSERIDENTITYW);
863 VOID APIENTRY RasFreeEapUserIdentityA (LPRASEAPUSERIDENTITYA);
864 typedef __AW(RASEAPUSERIDENTITY) RASEAPUSERIDENTITY, *LPRASEAPUSERIDENTITY;
865 typedef struct tagRASPPPCCP {
866     DWORD dwSize;
867     DWORD dwError;
868     DWORD dwCompressionAlgorithm;
869     DWORD dwOptions;
870     DWORD dwServerCompressionAlgorithm;
871     DWORD dwServerOptions;
872 } RASPPPCCP, *LPRASPPPCCP;
873
874 typedef struct tagRASEAPUSERIDENTITYW {
875     WCHAR szUserName[UNLEN + 1];
876     DWORD dwSizeofEapInfo;
877     BYTE pbEapInfo[1];
878 } RASEAPUSERIDENTITYW, *LPRASEAPUSERIDENTITYW;
879
880 typedef struct tagRASEAPUSERIDENTITYA {
881     CHAR szUserName[UNLEN + 1];
882     DWORD dwSizeofEapInfo;
883     BYTE pbEapInfo[1];
884 } RASEAPUSERIDENTITYA, *LPRASEAPUSERIDENTITYA;
885
886 typedef struct tagRAS_STATS {
887     DWORD dwSize;
888     DWORD dwBytesXmited;
889     DWORD dwBytesRcved;
890     DWORD dwFramesXmited;
891     DWORD dwFramesRcved;
892     DWORD dwCrcErr;
893     DWORD dwTimeoutErr;
894     DWORD dwAlignmentErr;
895     DWORD dwHardwareOverrunErr;
896     DWORD dwFramingErr;
897     DWORD dwBufferOverrunErr;
898     DWORD dwCompressionRatioIn;
899     DWORD dwCompressionRatioOut;
900     DWORD dwBps;
901     DWORD dwConnectDuration;
902 } RAS_STATS, *PRAS_STATS;
903
904 #endif /* (_WIN32_WINNT >= _WIN32_WINNT_WIN2K) */
905
906 #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
907 #define RASEO2_SecureFileAndPrint       0x00000001
908 #define RASEO2_SecureClientForMSNet     0x00000002
909 #define RASEO2_DontNegotiateMultilink   0x00000004
910 #define RASEO2_DontUseRasCredentials    0x00000008
911 #define RASEO2_UsePreSharedKey          0x00000010
912 #define RASEO2_Internet                 0x00000020
913 #define RASEO2_DisableNbtOverIP         0x00000040
914 #define RASEO2_UseGlobalDeviceSettings  0x00000080
915 #define RASEO2_ReconnectIfDropped       0x00000100
916 #define RASEO2_SharePhoneNumbers        0x00000200
917 #endif          
918
919 #ifdef __cplusplus
920 }
921 #endif
922
923 #include <poppack.h>
924
925 #endif /* _RAS_H */