USB调试笔记
+ -

USB设备通过BUSHOUND抓包IRP被取消USTS状态为0xC0010000

2022-07-15 464 0

通过BUSHOUND抓包内容为:

 16.0         CTL    80 06 00 02  00 00 20 00                            GET DESCRIPTOR    336us  
 16.0     32  IN     09 02 20 00  01 01 00 80  e1 09 04 00  00 02 08 06  .. .............   16ms  
                     50 00 07 05  82 02 00 02  00 07 05 01  02 00 02 00  P...............         
 16.0         URB    88 00 08 00  00 00 00 00  78 a3 50 08  73 2b 00 00  CONTROL TRANSFER    3us  
                     00 00 00 00  00 00 00 00  70 c9 67 01  8d d4 ff ff                           
                     0b 00 00 00  20 00 00 00  40 5a ec f4  8c d4 ff ff                           
                     00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00                           
                     00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00                           
                     02 00 00 00  01 00 00 00  b8 77 68 0c  8d d4 ff ff                           
                     b8 77 68 0c  8d d4 ff ff  88 13 fa ee  8c d4 ff ff                           
                     88 13 fa ee  8c d4 ff ff  00 00 00 00  00 00 00 00                           
                     80 06 00 02  00 00 20 00                                                     
 16.1         URB    80 00 09 00  00 00 01 c0  78 a3 50 08  73 2b 00 00  BULK/INT XFER      18sc  
                     00 00 00 00  00 00 00 00  20 ca 84 f2  8c d4 ff ff                           
                     00 00 00 00  00 00 00 00  58 f6 2c fe  8c d4 ff ff                           
                     20 95 f4 05  8d d4 ff ff  00 00 00 00  00 00 00 00                           
                     05 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00                           
                     00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00                           
                     00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00                           
                     00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00                           
 16           RESET                                                                         57us

可以看到,当使用16.1端点进行数据传输的时候出错,然后设备RESET了。
通过分析16.1的URB,可以判官此为批量传输或者为中断传输(BULK_OR_INTERRUPT_TRANSFER),已知设备为U盘,所以肯定为批量传输,并且端点地址为1,所以发送的数据为U盘BOTCBW命令。

使用本站的工具USB中断批量传输X64 URB数据在线分析:http://www.usbzh.com/tool/urb-bulk-or-interrupt.html 对该URB进行自动分析:

_URB_CONTROL_DESCRIPTOR_REQUEST        
_URB_HEADER    Hdr    
USHORT    Length    80 00 
USHORT    Function    09 00 
USBD_STATUS    Status    00 00 01 C0 
PVOID    UsbdDeviceHandle    78 A3 50 08 73 2B 00 00 
ULONG    UsbdFlags    00 00 00 00 
ULONG    reversed    00 00 00 00 

PVOID    Reserved    20 CA 84 F2 8C D4 FF FF 
ULONG    Reserved0    00 00 00 00 
ULONG    TransferBufferLength    00 00 00 00 
PVOID    TransferBuffer    58 F6 2C FE 8C D4 FF FF 
PMDL    TransferBufferMDL    20 95 F4 05 8D D4 FF FF 
PVOID    UrbLink    00 00 00 00 00 00 00 00 
_URB_HCD_AREA    hca    
PVOID    Reserved[8]
05 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 

USHORT    Reserved1    0NAN 0NAN 
UCHAR    Index    0NAN 
UCHAR    DescriptorType    0NAN 
USHORT    LanguageId    0NAN 0NAN 
USHORT    Reserved2    0NAN 0NAN

可以看到USBD_STATUS为0xC0010000,通过查询USTC表 http://www.usbzh.com/article/detail-645.html 可知为USBD_STATUS_CANCELED.原文内容为:
The USB stack reports this error whenever it completed a transfer because of an AbortPipe request from the client driver.
所以表示此IRP已经被取消了,取消的原因是因为端点abort了。

这通常发生在驱动程序发出URB_FUNCTION_ABORT_PIPE 或 URB_FUNCTION_RESET_PIPE 时,因为任何排队的 URB都被清除了。设备随后处于停止状态表明可能发生了意外复位或电源转换。

而后面的RESET表示设备复位RESET了。

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

