4e2933c620 2015-04-21 kinaba: /***********************************************************************\ 4e2933c620 2015-04-21 kinaba: * rassapi.d * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Windows API header module * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Translated from MinGW Windows headers * 4e2933c620 2015-04-21 kinaba: * by Stewart Gordon * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Placed into public domain * 4e2933c620 2015-04-21 kinaba: \***********************************************************************/ 4e2933c620 2015-04-21 kinaba: module win32.rassapi; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: private import win32.lmcons, win32.windef; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: // FIXME: check types of constants 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const size_t 4e2933c620 2015-04-21 kinaba: RASSAPI_MAX_PHONENUMBER_SIZE = 128, 4e2933c620 2015-04-21 kinaba: RASSAPI_MAX_MEDIA_NAME = 16, 4e2933c620 2015-04-21 kinaba: RASSAPI_MAX_PORT_NAME = 16, 4e2933c620 2015-04-21 kinaba: RASSAPI_MAX_DEVICE_NAME = 128, 4e2933c620 2015-04-21 kinaba: RASSAPI_MAX_DEVICETYPE_NAME = 16, 4e2933c620 2015-04-21 kinaba: RASSAPI_MAX_PARAM_KEY_SIZE = 32; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const RASPRIV_NoCallback = 0x01; 4e2933c620 2015-04-21 kinaba: const RASPRIV_AdminSetCallback = 0x02; 4e2933c620 2015-04-21 kinaba: const RASPRIV_CallerSetCallback = 0x04; 4e2933c620 2015-04-21 kinaba: const RASPRIV_DialinPrivilege = 0x08; 4e2933c620 2015-04-21 kinaba: const RASPRIV_CallbackType = 0x07; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum { 4e2933c620 2015-04-21 kinaba: RAS_MODEM_OPERATIONAL = 1, 4e2933c620 2015-04-21 kinaba: RAS_MODEM_NOT_RESPONDING, 4e2933c620 2015-04-21 kinaba: RAS_MODEM_HARDWARE_FAILURE, 4e2933c620 2015-04-21 kinaba: RAS_MODEM_INCORRECT_RESPONSE, 4e2933c620 2015-04-21 kinaba: RAS_MODEM_UNKNOWN // = 5 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum { 4e2933c620 2015-04-21 kinaba: RAS_PORT_NON_OPERATIONAL = 1, 4e2933c620 2015-04-21 kinaba: RAS_PORT_DISCONNECTED, 4e2933c620 2015-04-21 kinaba: RAS_PORT_CALLING_BACK, 4e2933c620 2015-04-21 kinaba: RAS_PORT_LISTENING, 4e2933c620 2015-04-21 kinaba: RAS_PORT_AUTHENTICATING, 4e2933c620 2015-04-21 kinaba: RAS_PORT_AUTHENTICATED, 4e2933c620 2015-04-21 kinaba: RAS_PORT_INITIALIZING // = 7 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum { 4e2933c620 2015-04-21 kinaba: MEDIA_UNKNOWN, 4e2933c620 2015-04-21 kinaba: MEDIA_SERIAL, 4e2933c620 2015-04-21 kinaba: MEDIA_RAS10_SERIAL, 4e2933c620 2015-04-21 kinaba: MEDIA_X25, 4e2933c620 2015-04-21 kinaba: MEDIA_ISDN 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const USER_AUTHENTICATED = 0x0001; 4e2933c620 2015-04-21 kinaba: const MESSENGER_PRESENT = 0x0002; 4e2933c620 2015-04-21 kinaba: const PPP_CLIENT = 0x0004; 4e2933c620 2015-04-21 kinaba: const GATEWAY_ACTIVE = 0x0008; 4e2933c620 2015-04-21 kinaba: const REMOTE_LISTEN = 0x0010; 4e2933c620 2015-04-21 kinaba: const PORT_MULTILINKED = 0x0020; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const size_t 4e2933c620 2015-04-21 kinaba: RAS_IPADDRESSLEN = 15, 4e2933c620 2015-04-21 kinaba: RAS_IPXADDRESSLEN = 22, 4e2933c620 2015-04-21 kinaba: RAS_ATADDRESSLEN = 32; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: // FIXME: should these be grouped together? 4e2933c620 2015-04-21 kinaba: enum { 4e2933c620 2015-04-21 kinaba: RASDOWNLEVEL = 10, 4e2933c620 2015-04-21 kinaba: RASADMIN_35 = 35, 4e2933c620 2015-04-21 kinaba: RASADMIN_CURRENT = 40 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: alias ULONG IPADDR; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum RAS_PARAMS_FORMAT { 4e2933c620 2015-04-21 kinaba: ParamNumber = 0, 4e2933c620 2015-04-21 kinaba: ParamString 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: union RAS_PARAMS_VALUE { 4e2933c620 2015-04-21 kinaba: DWORD Number; 4e2933c620 2015-04-21 kinaba: struct _String { 4e2933c620 2015-04-21 kinaba: DWORD Length; 4e2933c620 2015-04-21 kinaba: PCHAR Data; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: _String String; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct RAS_PARAMETERS { 4e2933c620 2015-04-21 kinaba: CHAR[RASSAPI_MAX_PARAM_KEY_SIZE] P_Key; 4e2933c620 2015-04-21 kinaba: RAS_PARAMS_FORMAT P_Type; 4e2933c620 2015-04-21 kinaba: BYTE P_Attributes; 4e2933c620 2015-04-21 kinaba: RAS_PARAMS_VALUE P_Value; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct RAS_USER_0 { 4e2933c620 2015-04-21 kinaba: BYTE bfPrivilege; 4e2933c620 2015-04-21 kinaba: WCHAR[RASSAPI_MAX_PHONENUMBER_SIZE + 1] szPhoneNumber; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias RAS_USER_0* PRAS_USER_0; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct RAS_PORT_0 { 4e2933c620 2015-04-21 kinaba: WCHAR[RASSAPI_MAX_PORT_NAME] wszPortName; 4e2933c620 2015-04-21 kinaba: WCHAR[RASSAPI_MAX_DEVICETYPE_NAME] wszDeviceType; 4e2933c620 2015-04-21 kinaba: WCHAR[RASSAPI_MAX_DEVICE_NAME] wszDeviceName; 4e2933c620 2015-04-21 kinaba: WCHAR[RASSAPI_MAX_MEDIA_NAME] wszMediaName; 4e2933c620 2015-04-21 kinaba: DWORD reserved; 4e2933c620 2015-04-21 kinaba: DWORD Flags; 4e2933c620 2015-04-21 kinaba: WCHAR[UNLEN + 1] wszUserName; 4e2933c620 2015-04-21 kinaba: WCHAR[NETBIOS_NAME_LEN] wszComputer; 4e2933c620 2015-04-21 kinaba: DWORD dwStartSessionTime; // seconds from 1/1/1970 4e2933c620 2015-04-21 kinaba: WCHAR[DNLEN + 1] wszLogonDomain; 4e2933c620 2015-04-21 kinaba: BOOL fAdvancedServer; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias RAS_PORT_0* PRAS_PORT_0; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct RAS_PPP_NBFCP_RESULT { 4e2933c620 2015-04-21 kinaba: DWORD dwError; 4e2933c620 2015-04-21 kinaba: DWORD dwNetBiosError; 4e2933c620 2015-04-21 kinaba: CHAR[NETBIOS_NAME_LEN + 1] szName; 4e2933c620 2015-04-21 kinaba: WCHAR[NETBIOS_NAME_LEN + 1] wszWksta; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct RAS_PPP_IPCP_RESULT { 4e2933c620 2015-04-21 kinaba: DWORD dwError; 4e2933c620 2015-04-21 kinaba: WCHAR[RAS_IPADDRESSLEN + 1] wszAddress; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct RAS_PPP_IPXCP_RESULT { 4e2933c620 2015-04-21 kinaba: DWORD dwError; 4e2933c620 2015-04-21 kinaba: WCHAR[RAS_IPXADDRESSLEN + 1] wszAddress; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct RAS_PPP_ATCP_RESULT { 4e2933c620 2015-04-21 kinaba: DWORD dwError; 4e2933c620 2015-04-21 kinaba: WCHAR[RAS_ATADDRESSLEN + 1] wszAddress; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct RAS_PPP_PROJECTION_RESULT { 4e2933c620 2015-04-21 kinaba: RAS_PPP_NBFCP_RESULT nbf; 4e2933c620 2015-04-21 kinaba: RAS_PPP_IPCP_RESULT ip; 4e2933c620 2015-04-21 kinaba: RAS_PPP_IPXCP_RESULT ipx; 4e2933c620 2015-04-21 kinaba: RAS_PPP_ATCP_RESULT at; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct RAS_PORT_1 { 4e2933c620 2015-04-21 kinaba: RAS_PORT_0 rasport0; 4e2933c620 2015-04-21 kinaba: DWORD LineCondition; 4e2933c620 2015-04-21 kinaba: DWORD HardwareCondition; 4e2933c620 2015-04-21 kinaba: DWORD LineSpeed; 4e2933c620 2015-04-21 kinaba: WORD NumStatistics; 4e2933c620 2015-04-21 kinaba: WORD NumMediaParms; 4e2933c620 2015-04-21 kinaba: DWORD SizeMediaParms; 4e2933c620 2015-04-21 kinaba: RAS_PPP_PROJECTION_RESULT ProjResult; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias RAS_PORT_1* PRAS_PORT_1; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct RAS_PORT_STATISTICS { 4e2933c620 2015-04-21 kinaba: DWORD dwBytesXmited; 4e2933c620 2015-04-21 kinaba: DWORD dwBytesRcved; 4e2933c620 2015-04-21 kinaba: DWORD dwFramesXmited; 4e2933c620 2015-04-21 kinaba: DWORD dwFramesRcved; 4e2933c620 2015-04-21 kinaba: DWORD dwCrcErr; 4e2933c620 2015-04-21 kinaba: DWORD dwTimeoutErr; 4e2933c620 2015-04-21 kinaba: DWORD dwAlignmentErr; 4e2933c620 2015-04-21 kinaba: DWORD dwHardwareOverrunErr; 4e2933c620 2015-04-21 kinaba: DWORD dwFramingErr; 4e2933c620 2015-04-21 kinaba: DWORD dwBufferOverrunErr; 4e2933c620 2015-04-21 kinaba: DWORD dwBytesXmitedUncompressed; 4e2933c620 2015-04-21 kinaba: DWORD dwBytesRcvedUncompressed; 4e2933c620 2015-04-21 kinaba: DWORD dwBytesXmitedCompressed; 4e2933c620 2015-04-21 kinaba: DWORD dwBytesRcvedCompressed; 4e2933c620 2015-04-21 kinaba: DWORD dwPortBytesXmited; 4e2933c620 2015-04-21 kinaba: DWORD dwPortBytesRcved; 4e2933c620 2015-04-21 kinaba: DWORD dwPortFramesXmited; 4e2933c620 2015-04-21 kinaba: DWORD dwPortFramesRcved; 4e2933c620 2015-04-21 kinaba: DWORD dwPortCrcErr; 4e2933c620 2015-04-21 kinaba: DWORD dwPortTimeoutErr; 4e2933c620 2015-04-21 kinaba: DWORD dwPortAlignmentErr; 4e2933c620 2015-04-21 kinaba: DWORD dwPortHardwareOverrunErr; 4e2933c620 2015-04-21 kinaba: DWORD dwPortFramingErr; 4e2933c620 2015-04-21 kinaba: DWORD dwPortBufferOverrunErr; 4e2933c620 2015-04-21 kinaba: DWORD dwPortBytesXmitedUncompressed; 4e2933c620 2015-04-21 kinaba: DWORD dwPortBytesRcvedUncompressed; 4e2933c620 2015-04-21 kinaba: DWORD dwPortBytesXmitedCompressed; 4e2933c620 2015-04-21 kinaba: DWORD dwPortBytesRcvedCompressed; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias RAS_PORT_STATISTICS* PRAS_PORT_STATISTICS; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct RAS_SERVER_0 { 4e2933c620 2015-04-21 kinaba: WORD TotalPorts; 4e2933c620 2015-04-21 kinaba: WORD PortsInUse; 4e2933c620 2015-04-21 kinaba: DWORD RasVersion; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias RAS_SERVER_0* PRAS_SERVER_0; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: extern (Windows) { 4e2933c620 2015-04-21 kinaba: DWORD RasAdminServerGetInfo(CPtr!(WCHAR), PRAS_SERVER_0); 4e2933c620 2015-04-21 kinaba: DWORD RasAdminGetUserAccountServer(CPtr!(WCHAR), CPtr!(WCHAR), LPWSTR); 4e2933c620 2015-04-21 kinaba: DWORD RasAdminUserGetInfo(CPtr!(WCHAR), CPtr!(WCHAR), PRAS_USER_0); 4e2933c620 2015-04-21 kinaba: DWORD RasAdminUserSetInfo(CPtr!(WCHAR), CPtr!(WCHAR), PRAS_USER_0); 4e2933c620 2015-04-21 kinaba: DWORD RasAdminPortEnum(WCHAR*, PRAS_PORT_0*, WORD*); 4e2933c620 2015-04-21 kinaba: DWORD RasAdminPortGetInfo(CPtr!(WCHAR), CPtr!(WCHAR), RAS_PORT_1*, 4e2933c620 2015-04-21 kinaba: RAS_PORT_STATISTICS*, RAS_PARAMETERS**); 4e2933c620 2015-04-21 kinaba: DWORD RasAdminPortClearStatistics(CPtr!(WCHAR), CPtr!(WCHAR)); 4e2933c620 2015-04-21 kinaba: DWORD RasAdminPortDisconnect(CPtr!(WCHAR), CPtr!(WCHAR)); 4e2933c620 2015-04-21 kinaba: DWORD RasAdminFreeBuffer(PVOID); 4e2933c620 2015-04-21 kinaba: DWORD RasAdminGetErrorString(UINT, WCHAR*, DWORD); 4e2933c620 2015-04-21 kinaba: BOOL RasAdminAcceptNewConnection(RAS_PORT_1*, RAS_PORT_STATISTICS*, 4e2933c620 2015-04-21 kinaba: RAS_PARAMETERS*); 4e2933c620 2015-04-21 kinaba: VOID RasAdminConnectionHangupNotification(RAS_PORT_1*, 4e2933c620 2015-04-21 kinaba: RAS_PORT_STATISTICS*, RAS_PARAMETERS*); 4e2933c620 2015-04-21 kinaba: DWORD RasAdminGetIpAddressForUser (WCHAR*, WCHAR*, IPADDR*, BOOL*); 4e2933c620 2015-04-21 kinaba: VOID RasAdminReleaseIpAddress (WCHAR*, WCHAR*,IPADDR*); 4e2933c620 2015-04-21 kinaba: DWORD RasAdminGetUserParms(WCHAR*, PRAS_USER_0); 4e2933c620 2015-04-21 kinaba: DWORD RasAdminSetUserParms(WCHAR*, DWORD, PRAS_USER_0); 4e2933c620 2015-04-21 kinaba: }