!usbkd.usbtx
!usbkd.usbtx 명령은 usbport!_HCD_TRANSFER_CONTEXT 구조체의 정보를 표시합니다.
!usbkd.usbtx StructAddr
매개 변수
StructAddr
usbport!_HCD_TRANSFER_CONTEXT 구조체의 주소입니다. USB 호스트 컨트롤러에 대한 전송 목록을 얻으려면 !usbkd.usbhcdext 명령을 사용합니다.
DLL
Usbkd.dll
예제
다음은 usbport!_HCD_TRANSFER_CONTEXT 구조체의 주소를 찾는 한 가지 방법입니다. 먼저 !usbkd.usb2tree를 입력 합니다.
0: kd> !usbkd.usb2tree
...
4)!uhci_info ffffe00001c8f1a0 !devobj ffffe00001c8f050 PCI: VendorId 8086 DeviceId 2938 RevisionId 0002
...
이전 출력에서 FDO의 디바이스 확장 주소는 DML 명령 !uhci_info ffffe00001c8f1a0의 인수로 표시됩니다.
DML 명령을 클릭하거나 디바이스 확장 의 주소를 !usbhcdext 에 전달하여 전송 목록을 가져옵니다.
0: kd> !usbkd.usbhcdext ffffe00001c8f1a0
...
## I/O TRANSFER LIST(s)
1.) Transfer Request Priority List: (TxQueued) Type: 0-NotSplit, 1-Parent, 2-Child
--------------------------------------------------------------------------------
[000]!usbtx ffffe0000653401c !usbep ffffe00004730c60 !irp ffffe00004221220 State: (7)TX_Mapped_inMp
Priority: 0, Type: 0, Flags= 0000000a, SequenceNum: 10, SplitIdx: 0
InLen: 4096, OutLen: 0 Status: USBD_STATUS_PENDING (0x40000000)
...
앞의 출력 ffffe0000653401c
에서 _HCD_TRANSFER_CONTEXT구조체의 주소입니다. 이 주소를 !usbtx에 전달합니다.
0: kd> !usbkd.usbtx ffffe0000653401c
dt usbport!_HCD_TRANSFER_CONTEXT ffffe0000653401c
dt usbport!_TRANSFER_PARAMETERS ffffe0000653417c
## TX HISTORY
## EVENT, STATE, NEXT (latest at bottom)
[01] (23)Ev_TX_Icsq, (0)TX_Undefined, (1)TX_InQueue
[02] (5)Ev_TX_MapTransfer, (1)TX_InQueue, (2)TX_MapPending
[03] (7)Ev_TX_MpSubmitSuccess, (2)TX_MapPending, (7)TX_Mapped_inMp
**DMA**
dt usbport!_TRANSFER_SG_LIST ffffe0000653439c
SgCount: 1 MdlVirtualAddress: ffffe00000437000 MdlSystemAddress: ffffe00000437000
[0] dt usbport!_TRANSFER_SG_ENTRY ffffe000065343bc
: sysaddr: 0000000000000000 len 0x00001000(4096) offset 0x00000000(0) phys 00000000'ded90000
---
dt usbport!_SCATTER_GATHER_ENTRY ffffe000065343ec
dt _SCATTER_GATHER_LIST ffffe00001bc231c
NumberOfElements = 1
[0] dt _SCATTER_GATHER_ELEMENT ffffe00001bc232c
:phys 00000000'ded90000 len 0x00001000(4096)