The USB team recently reviewed the entire USB documentation set and recommended changes to improve quality and accuracy. As a result of that review, we have been incrementally updating the USB documentation in the MSDN library during the last few months. The documentation updates contain numerous corrections, enhancements, and new topics.
Here are answers to some questions sent by our readers.
I see definitions for certain client driver interfaces in public header files, but they are not documented.
We have added some new topics:
- IOCTL_INTERNAL_USB_GET_TOPOLOGY_ADDRESS (and USB_TOPOLOGY_ADDRESS)
- IOCTL_INTERNAL_USB_GET_DEVICE_CONFIG_INFO (and HUB_DEVICE_CONFIG_INFO)
- Version 3 of the bus interface USB_BUS_INTERFACE_USBDI_V3 along with QueryBusTimeEx and QueryControllerType.
What happened to the USB Port Driver interfaces?
In Windows XP, vendor-supplied bus drivers could directly access interfaces exposed by the USB Port Driver. Those interfaces and related routines have been removed from the MSDN documentation and the Usbbusif.h header file, because the interfaces were never supported externally. If you search for these interfaces by using a search engine, for example, CreateUsbDevice, you will get a Content Removed page on MSDN.
What about WinUSB? These topics are so incomplete!
Hopefully no more! Check out the improved WinUSB documentation.
We have added the following topics, based on this whitepaper, to the MSDN documentation. The MSDN topics are updated more frequently than the whitepaper, so the information in the MSDN topics is more current.
- Guidelines for Providing Access to USB Devices
- WinUSB (Winusb.sys) Installation
- How to Access a USB Device by Using WinUSB Functions
- WinUSB Functions for Pipe Policy Modification
- WinUSB Power Management
As part of our updates to the WinUSB documentation, we have improved the WinUSB Functions section. These reference pages now contain error code information, and Remarks sections have been updated.
Please note that the WinUSB functions were designed for C/C++ applications. Microsoft does not provide a managed API for WinUSB.
Can you provide a list of USB device classes for which Microsoft provides drivers?
Yes! The list is right here with Windows version information: Drivers for the Supported USB Device Classes
Some of the reference topics are marked as not supported, reserved, or deprecated. What does this mean?
If a programming element is marked as “not supported” or “reserved,” do not use it. This usually indicates that the element is used by an internal component and must not be used by client drivers.
If a programming element is marked as “deprecated” in a particular version of Windows, do not use the element in drivers that must run on that version of Windows. For example, USBD_Debug_LogEntry is deprecated in Windows XP and later operating systems.
For a list of IOCTLs (user-mode and kernel-mode) that you should not use, see Deprecated and Reserved USB IOCTLs.
The portal tables in the following topics indicate the routines that your client driver must not use.
The look and feel of the MSDN documentation is so different. I don’t know where I am anymore!
If you use the table of contents to navigate in the MSDN Library, you might have noticed some changes. You can choose from three possible views: Lightweight, ScriptFree, and Classic. You can choose the view you want in the upper right corner of any MSDN topic.
If you do not see the three views (Classic | Lightweight | ScriptFree) listed, click Preferences, and then select the view you want.
The table of contents for USB has been changed, especially the USB Reference section, which is now categorized by Enumerations & Constants, IOCTLs, Structures, and Routines. The reference topics are alphabetized under each of these parent topics.
If you are searching for a particular topic in your search engine, you might hit certain shadow topics that contain a link to the actual topic in MSDN. This is a result of our content migration. If you care about the details read WDK Documentation Republished on MSDN.
I wish the USB docs covered “How to…”
Your feedback is important to us. Please let us know what kind of information you would like to see in the docs. Use the Send feedback on this topic link at the bottom of the page to send us your comments. For information about how this works, read Send us feedback on any WDK Help topic – 24/7.
– Priyanka Wilkins [MSFT], WDK Writer