VxD

Из Википедии, бесплатной энциклопедии

VxD — модель драйверов устройств, используемая в Microsoft Windows/386, 386 расширенном режиме Windows 3.x, Windows 9x и, в некоторой степени, в Novell DOS 7, OpenDOS 7.01, и DR-DOS 7.02.[1] VxD имеет доступ к памяти из ядра, ко всем запущенным процессам, а также прямой доступ к аппаратным средствам.

Дизайн[править | править код]

Название «VxD» — это аббревиатура «virtual xxx driver» («виртуальный драйвер xxx»), где «xxx» — определённый класс аппаратного устройства.[1] Это вытекает из того факта, что многие драйверы в Windows 3.x имели имена файлов вида vxxxd.386. Например: vjoyd.386 (джойстик), vmm.386 (диспетчер памяти). VxD обычно имели расширение файла .386 под Windows 3.x и .vxd под Windows 9x. VxD-драйверы, написанные для Windows 3.x можно использовать под Windows 9x, но не наоборот.

История[править | править код]

До появления Windows, DOS приложения либо напрямую обращались к различным частям аппаратных средств (отвечали на запросы, прерывания, чтение и запись в память устройства и т.д.) или через DOS-драйвер устройства. Поскольку DOS не была многозадачной системой, каждое приложение имело эксклюзивный и полный контроль над аппаратными средствами во время работы. И хотя Windows-приложения не часто обращались непосредственно с аппаратными средствами, это был единственный способ для драйверов Windows; он до сих пор находится в реальных и стандартных режимах Windows 3.x.

Начиная с Windows/386 и далее разрешался одновременный запуск нескольких DOS-приложений, каждое из которых запускалась в собственной виртуальной машине. Для совместного использования физических ресурсов виртуальными машинами, Microsoft были введены драйверы виртуальных устройств (virtual device drivers). Эти драйверы решали вопросы, связанные с конфликтами, возникающими при использовании физических ресурсов, путем перехвата обращений к аппаратному обеспечению. Например, вместо аппаратного порта, представляющего собой фактическое устройство, драйвер представлял собой «виртуальное» устройство, которым могла управлять операционная система.

Устаревание[править | править код]

Несмотря на то, что в Windows 98 была введена Windows Driver Model (WDM), VxD-драйвера могли использоваться в Windows 98 и Windows Me. Однако, они не могли использоваться в Windows NT и ее потомках. Начиная с Windows 2000, системы на основе Windows NT так же используют Windows Driver Model, в то время как Windows NT 4 и более ранние версии должны были использовать драйверы, разработанные специально для них. Использование VxD драйверов вместо WDM в Windows9x делало невозможным использование некоторых возможностей ACPI, например, спящий режим.

VxD не следует путать с другими драйверами, с похожими по названию, NTVDM-'VDDs' (Virtual Device Drivers), которые обеспечивают эмуляцию прямого I/O под Windows NT в DOS Box. VDD NTVDM выполняется как обычная 32-битная DLL пользовательского режима и должна зависеть от API Win32 (или другого WDM драйвера), чтобы эмулировать желаемый ввод-вывод от имени 16-разрядной программы.

См. также[править | править код]

Ссылки[править | править код]

  1. Paul, Matthias. NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds (нем.). — edition 3, release 157. — 1997. Архивировано 10 сентября 2017 года. 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.

Литература[править | править код]