DF – Fuzz – Zufälliger IOCTL-Test (Zuverlässigkeit)

Während zufälliger Tests gibt der Fuzz-Test eine Reihe von Aufrufen an die DeviceIoControl-Funktion mit Funktionscodes, Gerätetypen, Datenübertragungsmethoden und Zugriffsanforderungen aus, die zufällig aus einem bestimmten Wertebereich ausgewählt werden. Die Aufrufe umfassen Eingabe- und Ausgabepuffer mit gültigen und ungültigen Pufferzeigern und -längen sowie zufällig generierten Inhalten.

Der Fuzz-Test führt die zufälligen Tests auf allen Geräten durch, die während des Basic Open Test und zusätzlicher Tests geöffnet wurden. Sie können diesen Test mithilfe der folgenden Parameter anpassen:

  • Verwenden Sie MinFunctionCode und MaxFunctionCode, um den Bereich der IOCTL- oder FSCTL-Funktionscodes anzugeben, die in den Aufrufen verwendet werden.
  • Verwenden Sie MinDeviceType und MaxDeviceType, um den Bereich der Gerätetypen anzugeben, die in den Aufrufen verwendet werden.
  • Verwenden Sie SeedNumber, um eine Ausgangszahl für die zufällige Zahl anzugeben, die Routine generiert.

Die Funktion, die der Fuzz-Test verwendet, um Zufallszahlen für den Test zu generieren, verwendet eine Ausgangszahl, eine Startnummer für den Algorithmus zur Generierung von Zufallszahlen. Um die Testbedingungen zu reproduzieren, verwenden Sie den Ausgangszahl-Parameter, um die im ursprünglichen Testversuch verwendete Ausgangszahl anzugeben.

Ein Angepasster Zufallstest ist im Rahmen des zufälligen Tests enthalten. Der angepasste Zufallstest verwendet die Ergebnisse des Zufallstests, um die Reaktion des Treibers auf FSCTL-Anfragen genauer zu untersuchen. Der angepasste Zufallstest untersucht Bereiche, die er übersehen hat, und solche, auf denen der Treiber nicht wie erwartet reagiert hat, basierend auf dem Status, der von den Zufallstestaufrufen zurückgegeben wird.

Binärprüfung: Devfund_FuzzTest.dll Testmethoden: DoRandomFSCTLTest

Testdetails

   
Spezifikationen
  • Device.DevFund.Reliability.BasicReliabilityAndPerformance
  • Device.DevFund.Reliability.BasicSecurity
  • Device.DevFund.DriverFramework.KMDF.Reliability
  • Device.DevFund.DriverFramework.UMDF.Reliability
Plattformen
  • Windows 10, Client-Editionen (x86)
  • Windows 10, Client-Editionen (x64)
  • Windows Server 2016 (x64)
  • Windows 10, Client-Editionen (Arm64)
  • Windows 10, mobile Edition (Arm)
  • Windows 10, mobile Edition (Arm64)
Unterstützte Versionen
  • Windows 10
  • Windows 10, Version 1511
  • Windows 10, Version 1607
  • Windows 10, Version 1703
  • Windows 10, Version 1709
  • Windows 10, Version 1803
  • Windows 10, Version 1809
  • Windows 10, Version 1903
  • Nächstes Update auf Windows 10
Voraussichtliche Laufzeit (in Minuten) 15
Kategorie Szenario
Zeitüberschreitung (in Minuten) 180
Neustart erforderlich false
Erfordert eine spezielle Konfiguration true
Typ automatic

 

Zusätzliche Dokumentation

Tests in diesem Funktionsbereich enthalten möglicherweise zusätzliche Dokumentation, einschließlich Informationen zu Voraussetzungen, Einrichtung und Fehlerbehebung, die in den folgenden Themen zu finden sind:

Ausführen des Tests

Bevor Sie den Test ausführen, vervollständigen Sie die Testeinrichtung wie in den Testanforderungen beschrieben: Device.Fundamentals Reliability Testing Prerequisites.

Problembehandlung

Informationen zur allgemeinen Problembehandlung bei HLK-Testfehlern finden Sie unter Problembehandlung bei Windows HLK-Testfehlern.

Informationen zur Problembehandlung speziell für die Device Fundamentals-Tests im HLK und WDK finden Sie in der zusätzlichen Dokumentation zu Device.DevFund.

Weitere Informationen

Parameter

