VxD er en enhedsdrivermodel, der bruges af Microsoft Windows/386 , Windows 3.x Enhanced Mode , Windows 9x og til en vis grad Novell DOS 7 , OpenDOS 7.01 og DR-DOS 7.02 . [1] VxD har adgang til hukommelse fra kernen, til alle kørende processer og direkte adgang til hardware.
Navnet "VxD" er en forkortelse for "virtuel xxx driver" ("virtuel driver xxx"), hvor "xxx" er en specifik klasse af hardwareenheder. [1] Dette stammer fra det faktum, at mange drivere i Windows 3.x havde filnavne i formen vxxxd.386. For eksempel: vjoyd.386 (joystick), vmm.386 (hukommelsesmanager). VxD havde normalt en filtypenavn .386 under Windows 3.x og .vxdunder Windows 9x. VxD-drivere skrevet til Windows 3.x kan bruges under Windows 9x, men ikke omvendt.
Før fremkomsten af Windows havde DOS- applikationer enten direkte adgang til forskellige stykker hardware (svarende på anmodninger, afbrydelser, læsning og skrivning til enhedshukommelse osv.) eller gennem en DOS -enhedsdriver . Fordi DOS ikke var et multitasking-system, havde hver applikation eksklusiv og fuldstændig kontrol over hardwaren, mens den kørte. Og selvom Windows -applikationer ikke ofte talte direkte til hardwaren, var det den eneste måde for Windows-drivere; den er stadig i Windows 3.x real- og standardtilstande .
Fra Windows/386 og fremefter fik flere DOS-applikationer lov til at køre på samme tid, hver kørende i sin egen virtuelle maskine . For at dele fysiske ressourcer mellem virtuelle maskiner introducerede Microsoft virtuelle enhedsdrivere. Disse drivere løste konflikter opstået fra brugen af fysiske ressourcer ved at opsnappe opkald til hardwaren. For eksempel, i stedet for at en hardwareport var en egentlig enhed, var en driver en "virtuel" enhed, der kunne styres af operativsystemet.
Selvom Windows 98 introducerede Windows Driver Model (WDM), kunne VxD-drivere bruges i Windows 98 og Windows Me. De kunne dog ikke bruges på Windows NT og dets efterkommere. Fra og med Windows 2000 bruger Windows NT-baserede systemer også Windows-drivermodellen, mens Windows NT 4 og tidligere skulle bruge drivere designet specifikt til dem. Brug af VxD-drivere i stedet for WDM i Windows9x gjorde det umuligt at bruge nogle ACPI -funktioner , såsom dvaletilstand .
VxD må ikke forveksles med de tilsvarende navngivne NTVDM -'VDD'er' (Virtual Device Drivers), som giver direkte I/O-emulering under Windows NT i en DOS-boks. NTVDM VDD'en kører som en almindelig 32-bit bruger-mode DLL og skal afhænge af Win32 API (eller anden WDM driver) for at emulere den ønskede I/O på vegne af et 16-bit program.