IRP-naplózás

A Driver Verifier IRP-naplózási funkciója figyeli az illesztőprogram IRP-k használatát, és rögzíti a használatukat. Ez a rekord WMI-információként van tárolva.

A Windows Illesztőprogram-készlet (WDK) tartalmazza a DC2WMIParser (dc2wmiparser.exe) eszközt, amely ezt a WMI-rekordot szövegfájllá konvertálhatja.

Ez az illesztőprogram-ellenőrző beállítás csak a Windows Server 2003 és újabb verziókban érhető el.

A WMI-rekord

A WMI-rekord nem tartalmaz több mint húsz IRP-t minden eszközhöz. A huszonegyedik IRP rögzítése után a rendszer lecseréli az első IRP-rekordot. Tehát ha a rekord húsz IRP-t sorol fel, mindig ezek a legutóbbi húszak, de nem lehet tudni, hogy ezek közül melyik a legújabb.

Mivel a WMI-rekord a memóriában van tárolva, a számítógép újraindításakor törlődik. Ezért a DC2WMIParser használatával mentse ezeket az adatokat egy fájlba.

Ha a /t lehetőséget használja, a DC2WMIParser folyamatosan fut a megadott időtartamig. Ebben az esetben a rekord eszközönként több mint húsz IRP-t tartalmazhat (minden mintavételi időszakban legfeljebb húsz IRP-t).

A beállítás aktiválása

Egy vagy több illesztőprogram IRP-naplózási funkcióját az Illesztőprogram-ellenőrző kezelő vagy a Verifier.exe parancssor használatával aktiválhatja.

Az IRP-naplózási funkció aktiválásához aktiválnia kell az I/O-ellenőrzést is.

  • A parancssorban

    A parancssorban az IRP naplózási beállítását 0x400 (10. bit) jelöli.

    Az IRP-naplózás aktiválásához használjon egy 0x410 jelzőértéket, vagy adjon hozzá 0x410 a jelző értékéhez. Ez az érték aktiválja az I/O-ellenőrzést (0x10) és az IRP-naplózást (0x400). Például:

    verifier /flags 0x410 /driver MyDriver.sys
    

    A funkció a következő rendszerindítás után aktív lesz.

    A Windows Vista és a Windows újabb verzióiban az IRP-naplózást a számítógép újraindítása nélkül is aktiválhatja és inaktiválhatja, ha hozzáadja a /volatile paramétert a parancshoz. Például:

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

    Ez a beállítás azonnal érvénybe lép, de a számítógép leállítása vagy újraindításakor elveszik. További részletekért lásd Illékony beállítások használata.

  • Driver Verifier Manager használata

    1. Indítsa el a Meghajtó Ellenőrző Kezelőt. Írja be Verifier parancssori ablakba.
    2. Válassza Egyéni beállítások létrehozása (kódfejlesztőknek) lehetőséget, majd kattintson a Továbbgombra.
    3. Válassza Egyéni beállítások kiválasztása a teljes listából.
    4. Válassza ki (ellenőrizze) az IRP-naplózást és az I/O-ellenőrzést.

DC2WMIParser

A DC2WMIParser egy eszköz, amely összegyűjti az Illesztőprogram-ellenőrző által létrehozott WMI IRP-rekordokat, és szöveges fájllá alakítja a naplót.

A DC2WMIParser szintaxisa a következő:

dc2wmiparser [/f File] [/t Time]

A paraméterek jelentése a következő:

/fFájl
Megadja az írandó naplófájl teljes elérési útját és fájlnevét. A relatív elérési utak az aktuális könyvtárhoz viszonyítva értendők. Ha ez nincs megadva, a rendszer a dc2verifier.act fájlnevet használja az aktuális könyvtárban.

/tidő
Azt határozza meg, hogy a DC2WMIParser percekben mérve mennyi ideig fog futni. Ha az idő nullával egyenlő, a DC2WMIParser rögzíti az illesztőprogram-ellenőrző által már tárolt ÖSSZES WMI IRP-információt, majd kilép. Ha az idő pozitív értékre van állítva, a DC2WMIParser továbbra is fut a megadott ideig, és az új információkat a beérkezéskor tárolja. Az alapértelmezett érték nulla.

A DC2WMIParser naplófájljainak formátuma

A DC2WMIParser által létrehozott fájl egy ASCII-szövegfájl.

A fájl első sora egy tizedesjegyet tartalmaz, amely a fájlban naplózott eszközök számát jelöli.

Az első sor után a fájl szakaszokra van osztva; az egyes szakaszok egy eszközt írnak le.

Minden eszköz esetében a formátum a következő:

  • Egyetlen sorban: Az eszköz neve.

  • Egyetlen sorban: Decimális szám, amely megadja, hogy hány eszköztípust és függvényt céloz meg az eszköz.

  • Minden eszköztípushoz és -függvényhez egy sorban: Három hexadecimális szám, vesszővel elválasztva. Ezek az eszköz típusát, valamint a rekordban rögzített legalacsonyabb és legmagasabb függvényeket jelölik.

  • Az egyes eszköztípusokhoz és függvényekhez tartozó sorok egy csoportjában:

    • Egyetlen sor decimális számmal, amely az aktuális eszköztípushoz tartozó IOCTL-ek számát adja meg.
    • Egy sor minden IOCTL-hez. Mindegyik sor hat hexadecimális számot tartalmaz vesszővel elválasztva. Ezek határozzák meg az eszköz típusát, a függvényt, a metódust, a hozzáférést, a bemeneti puffer hosszát és a kimeneti puffer hosszát.

Íme egy minta DC2WMIParser naplófájl. A tényleges fájlban nem lesznek szóközök, megjegyzések vagy üres sorok, de ezeket hozzáadtuk a példához, hogy egyértelműbb legyen.

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