Bus drivers. These drivers support a specific PCI, SCSI, USB, or other port, controlling
the connection of new devices to the bus.
Functional drivers. These drivers ensure the functionality of a specific device. They
usually support reading/recording operations and device power management.
Filter drivers. These drivers modify queries to a device. They can be situated either
above or below a functional driver in the chain of drivers.
The Relationship between a Driver and a Device
Each kernel-mode driver works with a specific device, represented in Windows as a
device object. This means that the final destination for an I/O query coming through a
driver is always a physical or virtual device. This applies to both drivers of physical PnP
devices as well as non-PnP software drivers. While testing drivers, it’s important to
understand that more than one driver exists between a user application and a device.
In the chain, each driver can influence the final result of the query to the device.
The Main Aspects of Windows Driver Testing
There are certain tests that are required for Windows driver testing in Linux, and
Windows regardless of driver type. So before covering the nuances of testing different
types of drivers, we’ll consider their common aspects.
Operating Systems
First, you always have to keep in mind that a particular driver can behave differently on
different operating systems. Furthermore, you need to take different kernel versions
into account because they can differ even within the same operating system. For
instance, Windows 7 and Windows 7 sp1 have different kernels. Therefore, you must
test as many systems as possible. It’s worth mentioning that Microsoft supports
Windows versions starting from Windows 7/2008. You also have to take into account
that the most popular Windows versions now are Windows 7 and 10.
Updates
It’s necessary to check critical situations for a driver such as shutdown, reboot, and
reset. You should also keep a system’s security systems in mind: firewalls, data
execution prevention (DEP), user account control (UAC), and antivirus software.
Operating system updates can also influence driver functionality. Therefore, it’s crucial
to perform testing with the latest updates. In addition, you also need to test driver
updates.
Hardware Dependency
Besides software dependency, there’s also hardware dependency. That’s why you
have to check how a driver works with various processor and kernel configurations with
an enabled and disabled page file. While testing a driver, you have to enable a driver