!usb3kd.xhci_transferring
!usb3kd.xhci_transferringエクステンションは、サイクルビット変化を検出するまで、転送リング(USB 3.0ホストコントローラによって使用される)を表示します。
!usb3kd.xhci_transferring VirtualAddress
!usb3kd.xhci_transferring PhysicalAddress 1
パラメーター
VirtualAddress
転送リングの仮想アドレス。
PhysicalAddress
転送リングの物理アドレス。
1
アドレスが物理アドレスであることを指定します。
DLL
Usb3kd.dll
解説
!xhci_transferringコマンドの出力は、USB 3.0ホストコントローラードライバーが保持するデータ構造に基づいています(UsbXhci.sys)。 USB 3.0ホストコントローラーのドライバーとUSBスタック内の他のドライバーの詳細については、Windows内のUSBホスト側ドライバーを参照してください。
転送リングは、USB 3.0ホストコントローラドライバが転送要求ブロック(TRB)のリストを保持するために使用する構造体です。 このコマンドは、転送リングの仮想アドレスまたは物理アドレスを取るが、TRBの物理アドレスを表示します。 これは、コマンドが LINK TRB を正しくトラバースできるようにするためです。
例
転送リングのアドレスを得るには、!xhci_deviceslotsコマンドの出力を見ます。 次の例では、転送リングの拡張機能のアドレスは0xfffffa8005b2fe00です。
3: kd> !usb3kd.xhci_deviceslots 0xfffffa800523a2d0
## Dumping dt _DEVICESLOT_DATA 0xfffffa80051a3300
----------------------------------------------
DeviceContextBase: VA 0xfffffa8005a41000 LA 0x116841000 !wdfcommonbuffer 0x57ffa6ff9b8 Size 4096
## [1] SlotID : dt USBXHCI!_USBDEVICE_DATA 0xfffffa800598c7d0 dt _SLOT_CONTEXT32 0xfffffa8005a42000
------------------------------------------------------------------------------------------------
USB\VID_125F&PID_312A ADATA Technology Co., Ltd.
SlotEnabled IsDevice NumberOfTTs 0 TTThinkTime 0
Speed: Super PortPathDepth: 1 PortPath: [ 2 ] DeviceAddress: 1
!device_info_from_pdo 0xfffffa800597d720
DeviceContextBuffer: VA 0xfffffa8005a42000 LA 0x116842000 !wdfcommonbuffer 0x57ffa7009b8 Size 4096
InputDeviceContextBuffer: VA 0xfffffa8005b2d000 LA 0x11692d000 !wdfcommonbuffer 0x57ffa674958 Size 4096
...
[3] DeviceContextIndex : dt USBXHCI!_ENDPOINT_DATA 0xfffffa8005b394e0 dt _ENDPOINT_CONTEXT32 0xfffffa8005a42060 ES_RUNNING
--------------------------------------------------------------------------------------------------------------
...
CurrentRingBufferData: VA 0xfffffa8005b2fe00 LA 0x11692fe00 !wdfcommonbuffer 0x57ffa67c988 Size 512
Current: !xhci_transferring 0xfffffa8005b2fe00
PendingTransferList:
[0] dt _TRANSFER_DATA 0xfffffa8005b961b0 !urb 0xfffffa8005b52be8 !wdfrequest 0x57ffa469fd8 TransferState_Pending
これで、転送リングのアドレスを !xhci_transferring コマンドに渡すことができます。
kd> !xhci_transferring 0xfffffa8005b2fe00
[ 0] NORMAL 0x000000011692fe00 CycleBit 1 IOC 0 BEI 0 InterrupterTarget 0 TransferLength 13 TDSize 0
[ 1] EVENT_DATA 0x000000011692fe10 CycleBit 1 IOC 1 BEI 0 InterrupterTarget 0 Data 0 0xfffffa8005986850 TotalBytes 13
[ 2] NORMAL 0x000000011692fe20 CycleBit 1 IOC 0 BEI 0 InterrupterTarget 0 TransferLength 13 TDSize 0
[ 3] EVENT_DATA 0x000000011692fe30 CycleBit 1 IOC 1 BEI 0 InterrupterTarget 0 Data 0 0xfffffa8005b96210 TotalBytes 13
[ 4] NORMAL 0x000000011692fe40 CycleBit 1 IOC 0 BEI 0 InterrupterTarget 0 TransferLength 13 TDSize 0
[ 5] EVENT_DATA 0x000000011692fe50 CycleBit 1 IOC 1 BEI 0 InterrupterTarget 0 Data 0 0xfffffa8005b96210 TotalBytes 13