The most commonly thought of type of driver would be a driver enabling the use of a hardware device. There are other drivers, though, such as filesystem drivers. Other software, like networking protocols, may be very similar to drivers, as they enable the use of seomthing (which would be a method of communication).

Drivers often come built into an operating system, and such bundled drivers are often written in generalized ways so that they make things work with multiple devices and any interaction, such as configuration, look similar to other drivers. They may be included in operating system upgrades and/or official patches. Drivers are also often able to be found on a manufacturer's website, even for devices that are no longer manufactured or widely sold in the retail market anymore. Such drivers are more likely to support optimizations for specific hardware, as well as custom interfaces with more options and more exposure to the manufacture's brand name, and is more likely to show advertisements: Printer drivers may include links to places to purchase special paper or more ink. Third parties have also been known to release drivers.

A deifnition for a driver that is simply defined, 100% clear, and applies widely to driver software but not to other software, is not an easy definition to come up with. Examples leading to this difficulty follow: A file system driver (like DBLSPACE.BIN) that is loaded and then which provides the desired data when requested, just like other file system drivers do, would be considered a driver whereas Info-Zip is not considered a driver, despite being loaded and using memory until it is completed with providing the desired data. If Microsoft Defrag is called automatically and completes its task in the background, it is generally not called a driver. A printer driver can be interacted with to tell it to resume printing after the paper jam was taken care of, and to alter color settings. Some drivers, such as SHSUCDX (and I believe Daemon Tools might be), and some RAM drive software, can release all their memory when they are no longer needed. DOSKEY is a considered to be a driver, and its primary purpose of providing a command line history is user-interactive. Drivers that are stored and executed on devices are generally called firmware, and drivers meant primarily for use by one piece of software are often called plug-ins.

Drivers may also be bundled in with some software. For example, after obtaining a network driver for Win9x from this page, one can obtain the functionality of an SSH tunnel (which translates the generalized concept of any sort of data with a specific encryption method, in a method that can be completely transparent to common networking software) by obtaining the PuTTY software package from the Network Software page.

The operating system for which users may benefit the most by visiting these pages may be DOS, due to older operating systems like MS-DOS coming with relatively few drivers compared to more modern operating systems, and that some modern drivers use up much less memory than the drivers commonly used back in those days. (Especially mouse drivers and CD-ROM drivers have excellent modern solutions.)

Knowing what hardware is in the system can be somewhat difficult at times, despite this being requently needed to get decent driver support. The hardware can often be detected by software, such as a bootable operating system that detects software, or DOS or Windows software created specifically to help detect hardware characteristics such as the manufacturer of the board and/or embedded chips of importance.

Network Drivers
Among the most important of add-on drivers in modern times, since at least simplistic file and I/O drivers are usually included in an operating system, and since other drivers can generally be downloaded from the Internet.
File Systems

Often basic file system drivers are included in an operating system, well enough that many people don't need to spend time installing file system drivers. There are exceptions, though: Most notably, perhaps, are the drivers enabling use of specific hardware (such as USB storage devices, especially in Win9X, and CD-ROMs in some older operating systems, namely DOS systems, and CD writing software in some other operating systems). When drivers do need to get used, however, the benefit of having the driver working is usually well worth the time of installing the driver. Once installed, though, many times these drivers are not interacted with directly. Therefore they may not be thought of as often, but they are listed prominently on this page since they can, in theory, be used to read other drivers so that the other drivers can be installed.

In addition to the drivers in this section (such as the *.ISO mounters), some disk compression software support having archive files being treated similar to a disk and so having at least some of its functionality being similar to a driver. Such software can be found from the Archiver Software section separately from the drivers section.

Drive drivers

For older CD-ROMs to have data routed through the connector on an older sound card, USB devices to work well in Windows 98, CD-ROMs to work in DOS and CD-R burners to work in Win9x, Zip drives to work over parallel ports, and for some SCSI hard drives to be recognized at all, drivers may be needed.

Software providing virtual drives may be found on this page as well.

