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