关于UVC摄像头指示灯的调试过程总结
最近遇到了一个很是奇怪的UVC摄像头指示灯问题,现象如下:上层应用是一个会议系统软件,当需要进行会议时,点击会议按钮添加会议。这时应用软件打开摄像头,并开始与服务器进行网络连接。当然由于摄像头的打开,摄像头指示灯点亮。上层应用软件与服务器连接后,进行会议界面。这时突然摄像头指示灯熄灭,但会议正常,摄......
UVC PTZ和扩展单元XU的过滤与分发调试笔记
在写这篇文章之前,我得首先感谢微软,感谢你的不严格,让我可以有空子可钻,不至于太过狼狈…记得看过一句话,开局一张图,内容全告编。我多么希望自己在UVC摄像头的调试过程中也可以瞎编乱造,这样不至于身心疲惫。至少保持着愉快的心情,吹吹牛,也是一件很开心的事。今日有一个需求,对UVC摄像头的请求进行......
U盘枚举失败-该设备无法启动(GET_MAX_LUN请求)
群里有人用STM32搞了一个U盘,但是U盘在插入电脑后在设备管理器是枚举失败。我让他看一下设备状态:又是熟悉的错误码10,表示设备启动失败。设备的启动失败,一般在设备获取描述符获取之后,初始会失败,我之前在弄USB虚拟鼠标的时候也遇到此类情况。不过由于这个设备是U盘,本人还没有研究USB存储协议,只......
BUSHOUND抓包stall pid的USTS c0000004错误
对USB设备进行数据分析,使用最多的也就是BUSHOUND了,不过经常遇到一个问题就是 USTS c0000004 stall pid 错误。USTS c0000004 stall pid在本站中搜......
BOT MASS_STORAGE_RESET
Bulk-Only Mass Storage Reset类特定请求是USB大容量存储设备独有的。 该特定类请求的功能用于复位大容量存储设备和与之关联的接口。通知设备接下来的批量端点输出数据为命令块包(CBW)。由于该请求是控制请求,所以是通过端点0发送的。在设备完成该请求即复位之前,设备应......
USB状态错误码USBD_STATUS对照表
USBDI.H定义了一组USB_STATUS_XXX的值. 这些值是从URB的状态字段是对IRP_MJ_INTERNAL_DEVICE_CONTROL调用的USB传输状态返回标识。USBD将URB状态码映射到有效的NTSTATUS码中(但具体详情还得看USBD_STAUTS_XXX的值),在完成IR......
TYPE-C PD供电协议常用功能序列(接口数据包开始SOP,线缆数据包开始SOP''、硬件复位、线缆复位
使用TYPE-C PD供电协议信号-4b5b编码对照表的序列组合,可以组成一些常用的功能序列。硬件复位hard Reset硬件复位信令是为了被物理层识别而发送的一组有序字节。硬复位信号顺序集定义为:三个RST-1 K代码,后跟一个RST-2 K代码。硬件复位的功能是对接口和线缆进行复位K......
USB高速基础知识
USB 2.0 中引入了对规范的高速添加,以响应 Firewire 的更高速度。由于 High Speed 是事后才添加的,并且必须在不影响性能的情况下保持兼容性,所以我们将保留对 High Speed 的描述,直到我们涵盖了原始规范的基础知识数据传输高速实现的数据速率为 480 Mb/s。这需要......
USB设备复位、挂起和恢复命令
USB主机除了在正常的操作期间发送到设备的控制命令外,主机还可以发出三种独特的信号条件:复位、挂起或恢复挂起的设备。设备复位RESET在枚举过程中,主机向设备发出复位信号。注意此USB 复位与硬件或上电复位不相同,是两个概念。USB 复位的目的是设置设备的软件状态,以便进行枚举。当 D- 和 D......
BusHound抓包的USTS数据内容来源介绍
在Windows操作系统下开发USB设备驱动程序,或者分析USB设备固件通讯的时候,难免遇到一个错误信息,其中一项重要的数据条目就是USTS的显示。如:Device Phase Data Description Cmd.Phase.......
HID键盘鼠标复位报告描述符
0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x02, // USAGE (Mouse) 0xa1, 0x01, ......
USB设备通过BUSHOUND抓包IRP被取消USTS状态为0xC0010000
通过BUSHOUND抓包内容为: 16.0 CTL 80 06 00 02 00 00 20 00 GET DESCRIPTOR 336us 16.0 32 IN 09 02 20 00 ......
Windows系统实现USB设备的拨出与重新插入
最近在搞USBHOUND,原理比较简单,但是涉及的东西还是比较多,这不,为了搞清楚URB之间的传递脉路,又开始进入了USBCCGP淅代码中。USBCCGP是Windows系统中关于USB比较重要的一个驱动,其实原了USB物理复合设备到逻辑设备的基本功能,其中有大量的关于USB相关处理请求,是值得我......
USB2.0集线器ResetTT
ResetTT用于将USB集线器的事务转换器复位到已知的状态,TT即Transaction Translator,事务转换器。RequestbmRequestTypebRequestwValuewIndexwLengthResetTT 00100011B (0......
复位USB端口设备IOCTL_USB_HUB_CYCLE_PORT
在设备管理器中通过设备的实例ID查找到设备后,然后确定设备端口中,再根据设备端口号获取其父设备即USB集本器,打开集线器,发送IOCTL_USB_HUB_CYCLE_PORT 请求来复位集线器端口达到复位设备。IOCTL_USB_HUB_CYCLE_PORT在Vista和Windows 7下不支持......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!