Parametername Parameterbeschreibung
DQ Eine WDTF-SDEL-Abfrage, die verwendet wird, um das/die Zielgerät(e) zu identifizieren - https://go.microsoft.com/fwlink/?LinkId=232678
Wpa2PskAesSsid NUR erforderlich, wenn das DUT oder eines seiner untergeordneten Geräte ein WiFi-Adapter ist. Bitte geben Sie die SSID eines WPA2-AES-WLAN-Netzwerks an, das der Test zum Testen des WLAN-Adapters verwenden kann. Der Standardwert ist ‚kitstestssid‘.
Wpa2PskPassword NUR erforderlich, wenn das DUT oder eines seiner untergeordneten Geräte ein WiFi-Adapter ist. Bitte geben Sie das Passwort des WPA2-AES-WLAN-Netzwerks ein, das mit dem Parameter Wpa2PskAesSsid angegeben wurde. Der Standardwert ist ‚Passwort‘.
ChangeBufferProtectionFlags Richtig oder falsch. Ändert die Speicherschutzflags von Puffern, die an das getestete Gerät übergeben werden. Die Speicherschutzflags wechseln zwischen keinem Zugriff, schreibgeschütztem Zugriff und schreibgeschütztem Zugriff mit Seitenschutz.
Impersonate Richtig oder falsch. Führt den Test als nicht administrativer Benutzer aus.
FillZeroPageWithNull Richtig oder falsch. Ordnet die Nullseite zu und füllt sie mit NULL-Werten aus. Dieser Test identifiziert Treiber, die keinen Zeigerverweis überprüfen, bevor ein Zeiger dereferenziert wird.
DoPoolCheck Richtig oder falsch. Überwacht die Verwendung der Systemspeicherpools mit und ohne Auslagerung durch den Treiber mithilfe von Pooltags und Lookaside-Listen. Mit dieser Option werden auch Änderungen an der Anzahl der behandelten Ausnahmen überwacht, die auf Fehler bei der Ausnahmebehandlung hinweisen können.
DoSync Richtig oder falsch. Öffnet auch Gerätehandles im SYNC-Modus (FILE_SYNCHRONOUS_IO_ALERT). Zufällige Lese- und Schreibvorgänge werden übersprungen.
TestCycles Anzahl der Testzyklen.
DriverVerifierAdditionalDrivers Zusätzliche Treiber, für die die Treiberüberprüfung aktiviert sein sollte
DriverVerifierExcludedFlags Platzhalter für Treiberüberprüfungs-Flags, die manuell für den Testlauf ausgeschlossen werden können
WDKDeviceID Geräte-ID des zu testenden Geräts
QueryHardwareID Hardware-ID des zu testenden Geräts
WDTFREMOTESYSTEM NUR erforderlich, wenn das DUT oder eines seiner untergeordneten Geräte eine kabelgebundene NIC ist, die keine IPv6-Gateway-Adresse hat. Falls erforderlich, geben Sie bitte eine IPv6-Adresse an, die die Test-NIC anpingen kann, um die Netzwerk-E/A zu testen. Beispiel: fe80::78b6:810:9c12:46cd
DriverVerifierCustomizeConfiguration Gibt an, dass dieser Test möglicherweise die Treiberüberprüfungseinstellungen automatisch aktualisieren möchte
MinDeviceType Gibt den Mindestwert des DeviceType-Felds in den IOCTLs an. Der kleinstmögliche Wert ist 0. Verwenden Sie -1 für die automatische Typerkennung (bevorzugt).
MaxDeviceType Gibt den maximalen Wert des DeviceType-Felds in den IOCTLs an. Der größtmögliche Wert ist 65.535. Verwenden Sie -1 für die automatische Typerkennung (bevorzugt).
MinFunctionCode Gibt den Mindestwert des FunctionCode-Felds in den IOCTLs an. Der kleinstmögliche Wert ist 0.
MaxFunctionCode Gibt den maximalen Wert des FunctionCode-Felds in den IOCTLs an. Der größtmögliche Wert ist 4.095.
MinInBuffer Gibt die Mindestgröße der Eingabepuffer in Byte an, die der Test in IOCTLs an den Treiber übergibt.
MaxInBuffer Gibt die maximale Größe der Eingabepuffer in Byte an, die der Test in IOCTLs an den Treiber übergibt.
MinOutBuffer Gibt die Mindestgröße der Ausgabepuffer in Byte an, die der Test in IOCTLs an den Treiber übergibt.
MaxOutBuffer Gibt die maximale Größe der Ausgabepuffer in Byte an, die der Test in IOCTLs an den Treiber übergibt.
MaxRandomCalls Gibt die maximale Anzahl von Aufrufen an, die der Test ausgibt.
MaxTailoredCalls Gibt die maximale Anzahl von Aufrufen an, die der Test während des angepassten Zufallstests ausgibt.
SeedNumber Gibt die Ausgangszahl an, die beim Generieren zufälliger IOCTLs verwendet wird.