在USB规范里,对命令一词提供的单词为“Request”,但这里为了更好的理解主机与设备之间的主从关系,将它定义成“命令”。 所有的USB设备都要求对主机发给自己的控制命令作出响应,USB规范定义了11个标准命令,它们分别是:Clear_Feature、Get_Configuration、Get_Descriptor、Get_Interface、Get_Status、Set_Address、Set_Confi...
一个Clear Feature请求一个不能被清除或不存在的特性,或指的是一个不存在的接口或端口的时候,将返回一个Request Error。如果wLength不为0,则设备响应无定义。 缺省状态下,此时对请求的响应无定义。 地址状态下,此时对请求的响应有定义,但是不能是对接口或者端口的请求,只能是端口0,否则响应为Request Error。 配置...
标准USB设备请求命令共有11个,大小都是8个字节,具有相同的结构,由5个字段构成(字段是标准请求命令的数据部分),结构如下(括号中的数字表示字节数,首字母bm,b,w分别表示位图、字节,双字节):bmRequestType(1)+bRequest(1)+wvalue(2)+wIndex(2)+wLength(2)...
2、bRequest:请求命令代码,在标准的USB命令中,每一个命令都定义了编号,编号的值就为字段的值,编号与命令名称如下(要注意这里的命令代码要与其他字段结合使用,可以说命令代码是标准请求命令代码的核心,正是因为这些命令代码而决定了11个USB标准请求命令): 0 GET_STATUS:用来返回特定接收者的状态; 1 CLEAR_FEATURE:...
(UsbBuildFeatureRequest) URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT URB_FUNCTION_CLEAR_FEATURE_TO_OTHER GET_CONFIGURATION:获取当前的 USB 配置。 请参阅 USB 规范中的 9.4.2 节。KMDF 默认选择第一个配置。 若要检索设备定义的配置...
呼叫WdfUsbTargetPipeFormatRequestForReset方法來格式化重設管道要求的要求對象,然後呼叫WdfRequestSend方法來傳送要求。這些呼叫類似於中止管道要求的呼叫,如步驟 3 中所述。 注意 在重設管道作業完成之前,請勿傳送任何新的傳輸要求。 重設管道要求會清除裝置和主機控制器硬體中的錯誤狀況。 若要清除裝置錯誤,USB 驅動程...
蓝色表示usb_ep_set_halt函数执行路径,橙黄色表示usb_ep_clear_halt函数执行路径。绿色两者都会执行。需要注意的是isoc端点无法设置和清除halt特性。 usb_ep_set_halt执行流程如下: 非protocol STALL的IN端点并且最近使用的TRB未传输完成或OUT端点有pending的request,说明该端点还有未处理完的request,不能halt,返回-...
bRequest是本描述符的请求类型,也就是后面发送的数据是什么样的东西。由于USB里有很多配置信息,比如获取设备描述符,又有设置USB地址等等,就是通过这个字节来区分的。 表4: 请求描述符的类型。 主控器想读取USB设备的描述符,那么bRequest的值就应该是0x06. ...
bmRequestType1字节 bRequest1字节,表示具体的请求GET_DESCRIPTOR,USB协议中已经定义好了各类请求的编码: 在C语言中,可以使用宏来定义 c #define USB_REQUEST_CODE_GET_STATUS 0 // 9.4.5 Get Status #define USB_REQUEST_CODE_CLEAR_FEATURE 1 // 9.4.1 Clear Feature #define USB_REQUEST_CODE_SET_FEATURE...