Sdílet prostřednictvím


Logování IRP

Funkce protokolování IRP nástroje Driver Verifier monitoruje použití IRP ovladače a zaznamenává jeho využití. Tento záznam se uloží jako informace o rozhraní WMI.

Sada Windows Driver Kit (WDK) obsahuje nástroj DC2WMIParser (dc2wmiparser.exe), který může převést tento záznam WMI na textový soubor.

Tato možnost Ověření ovladače je k dispozici pouze v systému Windows Server 2003 a novější.

Záznam rozhraní WMI

Záznam rozhraní WMI nebude obsahovat více než dvacet irps pro každé zařízení. Jakmile se zaznamená dvacátý první IRP, nahradí se původní záznam IRP. Takže pokud záznam uvádí dvacet irps, jedná se vždy o poslední dvacet, ale neexistuje způsob, jak zjistit, které z nich je nejnovější.

Vzhledem k tomu, že je záznam WMI uložený v paměti, vymaže se při restartování počítače. Proto k uložení těchto informací do souboru použijte DC2WMIParser.

Pokud použijete možnost /t , dc2WMIParser bude po zadanou dobu běžet nepřetržitě. V této situaci může záznam obsahovat více než dvacet irps na zařízení (v každém období vzorkování až dvacet irps).

Aktivace této možnosti

Funkci protokolování protokolu IRP můžete aktivovat pro jeden nebo více ovladačů pomocí Správce ověření ovladačů nebo příkazového řádku Verifier.exe.

Pokud chcete aktivovat funkci protokolování protokolu IRP, musíte také aktivovat ověřování vstupně-výstupních operací.

  • Na příkazovém řádku

    Na příkazovém řádku je možnost Protokolování IRP reprezentována 0x400 (bit 10).

    Pokud chcete aktivovat protokolování protokolu IRP, použijte hodnotu příznaku 0x410 nebo přidejte 0x410 k hodnotě příznaku. Tato hodnota aktivuje ověřování vstupně-výstupních operací (0x10) a protokolování protokolu IRP (0x400). Například:

    verifier /flags 0x410 /driver MyDriver.sys
    

    Funkce bude aktivní po dalším spuštění.

    V systému Windows Vista a novějších verzích systému Windows můžete také aktivovat a deaktivovat protokolování protokolu IRP bez restartování počítače přidáním parametru /volatile do příkazu. Například:

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

    Toto nastavení je efektivní okamžitě, ale při vypnutí nebo restartování počítače dojde ke ztrátě. Podrobnosti najdete v tématu Použití volatile nastavení.

  • Použití Správce ověřovatele ovladačů

    1. Spusťte Správce ověřovatele ovladačů. Do okna příkazového řádku zadejte ověřitel .
    2. Vyberte Vytvořit vlastní nastavení (pro vývojáře kódu) a potom klikněte na Další.
    3. Vyberte jednotlivá nastavení z úplného seznamu.
    4. Vyberte (zaškrtněte) IRP protokolování a ověřování I/O.

DC2WMIParser

DC2WMIParser je nástroj, který shromažďuje záznamy WMI IRP vytvořené nástrojem Driver Verifier a převádí tento protokol na textový soubor.

Syntaxe DC2WMIParser je následující:

dc2wmiparser [/f File] [/t Time]

Parametry mají následující významy:

/fSoubor
Určuje úplnou cestu a název souboru protokolu, který se má zapsat. Relativní cesty budou převzaty vzhledem k aktuálnímu adresáři. Pokud tento parametr vynecháte, použije se název souboru dc2verifier.act v aktuálním adresáři.

/tČas
Určuje dobu, po kterou bude DC2WMIParser běžet v minutách. Pokud čas rovná nule, DC2WMIParser zaznamená všechny informace o WMI IRP, které již byly uloženy nástrojem Driver Verifier, a poté ukončí. Pokud je hodnota Time nastavená na kladnou hodnotu, dc2WMIParser bude i nadále běžet po zadanou dobu a ukládá nové informace, jakmile dorazí. Výchozí hodnota je nula.

Formát souborů protokolu DC2WMIParser

Soubor vygenerovaný dc2WMIParser je textový soubor ASCII.

První řádek tohoto souboru obsahuje desetinné číslo, které představuje počet zařízení přihlášených v souboru.

Po prvním řádku je soubor rozdělen do oddílů; každá část popisuje jedno zařízení.

Pro každé zařízení je formát:

  • Na jednom řádku: Název zařízení.

  • Na jednom řádku: Desetinné číslo určující, kolik typů zařízení a funkcí je na toto zařízení zacíleno.

  • Na jednom řádku pro každý typ a funkci zařízení: Tři šestnáctková čísla oddělená čárkami. Představují typ zařízení a nejnižší a nejvyšší funkce, které byly zaznamenány v tomto záznamu.

  • V jedné skupině řádků pro každý typ a funkci zařízení:

    • Jeden řádek s desetinným číslem určujícím počet IOCTLs pro aktuální typ zařízení.
    • Jeden řádek pro každý IOCTL. Každý z těchto řádků obsahuje šest šestnáctkových čísel oddělených čárkami. Ty určují typ zařízení, funkci, metodu, přístup, délku vstupní vyrovnávací paměti a délku výstupní vyrovnávací paměti.

Ukázkový soubor protokolu DC2WMIParser je zde. Ve skutečném souboru nebudou žádné mezery, komentáře ani prázdné řádky, ale tyto řádky byly přidány do tohoto příkladu, aby bylo jasnější.

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