1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * Authors: Stewart Gordon
7  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
8  * Source: $(DRUNTIMESRC core/sys/windows/_rassapi.d)
9  */
10 /// Automatically imported and edited from the druntime module
11 /// core.sys.windows.rassapi for the auto-generated win32 package.
12 module win32.rassapi;
13 //version (Windows):
14 @system:
15 
16 import win32.lmcons, win32.windef;
17 
18 // FIXME: check types of constants
19 
20 enum size_t
21     RASSAPI_MAX_PHONENUMBER_SIZE = 128,
22     RASSAPI_MAX_MEDIA_NAME       =  16,
23     RASSAPI_MAX_PORT_NAME        =  16,
24     RASSAPI_MAX_DEVICE_NAME      = 128,
25     RASSAPI_MAX_DEVICETYPE_NAME  =  16,
26     RASSAPI_MAX_PARAM_KEY_SIZE   =  32;
27 
28 enum RASPRIV_NoCallback        = 0x01;
29 enum RASPRIV_AdminSetCallback  = 0x02;
30 enum RASPRIV_CallerSetCallback = 0x04;
31 enum RASPRIV_DialinPrivilege   = 0x08;
32 enum RASPRIV_CallbackType      = 0x07;
33 
34 enum {
35     RAS_MODEM_OPERATIONAL = 1,
36     RAS_MODEM_NOT_RESPONDING,
37     RAS_MODEM_HARDWARE_FAILURE,
38     RAS_MODEM_INCORRECT_RESPONSE,
39     RAS_MODEM_UNKNOWN  // = 5
40 }
41 
42 enum {
43     RAS_PORT_NON_OPERATIONAL = 1,
44     RAS_PORT_DISCONNECTED,
45     RAS_PORT_CALLING_BACK,
46     RAS_PORT_LISTENING,
47     RAS_PORT_AUTHENTICATING,
48     RAS_PORT_AUTHENTICATED,
49     RAS_PORT_INITIALIZING // = 7
50 }
51 
52 enum {
53     MEDIA_UNKNOWN,
54     MEDIA_SERIAL,
55     MEDIA_RAS10_SERIAL,
56     MEDIA_X25,
57     MEDIA_ISDN
58 }
59 
60 enum USER_AUTHENTICATED = 0x0001;
61 enum MESSENGER_PRESENT  = 0x0002;
62 enum PPP_CLIENT         = 0x0004;
63 enum GATEWAY_ACTIVE     = 0x0008;
64 enum REMOTE_LISTEN      = 0x0010;
65 enum PORT_MULTILINKED   = 0x0020;
66 
67 enum size_t
68     RAS_IPADDRESSLEN  = 15,
69     RAS_IPXADDRESSLEN = 22,
70     RAS_ATADDRESSLEN  = 32;
71 
72 // FIXME: should these be grouped together?
73 enum {
74     RASDOWNLEVEL     = 10,
75     RASADMIN_35      = 35,
76     RASADMIN_CURRENT = 40
77 }
78 
79 alias ULONG IPADDR;
80 
81 enum RAS_PARAMS_FORMAT {
82     ParamNumber = 0,
83     ParamString
84 }
85 
86 union RAS_PARAMS_VALUE {
87     DWORD Number;
88     struct _String {
89         DWORD Length;
90         PCHAR Data;
91     }
92     _String String;
93 }
94 
95 struct RAS_PARAMETERS {
96     CHAR[RASSAPI_MAX_PARAM_KEY_SIZE] P_Key = 0;
97     RAS_PARAMS_FORMAT                P_Type;
98     BYTE                             P_Attributes;
99     RAS_PARAMS_VALUE                 P_Value;
100 }
101 
102 struct RAS_USER_0 {
103     BYTE                                    bfPrivilege;
104     WCHAR[RASSAPI_MAX_PHONENUMBER_SIZE + 1] szPhoneNumber = 0;
105 }
106 alias RAS_USER_0* PRAS_USER_0;
107 
108 struct RAS_PORT_0 {
109     WCHAR[RASSAPI_MAX_PORT_NAME]       wszPortName = 0;
110     WCHAR[RASSAPI_MAX_DEVICETYPE_NAME] wszDeviceType = 0;
111     WCHAR[RASSAPI_MAX_DEVICE_NAME]     wszDeviceName = 0;
112     WCHAR[RASSAPI_MAX_MEDIA_NAME]      wszMediaName = 0;
113     DWORD                              reserved;
114     DWORD                              Flags;
115     WCHAR[UNLEN + 1]                   wszUserName = 0;
116     WCHAR[NETBIOS_NAME_LEN]            wszComputer = 0;
117     DWORD                              dwStartSessionTime; // seconds from 1/1/1970
118     WCHAR[DNLEN + 1]                   wszLogonDomain = 0;
119     BOOL                               fAdvancedServer;
120 }
121 alias RAS_PORT_0* PRAS_PORT_0;
122 
123 struct RAS_PPP_NBFCP_RESULT {
124     DWORD dwError;
125     DWORD dwNetBiosError;
126     CHAR[NETBIOS_NAME_LEN + 1]  szName = 0;
127     WCHAR[NETBIOS_NAME_LEN + 1] wszWksta = 0;
128 }
129 
130 struct RAS_PPP_IPCP_RESULT {
131     DWORD dwError;
132     WCHAR[RAS_IPADDRESSLEN + 1] wszAddress = 0;
133 }
134 
135 struct RAS_PPP_IPXCP_RESULT {
136     DWORD dwError;
137     WCHAR[RAS_IPXADDRESSLEN + 1] wszAddress = 0;
138 }
139 
140 struct RAS_PPP_ATCP_RESULT {
141     DWORD dwError;
142     WCHAR[RAS_ATADDRESSLEN + 1] wszAddress = 0;
143 }
144 
145 struct RAS_PPP_PROJECTION_RESULT {
146     RAS_PPP_NBFCP_RESULT nbf;
147     RAS_PPP_IPCP_RESULT  ip;
148     RAS_PPP_IPXCP_RESULT ipx;
149     RAS_PPP_ATCP_RESULT  at;
150 }
151 
152 struct RAS_PORT_1 {
153     RAS_PORT_0 rasport0;
154     DWORD      LineCondition;
155     DWORD      HardwareCondition;
156     DWORD      LineSpeed;
157     WORD       NumStatistics;
158     WORD       NumMediaParms;
159     DWORD      SizeMediaParms;
160     RAS_PPP_PROJECTION_RESULT ProjResult;
161 }
162 alias RAS_PORT_1* PRAS_PORT_1;
163 
164 struct RAS_PORT_STATISTICS {
165     DWORD dwBytesXmited;
166     DWORD dwBytesRcved;
167     DWORD dwFramesXmited;
168     DWORD dwFramesRcved;
169     DWORD dwCrcErr;
170     DWORD dwTimeoutErr;
171     DWORD dwAlignmentErr;
172     DWORD dwHardwareOverrunErr;
173     DWORD dwFramingErr;
174     DWORD dwBufferOverrunErr;
175     DWORD dwBytesXmitedUncompressed;
176     DWORD dwBytesRcvedUncompressed;
177     DWORD dwBytesXmitedCompressed;
178     DWORD dwBytesRcvedCompressed;
179     DWORD dwPortBytesXmited;
180     DWORD dwPortBytesRcved;
181     DWORD dwPortFramesXmited;
182     DWORD dwPortFramesRcved;
183     DWORD dwPortCrcErr;
184     DWORD dwPortTimeoutErr;
185     DWORD dwPortAlignmentErr;
186     DWORD dwPortHardwareOverrunErr;
187     DWORD dwPortFramingErr;
188     DWORD dwPortBufferOverrunErr;
189     DWORD dwPortBytesXmitedUncompressed;
190     DWORD dwPortBytesRcvedUncompressed;
191     DWORD dwPortBytesXmitedCompressed;
192     DWORD dwPortBytesRcvedCompressed;
193 }
194 alias RAS_PORT_STATISTICS* PRAS_PORT_STATISTICS;
195 
196 struct RAS_SERVER_0 {
197     WORD TotalPorts;
198     WORD PortsInUse;
199     DWORD RasVersion;
200 }
201 alias RAS_SERVER_0* PRAS_SERVER_0;
202 
203 extern (Windows) {
204     DWORD RasAdminServerGetInfo(const(WCHAR)*, PRAS_SERVER_0);
205     DWORD RasAdminGetUserAccountServer(const(WCHAR)*, const(WCHAR)*, LPWSTR);
206     DWORD RasAdminUserGetInfo(const(WCHAR)*, const(WCHAR)*, PRAS_USER_0);
207     DWORD RasAdminUserSetInfo(const(WCHAR)*, const(WCHAR)*, PRAS_USER_0);
208     DWORD RasAdminPortEnum(WCHAR*, PRAS_PORT_0*, WORD*);
209     DWORD RasAdminPortGetInfo(const(WCHAR)*, const(WCHAR)*, RAS_PORT_1*,
210      RAS_PORT_STATISTICS*, RAS_PARAMETERS**);
211     DWORD RasAdminPortClearStatistics(const(WCHAR)*, const(WCHAR)*);
212     DWORD RasAdminPortDisconnect(const(WCHAR)*, const(WCHAR)*);
213     DWORD RasAdminFreeBuffer(PVOID);
214     DWORD RasAdminGetErrorString(UINT, WCHAR*, DWORD);
215     BOOL RasAdminAcceptNewConnection(RAS_PORT_1*, RAS_PORT_STATISTICS*,
216      RAS_PARAMETERS*);
217     VOID RasAdminConnectionHangupNotification(RAS_PORT_1*,
218       RAS_PORT_STATISTICS*, RAS_PARAMETERS*);
219     DWORD RasAdminGetIpAddressForUser (WCHAR*, WCHAR*, IPADDR*, BOOL*);
220     VOID RasAdminReleaseIpAddress (WCHAR*, WCHAR*,IPADDR*);
221     DWORD RasAdminGetUserParms(WCHAR*, PRAS_USER_0);
222     DWORD RasAdminSetUserParms(WCHAR*, DWORD, PRAS_USER_0);
223 }