PlatformVB

DUN Statistics  for win95/98

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