Difference between revisions of "MS OS Descriptors"
(→How it works) |
|||
(One intermediate revision by the same user not shown) | |||
Line 17: | Line 17: | ||
== How it works == |
== How it works == |
||
− | [[File:VisualUSB_MTP_MSOSDesc.png| |
+ | [[File:VisualUSB_MTP_MSOSDesc.png|thumb|250px|MS descriptor Log]] |
The first step is to ask the device whether the string descriptor index 0xee is supported. |
The first step is to ask the device whether the string descriptor index 0xee is supported. |
||
Devices that does not have such an index normally stall this request. |
Devices that does not have such an index normally stall this request. |
||
− | [[more |
+ | [[more to follow]] |
== Tipps == |
== Tipps == |
Latest revision as of 15:40, 15 July 2019
With Windows XP SP3 on Microsoft introduced a new technique to identify a device by a special descriptor without creating a dedicated inf file for driver install. This is the so call the MS OS descriptor. An important information which is always misinterpreted is that the identification ID or string are on an interface base. This means that a composite device can also have multiple "OS descriptor information" Currently the following "Ids" are supported:
Id | Description |
---|---|
RNDIS | Microsoft's own USB to ethernet specification |
WINUSB | WinUSB compatible, can be used for virtually any USB interface |
MTP | Microsoft's extended PTP so that it can be used for any storage device/interface |
PTP | Picture Transfer Protocol |
How it works
The first step is to ask the device whether the string descriptor index 0xee is supported. Devices that does not have such an index normally stall this request. more to follow
Tipps
The initial step is only done once. Once the device was asked whether it can support MS OS descriptor it will never be asked once again in case the device has stalled or a wrong answer was received. When experimenting with these MS OS descriptors it would be helpful to reset the behavior. Either by doing this manually and using the Registry Editor or using a simple batch file:
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\vvvvppppbbbb" /f
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\VUSB3HUB\Parameters\vusbflags\vvvvppppbbbb" /f
pause
Wheras:
Id | Description |
---|---|
vvvv | Vendor Id of the device |
pppp | Product Id of the device |
bbbb | BCD Version of the device (mentioned in the device descriptor: V 1.00 = [0x]0100) |