Enabling the NDIS Verifier
This topic explains how to enable the NDIS Verifier.
To enable the NDIS Verifier
Install a checked version of Ndis.sys to the %SystemRoot%\System32\Drivers directory on the target computer.
Note
Instead of installing an entire checked-build operating system, just copy the checked version of Ndis.sys onto an otherwise free-build operating system.
Because Windows File Protection (WFP) protects against the replacement of any system files, you must start the operating system in safe mode.
Enable the network driver that is to be verified in the input/output (I/O) manager's Driver Verifier. For more information, see Driver Verifier.
Enable different levels for NDIS Verifier by adding the following Flags entry and value to the HKLM\System\CurrentControlSet\Services\NDIS\Parameters key in the registry:
"Flags":dword:0x00000FFF
The following table indicates acceptable values to set for Flags:
Flag Bit Value NDIS_GFLAG_INIT_TIME
0x00000001
NDIS_GFLAG_TRACK_PKTS
0x00000002
NDIS_GFLAG_INJECT_ALLOCATION_FAILURE
0x00000004
NDIS_GFLAG_SPECIAL_POOL_ALLOCATION
0x00000008
NDIS_GFLAG_DONT_VERIFY
0x00000100
NDIS_GFLAG_BREAK_ON_WARNING
0x00000200
NDIS_GFLAG_WARNING_LEVEL_MASK
0x00000030
NDIS_GFLAG_WARN_LEVEL_0
0x00000000
NDIS_GFLAG_WARN_LEVEL_1
0x00000010
NDIS_GFLAG_WARN_LEVEL_2
0x00000020
NDIS_GFLAG_WARN_LEVEL_3
0x00000030
You can select more than one Flags bit. If more than one bit is selected, OR the values together.
Note Along with enabling the network driver in the Driver Verifier, you should enable NDIS debug tracing to let the Ndis.sys driver perform most of the debugging work on behalf of the network driver.
By setting bits for the Flags entry, you can control how the NDIS Verifier behaves. For example, if you set the NDIS_GFLAG_BREAK_ON_WARNING bit, the debugger breaks on every warning. In addition, the various warning level bits let you specify how strictly you want NDIS to verify. The higher you set the level, the stricter NDIS Verifier is as indicated in the following examples:
- Warning level 0 breaks on outright bugs only. For example, indicating packets before you set the filter or not registering a MiniportShutdown function.
- Warning level 1 warns you that your driver called a function that is obsolete for Windows 2000 and later operating systems. For example, the NdisOverrideBusNumber function.
- Warning level 2 warns you about actions that you should not implement in your driver. For example, if you wrote your driver to call the NdisReadConfiguration function instead of the NdisMQueryAdapterResources function to get the standard resources.
- Warning level 3 warns you that your driver called a function that is obsolete for Windows XP and later operating systems. For example, the immediate functions such as NdisImmediateRead/WritePciSlotInformation. Typically, you should set the level to "Warning level 3" to detect everything.