Output Drivers
These drivers are for devices that are mainly used for output (like display drivers), although they may support some input (such as detecting if a monitor is plugged in, or sound drivers that can record sound, or video capture drivers that record videos).
Video Drivers
In graphical operating systems, having a high resolution video mode can make it easier to see content on web sites so that other drivers can be downloaded. For that reason, they are often among the first to be downloaded.
Sound Card Drivers
A lot of sound cards provide compatibility with some older sound card standards, namely compatibility with some sort of card created in the basic Sound Blaster line of sound cards from Creative Labs, and Adlib which the original Sound Blaster was able to emulate. Gravis UltraSound drivers (including mention of unofficial drivers and source code) available.
Printer drivers
Printers may be able to be used simply by sending characters that are supposed to be literally printed to the printer. This was actually a quite convenient way to print in the days when DOS was popular, as it did not require any extensive setup. Printer drivers tend to support more complicated things to print, such as images and color output, as well as connection types (including enhanced speed with certain connection types like USB, and network connections) and handling feedback from the printer (such as "Low on ink in ink cartridge") nicely. For these reasons, they are often installed.
Input Device Drivers
Multi
AutoHotkey is for Windows and supports keyboard, mouse, and joystick. Review of freeware recommends it and links to some other options.
Mouse

DOS Mouse drivers (CuteMouse highly recommended for DOS mouse users, as it is likely to use up much less memory). It also contains a link for Optimouse, which lets a system use multiple mice at the same time.

I may sometime put onto this site some drivers for Microsoft Windows 3.x that support 3 buttons. Beyond that, standard mouse functionality is generally built into operating systems that people use, meaning that there is little need to download specialized drivers for them.

Joysticks and Gamepads
...
Keyboard Software
(Eventually should have...) DOS Keyboard extention buffers (freeware 128, shareware 256), DOSKey (MS-DOS OS section), 4DOS (UI interface section), Dvorak (MS-DOS OS section), DOSWinKey (a Win95 tool to ignore Start button).
Other Drivers
Speech
Speech Output: Text-to-Speech (TTS)
SAPI 4, SAPI 5.1. Vista has SAPI 5.3.
Speech Recognition
Sometimes this sort of software has been called "dictation software", it will generally convert the speech to text (to be treated as input for a word processor, as one example) or have the speech be acted on (to run a computer program, or in the case of mobile phones to dial a phone number).
Memory Drivers/Software

Providing some sort of low-level access to memory is generally provided by operating systems, and so these drivers may offer additional capabilities over built-in drivers, such as using additional memory areas (like EMS) and perhaps additional memory chips, or providing generalized data compression.

Software with a specific focus on memory, such as memory testing utilities, may also be found here (even if they aren't meant to be used as a mutli-purpose driver).

Disk cache software
Providing no functionality except for a speed increase, which can in some cases be quite dramatic. DOS systems had some disk cache software such as MS-DOS's SmartDRIVE. There are alternatives. Modern operating systems tend to just have them built into the operating system.
DOS Start
Use config.sys files after command line processor is loaded
Programs designed to start drivers that were designed to be loaded during traditional Config.sys processing: Creative Technologies Loader, Loadsys, Devload 3.21, Drvload.com (zipped), and more. See: dosstart folder.
Run programs from config.sys
See: info on WRAPPER.SYS.
[#cpudrivr]: Central Processing Unit (CPU)
Of course, software should be expected to be able to work with a CPU. These drivers provide enhanced support for a CPU. For example, emulators can take advantage of a virtual CPU's idle state (by allowing the emulator to better report itself as idle) if the guest operating system can properly report the idle state of its CPU. Other files that may belong here could be CPU emulators (like the 386 emulator for 286 machines), co-processor emulators, software CPU overclockers and temperature monitors (I think such things may exist), perhaps a simple CPU reporting tool or two (I believe there's a Windows app that give some detailed info: wcpu_id?), and perhaps other drivers that causes software to work better when used on a CPU that the drivers are optimized for (if used broadly, otherwise if it is for a single piece of software, such a thing may belong just as well by the software it enhances, available as an alternate version, plugin, or whatever). 286 to 386 (from page ) POPAD tester "Tiny program that tests for a bug with the POPAD instruction in some 386 processors. Source code included."