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