!usbkd.usblistコマンドは、指定した型の構造体のリンクリストを表示します。
!usbkd.usblist ListAddr, ListType
パラメーター
ListAddr
構造体のリンクリストのアドレス。 USBポートドライバーによって管理されるリンクリストのアドレスを検索するには、!usbhcdextを使用します。 USBハブドライバーによって管理されるリンクリストのアドレスを検索するには、使用!usbhubextします。
ListType
次のリストの種類のいずれかになります。
| リスト タイプ | 構造 |
|---|---|
| BC | usbport!_BUS_CONTEXT |
| EP | usbport!_HCD_ENDPOINT |
| TT | usbport!_TRANSACTION_TRANSLATOR |
| DL | usbport!_USBD_DEVICE_HANDLE |
| PL | usbhub!_DEVICE_EXTENSION_PDO |
| EL | usbhub!_HUB_EXCEPTION_RECORD |
| RL | usbhub!_HUB_REFERENCE_LIST_ENTRY |
| TL | usbhub!_HUB_TIMER_OBJECT |
| WI | usbhub!_HUB_WORKITEM |
| IO | usbhub!_IO_LIST_ENTRY |
| LA | usbhub!_LATCH_LIST_ENTRY |
| CL | usbhub!_PORT_CHANGE_CONTEXT |
| BL | usbhub!_SSP_BUSY_HANDLE |
加工
Usbkd.dll
例
リンクリストのアドレスを見つける方法のひとつを紹介しよう。 最初に!usbkd.usb2tree入力します。
0: kd> !usbkd.usb2tree
...
2)!ehci_info ffffe00001ca11a0 !devobj ffffe00001ca1050 ...
...
先の出力では、DMLコマンド!ehci_info ffffe00001ca11a0の引数として、FDOのデバイス拡張のアドレスが表示されている。
DMLコマンドをクリックするか、デバイスの拡張機能のアドレスを!usbhcdextに渡します。
0: kd> !usbkd.usbhcdext ffffe00001ca11a0
HC Flavor 1000 FDO ffffe00001ca1050
Root Hub: FDO ffffe00002320050 !hub2_info ffffe000023201a0
...
DeviceHandleList: !usblist ffffe00001ca23b8, DL
...
先の出力では、fffe00001ca23b8はusbport!_USBD_DEVICE_HANDLE構造体のリンクリストのアドレスである。
ここで、リンクリストのアドレスを!usblistに渡します。
0: kd> !usblist ffffe00001ca23b8, DL
list: ffffe00001ca23b8 DL
----------
!usbdevh ffffe000020f9590
SSP [IdleReady] (0)
PCI\VEN_Xxxx Xxxx Corporation
Root Hub
DriverName :
----------
!usbdevh ffffe00001bce250
SSP [IdleReady] (0)
USB\Xxxx Xxxx Corporation
Speed: HIGH, Address: 1, PortPathDepth: 1, PortPath: [3 0 0 0 0 0]
DriverName :\Driver\USBSTOR !devstack ffffe000053ef2a0
----------