Partager via


Débogage des problèmes de périphérique USB à l’aide d’événements ETW

Cette rubrique fournit des conseils pour le débogage des problèmes d’appareil USB à l’aide d’événements ETW.

Diagnostic des échecs d’énumération d’appareils

Vous pouvez utiliser les événements ETW associés à la tâche d’énumération du hub USB pour déterminer la cause racine de la plupart des échecs d’énumération d’appareils.

Pour afficher les événements dans un journal de suivi associés à la tâche d’énumération du hub USB

  1. Ouvrez Netmon et recherchez un événement d’énumération, tel que « Start Enumeration of Port ». Cliquez sur l’événement dans le volet Résumé du cadre .

  2. Vérifiez que la tâche de cet événement est l’énumération du hub USB en examinant le champ Tâche de l’événement :

    1. Dans le volet Détails du cadre, développez l’événement Net, l’en-tête, le descripteur, puis recherchez le champ Tâche.
    2. Vérifiez que le champ Tâche contient la valeur 2 (énumération du hub USB).
  3. Filtrez les événements pour afficher uniquement ceux du pilote hub qui ont la valeur de tâche 2 :

    1. Cliquez avec le bouton droit sur le champ Tâche .

    2. Sélectionnez Ajouter une valeur sélectionnée pour afficher le filtre.

    3. Cliquez avec le bouton droit sur l’événement dans le volet Résumé du cadre , puis sélectionnez Ajouter « Nom du protocole » pour afficher le filtre.

    4. Dans le volet Filtre d’affichage , remplacez « OR » par « AND ». L’exemple suivant montre le filtre résultant :

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

      Pour plus d’informations sur l’utilisation de filtres dans Netmon, consultez « Filtres Netmon USB » dans Étude de cas : Résolution des problèmes d’un périphérique USB inconnu à l’aide d’ETW et Netmon.

Diagnostic des échecs de démarrage de l’appareil

Si un appareil ne parvient pas à démarrer pendant la gestion par le pilote hub du paquet de demande d’E/S de démarrage de l’appareil, vous pouvez utiliser les événements ETW associés à la tâche de démarrage du périphérique USB pour résoudre l’échec. Dans Netmon, recherchez un événement de démarrage d’appareil tel que « IRP de démarrage de périphérique USB réparti ». Vous pouvez filtrer les événements pour afficher uniquement ceux du pilote hub avec une valeur de tâche 21 (démarrage du périphérique USB). Pour plus d’informations sur la création d’un tel filtre, consultez « Diagnostic des échecs d’énumération d’appareils » dans cette rubrique.

Minutage de l’insertion d’appareil de profilage

Vous pouvez déterminer où le temps est passé dans le pilote hub pendant l’insertion de l’appareil en examinant les horodatages des événements d’énumération.

Minutage de l’énumération

La partie du temps d’insertion d’appareil consommée par le pilote hub pour énumérer un appareil est le temps écoulé entre les deux événements suivants :

  • Démarrer l’énumération du port
  • Énumération du port terminé

Tâches d’énumération de profilage

Lorsque le pilote du hub USB énumère un appareil, il journalise les événements suivants dans l’ordre suivant :

  • Démarrer l’énumération du port
  • Énumération terminée
  • PDO créé pour l’énumération
  • Première réinitialisation du port d’énumération terminée
  • Énumération - CreateDevice Complete
  • Deuxième réinitialisation du port d’énumération terminée
  • Énumération - InitializeDevice Complete
  • Énumération - SetupDevice Complete
  • Énumération du port terminé

Pour déterminer la durée consommée par le pilote hub pour chaque tâche d’énumération, calculez le temps qui s’écoule entre les événements précédents. Temps écoulé entre IoInvalidateDeviceRelations et IRP_MN_QUERY_DEVICE_RELATIONS

Pour déterminer la partie du temps d’insertion d’appareil consommée par le système pendant qu’il attendait l’IRP des relations de l’appareil de requête, mesurez le temps écoulé entre les deux événements suivants :

  • Énumération du port terminé
  • Relations des périphériques de requête du hub USB (BusRelations) IRP dispatched

Temps écoulé entre l’achèvement de IRP_MN_QUERY_DEVICE_RELATIONS et l’IRP_MN_START_DEVICE

Pour déterminer la partie du temps d’insertion de l’appareil entre le signalement du nouvel objet d’appareil physique (PDO) au gestionnaire de Plug-and-Play et la réception de l’IRP de début, mesurez le temps écoulé entre les deux événements suivants :

  • IRP des requêtes de hub USB terminées
  • IRP de démarrage de périphérique USB distribué

Démarrer le minutage IRP

Pour déterminer le temps passé dans le pilote hub à gérer l’IRP de démarrage, mesurez le temps écoulé entre les deux événements suivants :

  • IRP de démarrage de périphérique USB distribué
  • IRP de démarrage du périphérique USB terminé

Software-Initiated délai de reprise de l’appareil

Le pilote de fonction d’un appareil peut envoyer une demande d’alimentation D0 pour reprendre l’appareil à partir de l’état de suspension. Pour déterminer le temps nécessaire pour que l’appareil reprenne de la suspension et soit prêt pour les demandes de transfert, mesurez le temps écoulé entre les deux événements suivants :

  • USB Device Set D0 Device Power IRP Dispatched
  • Usb Device Set D0 Device Power IRP terminé

Hardware-Initiated délai de reprise de l’appareil

Un signal de reprise sur le bus entraîne la reprise d’un appareil à partir de l’état suspendu. Pour déterminer la durée nécessaire à la reprise de l’appareil à un état où il est prêt pour les demandes de transfert, mesurez le temps écoulé entre les deux événements suivants :

  • Le hub parent n’est pas suspendu :
    • IRP d’attente du périphérique USB terminé
    • Usb Device Set D0 Device Power IRP terminé
  • Le hub parent est suspendu :
    • Démarrage de la reprise du hub à partir de la suspension sélective (premier de ces événements pour n’importe quel hub entre l’appareil et le contrôleur hôte)
    • Usb Device Set D0 Device Power IRP terminé

HUB RESUME FROM Selective Suspend Minutage

Vous pouvez déterminer la durée requise pour qu’un hub reprenne après une interruption sélective en mesurant le temps écoulé entre les deux événements suivants :

  • Démarrage de la reprise du hub à partir de la suspension sélective
  • Reprise du hub terminée

Notes

Le moment de reprise du hub dépend du moment de reprise de tous les appareils situés sous le hub et éventuellement de certains ou de tous les hubs au-dessus du hub qui est en cours de reprise.