Article ID: 838100 - View products that this article applies to.
You may experience the following symptoms when you use the USBView.exe program to enumerate universal serial bus (USB) devices and host controllers:
Issue A - USB 2.0 host controllers are not enumerated on Windows 2000-based computersThe USBView.exe program does not enumerate USB 2.0 host controllers on Windows 2000-based computers because two different USB driver stacks run on Windows 2000-based computers, as follows:
\DosDevices\HCDxBoth USB driver stacks start the instance number at 0. This behavior means that both driver stacks try to create the following symbolic link name:
\DosDevices\HCD0The USB 2.0 driver stack tries to create this symbolic link name after the USB 1.1 driver stack creates the symbolic link name. Therefore, the symbolic link name is not created, and the USB 2.0 host controller cannot be accessed through a symbolic link.
Issue B - Attached USB devices are not displayedThe USB driver stack that is included in Windows XP SP1 includes support for a new input/output control (IOCTL) that is named as follows:
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EXThis IOCTL replaces the earlier version of the IOCTL that is named IOCTL_USB_GET_NODE_CONNECTION_INFORMATION. The earlier version of the IOCTL was used in earlier versions of the USBView.exe program.
The USBView.exe program was modified to use this newer IOCTL because it returns information about whether the USB device is operating at high speed.
If you try to use IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX on pre-Windows XP SP1-based computers, the attempt is not successful. Additionally, no information about the USB device is displayed.
Issue A - USB 2.0 host controllers are not enumerated on Microsoft Windows 2000-based computersIn addition to supporting the use of a symbolic link name, the new USB driver stack supports the use of a GUID-based device interface.
The EnumerateHostControllers function in the Enum.c file includes a section whose comments explain how to use this technique to enumerate the host controller. You can modify this function to detect when it is running on a Windows 2000-based computer. You can then use both the GUID-based enumeration method and the symbolic link method to enumerate all USB host controllers.
Issue B - Attached USB devices are not displayedYou can modify all uses of the new IOCTL, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX, in the USBView.exe program. You can modify the IOCTL so that if the IOCTL is not successful, the USBView.exe program falls back to use the earlier version of the IOCTL, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION.
This fallback behavior allows the USBView.exe program to still report whether a device is running at high speed on a computer that is running Windows XP SP1 or later versions of Windows. Additionally, this fallback behavior also displays USB devices on pre-Windows XP SP1-based computers.
This problem has been fixed in the Windows Server 2003 Service Pack 1 DDK.
Article ID: 838100 - Last Review: August 4, 2005 - Revision: 2.0