PHD Computer Consultants Ltd
... WDM Book New Information Resources
Last modified: 7 November 2000.

7 Nov 00
Kosta Koeman (originator of USBCheck) writes:

In your example for usbkbd.sys, you overwrite hidusb.sys. However, this is not necessary, as you can change in the registry which driver is loaded for an instance of a device (the NTMPDriver entry for Win98).

While at Intel, I wrote a utility, USBRegEd.exe (available at Now this version works only on Win98 (possibly ME, but I haven't tried). In the future, I will write a version for Win2K.

15 Oct 99
The USB 2 specification is being finalised. Contrary to statements in the USB 1 spec, USB 2 is going to run much faster, ie 40 times faster at 480 MB/s. This will let more peripherals work via this popular interface.

Older USB 1 peripherals will still work in a USB 2 system, as USB 2 hubs can reduce the data rate to USB 1 level. The cabling and connector system is exactly the same. In addition, a microframe of 125 microseconds will be introduced.

14 Sep 99
When processing a PnP Query Capabilities request (IRP_MN_QUERY_CAPABILITIES) you may find it useful to set the SurpriseRemovalOK flag to TRUE to stop W2000 complaining after a device is removed. This is particularly useful for peripherals that can easily be unplugged, such as USB devices.
The SurpriseRemovalOK flag is in the Parameters.DeviceCapabilities.Capabilities DEVICE_CAPABILITIES structure in the IRP stack. Set the flag after the Query Capabilities request has been processed by lower drivers. You only set this flag if the DEVICE_CAPABILITIES structure Version field is at least 1.

This tip is swiped from the AnchorChips EzUsbSys driver which says that it was swiped from Walter Oney. Thanks.

14 Sep 99
Dump switch
Microsoft has published an article online at describing how to wire up a pushbutton switch that causes the system to crash and produce a crash dump. A prototype inserted into a PCI slot is described. This tool could be useful if a system has frozen.

14 Sep 99
Installation and Setup guidance from Microsoft
Microsoft has provided more information on some device driver installation issues in W2000 Beta 3 or later online at This artcile first describes how W2000 will try to install a device if a user does not have Amdinistrator privileges. In addition, the paper describes the UpdateDriverForPlugAndPlayDevices Win32 Setup API call. This function scans through all devices on the machine and attempts to update drivers that match a given Hardware Id.

I suggest that you also read the article at describing the InteractiveInstall INF file directive. And describes how to generate more SetupAPI logs during W2000 Setup and device installation.

20 Aug 99
New W2000 DDK Tools
The latest W2000 DDK has the following tools in the DDK Tools directory

Useful web sites
In addition to the sites listed in Appendix A, these web sites have useful device driver information:

How to Query Plug & play devices
Eliyas Yakub posted this message to the NTDEV mailing list:
"You can get information about all kinds of devices (real\virtual\logical) currently present in the system using CM APIs. The function code given here basically walks the devnode tree and prints the device description of all the devices. I just modified DriverNameToDeviceDesc functions used in USBVIEW sample of DDK (ddk\src\wdm\usbview\devnode.c) to demonstrate this functionality."
The (slightly amended) Win32 code is available in cm.cpp. The header file cfgmgr32.h and the necessary library file cfgmgr32.lib are in the W2000 DDK directories.

Latency analysis by Intel
Intel has published an analysis of Interrupt, DPC and Thread latencies in Windows 98 and NT 4 at Thanks to Jan Bottorff on the NTDEV mailing list for this link.

There are three important conclusions from their analysis:

One of the authors, Erik Cota-Robles, also added this comment to me:

"Also, our results apply not just to drivers that use their own threads but also to drivers which queue CriticalWorkItems from a DPC. An enqueued CriticalWorkItem will experience the thread latency that we measured since critical work items are serviced by a WDM kernel worker thread executing at default real-time priority. In general that thread will be blocked waiting on the queue and it will be awakened via a kernel event or equivalent mechanism."

KRFTech at now also sell KernelDriver, "a new product for full kernel mode device driver development. The new tool is a set of C++ classes wrapping complicated and tedious DDK tasks."

WDM Book main page