Testing Driver Dispatch Routines

< BACK  NEXT >
[oR]

Even though a driver may be far from complete when only the DriverEntry, Unload, and Dispatch routines are present, significant code paths can be tested at this point. In particular, all of the following can be verified with a simple Win32 console program:

  • Opens and closes a handle to the device.

  • Supports Win32 I/O function calls that return successfully, even if zero byte transfers are specified.

  • Manages requests from multiple callers.

While the successful completion of these tests is hardly earth-shattering, it does form a tried-and-true recipe for driver authoring: Build a driver framework that is proven before adding hardware interaction.

Testing Procedure

The following procedure checks all the code paths through a driver's Dispatch routines:

  1. Write IRP_MJ_CREATE and IRP_MJ_CLOSE Dispatch routines for the driver.

  2. Test the driver with a simple Win32 console program that gets a handle to the device under test and then closes the handle.

  3. Write other Dispatch routines but ensure that all call IoCompeteRequest rather than starting any device operations.

  4. Enhance the Win32 test program to make ReadFile, WriteFile, and DeviceIoControl calls that exercise each driver's Dispatch routine. Alternatively, the test program can request zero-byte transfers.

  5. If a device is sharable, run several copies of the test program at once to be sure the driver works with multiple open handles.

  6. If a driver supports multiple physical devices, repeat the test with each device unit.

Sample Test Program

This is an example of a Win32 console test program that can be used to verify code paths through a driver's Dispatch routines.

 #include <windows.h> #include <stdio.h> void main() {      HANDLE hDevice;      BOOL status;      hDevice = CreateFile( "\\\\.\\LBK1" ... );      :      status = ReadFile( hDevice, ... );      :      status = WriteFile( hDevice, ... );      :      status = DeviceIoControl( hDevice, ... );      :      status = CloseHandle( hDevice ); } 
< BACK  NEXT >


The Windows 2000 Device Driver Book(c) A Guide for Programmers
The Windows 2000 Device Driver Book: A Guide for Programmers (2nd Edition)
ISBN: 0130204315
EAN: 2147483647
Year: 2000
Pages: 156

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net