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


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

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

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

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

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

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

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

    1. В области сведений о кадре разверните событие Net, разверните заголовок, разверните дескриптор и найдите поле "Задача ".
    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) устройства, можно использовать события ETW, связанные с задачей запуска USB-устройства, чтобы устранить ошибку. В Netmon найдите событие запуска устройства, например "USB Device Start IRP Dispatched". Вы можете отфильтровать события, чтобы отобразить только те из драйвера концентратора с значением задачи 21 (запуск USB-устройства). Дополнительные сведения о создании такого фильтра см. в разделе "Диагностика сбоев перечисления устройств" в этом разделе.

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

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

Сроки перечисления

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

  • Начать перечисление порта
  • Перечисление завершенного порта

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

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

  • Начало сканирования порта
  • Перечисление Debounce Completed
  • PDO, созданный для перечисления
  • Завершение сброса порта перечисления
  • Перечисление — CreateDevice Complete
  • Завершение сброса порта второго перечисления
  • Перечисление — инициализацияDevice Complete
  • Перечисление устройств — Установка устройства завершена
  • Перечисление завершенного порта

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

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

  • Перечисление завершенного порта
  • Отправка IRP для запроса отношений устройства USB-хаба (BusRelations)

Истекшее время между завершением IRP_MN_QUERY_DEVICE_RELATIONS и IRP_MN_START_DEVICE

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

  • Завершено выполнение IRP для запросов к устройству USB Hub
  • Запуск и отправка IRP для USB-устройства

Запуск синхронизации IRP

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

  • Отправка начального IRP для USB-устройства
  • Завершено выполнение IRP для USB-устройства

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

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

  • USB-устройство, установленное в D0, питание устройства IRP отправлено.
  • Набор USB-устройств D0 Устройства Power IRP завершен

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

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

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

Возобновление концентратора из селективной приостановки времени

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

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

Примечание.

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