Udostępnij przez


Rejestrowanie IRP

Funkcja rejestrowania IRP w weryfikatorze sterowników monitoruje użycie IRP przez sterownik i tworzy zapis tego użycia. Ten rekord jest przechowywany jako informacja WMI.

Zestaw Sterowników systemu Windows (WDK) zawiera narzędzie DC2WMIParser (dc2wmiparser.exe), które może przekonwertować ten rekord WMI na plik tekstowy.

Ta opcja weryfikatora sterowników jest dostępna tylko w systemie Windows Server 2003 lub nowszym.

Rekord WMI

Rekord WMI nie będzie zawierać więcej niż dwudziestu irps dla każdego urządzenia. Po zarejestrowaniu dwudziestego pierwszego IRP pierwszy rekord IRP zostanie zastąpiony. Więc jeśli rekord zawiera listę dwudziestu IRP, są to zawsze najbardziej aktualne dwadzieścia elementów, ale nie ma sposobu, aby dowiedzieć się, który z nich jest najbardziej aktualny.

Ponieważ rekord WMI jest przechowywany w pamięci, zostanie on wymazany po ponownym uruchomieniu komputera. W związku z tym użyj DC2WMIParser, aby zapisać te informacje do pliku.

Jeśli używasz /t opcji, DC2WMIParser będzie działać w sposób ciągły przez określony czas trwania. W takiej sytuacji rekord może zawierać więcej niż dwadzieścia IRP na urządzenie (do dwudziestu IRP w każdym okresie próbkowania).

Aktywowanie tej opcji

Funkcję rejestrowania IRP można aktywować dla co najmniej jednego sterownika za pomocą Menedżera weryfikatora sterowników lub wiersza polecenia Verifier.exe.

Aby aktywować funkcję rejestrowania IRP, należy również aktywować I/O Verification.

  • W wierszu polecenia

    W wierszu polecenia opcja Rejestrowanie IRP jest reprezentowana przez 0x400 (Bit 10).

    Aby aktywować rejestrowanie IRP, użyj wartości flagi 0x410 lub dodaj 0x410 do wartości flagi. Ta wartość aktywuje weryfikację we/wyjścia (0x10) i rejestrowanie IRP (0x400). Przykład:

    verifier /flags 0x410 /driver MyDriver.sys
    

    Funkcja będzie aktywna po następnym rozruchu.

    W systemie Windows Vista i nowszych wersjach systemu Windows można również aktywować i dezaktywować rejestrowanie IRP bez ponownego uruchamiania komputera, dodając /volatile parametr do polecenia . Przykład:

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

    To ustawienie jest skuteczne natychmiast, ale zostanie utracone po zamknięciu lub ponownym uruchomieniu komputera. Aby uzyskać szczegółowe informacje, zobacz Używanie zmiennych ustawień.

  • Korzystanie z Menedżera weryfikatora sterowników

    1. Uruchom Menedżera weryfikatora sterowników. Wpisz Weryfikator w oknie wiersza polecenia.
    2. Wybierz pozycję Utwórz ustawienia niestandardowe (dla deweloperów kodu), a następnie kliknij przycisk Dalej.
    3. Wybierz poszczególne ustawienia z pełnej listy.
    4. Wybierz opcje Rejestrowanie IRP i Weryfikacja I/O.

DC2WMIParser

DC2WMIParser to narzędzie, które zbiera rekordy IRP usługi WMI utworzone przez weryfikatora sterowników i konwertuje ten dziennik na plik tekstowy.

Składnia DC2WMIParser jest następująca:

dc2wmiparser [/f File] [/t Time]

Parametry mają następujące znaczenie:

/fPlik
Określa pełną ścieżkę i nazwę pliku dziennika do zapisania. Ścieżki względne będą traktowane względem bieżącego katalogu. Jeśli zostanie to pominięte, zostanie użyta nazwa pliku dc2verifier.act w bieżącym katalogu.

/tCzas
Określa czas w minutach, przez który kontroler DC2WMIParser będzie nadal działać. Jeśli Time równa się zero, DC2WMIParser będzie rejestrować wszystkie informacje IRP WMI, które zostały już zapisane przez Driver Verifier, a następnie zakończyć działanie. Jeśli parametr Time jest ustawiony na wartość dodatnią, kontroler DC2WMIParser będzie nadal działać przez określony czas, przechowując nowe informacje podczas ich nadejścia. Wartość domyślna to zero.

Format plików dziennika DC2WMIParser

Plik wygenerowany przez DC2WMIParser jest plikiem tekstowym ASCII.

Pierwszy wiersz tego pliku zawiera liczbę dziesiętną reprezentującą liczbę urządzeń zarejestrowanych w pliku.

Po pierwszym wierszu plik jest podzielony na sekcje; w każdej sekcji opisano jedno urządzenie.

Dla każdego urządzenia format to:

  • W jednym wierszu: Nazwa urządzenia.

  • W jednym wierszu: Liczba dziesiętna określająca liczbę typów urządzeń i funkcji przeznaczonych dla tego urządzenia.

  • W jednym wierszu dla każdego typu i funkcji urządzenia: Trzy liczby szesnastkowe oddzielone przecinkami. Reprezentują one typ urządzenia oraz najniższe i najwyższe funkcje, które zostały zarejestrowane w tym rekordzie.

  • W jednej grupie wierszy dla każdego typu i funkcji urządzenia:

    • Pojedynczy wiersz z liczbą dziesiętną określającą liczbę IOCTLs dla bieżącego typu urządzenia.
    • Po jednej linii dla każdego IOCTL. Każdy z tych wierszy zawiera sześć liczb szesnastkowe rozdzielonych przecinkami. Określają one typ urządzenia, funkcję, metodę, dostęp, długość buforu wejściowego i długość buforu wyjściowego.

Oto przykładowy plik dziennika DC2WMIParser. W rzeczywistym pliku nie będzie żadnych spacji, komentarzy ani pustych wierszy, ale zostały one dodane do tego przykładu, aby było bardziej jasne.

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