Share on Facebook Tweet on Twitter Share on LinkedIn Share by email

Virtual EXecution Environments for Device Drivers (or VEXE'DD for short) examines ways of using virtualization to provide robust backward compatibility in extensible systems. The project uses the problem of binary compatibility with existing Windows WDM device drivers as its motivating problem.

As of summer 2004, VEXE'DD is no longer under active development.


Virtual EXtension Environments for Device Drivers (or VEXE'DD for short) examines ways of using virtualization to provide reliability, security, and robust backward compatibility for extensible systems. The project uses the problem of supporting existing third-party Windows WDM device driver binaries as its motivating problem.

Almost every software system allows for extensions in one form or another. For example, web-browsers can be extended with plugins, applets, and ActiveX controls, photo-editing applications can be extended with new effects and filters, and operating systems can be extended with new functional components as well as with device drivers that support new hardware devices.

Unfortunately, in addition to adding functionality to software systems, the use of extensions can greatly increase the risk of instability in those systems, thereby reducing their usefulness. This problem is particularly acute in situations such as device drivers in operating systems, where any mistake in any driver may cause complete loss of functionality of the whole system - typically as a result of extensions either corrupting the internals of their container system or preventing their container from making progress.

The idea behind VEXE'DD is to execute potentially troublesome extensions in a virtual container that is separate and isolated from the rest of the system. In the original container, a generic proxy provides the desired functionality by using the virtual container as an oracle for requests that would have involved the extension.

We worked with operating systems and device drivers as our motivating example. For our virtual containers, we created modified versions of Microsoft's Virtual PC, with each virtual container running a nearly complete copy of the Windows operating system to host Windows WDM device-driver extensions. Design and implementation challenges included the WDM APIs, hardware interrupts, DMA, interrupt service routines, METHOD_NEITHER IOCtl's, SMP support, and reducing the resource consumption of virtual containers.

A practical, fully functional, working implementation of some of the same ideas can be found in the Xen hypervisor support for unmodified device drivers.

Project Members