Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сетевой монитор (NetMon.exe) — это приложение Windows, которое можно использовать для анализа трассировок компонентов WPD. Средство "Монитор сети" заменило WpdMon.exe.
Установка и настройка NetMon.exe
Чтобы установить и настроить средство сетевого монитора, выполните следующие действия.
Скачайте и установите NetMon.exe.
Скачайте и установите комплект драйверов Windows (WDK).
Установите средства синтаксического анализа WPD на компьютере разработки, запустив экземпляр Powershell.exe с правами администратора и выполнив следующую последовательность команд.
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
Средства синтаксического анализа WPD включены в комплект драйверов Windows (WDK).
Настройте параметры NetMon.exe с помощью диалогового окна "Настройки":
- На вкладке "Общие" выберите поле "Использовать шрифт фиксированной ширины в Сводке кадров".
- На вкладке Правила цвета выберите Открыть и затем выберите
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