Used by DeviceIoControl and [IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION] to get either a [USB_STRING_DESCRIPTOR] or [USB_DEVICE_DESCRIPTOR] from a device on a USB Hub
The USB_DESCRIPTOR_REQUEST structure is always followed by either a USB_STRING_DESCRIPTOR or USB_DEVICE_DESCRIPTOR structure.
.
The use of a a zero-length array at the end of the structure requires that you read and write "off the edge" of the structure. This concept is not well supported in C#/VB.Net so you have make sure that you allocate sufficient buffer space to accommodate a the USB_STRING_DESCRIPTOR or USB_DEVICE_DESCRIPTOR structure.