Programming the Microsoft Windows Driver Model Second Edition
Service Pack 3 for Sample Programs
Copyright © 2003 by Walter Oney

Your copy of the WDM sample programs has now been upgraded with Service Pack 3. If this is the first service pack you’ve installed, I recommend reading these remarks in reverse order, taking care to note where earlier comments have been superseded.

Service Pack 3, released on June 12, 2003, includes the following changes:

·             The filter driver samples (FILTER and POWTRACE) have been revised to use FILE_DEVICE_UNKNOWN as the device type except in Windows 2000. Refer to the online errata for pp.780-81 for an explanation.

·             The WMI samples (WMI42 and WMIEXTRA) have been revised to perform their registration calls during StartDevice instead of AddDevice. Refer to the online errata for p. 512 for an explanation.

·             WDMWIZ has been revised to incorporate both of the errata referred to in the previous two bullet items.

·             WDMSTUB has been revised to avoid referencing the atoi service, which isn’t available in all versions of Windows 98.

·             WDMCHECK has been revised to search in the kernel for symbols imported from SCSIPORT instead of SCSI.

Service Pack 2, released on February 4, 2003, includes the following changes:

·             The RES subdirectory for the TEST program accompanying PNPEVENT is now part of the sample set.

·             This service pack contains GENERIC.SYS version 2.01. This version of GENERIC correctly sets the initial IRP status for its IRP_MN_QUERY_CAPABILITIES request to avoid a verifier bug check, and it also automatically queries for capabilities inside GenericWakeupControl if necessary. These changes allow you to call GenericWakeupControl from your StartDevice function without first specifically checking whether your device supports wakeup.

·             HIDFAKE now includes a source comment to remind you not to create a multi-collection faux HID device based on the sample without making sure that DevicesArePolled is FALSE.

·             USBISO’s SelectDefaultInterface function no longer contains an extraneous call to IoReleaseRemoveLock.

·             The instructions for the POLLING and PIOFAKE samples now remind you to copy DEVSIM.SYS to the Drivers directory on Windows 2000 and XP systems.

·             All the USB project settings have been updated (again!) to use a special compatibility library, named USBD98.LIB. You no longer need the Windows 98 DDK to build USB drivers that will run on Windows 98. WDMWIZ will include this library. You should modify any existing projects (other than the book samples) by hand.

Service Pack 1, released on December 14, 2002, includes the following changes:

·             WDMSTUB now stubs WmiSystemControl and WmiCompleteRequest on Windows 98 Gold only. This change allows drivers that support WMI to load on this platform. Note that WMILIB.SYS is not available on this platform and wouldn’t work even it were because of fundamental bugs in the WMI support.

·             USBISO no longer incorrectly releases an instance of the remove lock if it’s unable to configure an alternate interface while handling IRP_MJ_SYSTEM_CONTROL.

·             The project settings for all of the USB samples in Chapter 12 have been modified to get USBD.LIB from the Windows 98 DDK. The Windows .NET DDK no longer includes the compatible version of this library needed for drivers that will run in Windows 98 and Windows Millennium.