In windows 95 and 98 the Dial-up Networking statistics are stored in the registry:
KEY:
HKEY_DYN_DATA\PerfStats\StatData
ENTRY NAMES:
"Dial-Up Adapter\Buffer"
"Dial-Up Adapter\Framing"
"Dial-Up Adapter\Overrun "
"Dial-Up Adapter\Alignment"
"Dial-Up Adapter\Timeout"
"Dial-Up Adapter\CRC"
"Dial-Up Adapter\Runts"
"Dial-Up Adapter\FramesXmit"
"Dial-Up Adapter\FramesRecvd"
"Dial-Up Adapter\BytesXmit"
"Dial-Up Adapter\BytesRecvd"
"Dial-Up Adapter\TotalBytesXmit"
"Dial-Up Adapter\TotalBytesRecvd"
"Dial-Up Adapter\ConnectSpeed"
These value are per windows session, not per DUN session.
To retrieve any of the values for the above entries, you use the regQueryValueEX function, and recieve the data as a long, even though it appears in the registry as binary data.
The following wrapper function and declares shows how to get DUN statistics in windows 95/98.
To use it , call it like so:
Dim myStats As VBRasStats
rtn = VBGetRasStats95(myStats)
The return value from the function is the cumulative logical OR value of all errors encountered when trying to read from the registry. On success, this return value should be zero.
Public Type VBRasStats95 BytesXmited As Long BytesRcved As Long FramesXmited As Long FramesRcved As Long CrcErr As Long TimeoutErr As Long AlignmentErr As Long HardwareOverrunErr As Long FramingErr As Long BufferOverrunErr As Long Runts As Long TotalBytesXmited As Long TotalBytesRcved As Long ConnectSpeed As Long End Type Public Const HKEY_DYN_DATA = &H80000006 Public Const KEY_READ = &H20019 Public Declare Function RegQueryValue _ Lib "advapi32.dll" Alias "RegQueryValueExA" _ (ByVal hKey As Long, ByVal lpValueName As String, _ ByVal lpReserved As Long, lpType As Long, _ lpData As Any, lpcbData As Long) As Long Public Declare Function RegCloseKey _ Lib "advapi32.dll" (ByVal hKey As Long) As Long Public Declare Function RegOpenKeyEx _ Lib "advapi32.dll" Alias "RegOpenKeyExA" _ (ByVal hKey As Long, ByVal lpSubKey As String, _ ByVal ulOptions As Long, ByVal samDesired As Long, _ phkResult As Long) As Long Function VBGetRasStats95(clsVBRasStats As VBRasStats95) As Long Dim hKey As Long, rtn As Long, lngLen As Long, lResult As Long On Error GoTo StatErrorHandler lResult = RegOpenKeyEx(HKEY_DYN_DATA, "PerfStats\StatData", _ 0&, KEY_READ, hKey) With clsVBRasStats lngLen = 4 rtn = RegQueryValue(hKey, "Dial-Up Adapter\Buffer", _ 0&, ByVal 0&, .BufferOverrunErr, lngLen) lResult = lResult Or rtn: lngLen = 4 rtn = RegQueryValue(hKey, "Dial-Up Adapter\BytesRecvd", _ 0&, ByVal 0&, .BytesRcved, lngLen) lResult = lResult Or rtn: lngLen = 4 rtn = RegQueryValue(hKey, "Dial-Up Adapter\BytesXmit", _ 0&, ByVal 0&, .BytesXmited, lngLen) lResult = lResult Or rtn: lngLen = 4 rtn = RegQueryValue(hKey, "Dial-Up Adapter\ConnectSpeed", _ 0&, ByVal 0&, .ConnectSpeed, lngLen) lResult = lResult Or rtn: lngLen = 4 rtn = RegQueryValue(hKey, "Dial-Up Adapter\CRC", _ 0&, ByVal 0&, .CrcErr, lngLen) lResult = lResult Or rtn: lngLen = 4 rtn = RegQueryValue(hKey, "Dial-Up Adapter\Alignment", _ 0&, ByVal 0&, .AlignmentErr, lngLen) lResult = lResult Or rtn: lngLen = 4 rtn = RegQueryValue(hKey, "Dial-Up Adapter\FramesRecvd", _ 0&, ByVal 0&, .FramesRcved, lngLen) lResult = lResult Or rtn: lngLen = 4 rtn = RegQueryValue(hKey, "Dial-Up Adapter\FramesXmit", _ 0&, ByVal 0&, .FramesXmited, lngLen) lResult = lResult Or rtn: lngLen = 4 rtn = RegQueryValue(hKey, "Dial-Up Adapter\Framing", _ 0&, ByVal 0&, .FramingErr, lngLen) lResult = lResult Or rtn: lngLen = 4 rtn = RegQueryValue(hKey, "Dial-Up Adapter\Overrun ", _ 0&, ByVal 0&, .HardwareOverrunErr, lngLen) lResult = lResult Or rtn: lngLen = 4 rtn = RegQueryValue(hKey, "Dial-Up Adapter\Runts", _ 0&, ByVal 0&, .Runts, lngLen) lResult = lResult Or rtn: lngLen = 4 rtn = RegQueryValue(hKey, "Dial-Up Adapter\Timeout", _ 0&, ByVal 0&, .TimeoutErr, lngLen) lResult = lResult Or rtn: lngLen = 4 rtn = RegQueryValue(hKey, "Dial-Up Adapter\TotalBytesRecvd", _ 0&, ByVal 0&, .TotalBytesRcved, lngLen) lResult = lResult Or rtn: lngLen = 4 rtn = RegQueryValue(hKey, "Dial-Up Adapter\TotalBytesXmit", _ 0&, ByVal 0&, .TotalBytesXmited, lngLen) lResult = lResult Or rtn End With StatErrorHandler: RegCloseKey hKey VBGetRasStats95 = lResult End Function
See Also: Contents, Introduction, RasStats Overview, RasStatsNT, RasStats2000