VxD

From Wikipedia, the free encyclopedia

In Microsoft computing, a VxD is a virtual device driver. They run under the Windows 3.x, Windows 95, Windows 98, and Windows Me operating systems, and have access to the memory of the kernel and all running processes, as well as raw access to the hardware.

Prior to the advent of Windows, DOS applications frequently communicated directly with various pieces of hardware, by responding to interrupts, reading and writing device memory etc, which could still be done in Windows DLLs because of the single privilege level model that lasted all the way through Windows 9x. Each application expected to have exclusive and complete control over the hardware. Windows/386 and onwards allowed multiple MS-DOS applications to execute simultaneously. This was done by executing each legacy application within its own virtual machine. To share arbitrary physical resources amongst these virtual machines, Microsoft introduced dynamically-loadable virtual device drivers. These drivers solved issues relating to conflicting usage of physical resources by intercepting calls to the hardware. Instead of a machine port representing an actual device, it would represent a "virtual" device, which could be managed by the operating system.

The name VxD comes from the fact that most of these virtual device drivers had filenames like "v(something)d.386" in Windows 3.x. Some examples are: vjoyd.386 (joystick), vmm.386 (memory manager). VxDs usually have the filename extension .386 under Windows 3.x and .vxd under Windows 95. VxDs written for Windows 3.x can be used under Windows 95 but not vice versa.

VxDs are no longer supported by Windows NT. Device drivers for Windows 2000 and Windows XP use the Windows Driver Model (WDM). Windows Vista supports both WDM and the newer Windows Driver Foundation which includes Kernel-Mode Driver Framework (KMDF) and User-Mode Driver Framework (UMDF). KMDF is also available for download for Windows XP and Windows 2000, while UMDF is available for Windows XP.

In other languages