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