Partilhar via


Usando a ferramenta Monitor de rede

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

Instalando e configurando NetMon.exe

Para instalar e configurar a ferramenta Monitor de Rede, conclua as etapas a seguir.

  1. Baixe e instale NetMon.exe.

  2. Baixe e instale o Kit de Driver do Windows.

  3. Instale os analisadores WPD em sua máquina 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 Observação Os analisadores WPD estão incluídos no Kit de Driver do Windows.
  4. Configure as opções NetMon.exe usando a caixa de 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 de OK.

Depois de concluir essas etapas, NetMon.exe está pronto para examinar arquivos de rastreamento WPD. Para começar a coletar rastreamentos, siga as instruções na próxima seção, Coletando rastreamentos.

Coletando vestígios

Para gerar rastreamentos, você precisará criar 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 seu computador Windows 8 a partir de uma sessão de comando elevada.

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

Exibindo rastreamentos

Para visualizar seus rastreamentos, inicie o NetMon.exe, selecione o menu Arquivo/Abrir/Capturar e abra o arquivo wpd_trace.etl coletado acima. Ao abrir um arquivo de rastreamento, você verá que NetMon.exe exibe os rastreamentos em várias camadas:

  • WPDAPI – Exibe informações do nível da API WPD com comandos e respostas WPD
  • WPDMTP – Exibe informações do nível 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 viaja através do WPDMTP na forma de solicitações MTP que chegam a um transporte e, em seguida, borbulham.

Captura de tela que mostra a janela

  • O log em nível de transporte não registra os dados reais durante a fase 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 será expandido na janela Detalhes do quadro.
  • Selecione os "+"s na janela Detalhes do quadro para expandir e explorar. Se uma operação MTP tiver uma dataphase, o conjunto de dados recebido do dispositivo estará disponível no campo DataSetOfDataPhase de um item de resposta WPDMTP.

exibindo vestígios.

  • Você pode selecionar para expandir os itens e ver que a janela Detalhes do quadro exibe mensagens amigáveis WPD/MTP. A convenção seguida ao escrever os analisadores WPD é que você poderá 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 hexadecimais .

Filtrando com NetMon.exe

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

  • Para mostrar apenas os rastreamentos MTP, digite !wpdmtp na janela Exibir filtro e selecione Aplicar.

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

    • Digite 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