Computer hardware requires communication and control methods for devices and/or hardware components to access each other in a controlled manner, usually under the control of a combination of the BIOS and the operating system that is running. In software, these methods are defined as device drivers, which consist of code that an application can use to access hardware or external software resources.
Designed for use in multitasking operating systems such as Microsoft Windows, a device driver is controlled by the operating system's virtual device driver manager (VDDM) and is shared
by the applications running within that kernel. To run legacy DOS applications in earlier versions of Microsoft Windows, the kernel creates a virtual machine (VM) in which the legacy
application runs. Part of the limitation of DOS is that it gave full control of the hardware to the software applications running. This meant that running several DOS applications under a multitasking operating system could produce conflicts when it came to accessing devices.
There was no hardware device sharing allowed in most standard DOS applications, so the virtual device driver (VxD) was introduced to prevent device access conflicts. The VxD passed interrupt and memory requests through to the kernel, which in turn allocated the resources as required, always ensuring only a single request thread could access a single interrupt channel of any device at any one time. This was to provide protected mode operation, whereby all the assets of an
application are run within a (memory) shell. In a VM, the VxD was part of the interface between Windows and that shell.
The virtual device driver (VxD) sat between the legacy application and the multitasking operating system, offering a range of functions such as allocating memory dynamically, allowing access to
printers, network devices, storage or backup devices. Whatever hardware or software device a legacy application needed to communicate with, the actions were performed through a VxD, which
would have specific rules of execution, controlled by the operating system.
The VxD was superseded by the Windows Driver Model WDM with Windows 2000, NT and later editions.