Partager via


Journal IRP

La fonctionnalité de journalisation IRP de Driver Verifier surveille l’utilisation d’un pilote par le fournisseur d’intégration et effectue un enregistrement de l’utilisation de L’IRP. Cet enregistrement est stocké sous forme d’informations WMI.

Le Kit de pilotes Windows (WDK) inclut l’outil DC2WMIParser (dc2wmiparser.exe) qui peut convertir cet enregistrement WMI en fichier texte.

Cette option Driver Verifier est disponible uniquement dans Windows Server 2003 et versions ultérieures.

Enregistrement WMI

L’enregistrement WMI n’inclut pas plus de vingt IRPs pour chaque appareil. Une fois le vingt-premier IRP enregistré, le premier enregistrement IRP est remplacé. Par conséquent, si l’enregistrement répertorie vingt IRPS, ce sont toujours les vingt les plus récents, mais il n’y a aucun moyen de savoir laquelle de ces adresses est la plus récente.

Étant donné que l’enregistrement WMI est stocké en mémoire, il est effacé lorsque l’ordinateur est redémarré. Par conséquent, utilisez DC2WMIParser pour enregistrer ces informations dans un fichier.

Si vous utilisez l’option /t , DC2WMIParser s’exécute en continu pendant la durée spécifiée. Dans ce cas, l’enregistrement peut inclure plus de vingt IRPs par appareil (jusqu’à vingt IRPs dans chaque période d’échantillonnage).

Activation de cette option

Vous pouvez activer la fonctionnalité de journalisation IRP pour un ou plusieurs pilotes à l’aide du Gestionnaire du vérificateur de pilotes ou de la ligne de commande Verifier.exe.

Pour activer la fonctionnalité de journalisation IRP, vous devez également activer la vérification des E/S.

  • Sur la ligne de commande

    Sur la ligne de commande, l’option de journalisation IRP est représentée par 0x400 (Bit 10).

    Pour activer la journalisation IRP, utilisez une valeur d’indicateur de 0x410 ou ajoutez 0x410 à la valeur de l’indicateur. Cette valeur active la vérification des E/S (0x10) et la journalisation IRP (0x400). Par exemple :

    verifier /flags 0x410 /driver MyDriver.sys
    

    La fonctionnalité sera active après le démarrage suivant.

    Sur Windows Vista et les versions ultérieures de Windows, vous pouvez également activer et désactiver la journalisation IRP sans redémarrer l’ordinateur en ajoutant le paramètre /volatile à la commande. Par exemple :

    verifier /volatile /flags 0x410 /adddriver MyDriver.sys
    

    Ce paramètre est effectif immédiatement, mais est perdu lorsque vous arrêtez ou redémarrez l’ordinateur. Pour plus d’informations, consultez Utilisation des paramètres volatiles.

  • Utilisation du Gestionnaire du vérificateur de pilotes

    1. Démarrez le Gestionnaire du vérificateur de pilote. Tapez Le vérificateur dans une fenêtre d’invite de commandes.
    2. Sélectionnez Créer des paramètres personnalisés (pour les développeurs de code), puis cliquez sur Suivant.
    3. Sélectionnez Sélectionner des paramètres individuels dans une liste complète.
    4. Sélectionnez (cochez) Journalisation IRP et vérification d’E/S.

DC2WMIParser

DC2WMIParser est un outil qui collecte les enregistrements WMI IRP créés par Driver Verifier et convertit ce journal en fichier texte.

La syntaxe DC2WMIParser est la suivante :

dc2wmiparser [/f File] [/t Time]

Les paramètres ont la signification suivante :

/fLime
Spécifie le chemin d’accès complet et le nom de fichier journal à écrire. Les chemins relatifs sont pris par rapport au répertoire actif. Si cela est omis, le nom de fichier dc2verifier.act dans le répertoire actif est utilisé.

/tTime
Spécifie la durée, en minutes, que DC2WMIParser continuera à s’exécuter. Si l’heure est égale à zéro, DC2WMIParser enregistre toutes les informations WMI IRP qui ont déjà été stockées par le vérificateur de pilote, puis quittent. Si l’heure est définie sur une valeur positive, DC2WMIParser continue à s’exécuter pendant la durée spécifiée, en stockant de nouvelles informations à mesure qu’elles arrivent. La valeur par défaut est zéro.

Format des fichiers journaux DC2WMIParser

Le fichier généré par DC2WMIParser est un fichier texte ASCII.

La première ligne de ce fichier contient un nombre décimal qui représente le nombre d’appareils connectés dans le fichier.

Une fois la première ligne terminée, le fichier est divisé en sections ; chaque section décrit un appareil.

Pour chaque appareil, le format est le suivant :

  • Sur une seule ligne : nom de l’appareil.

  • Sur une seule ligne : nombre décimal spécifiant le nombre de types d’appareils et de fonctions ciblés sur cet appareil.

  • Sur une ligne pour chaque type d’appareil et fonction : trois nombres hexadécimaux, séparés par des virgules. Celles-ci représentent le type d’appareil, ainsi que les fonctions les plus basses et les plus élevées enregistrées dans cet enregistrement.

  • Dans un groupe de lignes pour chaque type d’appareil et fonction :

    • Ligne unique avec un nombre décimal spécifiant le nombre de IOCTLs pour le type d’appareil actuel.
    • Une ligne pour chaque IOCTL. Chacune de ces lignes contient six nombres hexadécimaux séparés par des virgules. Ils spécifient le type d’appareil, la fonction, la méthode, l’accès, la longueur de la mémoire tampon d’entrée et la longueur de la mémoire tampon de sortie.

Voici un exemple de fichier journal DC2WMIParser. Dans un fichier réel, il n’y aura pas d’espaces, de commentaires ou de lignes vides, mais ceux-ci ont été ajoutés à cet exemple pour le rendre plus clair.

2           There are two devices described by this log file.

The first device begins here:

  DP(1)0x7e00-0x21dbda400+3   Device name of the first device
  2                           Number of device type IOCTLs targeted at this device

    7,12,12                     First targeted device: device type 7, low function 12, high function 12
    2d,420,420                  Second targeted device: device type 2d, low function 420, high function 420

    1                           Number of IOCTLs for first targeted  device (type 7)
      7,12,0,0,90,0               Device type 7, function 12, method 0, access 0, inbuflen 90, outbuflen 0
    1                           Number of IOCTLs for second targeted device (type 2d)
      2d,420,0,0,c,0              Device type 2d, function 420, method 0, access 0, inbuflen c, outbuflen 0

The second device begins here:

  DP(1)0x7e00-0x21dbda400+2   Device name of the second device
  2                           Number of device type IOCTLs targeted at this device

    7,12,12                     First targeted device: device type 7, low function 12, high function 12
    2d,420,420                  Second targeted device: device type 2d, low function 420, high function 420


    1                           Number of IOCTLs for first targeted  device (type 7)
      7,12,0,0,90,0               Device type 7, function 12, method 0, access 0, inbuflen 90, outbuflen 0
    1                           Number of IOCTLs for second targeted device (type 2d)
      2d,420,0,0,c,0              Device type 2d, function 420, method 0, access 0, inbuflen c, outbuflen 0