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» — определённый класс аппаратного устройства. Это вытекает из того факта, что многие драйверы в 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-разрядной программы.
См. также
- VXD (CONFIG.SYS directive)
- Windows Driver Model (WDM)
- Архитектура Windows 9x
Ссылки
- Paul, Matthias. NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds (нем.). — edition 3, release 157. — 1997. 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.
Литература
- Unauthorized Windows 95 - Developer's Resource Kit (англ.). — 1st. — Foster City, California, USA: John Wiley & Sons, Inc., 1994. — ISBN 1-56884-305-4.
- 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. — 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. — Redmond, Washington, USA: Microsoft Press, 1995. — ISBN 1-55615-834-3.
- Systems Programming for Windows 95 (неопр.). — 1st. — Redmond, Washington, USA: Microsoft Press, 1995. — ISBN 1-55615-949-8.
- Windows 95 System Programming Secrets (неопр.). — 1st. — John Wiley & Sons, Inc., 1995. — ISBN 1-56884-318-6.
- Writing Windows VxDs and Device Drivers - Programming Secrets for Virtual Device Drivers (англ.). — 2nd printing, 2nd. — Lawrence, Kansas, USA: Miller Freeman, Inc., 1997. — ISBN 0-87930-438-3.