다음을 통해 공유


!usb3kd.device_info_from_pdo

!usb3kd.device_info_from_pdo 명령은 USB 3.0 트리에서 USB 디바이스에 대한 정보를 표시합니다.

!usb3kd.device_info_from_pdo DeviceObject

매개 변수

DeviceObject
USB 디바이스 또는 허브의 PDO(물리적 디바이스 개체) 주소입니다.

DLL

Usb3kd.dll

설명

!device_info_from_pdo !ucx_device 모두 디바이스에 대한 정보를 표시하지만 표시되는 정보는 다릅니다. !device_info_from_pdo 출력은 USB 3.0 허브 드라이버의 관점에서, !ucx_device 출력은 USB 호스트 컨트롤러 확장 드라이버의 관점에서 제공됩니다. 예를 들어 !device_info_from_pdo 출력에는 구성 및 인터페이스 설명자에 대한 정보가 포함되고 !ucx_device 출력에는 엔드포인트에 대한 정보가 포함됩니다.

예제

!usb_tree 출력 또는 다양한 다른 디버거 명령에서 PDO의 주소를 가져올 수 있습니다. 예를 들어 !devnode 명령은 PDO의 주소를 표시합니다. 다음 예제에서 USBSTOR 디바이스 노드는 USBHUB3 노드의 직접 자식입니다. USBSTOR 노드의 PDO 주소는 0xfffffa80059c3800.

3: kd> !devnode 0 1 usbhub3

Dumping IopRootDeviceNode (= 0xfffffa8003609cc0)
DevNode 0xfffffa8005981730 for PDO 0xfffffa8004ffc550
  InstancePath is "USB\ROOT_HUB30\5&11db9684&0&0"
  ServiceName is "USBHUB3"
  State = DeviceNodeStarted (0x308)
  Previous State = DeviceNodeEnumerateCompletion (0x30d)

  DevNode 0xfffffa8005a546a0 for PDO 0xfffffa80059c3800
    InstancePath is "USB\VID_125F&PID_312A\09021000000000000342192873"
    ServiceName is "USBSTOR"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)

    DevNode 0xfffffa8005a09730 for PDO 0xfffffa8005b3a650
      InstancePath is "USBSTOR\Disk&Ven ...
      ServiceName is "disk"
      State = DeviceNodeStarted (0x308)
      Previous State = DeviceNodeEnumerateCompletion (0x30d)

이제 PDO 의 주소를 !usb3kd.device_info_from_pdo 명령에 전달할 수 있습니다.

3: kd> !device_info_from_pdo 0xfffffa80059c3800

## Dumping Device Information fffffa80059c3800
-------------------------------------------
!devobj 0xfffffa8004ffc550 (Root HUB)
!device_info 0xfffffa8005abd0c0 (dt usbhub3!_DEVICE_CONTEXT 0xfffffa8005abd0c0)
dt USBHUB3!_DEVICE_CONTEXT 0xfffffa8005abd0c0
dt USBHUB3!_HUB_PDO_CONTEXT 0xfffffa8005b118d0
!idle_info 0xfffffa8005b11920 (dt USBHUB3!_ISM_CONTEXT 0xfffffa8005b11920)
Parent !hub_info 0xfffffa8005ad92d0 (dt USBHUB3!_HUB_FDO_CONTEXT 0xfffffa8005ad92d0)
!port_info 0xfffffa8005abe0c0 (dt USBHUB3!_PORT_CONTEXT 0xfffffa8005abe0c0)
!ucx_device 0xfffffa8005992840 !xhci_deviceslots 0xfffffa80051d1940 1

LPMState: U1IsEnabledForUpStreamPort U2IsEnabledForUpStreamPort U1Timeout: 38, U2Timeout: 3
DeviceFlags: HasContainerId NoBOSContainerId Removable HasSerialNumber MsOsDescriptorNotSupported NoWakeUpSupport DeviceIsSuperSpeedCapable 
DeviceHackFlags: WillDisableOnSoftRemove SkipSetIsochDelay WillResetOnResumeS0 DisableOnSoftRemove 

Descriptors:
dt _USB_CONFIGURATION_DESCRIPTOR 0xfffffa80053f9250
dt _USB_INTERFACE_DESCRIPTOR 0xfffffa80053f9259
ProductId: ...
DeviceDescriptor: VID ...

UcxRequest: !wdfrequest 0x57ffa662948, 
ControlRequest: !wdfrequest 0x57ffa667798, !irp 0xfffffa8005997650 !urb 0xfffffa8005abd1c0, NumberOfBytes 0
Device working at SuperSpeed
Current Device State: ConfiguredInD0

Device State History: <Event> NewState (<Operation>(),..) :

    [16] <Yes> ConfiguredInD0 
    ...
Device Event History:
    [10] TransferSuccess
    ...

다음 예제에서는 !usb_tree 명령의 일부 출력을 보여 주세요. 자식 디바이스 노드 중 하나의 PDO 주소를 !devstack 명령에 대한 인수로 볼 수 있습니다. (!devstack fffffa80059c3800)

3: kd> !usb_tree

## Dumping HUB Tree - !drvObj 0xfffffa800597f770
--------------------------------------------

Topology
--------
1)  !xhci_info 0xfffffa80051d1940  ... - PCI: VendorId ...
    !hub_info 0xfffffa8005ad92d0 (ROOT)
        !port_info 0xfffffa8005a5ca80 !device_info 0xfffffa8005b410c0 Desc: <none> Speed: High
        ...
## Enumerated Device List
----------------------
...

2) !device_info 0xfffffa8005abd0c0, !devstack fffffa80059c3800
    Current Device State: ConfiguredInD0
    Desc: ... Flash Drive
    USB\VID_...
    !ucx_device 0xfffffa8005992840 !xhci_deviceslots 0xfffffa80051d1940 1

참고 항목

USB 3.0 확장

!usb3kd.device_info

USB(범용 직렬 버스) 드라이버