VxD
This article needs additional citations for verification. (September 2014) |
VxD is the device driver model used in Microsoft Windows/386, the 386 enhanced mode of Windows 3.x, Windows 9x, and to some extent also by the Novell DOS 7, OpenDOS 7.01, and DR-DOS 7.02 (and higher) multitasker (TASKMGR
).[1] VxDs have access to the memory of the kernel and all running processes,[disambiguation needed] as well as raw access to the hardware.
Design
The name "VxD" is an abbreviation for "virtual xxx driver", where "xxx" is some class of hardware device. It derives from the fact that most drivers had filenames of the form vxxxd.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 9x. VxDs written for Windows 3.x can be used under Windows 9x but not vice versa.
History
Prior to the advent of Windows, DOS applications would either communicate directly with the various pieces of hardware (responding to interrupts, reading and writing device memory etc.) or go through a DOS device driver. As DOS was not multitasking, each application would have exclusive and complete control over the hardware while running. Though Windows applications don't often communicate directly with hardware, it was the only way for Windows drivers; and still is in the real and standard modes of Windows 3.x.
Windows/386 and onward allowed multiple DOS applications to execute concurrently by executing each within its own virtual machine. To share physical resources among these virtual machines, Microsoft introduced 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.
Obsolescence
Although Windows 98 introduced the Windows Driver Model (WDM), VxD device drivers can be used under Windows 98 and Windows Me. VxDs are not usable in Windows NT or its descendants. Starting with Windows 2000, Windows NT-based operating systems also use the Windows Driver Model, while Windows NT 4 and earlier versions must use drivers written specifically for them. Using VxD drivers instead of WDM drivers in Windows 9x resulted in advanced ACPI states like hibernation being unavailable.
VxDs should not be confused with the similarly named NTVDM-specific 'VDDs' (Virtual Device Drivers), which provide a method of emulating direct I/O under a Windows NT "DOS Box". NTVDM VDDs run as regular, 32-bit, user-mode DLLs, and must rely on the Win32 API (or another WDM driver) to emulate the desired I/O on behalf of the 16-bit program.
See also
References
- ^ Paul, Matthias (1997-07-30). NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds (e-book) (in German) (edition 3, release 157 ed.). Retrieved 2014-09-06.
{{cite book}}
:|work=
ignored (help) NWDOSTIP.TXT is a comprehensive work on Novell DOS 7 and OpenDOS 7.01, including the description of many undocumented features and internals. It is part of the author's yet larger MPDOSTIP.ZIP collection maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the NWDOSTIP.TXT file.
Further reading
- Schulman, Andrew (November 1994). Unauthorized Windows 95 - Developer's Resource Kit (1st ed.). Foster City, California, USA: John Wiley & Sons, Inc. ISBN 1-56884-305-4.
- Schulman, Andrew; Brown, Ralf; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994). Undocumented DOS: A programmer's guide to reserved MS-DOS functions and data structures - expanded to include MS-DOS 6, Novell DOS, and Windows 3.1 (2nd ed.). Reading, Massachusetts: Addison Wesley. ISBN 0-201-63287-X.
- Programmer's Guide to Microsoft Windows 95: Key Topics on Programming for Windows from the Microsoft Windows Development Team (1st ed.). Redmond, Washington, USA: Microsoft Press. 1995-07-01. ISBN 1-55615-834-3. Retrieved 2016-05-26.
{{cite book}}
:|work=
ignored (help); More than one of|ISBN=
and|isbn=
specified (help) - Oney, Walter (1995). Systems Programming for Windows 95 (1st ed.). Redmond, Washington, USA: Microsoft Press. ISBN 1-55615-949-8.
{{cite book}}
: More than one of|ISBN=
and|isbn=
specified (help) - Pietrek, Matt (November 1995). Windows 95 System Programming Secrets (1st ed.). John Wiley & Sons, Inc. ISBN 1-56884-318-6. Retrieved 2016-05-26.
{{cite book}}
:|work=
ignored (help); More than one of|ISBN=
and|isbn=
specified (help) - Hazzah, Karen (1997). Writing Windows VxDs and Device Drivers - Programming Secrets for Virtual Device Drivers (2nd printing, 2nd ed.). Lawrence, Kansas, USA: Miller Freeman, Inc. ISBN 0-87930-438-3.
{{cite book}}
: More than one of|ISBN=
and|isbn=
specified (help)