Intricacies of the Device Verifier
When looking in greater detail at the Device Driver Verifier, there are several features that many developers are looking to include in both their Windows 2000 and Windows XP device drivers. Windows XP Professional's initial driver sets include many of these features, with the device drivers themselves being in beta:
AutoCheck Routines. These checks are always performed on a driver that is being verified, regardless of which options have been selected for the specifics of the device driver command set. If the driver uses memory at an improper IRQ, improperly calls or releases spin locks and memory allocations, improperly switches stacks, or frees a memory pool without first removing timers, Driver Verifier will detect this behavior. When the driver is unloaded, Driver Verifier will check to see that it has properly released its resources.
Definition of Special Memory Pool. When this option is active, Driver Verifier allocates most of the driver's memory requests from a special pool. This special pool is monitored for memory overruns, memory underruns, and memory that is accessed after it is freed.
Forcing IRQ Checking. When this option is active, Driver Verifier places extreme memory pressure on the driver by invalidating pageable code. If the driver attempts to access paged memory at the wrong IRQL or while holding a spin lock, Driver Verifier detects this behavior.
Simulating Low Resource Conditions. When this option is active, Driver Verifier randomly fails pool allocation requests and other resource requests. By injecting these allocation faults into the system, Driver Verifier tests the driver's capability to cope with a low-resource situation.
Tracking Memory Pool Usage. When this option is active, Driver Verifier checks to see if the driver has freed all its memory allocations when it is unloaded. This reveals memory leaks.
Verification of I/O. When this option is active, Driver Verifier allocates the driver's IRPs from a special pool, and monitors the driver's I/O handling. This detects illegal or inconsistent use of I/O routines.
DMA Verification. When this option is active, Driver Verifier monitors the driver's use of DMA routines. It detects improper use of DMA buffers, adapters, and map registers. This is a new development in the Device Verifier, specific to Windows XP only.
Deadlock Detection. When this option is active, Driver Verifier monitors the driver's use of spin locks and requests for multiplexing driver execution requests. It will detect if the driver's code has the potential for causing a deadlock at some point. This feature of the Device Verifier is only in Windows XP today.
SCSI Verification. When this option is active, Driver Verifier will monitor a SCSI driver for improper use of exported SCSI port routines, excessive delays, and improper handling of SCSI requests. Although the use of SCSI devices is pervasive, it's surprising that it wasn't in Windows 2000. Windows XP will be the first operating system to see SCSI verification within a widespread release.