Поделиться через


Отладка проблем с USB-устройством с помощью событий ETW

В этом разделе приведены советы по отладке проблем с USB-устройством с помощью событий трассировки событий Windows.

Диагностика сбоев перечисления устройств

Чтобы определить основную причину большинства сбоев перечисления устройств, можно использовать события ETW, связанные с задачей перечисления USB-концентратора.

Просмотр событий в журнале трассировки, связанных с задачей перечисления концентратора USB

  1. Откройте Netmon и найдите событие перечисления, например "Start Enumeration of Port". Щелкните событие в области Сводка по кадрам .

  2. Убедитесь, что задача для этого события является перечислением концентратора USB, изучив поле Задача для события:

    1. В области Сведения о фрейме разверните net event, разверните заголовок, разверните дескриптор, а затем найдите поле Задача .
    2. Убедитесь, что поле Задача содержит значение 2 (перечисление USB-концентратора).
  3. Отфильтруйте события, чтобы отобразить только те из драйвера концентратора, которые имеют значение задачи 2:

    1. Щелкните правой кнопкой мыши поле Задача .

    2. Выберите Добавить выбранное значение для фильтра отображения.

    3. Щелкните правой кнопкой мыши событие в области Сводка по кадру и выберите Добавить "Имя протокола" для отображения фильтра.

    4. В области Фильтр отображения измените значение "OR" на "AND". В следующем примере показан результирующий фильтр:

      NetEvent.Header.Descriptor.Task == 0x2 AND ProtocolName == "USBHub_MicrosoftWindowsUSBUSBHUB"
      

      Дополнительные сведения об использовании фильтров в Netmon см. в разделе "Фильтры USB Netmon" статьи Пример. Устранение неполадок с неизвестным USB-устройством с помощью ETW и Netmon.

Диагностика сбоев запуска устройства

Если устройство не запускается во время обработки драйвером концентратора пакета запроса ввода-вывода (IRP) устройства, вы можете использовать события трассировки событий Windows, связанные с задачей запуска USB-устройства, чтобы устранить сбой. В Netmon найдите событие запуска устройства, например "Usb Device Start IRP Dispatched". Вы можете отфильтровать события, чтобы они отображались только из драйвера концентратора со значением задачи 21 (запуск USB-устройства). Дополнительные сведения о создании такого фильтра см. в разделе Диагностика сбоев перечисления устройств в этой статье.

Время вставки устройств профилирования

Вы можете определить, где тратится время в драйвере концентратора во время вставки устройства, просмотрев метки времени событий перечисления.

Время перечисления

Часть времени вставки устройства, затраченная драйвером концентратора на перечисление устройства, — это время, прошедшее между следующими двумя событиями:

  • Начало перечисления портов
  • Перечисление завершенных портов

Задачи перечисления профилирования

Когда драйвер USB-концентратора перечисляет устройство, он регистрирует следующие события в следующем порядке:

  • Начало перечисления портов
  • Перечисление завершено
  • PDO, созданный для перечисления
  • Завершение сброса порта первого перечисления
  • Перечисление — CreateDevice Complete
  • Второй сброс порта перечисления завершен
  • Перечисление — InitializeDevice Complete
  • Перечисление — SetupDevice Complete
  • Перечисление завершенных портов

Чтобы определить время, затраченное драйвером концентратора на каждую задачу перечисления, вычислите время, прошедшее между предыдущими событиями. Затраченное время между IoInvalidateDeviceRelations и IRP_MN_QUERY_DEVICE_RELATIONS

Чтобы определить часть времени вставки устройства, которое система потребляла, пока она ждала IRP отношений устройств с запросами, измерьте время, затраченное между следующими двумя событиями:

  • Перечисление завершенных портов
  • USB Hub Query Device Relations (BusRelations) IRP Dispatched

Затраченное время между завершением IRP_MN_QUERY_DEVICE_RELATIONS и IRP_MN_START_DEVICE

Чтобы определить часть времени вставки устройства между отправкой нового объекта физического устройства (PDO) диспетчеру Plug and Play и получением начального IRP, измерьте время, затраченное между следующими двумя событиями:

  • Запрос к отношениям устройств USB Hub IRP завершен
  • Usb-устройство запускает IRP Dispatched

Запуск времени IRP

Чтобы определить время, затраченное драйвером концентратора на обработку IRP запуска, измерьте время, затраченное между следующими двумя событиями:

  • Usb-устройство запускает IRP Dispatched
  • Запуск IRP usb-устройства завершен

Время возобновления Software-Initiated устройства

Драйвер функции устройства может отправить запрос на питание устройства D0, чтобы возобновить работу устройства из состояния приостановки. Чтобы определить время, необходимое для возобновления работы устройства с приостановки и готовности к запросам на передачу, измерьте время, затраченное между следующими двумя событиями:

  • Набор устройств USB D0 Power IRP Dispatched
  • Набор устройств USB D0 Power IRP завершен

Время возобновления Hardware-Initiated устройства

Сигнал возобновления в шине приводит к возобновлению работы устройства из приостановленного состояния. Чтобы определить время, необходимое для возобновления работы устройства до состояния, в котором оно готово для запросов на передачу, измерьте время, затраченное между следующими двумя событиями:

  • Родительский центр не приостанавливается:
    • Usb-устройство Wait Wake IRP завершено
    • Набор устройств USB D0 Power IRP завершен
  • Родительский центр приостановлен:
    • Начало возобновления работы концентратора с выборочной приостановки (первое из этих событий для любого концентратора между устройством и контроллером узла)
    • Набор устройств USB D0 Power IRP завершен

HUB RESUME FROM Выборочная приостановка времени

Вы можете определить время, необходимое для возобновления работы концентратора с выборочной приостановки, измерив время, затраченное между следующими двумя событиями:

  • Начало возобновления работы концентратора из выборочной приостановки
  • Возобновление работы концентратора завершено

Примечание

Время возобновления работы концентратора зависит от времени возобновления работы всех устройств под концентратором и, возможно, некоторых или всех концентраторов над возобновляемого концентратора.