Compartilhar via


Usando a ferramenta Monitor de Rede

A ferramenta Monitor de Rede (NetMon.exe) é um aplicativo baseado no Windows arquivado que você pode usar para exibir rastreamentos de componentes do WPD. A ferramenta Monitor de Rede substituiu WpdMon.exe.

Instalando e configurando NetMon.exe

Para instalar e configurar a ferramenta Monitor de Rede, conclua estas etapas:

  1. Baixar e instalar NetMon.exe.

  2. Baixe e instale o WDK (Windows Driver Kit).

  3. Instale os analisadores do WPD em seu computador de desenvolvimento iniciando uma instância de Powershell.exe com permissões de Administrador e executando a seguinte sequência de comandos.

    1. PowerShell -ExecutionPolicy RemoteSigned

    2. cd C:\Program Files (x86)\Windows Kits\10\Tools\10.0.22621.0\x86\Network Monitor Parsers\usb

    3. ..\NplAutoProfile.ps1

    4. cd ..\wpd

    5. ..\NplAutoProfile.ps1

      Os analisadores do WPD são incluídos no WDK (Windows Driver Kit).

  4. Configure as opções NetMon.exe através do diálogo Ferramentas/Opções:

    1. Na guia Geral, selecione a caixa Usar fonte de largura fixa no Resumo do Quadro.
    2. Na guia Regras de Cor , selecione Abrir e selecione C:\Program Files (x86)\Windows Kits\10\Tools\10.0.22621.0\x86\Network Monitor Parsers\wpd\wpd.nmcr. Selecione Abrir, seguido por OK.

Depois de concluir essas etapas, NetMon.exe estará pronto para examinar os arquivos de rastreamento do WPD. Siga as instruções na seção Coletando rastreamentos .

Coletando vestígios

Para gerar rastreamentos, crie um script de comando. Copie o seguinte para um arquivo de texto e salve-o com a extensão de nome de arquivo .cmd.

echo off
@REM ---------------------------------------------------------------------------------------
@REM UNCOMMENT THE LOGMAN COMMANDS FOR THE FOLLOWING PROVIDERS AS REQUIRED
@REM Microsoft-Windows-WPD-API                 To log API traffic
@REM Microsoft-Windows-WPD-MTPClassDriver      To log MTP command, response and datasets
@REM Microsoft-Windows-WPD-MTPUS               To log USB traffic at WpdMtpUS layer
@REM Microsoft-Windows-WPD-MTPIP               To log IP traffic at WpdMtpIP layer
@REM Microsoft-Windows-WPD-MTPBT               To log BT traffic at WpdMtpBt layer
@REM Microsoft-Windows-USB-USBPORT             To log USB core layer traffic
@REM Microsoft-Windows-USB-USBHUB              To log USB core layer traffic
@REM ---------------------------------------------------------------------------------------

@REM Start Logging

logman start  -ets WPD -p Microsoft-Windows-WPD-API            -bs 100 -nb 128 640 -o wpd_trace.etl
logman update -ets WPD -p Microsoft-Windows-WPD-MTPClassDriver -bs 100 -nb 128 640
logman update -ets WPD -p Microsoft-Windows-WPD-MTPUS          -bs 100 -nb 128 640
logman update -ets WPD -p Microsoft-Windows-WPD-MTPIP          -bs 100 -nb 128 640
logman update -ets WPD -p Microsoft-Windows-WPD-MTPBT          -bs 100 -nb 128 640
logman update -ets WPD -p Microsoft-Windows-USB-USBPORT        -bs 100 -nb 128 640
logman update -ets WPD -p Microsoft-Windows-USB-USBHUB         -bs 100 -nb 128 640
logman update -ets WPD -p Microsoft-Windows-Kernel-IoTrace 0 2
echo.
echo Please run your scenario now and
pause

@REM Stop logging
logman stop -ets WPD

Depois de criar o arquivo de comando, execute-o em um prompt de comando do modo Administrador.

Se você usou o conteúdo do arquivo de comando de exemplo, seus rastreamentos serão armazenados no arquivo wpd_trace.etl.

Visualizando rastreamentos

Para exibir seus rastreamentos, inicieNetMon.exe, selecione o menu Arquivo/Abrir/Capturar e abra o arquivo wpd_trace.etl coletado. Quando você abre um arquivo de rastreamento, NetMon.exe exibe os rastreamentos em várias camadas:

  • WPDAPI – Exibe informações no nível da API do WPD com comandos e respostas do WPD
  • WPDMTP – Exibe informações do Protocolo de Transferência de Mídia (MTP) com comandos e respostas MTP
  • Transporte (WPDMTPUS ou WPDMTPIP ou WPDMTPBT) – mostra pacotes de nível de transporte

A imagem a seguir mostra uma solicitação WPDAPI no nível da API. A solicitação percorre o WPDMTP na forma de solicitações MTP que chegam a um transporte e, em seguida, se propagam.

Captura de tela mostrando a janela 'Resumo do Quadro' com textos explicativos para diferentes camadas de rastreamento.

  • O registro no nível de transporte não armazena os dados propriamente ditos durante a etapa de transferência de dados. Examine a mensagem de resposta WPDMTP para os conjuntos de dados que foram enviados ou recebidos durante comandos como GetDeviceInfo ou SendObjectPropList.
  • Se você selecionar uma linha de resposta WPDMTP na janela Resumo do Quadro , o item correspondente se expandirá na janela Detalhes do Quadro .
  • Selecione "+" na janela Detalhes do Quadro para expandir ainda mais e explorar. Se uma operação MTP tiver uma fase de dados, o conjunto de dados recebido do dispositivo estará disponível no campo DataSetOfDataPhase de um item de resposta WPDMTP.

Captura de tela mostrando a janela 'Detalhes do Frame' enquanto visualiza rastreamentos.

  • Você pode selecionar para expandir os itens e ver que a janela Detalhes do Quadro exibe mensagens amigáveis do WPD/MTP. A convenção seguida ao escrever os analisadores do WPD é que você pode ver o resumo dos detalhes no nível do cabeçalho. Por exemplo, em uma chamada GetServiceCapabilities , o campo DataSetOfDataPhase mostra ao lado dele o número de formatos nesse conjunto de dados.
  • Você pode remover as colunas Origem e Destino na janela Resumo do Quadro para melhorar a clareza
  • Quando você seleciona um campo na janela Detalhes do Quadro , o valor correspondente é realçado na janela Detalhes do Hex .

Filtragem com NetMon.exe

A ferramenta Monitor de Rede fornece vários recursos de filtragem.

  • Para mostrar apenas os rastreamentos do MTP, insira !wpdmtp na janela Exibir Filtro e selecione Aplicar.

  • Para filtrar casos em que o driver retornou um erro:

    • Insira wpderror != 0 na janela Exibir Filtro e selecione Aplicar.
  • Você pode filtrar todas as chamadas de método para um determinado cenário. Por exemplo, o filtro a seguir recuperaria todas as chamadas para GetServiceProperties:

    WPDMTP.CorrespondingCommand.MTPOpcode == 0x9304

  • Da mesma forma, o filtro a seguir recuperaria as mesmas chamadas de método:

    WPDMTP.CorrespondingCommand.MTPOpcode == MTP_OPCODE_GETSERVICEPROPERTIES