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