Microsoft KB Archive/279356

From BetaArchive Wiki
Knowledge Base


NDIS debugging tips for Windows Millennium Edition

Article ID: 279356

Article Last Modified on 9/7/2005



APPLIES TO

  • Microsoft Windows Millennium Edition
  • Microsoft Windows Millennium Edition Driver Development Kit



This article was previously published under Q279356

SUMMARY

The checked build of the Network Driver Interface Specification (NDIS) driver in Microsoft Windows Millennium Edition contains debugging options that you can enable in the registry to produce additional kernel debug output. This article describes how to install the checked build of Ndis.vxd and how to enable additional trace information.

MORE INFORMATION

  1. Install the Windows Millennium Edition kernel debugger according to the instructions in the Driver Development Kit (DDK).
  2. Download the check build NDIS binaries from the following Microsoft Knowledge Base article:

    241517 Ndis.exe Windows Millennium Edition NDIS debug binaries

  3. You must disable System File Protection (SFP) before you copy the checked build of Ndis.vxd to the Windows\System folder. You can do this by starting from the Microsoft Windows 98 startup floppy or by starting the system in safe mode. SFP is disabled in safe mode. To start in safe mode, press F8 when Windows Millennium Edition starts, and then select Safe Mode from the menu of boot options.

Four registry entries are available at:

HKLM\System\CurrentControlSet\Services\VxD\NDIS


The four registry entries are:

(DWORD) DebugBreak (Boolean)
(DWORD) TraceImpt (Boolean)
(DWORD) DebugSystems
(DWORD) DebugLevel
                    

A description of each entry follows.

  • DebugBreak: Enabling DebugBreak causes NDIS to break into the debugger through an INT 3 when it loads.
  • TraceImpt: The Trace Important flag (TraceImpt) indicates that trace output should be emitted to the debugger. While debugging, this should always be enabled.
  • DebugSystems: DebugSystems identifies which components of NDIS should emit debug trace information. Possible values include:

    INIT        0x00000001
    CONFIG      0x00000002
    SEND        0x00000004
    RECV        0x00000008
    PROTOCOL          0x00000010
    BIND        0x00000020
    BUSINFO     0x00000040
    REG     0x00000080
    MEMORY      0x00000100
    FILTER      0x00000200
    REQUEST     0x00000400
    WORK ITEM         0x00000800
    PNP     0x00001000
    PM      0x00002000
    OPENREF     0x00004000
    LOCKS       0x00008000
    RESET       0x00010000
    WMI     0x00020000
    CO      0x00040000
    REF     0x00080000
    ALL     0xFFFFFFFF
                            

    Note Please be aware that these values differ from similar lists in other versions of Microsoft Windows. Specifically, the list in the following Microsoft Knowledge Base article, which describes NDIS debugging for Microsoft Windows 98:

    232515 NDIS level and component debugging flags

    These values can be ORed together to specify multiple components. By default, the following components are pre-selected when TraceImpt is enabled:

    • INIT
    • CONFIG
    • PNP
    • PM
    • PROTOCOL
    • BIND
    • BUSINFO
    • REG
  • DebugLevel: DebugLevel allows you to adjust how much trace information is emitted. INFO level produces the most information, and it is the default value if TraceImpt is enabled. Otherwise, its default value is FATAL. Possible values are:

    INFO        0x00000000
    LOG     0x00000800
    WARN        0x00001000
    ERR     0x00002000
    FATAL       0x00003000
                        
  • NdisTraceAll is a flag, which, if enabled, produces very verbose trace information. It cannot be enabled through a registry entry. You may enable it by causing NDIS to break at startup by using the DebugBreak option, described previously. When NDIS hits the breakpoint, load NDIS' symbols and then set ndistraceall: wa ndis
    e ndistraceall 1


Keywords: kbhowto kbinfo kbndis KB279356