Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results

Home NTDEV

Before Posting...

Please check out the Community Guidelines in the Announcements and Administration Category.

More Info on Driver Writing and Debugging


The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.


Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/


USB Descriptors and Win USB

PummeloPummelo Member Posts: 8

We are currently writing firmware for a USB superspeed device which is planed to be used by one application only and the idea is to access it through Winusb.
If possible we want to avoid writing (and signing) an .inf file to associate the device with the winusb driver.
A chain of documents apply to what descriptors need to be provided by the device
According to
https://learn.microsoft.com/en-us/previous-versions/dn385747(v=msdn.10)?redirectedfrom=MSDN
a BOS descriptor is now used to declare windows specific functionality, no longer the string index at 0xEE.
Question: Does this mean for the firmware that no special handling of 0xEE string index is required if Windows 10 is the minimum supported target OS?

The Winusb association should be possible by requesting it by means of a corresponding descriptor (code fragment)
// Microsoft OS 2.0 compatible ID descriptor (table 13)
{20, // wLength
3}, // MS_OS_20_FEATURE_COMPATIBLE_ID
"WINUSB",
"",
{4+21+1+40<<1,//wLength:
4, // wDescriptorType: MS_OS_20_FEATURE_REG_PROPERTY: 0x04 (Table 9)
7, //wPropertyDataType: REG_MULTI_SZ (Table 15)
21<<1, //wPropertyNameLength:
u"DeviceInterfaceGUIDs", //bPropertyName
....

However: how do we get the device to show up in Windows Device Manager as a custom device under some tree node other then "USB Controller"?
In previous developments we used an .inf file to do exactly this.
How can the same be achieved using device descriptors and is it possible at all?
I read about extended property descriptors to potentially store things like icons and URLs but no pointers on how to add a custom class of devices. All examples I found so far use device class 0xff and subclass 0x00.

Any hints would be welcome!

Best
roland

Comments

  • Tim_RobertsTim_Roberts Member - All Emails Posts: 14,716

    Nope, that's the tradeoff for the convenience. The Device Manager class for a device is determined strictly by its INF. When you have extended descriptor, you are assigned a compatible ID that maps to an INF that has WinUSB as a driver, but is in "USB Device" or "USB Controller" as an install class. If you need a custom class, then you must use an INF.

    Tim Roberts, [email protected]
    Providenza & Boekelheide, Inc.

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. Sign in or register to get started.

Upcoming OSR Seminars
OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!
Kernel Debugging 13-17 May 2024 Live, Online
Developing Minifilters 1-5 Apr 2024 Live, Online
Internals & Software Drivers 11-15 Mar 2024 Live, Online
Writing WDF Drivers 26 Feb - 1 Mar 2024 Live, Online