Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’outil Network Monitor (NetMon.exe) est une application Windows archivée que vous pouvez utiliser pour afficher les traces à partir de composants WPD. L’outil Moniteur réseau a remplacé WpdMon.exe.
Installation et configuration de NetMon.exe
Pour installer et configurer l’outil Moniteur réseau, procédez comme suit :
Téléchargez et installez NetMon.exe.
Téléchargez et installez le Kit de pilotes Windows (WDK).
Installez les analyseurs WPD sur votre ordinateur de développement en démarrant une instance de Powershell.exe avec des autorisations d’administrateur et en exécutant la séquence de commandes suivante.
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
Les analyseurs WPD sont inclus dans le Kit de pilotes Windows (WDK).
Configurez les options NetMon.exe à l’aide de la boîte de dialogue Outils/Options :
- Sous l’onglet Général, cochez la case Utiliser une police à largeur fixe dans le Résumé du cadre.
- Sous l’onglet Règles de couleur , sélectionnez Ouvrir , puis sélectionnez
C:\Program Files (x86)\Windows Kits\10\Tools\10.0.22621.0\x86\Network Monitor Parsers\wpd\wpd.nmcr
. Sélectionnez Ouvrir, suivi d’OK.
Une fois ces étapes terminées, NetMon.exe est prêt à examiner les fichiers de trace WPD. Suivez les instructions de la section Collecte des traces .
Collecte de traces
Pour générer des traces, créez un script de commande. Copiez ce qui suit dans un fichier texte et enregistrez-le avec l’extension de nom de fichier .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
Après avoir créé le fichier de commandes, exécutez-le à partir d’une invite de commandes en mode Administrateur.
Si vous avez utilisé le contenu de l’exemple de fichier de commande, vos traces sont stockées dans le fichier wpd_trace.etl.
Affichage des traces
Pour afficher vos traces, lancez NetMon.exe, sélectionnez le menu Fichier/Ouvrir/Capturer , puis ouvrez le fichier wpd_trace.etl collecté. Lorsque vous ouvrez un fichier de trace, NetMon.exe affiche les traces à différentes couches :
- WPDAPI : affiche des informations au niveau de l'API WPD avec les commandes et les réponses WPD.
- WPDMTP : affiche des informations à partir du niveau MTP (Media Transfer Protocol) avec des commandes et des réponses MTP
- Transport (WPDMTPUS ou WPDMTPIP ou WPDMTPBT) : affiche les paquets au niveau du transport
L’image suivante montre une requête WPDAPI au niveau de l’API. La requête transite par WPDMTP sous la forme de requêtes MTP qui atteignent un transport, puis remontent.
- La journalisation au niveau du transport ne consigne pas les données réelles pendant la phase de données. Examinez le message de réponse WPDMTP pour les jeux de données qui ont été envoyés ou reçus pendant les commandes telles que GetDeviceInfo ou SendObjectPropList.
- Si vous sélectionnez une ligne de réponse WPDMTP dans la fenêtre Résumé du cadre , l’élément correspondant se développe dans la fenêtre Détails du cadre .
- Sélectionnez les « + » dans la fenêtre Détails du cadre pour approfondir et explorer. Si une opération MTP a une phase de données, le jeu de données reçu de l’appareil est disponible sous le champ DataSetOfDataPhase d’un élément de réponse WPDMTP.
- Vous pouvez choisir d'étendre les éléments pour voir que la fenêtre Détails du cadre affiche des messages adaptés aux protocoles WPD/MTP. La convention suivie lors de l’écriture des analyseurs WPD est qu’elle permet de voir un résumé des détails au niveau de l’en-tête. Par exemple, dans un appel GetServiceCapabilities, le champ DataSetOfDataPhase montre à côté de lui le nombre de formats dans ce jeu de données.
- Vous pouvez supprimer les colonnes Source et Destination dans la fenêtre Résumé du cadre pour améliorer la clarté
- Lorsque vous sélectionnez un champ dans la fenêtre Détails du cadre , la valeur correspondante est mise en surbrillance dans la fenêtre Détails hexadécimal .
Filtrage avec NetMon.exe
L’outil Moniteur réseau fournit plusieurs fonctionnalités de filtrage.
Pour afficher uniquement les traces MTP, entrez
!wpdmtp
dans la fenêtre Filtre d’affichage et sélectionnez Appliquer.Pour filtrer les cas où le pilote a retourné une erreur :
- Entrez wpderror != 0 dans la fenêtre Filtre d’affichage , puis sélectionnez Appliquer.
Vous pouvez filtrer pour tous les appels de méthode pour un scénario donné. Par exemple, le filtre suivant récupère tous les appels à GetServiceProperties :
WPDMTP. CorrespondingCommand.MTPOpcode == 0x9304
De même, le filtre suivant récupère les mêmes appels de méthode :
WPDMTP.CorrespondingCommand.MTPOpcode == MTP_OPCODE_GETSERVICEPROPERTIES