Sdílet prostřednictvím


Ladění problémů s USB zařízeními pomocí ETW událostí

Toto téma obsahuje tipy pro ladění problémů s USB zařízeními pomocí událostí ETW.

Diagnostika selhání výčtu zařízení

K určení příčiny většiny selhání při výčtu zařízení můžete použít události ETW, které jsou přidruženy k úloze výčtu rozbočovače USB.

Zobrazení událostí v protokolu trasování, které jsou přidružené k úloze výčtu rozbočovače USB

  1. Otevřete Netmon a vyhledejte událost výčtu, například "Spustit výčet portu". Klikněte na událost v podokně Souhrn rámce.

  2. Ověřte, že úkol pro tuto událost je enumerace rozbočovače USB, a to prozkoumáním pole Úkol události.

    1. V podokně Podrobnosti rámce rozbalte Net Event, rozbalte záhlaví, rozbalte deskriptor, a poté vyhledejte pole úkolu.
    2. Ověřte, že pole Úkol obsahuje hodnotu 2 (výčet rozbočovače USB).
  3. Vyfiltrujte události tak, aby zobrazovaly pouze události z ovladače centra, který má hodnotu úkolu 2:

    1. Klikněte pravým tlačítkem myši na pole úkolu.

    2. Vyberte Přidat vybranou hodnotu do filtru zobrazení .

    3. Klikněte pravým tlačítkem myši na událost v podokně Souhrn rámce a vyberte PřidatNázev protokolu do Filtr zobrazení.

    4. V podokně Filtr zobrazení změňte "OR" na "AND". Následující ukázka ukazuje výsledný filtr:

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

      Další informace o použití filtrů v Netmon, viz "USB Netmon Filters" v případová studie: Řešení potíží s neznámým USB zařízením pomocí ETW a Netmon.

Diagnostika selhání spuštění zařízení

Pokud se zařízení nespustí během zpracování ovladače rozbočovače požadavku na vstupně-výstupní operaci (IRP) zařízení, můžete k řešení selhání použít události ETW, které jsou přidruženy k úloze spuštění zařízení USB. V nástroji Netmon vyhledejte událost spuštění zařízení, například "USB Device Start IRP Dispatched". Události můžete filtrovat tak, aby zobrazovaly pouze události z ovladače rozbočovače s hodnotou úkolu 21 (spuštění zařízení USB). Další informace o vytvoření takového filtru naleznete v části Diagnostika selhání výčtu zařízení v tomto tématu.

Profilace časování vložení zařízení

Čas strávený v ovladači rozbočovače během vkládání zařízení můžete určit tak, že se podíváte na časová razítka událostí enumerace.

Časování výčtu

Část času vložení zařízení, kterou ovladač rozbočovače spotřeboval k vytvoření výčtu zařízení, je čas uplynulý mezi následujícími dvěma událostmi:

  • Spuštění výčtu portu
  • Výčet dokončeného portu

Profilovací úlohy výčtu

Když ovladač rozbočovače USB vytvoří výčet zařízení, protokoluje následující události v následujícím pořadí:

  • Spuštění výčtu portu
  • Výčet – dokončeno
  • Objekt PDO vytvořený pro výčet
  • První reset výčtového portu dokončen
  • Výčet – CreateDevice Complete
  • Reset druhého výčtu portu dokončen.
  • Výčet – InitializeDevice Complete
  • Výčet – SetupDevice Dokončeno
  • Výčet dokončeného portu

Chcete-li zjistit čas, kdy ovladač centra spotřeboval pro každou úlohu výčtu, vypočítejte čas, který uplynul mezi předchozími událostmi. Doba uplynula mezi IoInvalidateDeviceRelations a IRP_MN_QUERY_DEVICE_RELATIONS

Pokud chcete určit, jakou část času systému zabralo vkládání zařízení během čekání na IRP dotazu na vztahy s zařízeními, změřte uplynulý čas mezi následujícími dvěma událostmi:

  • Výčet dokončeného portu
  • Dotaz na vztahy zařízení rozbočovače USB (BusRelations) – zpracovávání IRP

Časový interval uplynulý mezi dokončením IRP_MN_QUERY_DEVICE_RELATIONS a IRP_MN_START_DEVICE

Chcete-li určit část času vložení zařízení mezi hlášením nového objektu fyzického zařízení (PDO) správci plug and play a přijetí počátečního protokolu IRP, změřte uplynulý čas mezi následujícími dvěma událostmi:

  • IRP pro relaci zařízení rozbočovače USB dokončeno
  • Zahájení IRP pro zařízení USB

Spuštění časování protokolu IRP

Pokud chcete určit čas strávený v ovladači centra, který zpracovává počáteční IRP, změřte uplynulý čas mezi následujícími dvěma událostmi:

  • Spuštění IRP zařízení USB odesláno
  • Dokončení IRP zahájeno zařízením USB

Software-Initiated Časování obnovení zařízení

Ovladač funkce zařízení může odeslat žádost o napájení zařízení D0, která obnoví zařízení ze stavu pozastavení. Pokud chcete určit požadovanou dobu, po kterou má zařízení pokračovat od pozastavení a připravit se na žádosti o převod, změřte uplynulý čas mezi následujícími dvěma událostmi:

  • Zařízení USB Set D0 Zařízení Power IRP Odesláno
  • Sada zařízení USB D0 Zařízení Power IRP dokončena

Hardware-Initiated Časování obnovení zařízení

Signál pro obnovení na sběrnici způsobí obnovení zařízení z pozastaveného stavu. Pokud chcete určit požadovanou dobu obnovení zařízení do stavu, ve kterém je připravené na žádosti o převod, změřte uplynulý čas mezi následujícími dvěma událostmi:

  • Nadřazené centrum není pozastavené:
    • USB zařízení Wait Wake IRP dokončeno
    • Sada zařízení USB D0 Zařízení Power IRP dokončena
  • Nadřazené centrum je pozastavené:
    • Zahájeno obnovení rozbočovače ze selektivního pozastavení (první z těchto událostí pro libovolný rozbočovač mezi zařízením a hostitelským řadičem)
    • Sada zařízení USB D0 Zařízení Power IRP dokončena

OBNOVENÍ CENTRA ZE selektivního pozastavení časování

Požadovanou dobu obnovení centra ze selektivního pozastavení můžete určit měřením uplynulé doby mezi následujícími dvěma událostmi:

  • Spuštění obnovení centra ze selektivního pozastavení
  • Obnovení rozbočovače bylo dokončeno.

Poznámka:

Časování obnovení rozbočovače závisí na časování obnovení všech zařízení pod rozbočovačem a případně také na některých nebo všech rozbočovačích nad tím rozbočovačem, který se obnovuje.