客户端驱动程序使用DescriptorType= USB_STRING_DESCRIPTOR_TYPE 的UsbBuildGetDescriptorRequest生成请求以获取字符串描述符。Index参数指定索引号,LanguageID参数指定语言 ID, (与 Microsoft Win32 LANGID 值) 相同的值使用。 驱动程序可以请求特殊索引号 0,以确定设备支持的语言 ID。 对于此特殊值,设备返回语言 ID 数...
若要设置 URB 的格式,客户端驱动程序可以使用UsbBuildGetDescriptorRequest宏。 宏在 URB 中设置所有必要的信息,例如要检索其描述符的设备定义的配置编号。 URB 函数设置为 URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE (see_URB_CONTROL_DESCRIPTOR_REQUEST) ,并将描述符的类型设置为 USB_CONFIGURATION_DESCRIPTOR_TYPE。
所有的USB设备都要求对主机发给自己的控制命令作出响应,USB规范定义了11个标准命令,它们分别是:Clear_Feature、Get_Configuration、Get_Descriptor、Get_Interface、Get_Status、Set_Address、Set_Configuration、Set_Descriptor、Set_Interface、Set_Feature、Synch_Frame。所有USB设备都必须支持这些命令(个别命令除外,如Set_De...
字符串描述符是一个可选的描述符,用于对设备、配置、接口描述符做额外的说明。当设备支持字符串描述符时,USB 主机通过 GetDescriptor(Strings) 请求,附带上目标的描述符索引值来获取对应位置的额外说明。 设备端可能支持多种语言类型。因此,USB 协议要求,将 0 号字符串描述符保留,专用于标示设备端支持的语言ID列表。
获取描述符(Get Descriptor) 获取状态(Get Status) 设置地址(Set Address) 设置特性(Set Feature) 清除特性(Clear Feature) 描述符 在USB设备的枚举过程中,USB设备需要对主机发来的命令请求作出正确回应,这些应答数据都有规定的数据格式,在USB规范里把这些有固定结构的数据包称为描述符,这些描述符存储在设备内存中。
bStringで返される文字列は Unicode 形式で、文字列の内容はデバイス定義です。 要件 要件値 Headerusbspec.h (Usbioctl.h を含む) こちらもご覧ください USB 構造体 UsbBuildGetDescriptorRequest _URB_CONTROL_DESCRIPTOR_REQUEST フィードバック ...
} USB_STRING_DESCRIPTOR; 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 4.5.2.USB请求 主机要获取相关信息,需要发送配置包,用C代码定义如下: typedef struct _USB_SETUP_PACKET { REQUEST_TYPE bmRequestType; BYTE bRequest; WORD_BYTE wValue;
} USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR; 4) IOCTL_USB_GET_NODE_CONNECTION_INFORMATION, 用于获取接在usb口上的单个usb设备的信息,对应的结构体: typedef struct _USB_NODE_CONNECTION_INFORMATION { ULONG ConnectionIndex; USB_DEVICE_DESCRIPTOR DeviceDescriptor; ...
字符串描述符:在其他描述符中会为某些字段提供字符串索引,它们可被用来检索描述性字符串,可以以多种语言形式提供。字符串描述符是可选的,有的设备有,有的设备没有,字符串描述符对应于usb_string_descriptor结构体。 各个描述符间关系: 或者: 总结如下: ...
③ 连续3次GetDeviceDescriptor,读取全部设备描述符,一般为 18 B,分为多次传输。如果不正确,主机将不响应或重复2次后放弃。 ④ GetConfigDescriptor。注意第2字节一定为0x02,即config 。 ⑤ GetStringDescriptor(可能没有),根据在设备描述符中是否有 String索引而定。一般先读取LanguageID,再读取product string。