Eigenschaften der Treiberüberprüfung für Treiberpaketprojekte
Driver Verifier ist ein Laufzeitüberprüfungstool, das die Effektivität Ihrer Treibertests erhöht. Sie können die Treiberüberprüfung aktivieren und so konfigurieren, dass er auf allen Testcomputern ausgeführt wird, wenn Sie Ihren Treiber zu Testzwecken bereitstellen.
Sie sollten immer eine Debugverbindung im Kernelmodus mit dem Testcomputer einrichten, wenn Sie die Treiberüberprüfung auf dem Remotetestcomputer aktivieren. Informationen zum Konfigurieren eines Zielcomputers und zum Einrichten eines Debugkabels finden Sie unter Erste Schritte mit Windows-Debuggen.
Festlegen von Treiberüberprüfungseigenschaften für Treiberpaketprojekte
- Öffnen Sie die Eigenschaftenseiten für Ihr Treiberpaket. Halten Sie das Treiberpaketprojekt in Projektmappen-Explorer gedrückt (oder klicken Sie mit der rechten Maustaste darauf), und wählen Sie Eigenschaften aus.
- Wählen Sie auf den Eigenschaftenseiten für das Treiberpaket die Option Konfigurationseigenschaften, Treiberinstallation und dann Treiberüberprüfung aus.
- Wählen Sie die Option Treiberüberprüfung aktivieren aus. Wenn diese Option ausgewählt ist, können Sie die Treiber auswählen, die auf dem Testcomputer überprüft werden sollen, und Sie können die zu verwendenden Optionen für die Treiberüberprüfung auswählen.
Projektkonfiguration und Plattform
Mit der Konfigurations- und Plattformliste können Sie unterschiedliche Bereitstellungseinstellungen für verschiedene Projektkonfigurations- und Plattformkombinationen anwenden. Beispielsweise können Sie einen Treiber auf einem Testcomputer mithilfe einer Reihe von Bereitstellungsoptionen für Debugbuilds und mithilfe von Bereitstellungsoptionen für Releasebuilds auf einem anderen Testcomputer bereitstellen.
Aktivieren der Treiberüberprüfung
Sie können die Treiberüberprüfung auf dem Testcomputer für alle Treiber auf dem Computer, nur für das Treiberprojekt oder für eine Liste der angegebenen Treiber aktivieren. Beispielsweise können Sie die Treiberüberprüfung für die Gruppe von Treibern auf dem Stapel für ein bestimmtes Gerät aktivieren.
Überprüfen von Treibern
Gibt an, welche Treiber auf dem Testcomputer überprüft werden sollen.
Alle Treiber
Gibt an, dass die Treiberüberprüfung alle installierten Treiber auf dem Remotetestcomputer überprüft.
Projektausgabe
Gibt an, dass die Treiberüberprüfung das Treiberprojekt überprüft, das auf dem Remotetestcomputer installiert ist. Dies ist die Standardoption.
Treiberliste
Gibt den Treiber oder die Liste der Treiber an, die von der Treiberüberprüfung auf dem Remotetestcomputer überprüft werden. Sie können beispielsweise alle Treiber auflisten, die einem bestimmten Gerät zugeordnet sind. Geben Sie die Treiber anhand des binären Namens an, z. B. Driver.sys. Verwenden Sie ein Semikolon, um eine Liste von Treibern zu trennen. Wildcardwerte wie n*.syswerden nicht unterstützt.
Standardflags für die Treiberüberprüfung
Sie können die folgenden Optionen für die Treiberüberprüfung auf dem Testcomputer konfigurieren.
DDI-Konformitätsüberprüfung (Windows 8)
Wenn diese Option aktiv ist, wendet Driver Verifier eine Reihe von DDI-Regeln (Device Driver Interface) an, die die richtige Interaktion zwischen einem Treiber und der Kernelschnittstelle des Betriebssystems überprüfen.
-
Wenn diese Option aktiv ist, überwacht driver verifier die Verwendung von Drehsperren, Mutexes und schnellen Mutexen durch den Treiber. Dadurch wird erkannt, ob der Code des Treibers das Potenzial hat, irgendwann einen Deadlock zu verursachen.
-
Wenn diese Option aktiv ist, überwacht driver verifier die Verwendung von DMA-Routinen (Direct Memory Access) durch den Treiber. Dadurch wird eine unsachgemäße Verwendung von DMA-Puffern, Adaptern und Zuordnungsregistern erkannt.
Erzwingen der IRQL-Überprüfung
Wenn diese Option aktiv ist, führt driver verifier zu einer extremen Speicherauslastung des Treibers, indem ausgelagerter Code ungültig wird. Wenn der Treiber versucht, mit dem falschen IRQL oder während einer Drehsperre auf ausgelagerten Speicher zuzugreifen, erkennt driver verifier dieses Verhalten.
-
Wenn diese Option aktiv ist, ordnet driver Verifier die Interrupt Request Packets (IRPs) des Treibers aus einem speziellen Pool zu und überwacht die E/A-Behandlung des Treibers. Dadurch wird eine unzulässige oder inkonsistente Verwendung von E/A-Routinen erkannt. Driver Verifier überwacht auch die Aufrufe mehrerer E/A-Manager-Routinen und führt Belastungstests von Plug-and-Play-IRPs (PnP), Power IRPs und WMI IRPs durch.
-
Wenn diese Option aktiv ist, sucht die Driver Verifier nach häufigen Ursachen für Treiberabstürze, z. B. die falsche Behandlung von freigegebenem Arbeitsspeicher.
-
Wenn diese Option aktiv ist, überprüft driver verifier, ob der Treiber beim Entladen alle Speicherbelegungen freigegeben hat. Dies zeigt Speicherverluste.
-
Wenn diese Option aktiv ist, sucht die Treiberüberprüfung nach häufigen Fehlern, die zu Sicherheitsrisiken führen können, z. B. einen Verweis auf Benutzermodusadressen durch Kernelmodusroutinen.
-
Wenn diese Option aktiv ist, ordnet driver verifier die meisten Speicheranforderungen des Treibers aus einem speziellen Pool zu. Dieser spezielle Pool wird auf Speicherüberläufe, Arbeitsspeicherunterläufe und Arbeitsspeicher überwacht, auf den nach der Freigabe zugegriffen wird.
Spezifische Einstellungen für das Treiberüberprüfungsszenario
Simulation mit geringen Ressourcen
Wenn diese Option aktiv ist, schlägt die Treiberüberprüfung zufällig Poolzuordnungsanforderungen und andere Ressourcenanforderungen fehl. Durch die Einschleusung dieser Zuordnungsfehler in das System testet Driver Verifier die Fähigkeit des Fahrers, mit einer ressourcenarmen Situation fertig zu werden.
Ausstehende E/A-Anforderungen erzwingen
Wenn diese Option aktiv ist, testet Driver Verifier die Antwort des Treibers auf STATUS_PENDING Rückgabewerte, indem STATUS_PENDING für zufällige Aufrufe an IoCallDriver zurückgegeben wird.
-
Wenn diese Option aktiv ist, überwacht driver verifier die Verwendung von IRPs durch einen Treiber und erstellt ein Protokoll der IRP-Verwendung.
Invariante MDL-Überprüfung für Stack (Windows 8)
Die Option Invariant MDL Checking for Stack überwacht, wie der Treiber invariante MDL-Puffer im Treiberstapel behandelt. Driver Verifier kann illegale Änderungen von invarianten MDL-Puffern erkennen. Um diese Option verwenden zu können, muss die E/A-Überprüfung auf mindestens einem Treiber aktiviert sein.
Invariante MDL-Überprüfung für Treiber (Windows 8)
Die Option Invariante MDL-Überprüfung auf Treiber überwacht, wie der Treiber invariante MDL-Puffer auf Treiberbasis behandelt. Diese Option erkennt eine unzulässige Änderung von invarianten MDL-Puffern. Um diese Option verwenden zu können, müssen Sie die E/A-Überprüfung für mindestens einen Treiber aktivieren.
Power Framework–Verzögerungsfuzzing (Windows 8)
Wenn diese Option aktiv ist, werden Threadzeitpläne von Driver Verifier randomisiert, um Parallelitätsfehler im Treiber zu löschen.
Stapelbasierte Fehlerinjektion (Windows 8)
Die Option Stapelbasierte Fehlerinjektion fügt Ressourcenfehler in Kernelmodustreiber ein. Diese Option verwendet einen speziellen Treiber( KmAutoFail.sys) in Verbindung mit driver verifier , um die Fehlerbehandlungspfade des Treibers zu durchdringen.
Hinweis Sie können die stackbasierte Fehlerinjektion nicht mit der Simulation mit geringen Ressourcen kombinieren.
Treiberüberprüfungsoptionen, die eine E/A-Überprüfung erfordern
Es gibt vier Optionen, für die Sie zunächst die E/A-Überprüfung aktivieren müssen. Wenn die E/A-Überprüfung nicht aktiviert ist, sind diese Optionen nicht aktiviert.
- Ausstehende E/A-Anforderungen erzwingen
- IRP-Protokollierung
- Invariante MDL-Überprüfung für Stack
- Invariante MDL-Überprüfung für Treiber