네트워크 모니터 도구 사용

네트워크 모니터 도구(NetMon.exe)는 WPD 구성 요소에서 추적을 보는 데 사용할 수 있는 보관된 Windows 기반 애플리케이션입니다. Windows 8부터 도구가 WpdMon.exe 대체되었습니다.

NetMon.exe 설치 및 구성

네트워크 모니터 도구를 설치하고 구성하려면 다음 단계를 완료합니다.

  1. NetMon.exe 다운로드하고 설치합니다.

  2. Windows 드라이버 키트를 다운로드하고 설치 합니다.

  3. 관리자 권한으로 Powershell.exe 인스턴스를 시작하고 다음 명령 시퀀스를 실행하여 개발 머신에 WPD 파서를 설치합니다.

    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. 시디.. \wpd
    5. .. \NplAutoProfile.ps1 WPD 파서는 Windows 드라이버 키트에 포함되어 있습니다.
  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

명령 파일을 만든 후 관리자 권한 명령 세션에서 Windows 8 컴퓨터에서 실행합니다.

샘플 명령 파일의 내용을 사용한 경우 추적은 wpd_trace.etl 파일에 저장됩니다.

추적 보기

추적을 보려면 NetMon.exe 시작하고 파일/열기/캡처 메뉴를 선택하고 위에서 수집한 wpd_trace.etl 파일을 엽니다. 추적 파일을 열면 NetMon.exe 다양한 계층에 추적을 표시하는 것을 볼 수 있습니다.

  • WPDAPI – WPD 명령 및 응답을 사용하여 WPD API 수준의 정보를 표시합니다.
  • WPDMTP – MTP 명령 및 응답을 사용하여 MTP 수준의 정보를 표시합니다.
  • 전송(WPDMTPUS 또는 WPDMTPIP 또는 WPDMTPBT) – 전송 수준 패킷 표시

다음 이미지는 API 수준에서 WPDAPI 요청을 보여줍니다. 요청은 전송에 도달한 다음 버블업되는 MTP 요청 형식으로 WPDMTP를 통과합니다.

다른 추적 계층에 대한 설명선이 있는

  • 전송 수준 로깅은 데이터 단계 동안 실제 데이터를 기록하지 않습니다. GetDeviceInfo 또는 SendObjectPropList와 같은 명령 중에 보내거나 받은 데이터 세트에 대한 WPDMTP 응답 메시지를 검사합니다.
  • 프레임 요약 창에서 WPDMTP 응답 줄을 선택하면 해당 항목이 프레임 세부 정보 창에서 확장됩니다.
  • 프레임 세부 정보 창에서 "+"를 선택하여 추가로 확장하고 탐색합니다. MTP 작업에 데이터 단계가 있는 경우 디바이스에서 받은 데이터 세트는 WPDMTP 응답 항목의 DataSetOfDataPhase 필드에서 사용할 수 있습니다.

추적 보기

  • 항목을 확장하고 프레임 세부 정보 창에 WPD/MTP 친숙한 메시지가 표시되는지 확인할 수 있습니다. WPD 파서를 작성할 때 따르는 규칙은 헤더 수준에서 세부 정보의 요약을 볼 수 있다는 것입니다. 예를 들어 GetServiceCapabilities 호출 에서 DataSetOfDataPhase 필드는 그 옆에 해당 데이터 세트의 형식 수를 표시합니다.
  • 프레임 요약 창에서 원본대상 열을 제거하여 명확성을 높일 수 있습니다.
  • 프레임 세부 정보 창에서 필드를 선택하면 해당 값이 16진수 세부 정보 창에 강조 표시됩니다.

NetMon.exe 사용하여 필터링

네트워크 모니터 도구는 몇 가지 필터링 기능을 제공합니다.

  • MTP 추적만 표시하려면 표시 필터 창에 !wpdmtp입력하고 적용을 선택합니다.

  • 드라이버에서 오류를 반환한 경우를 필터링하려면 다음을 수행합니다.

    • 표시 필터 창에 wpderror != 0입력하고 적용을 선택합니다.
  • 지정된 시나리오에 대한 모든 메서드 호출을 필터링할 수 있습니다. 예를 들어 다음 필터는 GetServiceProperties에 대한 모든 호출을 검색합니다.

    WPDMTP. CorrespondingCommand.MTPOpcode == 0x9304

  • 마찬가지로 다음 필터는 동일한 메서드 호출을 검색합니다.

    WPDMTP. CorrespondingCommand.MTPOpcode == MTP_OPCODE_GETSERVICEPROPERTIES