Поделиться через


Использование средства сетевого монитора

Сетевой монитор (NetMon.exe) — это приложение Windows, которое можно использовать для анализа трассировок компонентов WPD. Средство "Монитор сети" заменило WpdMon.exe.

Установка и настройка NetMon.exe

Чтобы установить и настроить средство сетевого монитора, выполните следующие действия.

  1. Скачайте и установите NetMon.exe.

  2. Скачайте и установите комплект драйверов Windows (WDK).

  3. Установите средства синтаксического анализа WPD на компьютере разработки, запустив экземпляр Powershell.exe с правами администратора и выполнив следующую последовательность команд.

    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

      Средства синтаксического анализа WPD включены в комплект драйверов Windows (WDK).

  4. Настройте параметры NetMon.exe с помощью диалогового окна "Настройки":

    1. На вкладке "Общие" выберите поле "Использовать шрифт фиксированной ширины в Сводке кадров".
    2. На вкладке Правила цвета выберите Открыть и затем выберите C:\Program Files (x86)\Windows Kits\10\Tools\10.0.22621.0\x86\Network Monitor Parsers\wpd\wpd.nmcr. Выберите Открыть, а затем ОК.

После выполнения этих действий NetMon.exe готов к анализу файлов трассировки WPD. Следуйте инструкциям в разделе Сбор трассировок.

Сбор трассировок

Чтобы создать трассировки, создайте командный сценарий. Скопируйте следующий файл в текстовый файл и сохраните его с расширением имени файла .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

После создания файла команды запустите его из командной строки в режиме администратора.

Если вы использовали содержимое примера командного файла, трассировки хранятся в файле wpd_trace.etl.

Просмотр трассировок

Чтобы просмотреть трассировки, запустите NetMon.exe, выберите меню "Файл/Открыть или записать " и откройте собранный файл wpd_trace.etl. При открытии файла трассировки, NetMon.exe отображает трассировки на различных уровнях:

  • WPDAPI — отображает сведения на уровне API WPD с командами и ответами WPD
  • WPDMTP — отображает сведения на уровне протокола передачи мультимедиа (MTP) с помощью команд и ответов MTP
  • Транспорт (WPDMTPUS или WPDMTPIP или WPDMTPBT) — показывает пакеты уровня транспорта

На следующем рисунке показан запрос WPDAPI на уровне API. Запрос проходит через WPDMTP в виде запросов MTP, которые достигают транспорта, а затем всплывают вверх.

Скриншот окна

  • Ведение протоколирования на транспортном уровне не регистрирует фактические данные на этапе данных. Проверьте сообщение ответа WPDMTP для наборов данных, отправленных или полученных во время команд, таких как GetDeviceInfo или SendObjectPropList.
  • Если выбрать строку ответа WPDMTP в окне сводки кадра, соответствующий элемент открывается в окне сведений о кадре.
  • Выберите знаки "+" в окне сведений о кадре, чтобы раскрыть дополнительную информацию и изучить её. Если операция MTP включает фазу передачи данных, набор данных, полученный от устройства, доступен в поле DataSetOfDataPhase элемента ответа WPDMTP.

Снимок экрана: окно

  • Вы можете развернуть элементы и увидеть, что в окне сведения о кадре отображаются понятные сообщения WPD/MTP. Соглашение заключается в том, что при написании средств синтаксического анализа WPD, согласно которому сводка сведений доступна для просмотра на уровне заголовка. Например, в вызове GetServiceCapabilities поле DataSetOfDataPhase отображает рядом с ним число форматов в этом наборе данных.
  • Вы можете удалить столбцы источника и назначения в окне Сводка кадров, чтобы улучшить ясность.
  • При выборе поля в окне сведений о кадре соответствующее значение выделяется в окне шестнадцатеричных данных.

Фильтрация с помощью NetMon.exe

Средство "Монитор сети" предоставляет несколько возможностей фильтрации.

  • Чтобы отобразить только трассировки MTP, введите !wpdmtp в окне фильтра отображения и нажмите кнопку "Применить".

  • Чтобы отфильтровать случаи, когда драйвер вернул ошибку:

    • Введите wpderror != 0 в окне фильтра отображения и выберите Применить.
  • Вы можете отфильтровать все вызовы метода для заданного сценария. Например, следующий фильтр извлекает все вызовы GetServiceProperties:

    WPDMTP.CorrespondingCommand.MTPOpcode == 0x9304

  • Аналогичным образом следующий фильтр будет получать те же вызовы метода:

    WPDMTP. CorrespondingCommand.MTPOpcode == MTP_OPCODE_GETSERVICEPROPERTIES