DF - Fuzz random IOCTL test (Reliability)
During random tests, the Fuzz test issues a series of calls to the DeviceIoControl function with function codes, device types, data transfer methods, and access requirements that are selected at random from a specified range of values. The calls include input and output buffers with valid and invalid buffer pointers and lengths, and randomly generated content.
The Fuzz test performs the random tests on all devices opened during the Basic Open Test and additional open tests. You can customize this test by using the following parameters:
- Use MinFunctionCode and MaxFunctionCode to specify the range of IOCTL or FSCTL function codes used in the calls
- Use MinDeviceType and MaxDeviceType to specify the range of device types used in the calls
- Use SeedNumber to specify a seed number for the random number generating routine.
The function that the Fuzz test uses to generate random numbers for the test uses a seed number, a starting number for the random-number-generating algorithm. To reproduce the test conditions, use the seed number parameter to specify the seed number that was used in the original test trial.
A Tailored Random Test is included as part of the random test. The tailored random test uses the results of the random test to examine the drivers response to FSCTL requests in more detail. The tailored random test probes areas that the random test missed and those on which the driver did not respond as expected based on the status returned by the random test calls.
Test binary: Devfund_FuzzTest.dll Test methods: DoRandomFSCTLTest
Test details
Specifications |
|
Platforms |
|
Supported Releases |
|
Expected run time (in minutes) | 15 |
Category | Scenario |
Timeout (in minutes) | 180 |
Requires reboot | false |
Requires special configuration | true |
Type | automatic |
Additional documentation
Tests in this feature area might have additional documentation, including prerequisites, setup, and troubleshooting information, that can be found in the following topic(s):
Running the test
Before you run the test, complete the test setup as described in the test requirements: Device.Fundamentals Reliability Testing Prerequisites.
Troubleshooting
For generic troubleshooting of HLK test failures, see Troubleshooting Windows HLK Test Failures.
For troubleshooting information specific to the Device Fundamentals tests in the HLK and WDK, see Device.DevFund additional documentation.
More information
Parameters
Parameter name | Parameter description |
---|---|
DQ | A WDTF SDEL query that is used to identify the target device(s) - https://go.microsoft.com/fwlink/?LinkId=232678 |
Wpa2PskAesSsid | Required ONLY if DUT or one of its child devices is a WiFi adapter. Please provide SSID of a WPA2 AES WiFi network that the test can use to test the WiFi adapter. The default is 'kitstestssid'. |
Wpa2PskPassword | Required ONLY if DUT or one of its child devices is a WiFi adapter. Please provide password of the WPA2 AES WiFi network specified using the Wpa2PskAesSsid parameter. The default is 'password'. |
ChangeBufferProtectionFlags | True or False. Changes the memory protection flags of buffers passed to the tested device. The memory protection flags alternates between no access, read-only, and read-only with page guard. |
Impersonate | True or False. Runs the test as a non administrative user. |
FillZeroPageWithNull | True or False. Maps the zero page and fills it with NULL values. This test identifies drivers that do not verify a pointer reference before dereferencing a pointer. |
DoPoolCheck | True or False. Monitors the driver's use of the paged and nonpaged system memory pools by using pool tags and lookaside lists. This option also monitors changes in the number of exceptions handled which might indicate errors in exception handling. |
DoSync | True or False. Also opens device handles in SYNC mode (FILE_SYNCHRONOUS_IO_ALERT). Random read and write operations are skipped. |
TestCycles | Number of test cycles. |
DriverVerifierAdditionalDrivers | Additional drivers that should have Driver Verifier enabled |
DriverVerifierExcludedFlags | Placeholder for Driver Verifier flags that may be manually excluded for the test run |
WDKDeviceID | Device id of device under test |
QueryHardwareID | Hardware id of device under test |
WDTFREMOTESYSTEM | Required ONLY if DUT or one of its child devices is a wired NIC that doesn't have an IPv6 gateway address. If determined to be required, please provide an IPv6 address that the test NIC can ping to test network I/O. Eg: fe80::78b6:810:9c12:46cd |
DriverVerifierCustomizeConfiguration | Specifies that this test may want to automatically update Driver Verifier settings |
MinDeviceType | Specifies the minimum value of the DeviceType field in the IOCTLs. The minimum possible value is 0. Use -1 for automatic type detection (preferred). |
MaxDeviceType | Specifies the maximum value of the DeviceType field in the IOCTLs. The maximum possible value is 65535. Use -1 for automatic type detection (preferred). |
MinFunctionCode | Specifies the minimum value of the FunctionCode field in the IOCTLs. The minimum possible value is 0. |
MaxFunctionCode | Specifies the maximum value of the FunctionCode field in the IOCTLs. The maximum possible value is 4095. |
MinInBuffer | Specifies the minimum size, in bytes, of the input buffers that the test passes to the driver in IOCTLs. |
MaxInBuffer | Specifies the maximum size, in bytes, of the input buffers that the test passes to the driver in IOCTLs. |
MinOutBuffer | Specifies the minimum size, in bytes, of the output buffers that the test passes to the driver in IOCTLs. |
MaxOutBuffer | Specifies the maximum size, in bytes, of the output buffers that the test passes to the driver in IOCTLs. |
MaxRandomCalls | Specifies the maximum number of calls that the test issues. |
MaxTailoredCalls | Specifies the maximum number of calls that the test issues during the tailored random test. |
SeedNumber | Specified the seed number used in generating random IOCTLs. |