|  | /** | 
|  | * 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); | 
|  | } |