VxD es el modelo de controlador de dispositivo utilizado en Microsoft Windows/386 2.x, el modo mejorado 386 de Windows 3.x , Windows 9x y, hasta cierto punto, también en Novell DOS 7 , OpenDOS 7.01 y DR-DOS 7.02 (y superior) multitarea ( TASKMGR
). [1] Los VxD tienen acceso a la memoria del kernel y a todos los procesos en ejecución , así como acceso sin formato al hardware. A partir de Windows 98 , el modelo de controlador de Windows era el modelo de controlador recomendado para escribir controladores, y el modelo de controlador VxD seguía siendo compatible por compatibilidad con versiones anteriores, hasta Windows Me .
El nombre "VxD" es una abreviatura de "controlador virtual xxx", donde "xxx" es alguna clase de dispositivo de hardware. Se deriva del hecho de que la mayoría de los controladores tenían nombres de archivo del tipo vxxxd.386
en Windows 3.x. Algunos ejemplos son vjoyd.386 (joystick) y vmm.386 (administrador de memoria). Los VxD en Windows 3.x generalmente tienen la extensión de nombre de archivo .386
, mientras que los de Windows 9x tienen .vxd
. Los VxD escritos para Windows 3.x se pueden utilizar en Windows 9x, pero no al revés.
Antes de la llegada de Windows, las aplicaciones de DOS se comunicaban directamente con las distintas piezas de hardware (respondiendo a interrupciones, leyendo y escribiendo en la memoria del dispositivo, etc.) o a través de un controlador de dispositivo de DOS . Como DOS no era multitarea, cada aplicación tendría control exclusivo y completo sobre el hardware mientras se ejecuta. Aunque las aplicaciones de Windows no suelen comunicarse directamente con el hardware, era la única forma para los controladores de Windows; y todavía está en los modos real y estándar de Windows 3.x.
Windows/386 y posteriores permitieron que múltiples aplicaciones de DOS se ejecutaran simultáneamente ejecutando cada una dentro de su propia máquina virtual . Para compartir recursos físicos entre estas máquinas virtuales, Microsoft introdujo controladores de dispositivos virtuales. Estos controladores resolvieron problemas relacionados con el uso conflictivo de recursos físicos al interceptar llamadas al hardware. En lugar de que un puerto de máquina represente un dispositivo real, representaría un dispositivo "virtual", que podría ser administrado por el sistema operativo.
En Windows 9x , VxD es un archivo de formato ejecutable lineal .
Aunque Windows 98 introdujo el modelo de controlador de Windows (WDM), los controladores de dispositivos VxD se pueden utilizar en Windows 98 y Windows Me. El uso de controladores VxD en lugar de controladores WDM en Windows 9x puede provocar que estados ACPI avanzados, como la hibernación, no estén disponibles.
Los VxD no se pueden utilizar en Windows NT ni en sus descendientes. Los sistemas operativos basados en Windows NT de 3.1 a 4.0 deben utilizar controladores escritos específicamente para ellos. Estos controladores también se conocen como modelo de controlador de Windows NT . A partir de Windows 2000 , los sistemas operativos basados en Windows NT han adoptado el modelo de controlador de Windows de Windows 98.
Los VxD no deben confundirse con los 'VDD' (controladores de dispositivos virtuales) específicos de NTVDM , de nombre similar , que proporcionan un método para emular E/S directa en una "caja DOS" de Windows NT. Los VDD NTVDM se ejecutan como DLL normales de 32 bits en modo de usuario y deben depender de la API de Win32 (u otro controlador WDM) para emular la E/S deseada en nombre del programa de 16 bits.