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.
Baixe e instale NetMon.exe.
Baixe e instale o Kit de Driver do Windows.
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.
- PowerShell -ExecutionPolicy RemoteSigned
cd C:\Program Files (x86)\Windows Kits\10\Tools\10.0.22621.0\x86\Network Monitor Parsers\usb
- .. \NplAutoProfile.ps1
- CD.. \wpd
- .. \NplAutoProfile.ps1 Observação Os analisadores WPD estão incluídos no Kit de Driver do Windows.
Configure as opções NetMon.exe usando a caixa de diálogo Ferramentas/Opções:
- Na guia Geral, selecione a caixa Usar fonte de largura fixa no Resumo do quadro.
- 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.
- 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.
- 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