USB services: Difference between revisions

Line 641: Line 641:
| 0x4 || 0x2 || idProduct
| 0x4 || 0x2 || idProduct
|-
|-
| 0x6 || 0x7 || Unused?
| 0x6 || 0x2 || bcdDevice_Min
|-
| 0x8 || 0x2 || bcdDevice_Max
|-
| 0xA || 0x1 || bDeviceClass
|-
| 0xB || 0x1 || bDeviceSubClass
|-
| 0xC || 0x1 || bDeviceProtocol
|-
|-
| 0xD || 0x1 || bInterfaceClass
| 0xD || 0x1 || bInterfaceClass
Line 654: Line 662:
This is used to filter [[#UsbHsInterface]], the query commands will only return the interface when these checks pass. This is also used for events with [[#CreateInterfaceAvailableEvent]]. When a bit in Flags is set, the associated descriptor field and the field in this struct are compared, on mismatch the interface will be filtered out. Passing Flags=0 is equivalent to disabling filtering since none of these checks will run.
This is used to filter [[#UsbHsInterface]], the query commands will only return the interface when these checks pass. This is also used for events with [[#CreateInterfaceAvailableEvent]]. When a bit in Flags is set, the associated descriptor field and the field in this struct are compared, on mismatch the interface will be filtered out. Passing Flags=0 is equivalent to disabling filtering since none of these checks will run.


Flags bits 0..1 use usb_device_descriptor, while 7..9 use usb_interface_descriptor.
Flags bits 0..6 use usb_device_descriptor, while 7..9 use usb_interface_descriptor. Support for bits 2..6 and the associated fields was added with {unknown sysver}.


Flags bits:
Flags bits:
* 0: idVendor
* 0: idVendor
* 1: idProduct
* 1: idProduct
* 2: bcdDevice (Descriptor value must be >= struct bcdDevice_Min)
* 3: bcdDevice (Descriptor value must be <= struct bcdDevice_Max)
* 4: bDeviceClass
* 5: bDeviceSubClass
* 6: bDeviceProtocol
* 7: bInterfaceClass
* 7: bInterfaceClass
* 8: bInterfaceSubClass
* 8: bInterfaceSubClass