Depurando problemas de dispositivo USB usando eventos ETW
Este tópico fornece dicas para depurar problemas de dispositivo USB usando eventos ETW.
- Diagnosticar falhas de enumeração do dispositivo
- Diagnosticando falhas de início do dispositivo
- Tempo de inserção de dispositivo de criação de perfil
- Tempo de retomada do dispositivo iniciado por software
- Tempo de retomada do dispositivo iniciado por hardware
- HUB RETOMAR DO Tempo de Suspensão Seletiva
Diagnosticar falhas de enumeração do dispositivo
Você pode usar os eventos ETW associados à tarefa de enumeração do hub USB para determinar a causa raiz da maioria das falhas de enumeração do dispositivo.
Para exibir os eventos em um log de rastreamento associado à tarefa de enumeração do hub USB
Abra o Netmon e localize um evento de enumeração, como "Iniciar Enumeração de Porta". Clique no evento no painel Resumo do Quadro .
Confirme se a tarefa para esse evento é enumeração de hub USB examinando o campo Tarefa do evento:
- No painel Detalhes do Quadro , expanda o Evento Net, expanda o Cabeçalho, expanda o Descritor e localize o campo Tarefa .
- Confirme se o campo Tarefa contém o valor 2 (enumeração de hub USB).
Filtre os eventos para mostrar somente aqueles do driver do hub que têm o valor da tarefa 2:
Clique com o botão direito do mouse no campo Tarefa .
Selecione Adicionar Valor Selecionado para Exibir Filtro.
Clique com o botão direito do mouse no evento no painel Resumo do Quadro e selecione Adicionar "Nome do Protocolo" para Exibir Filtro.
No painel Exibir Filtro , altere "OR" para "AND". O exemplo a seguir mostra o filtro resultante:
NetEvent.Header.Descriptor.Task == 0x2 AND ProtocolName == "USBHub_MicrosoftWindowsUSBUSBHUB"
Para obter mais informações sobre como usar filtros no Netmon, consulte "Filtros USB Netmon" em Estudo de Caso: Solução de problemas de um dispositivo USB desconhecido usando ETW e Netmon.
Diagnosticando falhas de início do dispositivo
Se um dispositivo não for iniciado durante a manipulação do driver de hub do IRP (pacote de solicitação de E/S) inicial do dispositivo, você poderá usar os eventos ETW associados à tarefa de início do dispositivo USB para solucionar a falha. No Netmon, localize um evento de início de dispositivo, como "Iniciar dispositivo USB IRP Despachado". Você pode filtrar os eventos para mostrar apenas aqueles do driver do hub com um valor de tarefa 21 (início do dispositivo USB). Para obter mais informações sobre como criar esse filtro, consulte "Diagnosticing Device Enumeration Failures" neste tópico.
Tempo de inserção de dispositivo de criação de perfil
Você pode determinar onde o tempo está sendo gasto no driver do hub durante a inserção do dispositivo examinando os carimbos de data/hora dos eventos de enumeração.
Tempo de enumeração
A parte do tempo de inserção do dispositivo que o driver do hub consumiu para enumerar um dispositivo é o tempo decorrido entre os dois eventos a seguir:
- Iniciar enumeração de porta
- Enumeração da porta concluída
Tarefas de enumeração de criação de perfil
Quando o driver do hub USB enumera um dispositivo, ele registra os seguintes eventos na seguinte ordem:
- Iniciar enumeração de porta
- Enumeração Debounce Concluída
- PDO criado para enumeração
- Primeira redefinição de porta de enumeração concluída
- Enumeração – CreateDevice Complete
- Segunda redefinição de porta de enumeração concluída
- Enumeração – InitializeDevice Complete
- Enumeração – SetupDevice Complete
- Enumeração da porta concluída
Para determinar o tempo que o driver do hub consumiu para cada tarefa de enumeração, calcule o tempo decorrido entre os eventos anteriores. Tempo Decorrido entre IoInvalidateDeviceRelations e IRP_MN_QUERY_DEVICE_RELATIONS
Para determinar a parte do tempo de inserção de dispositivo que o sistema consumiu enquanto esperava pelo IRP de relações de dispositivo de consulta, meça o tempo decorrido entre os dois eventos a seguir:
- Enumeração da porta concluída
- Relações de Dispositivo de Consulta do Hub USB (BusRelations) IRP Expedida
Tempo decorrido entre a conclusão de IRP_MN_QUERY_DEVICE_RELATIONS e IRP_MN_START_DEVICE
Para determinar a parte do tempo de inserção do dispositivo entre relatar o novo objeto de dispositivo físico (PDO) ao gerenciador de Plug and Play e o recebimento do IRP inicial, meça o tempo decorrido entre os dois eventos a seguir:
- IRP de Relações de Dispositivo de Consulta do Hub USB concluída
- Iniciar o IRP do dispositivo USB expedido
Iniciar o tempo do IRP
Para determinar o tempo gasto no driver do hub que está tratando o IRP inicial, meça o tempo decorrido entre os dois eventos a seguir:
- Iniciar o IRP do dispositivo USB expedido
- Inicialização do DISPOSITIVO USB IRP concluída
Software-Initiated tempo de retomada do dispositivo
O driver de função de um dispositivo pode enviar uma solicitação de energia do dispositivo D0 para retomar o dispositivo do estado de suspensão. Para determinar o tempo necessário para que o dispositivo seja retomado da suspensão e esteja pronto para solicitações de transferência, meça o tempo decorrido entre os dois eventos a seguir:
- USB Device Set D0 Device Power IRP Dispatched
- Dispositivo USB Set D0 Device Power IRP Concluído
Hardware-Initiated tempo de retomada do dispositivo
Um sinal de retomada no barramento faz com que um dispositivo seja retomado do estado suspenso. Para determinar o tempo necessário para o dispositivo retomar para um estado em que ele está pronto para solicitações de transferência, meça o tempo decorrido entre os dois eventos a seguir:
- O hub pai não está suspenso:
- Velório de espera do dispositivo USB IRP concluído
- Dispositivo USB Set D0 Device Power IRP Concluído
- O hub pai está suspenso:
- Iniciou o Currículo do Hub da Suspensão Seletiva (primeiro desses eventos para qualquer hub entre o dispositivo e o controlador de host)
- Dispositivo USB Set D0 Device Power IRP Concluído
HUB RETOMAR DO Tempo de Suspensão Seletiva
Você pode determinar a quantidade necessária de tempo para que um hub seja retomado da suspensão seletiva medindo o tempo decorrido entre os dois eventos a seguir:
- Retomada iniciada do hub da suspensão seletiva
- Currículo do Hub Concluído
Observação
O tempo de retomada do hub depende do tempo de retomada de todos os dispositivos abaixo do hub e, possivelmente, alguns ou todos os hubs acima do hub que está sendo retomado.