A device driver is a small piece of software that tells the operating system and other software how to communicate with a piece of hardware.
For example, printer drivers tell the operating system, and by extension whatever program you have the thing you want to print open in, exactly how to print information on the page
Cards and Drivers
Sound card drivers are necessary so your operating system knows exactly how to translate the 1s and 0s that comprise that MP3 file into audio signals that the sound card can output to your headphones or speakers.
The same general idea applies to video cards, keyboards, monitors, mice, disc drives, etc.
Keep reading for more on why drivers are important, including some more examples, as well as information on how to keep your drivers updated and what to do if they're not working properly.
How Do Device Drivers Work?
Think of device drivers like translators between a program you're using and a device that that program wants to utilize somehow. The software and the hardware were created by different people or companies and speak two completely different languages, so a translator (the driver) allows them to communicate.
In other words, a software program can provide information to a driver to explain what it wants a piece of hardware to do, information the device driver understands and then can fulfill with the hardware.
Device Drivers and Compatibility
Thanks to device drivers, most software programs don't need to know how to work directly with hardware, and a driver doesn't need to include a full application experience for users to interact with. Instead, the program and driver simply need to know how to interface with each other.
This is a pretty good deal for everyone involved, considering that there is a nearly endless supply of software and hardware out there. If everyone had to know how to communicate with everyone else, the process of making software and hardware would be near impossible.
How to Manage Device Drivers
The drivers for each piece of hardware in your Windows computer are centrally managed from Device Manager, available in all versions of Microsoft Windows.
Most of the time, drivers install automatically and never need more attention, aside from the occasional updating to fix bugs or add a cool new feature. This is true for some drivers in Windows that are downloaded via Windows Update.
When a manufacturer releases a driver update, it's your responsibility to install it. Some companies provide programs that will check for and install any relevant updates, but most don't make it that easy.
Fortunately, there are free driver updater programs that serve the same purpose, and work with all types of drivers. Some will even check for updates automatically and download and install them for you, much like Windows Update.
Common Driver Tasks
Here are some common tasks in Windows involving drivers:How to Update Drivers in WindowsHow to Find a Driver's Version Number in WindowsHow to Roll Back a Driver in Windows
Here are a few additional resources related to drivers:Windows 10 Drivers (Updated Listing)Windows 8 Drivers (Updated Listing)Windows 7 Drivers (Updated Listing)How to Find and Download Drivers From Manufacturer WebsitesPopular Driver Download WebsitesHow to Determine If You're Running a 32-bit or 64-bit Version of Windows
Many problems that can be isolated to a particular piece of hardware aren't problems with the actual hardware itself, but issues with the device drivers that are installed for that hardware. Some of the resources linked above should help you figure all that out.
When a driver update is available from a hardware manufacturer, it will be available for free from their website. You should never have to pay to update drivers unless you're paying for a driver updater program, but even then, the specific drivers themselves should not need to be purchased.
When a Device Driver Is or Isn't Necessary
Beyond the basic software-driver-hardware relationship, there are some other situations that involve drivers (and that don't) that are kind of interesting.
While this is less common these days, some software is able to communicate directly with some types of hardware — no drivers necessary! This is usually only possible when the software is sending very simple commands to the hardware, or when both were developed by the same company, but this can also be thought of as a kind of built-in driver situation.
Different Types of Device Drivers
Some device drivers communicate directly with a device, but others are layered together. In these situations, a program will communicate with one driver before that driver communicates with yet another one, and so on until the last driver actually performs the direct communication with the hardware.
These "middle" drivers often don't perform any function at all other than verifying that the other drivers are working properly. Regardless, whether there is one driver or multiples working in a "stack," all of it is done in the background without you having to know, or do, anything.
Windows uses .SYS files as loadable device drivers, meaning they can be loaded on an as-needed basis so that they're not always taking up memory — other drivers are in the DLL or EXE format. The same is true for Linux .KO modules.SYS Files in Windows 8.
WHQL is a testing process by Microsoft that helps prove that a particular device driver will work with a specific version of Windows. You might see that a driver you're downloading is or isn't WHQL certified. You can read more about Windows Hardware Quality Labs here.
Virtual Device Drivers
Another form of the driver is the virtual device driver. These drivers usually end in the .VXD file extension and are used with virtualization software. They work similar to regular drivers but in order to prevent the guest operating system from accessing hardware directly, the virtual drivers masquerade as real hardware so that the guest OS and its own drivers can access hardware much like non-virtual operating systems.
In other words, while a host operating system and its drivers interface with actual hardware components, virtual guest operating systems and their drivers interface with virtual hardware through virtual device drivers, which are then relayed to the real, physical hardware by the host operating system.