Microsoft KB Archive/323479

From BetaArchive Wiki
Knowledge Base


Article ID: 323479

Article Last Modified on 10/26/2006



APPLIES TO

  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition



This article was previously published under Q323479


SYMPTOMS

If you have multiple universal serial bus (USB) devices connected to an external USB hub, when you unplug a USB device during system hibernation and then plug another USB device into the same USB port, the new USB device may not function.

RESOLUTION

To resolve this problem, obtain the latest service pack for Windows XP. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

322389 How to obtain the latest Windows XP service pack


STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.


MORE INFORMATION

When your computer resumes after hibernation, the USB hub driver (Usbhub.sys) is responsible for restoring each USB device that is attached to the hub back to the configuration that it had before hibernation. The hub driver does this by determining whether each USB port that had a device attached before hibernation still has a device attached after hibernation.

If the hub driver finds that a USB device is still attached to the port, it allocates a USB address and assigns it to the device. The hub driver then reads the device's USB device descriptor. If the device descriptor does not match the device descriptor for the device that was attached to the port before hibernation, the hub driver marks the previously attached device object for removal. The hub driver also frees up the USB address that is assigned to the device. However, the hub driver does not disable the USB port that the device is attached to.

When the hub driver moves on to the next attached USB device, the hub driver assigns it the same USB address that it had assigned to the previously attached device because its USB address was freed. Because the port for that previously attached device was never disabled, both devices then decode the same USB address. When the hub driver tries to read the device descriptor for the next device, both devices try to respond. This behavior results in bus contention.

This problem may also affect devices that download their firmware from their device drivers when they are initialized. This behavior occurs if such a device reports a different vendor ID or product ID after the downloaded firmware is initialized. When the system resumes from hibernation, this type of USB device will have reverted to its default power-on state and will have reverted to its original vendor ID and product ID. Windows interprets this change to mean that the device was swapped during hibernation.

REFERENCES

For additional information, click the following article numbers to view the articles in the Microsoft Knowledge Base:

816915 New file naming schema for Microsoft Windows software update packages


Keywords: kbhotfixserver kbqfe kbbug kbfix kbqfe kbprb KB323479