Домой | EN-US Английский | RU Русский | Другие проекты (EN-US Английский)


Универсальный VBE Видео Драйвер
(для архитектуры Windows NT)

Проект начат в Мае 2004 г.

Обзор


Ключевые возможности :

Планируемые возможности :


Загрузить драйверы


Этот драйвер рекомендуется использовать в том случае, когда у Вас имеются новые или неизвестные видеокарты и у Вас нет для них соответствующих драйверов. Лучше всего связаться с производителем Вашей видеокарты или найти драйверы в ИНТЕРНЕТЕ. ТОЛЬКО ЕСЛИ Вам ваще не удалось найти драйверы, Я рекомендую использовать мой (vbemp.sys). Мой драйвер не обеспечивает аппаратного 3D ускорения (DirectX & OpenGL). Для этого существуют сторонние библиотеки.

Если Ваша карта - продукт AMD-ATI Technologies и эта карта определяется двумя устройствами ("Radeon xxxx" и "Radeon xxxx Secondary") только "Ручная" или "legacy" версия может заработать с ней.

Мой драйвер НЕ поддерживает подключение нескольких видеокарт и/или дисплеев одновременно и эта опция НЕ планируется.

Мой драйвер НЕ поддерживает любые версии Windows Vista/Windows 7 и новее.

Перед установкой VBEMP.SYS я настоятельно рекомендую удалить все драйверы видеокарт, включая любые версии драйвера VBEMP, установленные в системе и переключиться в стандартный VGA-режим 640x480x16цветов.

Системные требования :

* Если у Вас появляются проблемы с установкой VBEMP или любого другого драйвера в среде Windows NT 4.0 (и NT 3.51) - гаснет экран, система "виснет" после перезагрузки - прочтите эту статью MS. Подробности здесь: MSKB: AGP Video Support for Windows NT 3.51 and 4.0 (Q174567). Установите Service Pack 3 или новее для Windows NT 4.0, и Q174567 Hotfix для Windows NT 3.51 чтобы устранить эту проблему.

** Версия для Windows XP/Windows 2003, в принципе ваще не нужна, потому что ее базовая функциональность уже включена в стандартный VGA.SYS. В отличие от моего драйвера, VGA.SYS:

  1. Поддерживает 4-бит (16 цветов) режимы
  2. Поддержка VESA BIOS ограничена для некоторых карт:
    BIOS Buglist из Windows XP SP3 VGA.SYS
    
    Brookdale-G Graphics Controller
    ATI S1-370TL
    ArtX I
    Voodoo4 4500
    Voodoo3 3000 LC
    Voodoo3 2000 LC
    3Dfx Banshee
    MGA-G100
    SiS 5597
    NVidia Corporation
    NV11 (GeForce2) Board 
    Chip Rev B2
    Version 3.11.01.24N16
    
  3. Не переключается в разрешения экрана меньше 640x480
  4. Не может переключать частоту обновления экрана (refresh rate) по стандарту VBE 3.0
  5. Не поддерживает Write Combining (USWC)
  6. Режимы 15-бит R5G5B5 пропускаются

ОС

Версия

Описание

Ссылка

Windows NT,
Windows 2000,
Windows XP,
Windows 2003,
Windows PE x64/ia64

Release version
бета
12.01.2019

Универсальные VBE30 и VBE20 версии.**,
Панель управления для VBEMP.

[?],[?],[?]

Windows NT,
Windows 2000,
Windows XP,
Windows 2003,
Windows PE x64/ia64

Release version
бета
01.01.2015

Универсальные VBE30 и VBE20 версии.**,
Панель управления для VBEMP.

[?],[?]

Windows XP,
Windows 2003,
Windows PE x64/ia64

Release version
бета
07.09.2010

Универсальные VBE30 и VBE20 версии.**

[?],[?]

Windows NT,
Windows 2000,
Windows XP,
Windows 2003,
Windows PE

Release version
бета
07.09.2010

Универсальные VBE30 и VBE20 версии.**

[?],[?]

Windows NT,
Windows 2000,
Windows XP,
Windows 2003,
Windows PE

Release version
бета
01.14.2009

Универсальные VBE30 и VBE20 версии.**

[?],[?]

Windows NT,
Windows 2000,
Windows XP,
Windows 2003,
Windows PE

Release version
бета
04.26.2008

Универсальные VBE30 и VBE20 версии.**

[?],[?]

Windows NT,
Windows 2000,
Windows XP,
Windows 2003,
Windows PE***

"STABLE"
Release version
10.19.2007

Универсальные VBE30 и VBE20 версии.**

[?],[?]

Windows NT клоны - ВСЕ из них

Release version
beta
01.12.2019

Специальная версия драйвера для чипов Cirrus Logic: CL-GD542x, CL-GD543x, CL-GD544x, CL-GD546x, CL-GD5480, включая CL-GD5446 который используется в qemu. В картах с 2Mb+ VRAM доступен 32-битный цвет.

[?],[?],[?]

Windows NT клоны - ВСЕ из них

Release version
beta
01.08.2009

Специальная версия драйвера для чипов Cirrus Logic: CL-GD542x, CL-GD543x, CL-GD544x, CL-GD546x, CL-GD5480, включая CL-GD5446 который используется в qemu. В картах с 2Mb+ VRAM доступен 32-битный цвет.

[?],[?]

Windows NT клоны - ВСЕ из них

Debug version * 01.03.2009

IBM Graphics driver работает на любых EGA/VGA-совместимых картах (моно, 16, 256 цветов).

[?],[?]

Windows NT 4.0

Release version
10.28.2007

VGAMONO USWC специальный драйвер, к-рый эмулирует truecolor в 1,2 или 4-битовых режимах, работает на любых VBE-совместимых картах.

[?],[?]

Windows NT 3.51,
Windows NT 4.0,
Windows 2000,
Windows XP,
Windows 2003

Release version
12.19.2008

Панель управления для VBEMP.

[?],[?]

Windows NT 3.5x,
Windows NT 4.0

Release version
бета
07.05.2010

FRAMEVBE библиотека с поддержкой технологии теневого буфера.

[?],[?]

Windows NT 3.5x,
Windows NT 4.0,
Windows 2000,
Windows XP,
Windows 2003,
Windows PE

Release version
бета
07.05.2010

FRAMEBUF библиотека с поддержкой 15-бит режимов.

[?],[?]

Windows NT клоны - ВСЕ из них (до Windows 7 включительно)

Release version
16.12.2011

Специальный драйвер для VirtualBox за авторством Michal Necasek.

[?]

Windows NT клоны - ВСЕ из них (до Windows 7 включительно)

Release version 2
04.03.2012

Специальный драйвер для VirtualBox за авторством Michal Necasek.

[?]

Windows NT клоны - ВСЕ из них (до Windows 7 включительно)

Release version 3
01.08.2014

Специальный драйвер для VirtualBox за авторством Michal Necasek.

[?]

Примечание 1: Если Ваша карта работает медленно с установленным VBEMP, особенно при перемещении больших окон, прокрутке текста и заметно мерцание экрана Вы можете улучшить ситуацию:

Примечание 2: Начиная с версии датированной 10.19.2007, vbemp?.zip содержит эти варианты драйвера VBEMP:

Примечание 3: Как Вы уже заметили, для Windows 2000/XP/2003/PE существуют две версии - PnP и LEGACY. А еще каждый подвид драйвера имеет VBE30 и VBE20 версии. Для чего это сделано:

Примечание 4: По умолчанию любые Plug'n'Play видеокарты определяются КОРРЕКТНО 2000/XP/2003 версией моего драйвера. Но если Вы хотите, Вы МОЖЕТЕ добавить PCI VENDOR/DEVICE ID Вашей видеокарты в vbemppnp.inf для того, чтобы Ваша карта определялась под своим именем или можете выбрать драйвер вручную, когда Windows впервые находит неизвестное устройство. Это необязательное действие!
Пример:

; vbemp5.inf
;
; Installation file (.inf) for the VBE Miniport device.
;
; (c) Copyright 2006 AnaPa Corp 
;
 . . . . . .

 . . . . . .
[AnaPa.Mfg]
VBE Минипорт = Vbemp, NOPNP
VBE Минипорт - Standard PCI Graphics Adapter (VGA) = Vbemp, PCI\CC_0300
VBE Минипорт - Standard PCI Graphics Adapter (XGA) = Vbemp, PCI\CC_0301
VBE Минипорт - Standard PCI Graphics Adapter = Vbemp, PCI\CC_0380
VBE Минипорт - Standard Graphics Adapter (VGA) = Vbemp, *PNP0900
VBE Минипорт - VGA = Vbemp, *PNP0917
VBE Минипорт - SVGA = Vbemp, NOPNP
VBE Минипорт - 1394 = Vbemp,1394\&
VBE Минипорт (ATI, AMD) = Vbemp, PCI\VEN_1002&CC_0300
VBE Минипорт (Intel) = Vbemp, PCI\VEN_8086&CC_0300
VBE Минипорт (nVidia) = Vbemp, PCI\VEN_10DE&CC_0300
VBE Минипорт (ATI Rage 128PRO 4x pri) = Vbemp, PCI\VEN_1002&DEV_5046
VBE Минипорт (Intel D845G) = Vbemp, PCI\VEN_8086&DEV_2562&SUBSYS_52478086
Имя Вашей карты = Vbemp, PCI\VEN_xxxx&DEV_yyyy&SUBSYS_zzzzzzzz ; шаблон карты, смотри ниже
 . . . . . .

Чтобы вписать эту строку Вы можете использовать программу Craig Hart's PCI32 упомянутую ниже, вот пример отчета:

 . . . . . .
 Bus 1 (AGP), Device Number 0, Device Function 0
 Vendor 1002h ATI Technologies Inc
 Device 4966h Radeon 9000 Series (RV250)
 Command 0187h (I/O Access, Memory Access, BusMaster, Wait Cycles, System Errors)
 Status 02B0h (Has Capabilities List, Supports 66MHz, Supports Back-To-Back Trans., Medium Timing)
 Revision 01h, Header Type 80h, Bus Latency Timer FFh
 Minimum Bus Grant 08h, Maximum Bus Latency 00h
 Self test 00h (Self test not supported)
 Cache line size 32 Bytes (8 DWords)
 PCI Class Display, type VGA
 Subsystem ID 4F721002h Radeon 9000 Series (RV250)
 Subsystem Vendor 1002h ATI Technologies Inc
 . . . . . .

Примечание 5: Мой драйвер не предоставляет никакой поддержки для корректного запуска полноэкранных DOS приложений в графических режимах VESA. Это контролирует VGA.SYS и в большинстве случаев он блокирует прямой доступ к портам ввода-вывода и препятствует запуску VESA программ. Существуют сторонние патчи - WinXPFix Utility (http://www.nomissoft.com/service.html#as2downloads) и 'Videoport driver patch for VESA in NTVDM' (http://www.volny.cz/martin.sulak/, прямая ссылка videoprt.zip) которые исправляет "поведение" VGA.SYS. Попробуйте их если Вам нужен запуск DOS программ в Windows. Я никаким образом не связан с разработчиком(-ами) данных программ.

Примечание 6: По умолчанию системная библиотека Microsoft FRAMEBUF.DLL используется в паре с VBEMP драйвером как компонент уровня пользователя. Но имеется проблема - она отфильтровывает 15-бит режимы. Существуют четыре варианта решения этой проблемы:

  1. Доступны только 16-бит режимы:
  2. Доступны только 15-бит режимы:
  3. Доступны 15-бит и 16-бит режимы (без акселерации):
  4. Доступны 15-бит и 16-бит режимы (с акселерацией):

Примечание 7: Если вы пытаетесь использовать драйвер с ISA/MCA/VLB картами в большинстве случаев необходима предварительная регулировка значений следующих пунктов BIOS Setup:

чтобы системная память не пересекалась с памятью видеокарты.

* Для получения RELEASE-версии этого драйвера (которая более стабильна, вдвое меньше размером и работает быстрее DEBUG-версии) Вам нужно связаться со мной по e-mail и прислать мне отчет, сгенерированный утилитой INFOVBE.EXE, потом Я вышлю Вам RELEASE-версию драйвера по e-mail. Я рекомендую эту версию только после того, как Вы убедитесь в том, что DEBUG-версия работает с Вашей картой корректно.

** Если универсальная версия не работает с Вашей картой, Вы можете попробовать Ручную версию. Чтобы получить ее Вам нужно связаться со мной по e-mail и прислать мне отчет, сгенерированный INFOVBE.EXE, потом Я вышлю Вам перcональную версию драйвера для Вашей видеокарты по e-mail.

*** Как установить драйвер в среде Windows PE:
  1. Для CD-инсталляции: поместите vbemp.sys в каталог \I386\SYSTEM32\DRIVERS, vbempnp.inf в каталог \I386\INF. Я очень рекомендую предварительно удалить display.inf из каталога \I386\INF.
  2. Для HDD-инсталляции: vbemp.sys в каталог \MININT\SYSTEM32\DRIVERS, vbempnp.inf в каталог \MININT\INF. Я очень рекомендую предварительно удалить display.inf из каталога \MININT\INF.
  3. После запуска WindowsPE выполните:
    factory.exe -winpe
    Эта строчка запустит драйвер.
Как установить legacy драйвер в среде Windows PE:
  1. Заменить %SystemRoot%\SYSTEM32\DRIVERS\VGA.SYS моей версией и перезагрузиться.

Настройки реестра


Для "тонкой" настройки драйвера Вы можете использовать Панель управления.
Ветка : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Vbemp\Device0
или HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Vgasave\Device0 в legacy режиме

Обратите внимание что HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
это виртуальная ветка и она соответствует одной иэ следующих веток:

Ветка : HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX\Services\Vbemp\Device0
или HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX\Services\Vgasave\Device0 в legacy режиме
где XXX принимает значения 001, 002, 003 ...
в зависимости от выбранной конфигурации оборудования
согласно значению "Current" отсюда: HKEY_LOCAL_MACHINE\SYSTEM\Select 

В Windows XP и далее эти ключи дублируются:

Ветка : HKLM\SYSTEM\CurrentControlSet\Control\Video\{yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy}\XXXX
или HKLM\SYSTEM\CurrentControlSet\Control\Video\{23A77BF7-ED96-40EC-AF06-9B1F4867732A}\0000
в legacy режиме

Обратите внимание что HKLM\SYSTEM\CurrentControlSet\Control\Video
это "multi-device" ветка и она соответствует одной иэ следующих веток:
где XXXX принимает значения 0000, 0001, 0002, 0003 ... 
в зависимости от выбранного графического устройства вывода начиная с 0.

Значение {yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy} зависит от
соответствующей конфигурации оборудования согласно значению "Service" отсюда:
HKLM\SYSTEM\CurrentControlSet\Control\Video\{yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy}\Video
где оно принимает значения "vbemp" или "Vgasave" в legacy режиме
Вот возможные параметры:
 
Ключ : Acceleration.Level
Значение : (REG_DWORD) уровень видео акселерации (0 - 5, 5 - наименьший уровень)
Пояснение : Если "0"-"4" или ключ отсутствует, теневой буфер отключен, а если "5" - включен. Эта установка имеет значение для всех версий, работающих под Windows2000 и старше (XP/2003). Рекомендуемое значение - 5.
Необходима перезагрузка : Да.
 
Ключ : VBE_GREY
Значение : (REG_DWORD) 1 или 0
Пояснение : Если "0" или ключ отсутствует, драйвер в 256-цветных режимах использует стандартную палитру, а если "1" - полутоновую.
Необходима перезагрузка : Нет.
 
Ключ : VBE_VENDORID
Значение : (REG_DWORD) PCI идентификатор устройства, допустимы только следующие значения:

1. 0x100C (Tseng Labs Inc) 2. 0x1013 (Cirrus Logic) 3. 0x5333 (S3 Inc) 4. 0x1023 (Trident Microsystems Inc)
Пояснение : Значение играет роль только для ISA/MCA/VLB карт. (появилось в версии от мая2007!).
Необходима перезагрузка : Да.
 
Ключ : VBE_MEMBASE
Значение : (REG_DWORD) базовый адрес буфера кадра, к примеру:

1. 0x100000 - 0x00F00000, с шагом 0x100000 (1Mb) (для карт Cirrus Logic)
2. 0x100000 - 0x03F00000, с шагом 0x100000 (1Mb) (для карт Trident)
3. 0x400000 - 0x3FC00000, с шагом 0x400000 (4Mb) (для карт Tseng Labs)
4. 0x100000 - 0xFFF00000, с шагом 0x100000 (1Mb) (для карт S3 Inc)
Пояснение : Значение играет роль только для ISA/MCA/VLB карт. Значение берется из документации на видеокарту, Вы должны знать его точно, у Вас есть варианты:
  1. Обратите внимание что на шине VESA адресуется до 4Gb RAM, а на ISA - только ниже 16Mb.
  2. Если это значение ниже линии 16Mb (< 0x1000000) и у Вас менее 16Mb системной памяти то Вы без проблем уcтановите VBEMP.
  3. Если это значение ниже линии 16Mb (< 0x1000000) и у Вас 16Mb или более системной памяти Вы должны включить опцию "Memory hole option" в BIOS Setup Program Вашего компьютера.
  4. Если это значение выше либо равно 16Mb (>= 0x1000000) и у Вас 16Mb или более системной памяти убедитесь что видео- и системная память не пересекаются. Если они пересекаются у Вас не будет возможности установить VBEMP на такой компьютер. В таком случае, Вы можете попытаться отключить или ограничить использование памяти выше адресов буфера кадра, используя ключи /MAXMEM или /BURNMEMORY в Вашем файле \boot.ini.
Буфер кадра НЕ МОЖЕТ перекрывать регион системной памяти!
Значение играет роль только для ISA/MCA/VLB карт. (появилось в версии от мая2007!).
Необходима перезагрузка : Да.
 
Ключ : VBE_USWC
Значение : (REG_DWORD) 1 или 0
Пояснение : Если "0" или ключ отсутствует, Комбинированная запись (USWC) отключена, а если "1" - включена. (появилось в версии от июня2007!).
Необходима перезагрузка : Да.
 
Ключ : VBE_ALIGN
Значение : (REG_DWORD) 2, 1 или 0
Пояснение : Если "0" или ключ отсутствует, память буфера кадра выравнивается по границе 64Kb, если "1" - по границе 4Mb, если "2" - по размеру всей памяти адаптера. Установка "1" рекомендуется когда Комбинированная запись (USWC) включена. (появилось в версии от июня2007!).
Необходима перезагрузка : Нет.
 
Ключ : VBE_VSYNC
Значение : (REG_DWORD) 1 или 0
Пояснение : Если "0" или ключ отсутствует, Полярность вертикальной синхронизации отрицательная, а если "1" - положительная. (появилось в VBE30 версии от июня2007!).
Необходима перезагрузка : Нет.
 
Ключ : VBE_HSYNC
Значение : (REG_DWORD) 1 или 0
Пояснение : Если "0" или ключ отсутствует, Полярность горизонтальной синхронизации отрицательная, а если "1" - положительная. (появилось в VBE30 версии от июня2007!).
Необходима перезагрузка : Нет.

Значения параметров для полярности HSync и VSync берутся из документации на монитор. Обычно можно принять что режим 640 x 400 использует -Hsync и +Vsync, режимы 640 x 480, в основном, используют +Hsync и +Vsync и все высшие режимы (800 x 600 и более) используют -Hsync и -Vsync полярности.

Ключ : VBE_FILTER
Значение : (REG_BINARY) максимум 32 строчки по 8 байт = 256 байт
Примеры:
08,00,06,00,00,00,00,00 - выключает все 800x600 режимы 
08,00,06,00,00,00,00,56 - выключает все 800x600 режимы с частотой выше 56гц 
08,00,06,00,00,70,00,85 - выключает все 800x600 режимы с частотой выше 85гц и ниже 70гц 
00,00,00,00,00,00,01,00 - выключает все режимы с частотой выше 100гц
Пояснение : Если ключ отсутствует, VBEMP не осуществляет фильтрацию режимов. (появилось в версии от июля2007!).
Необходима перезагрузка : Да.
 
Ключ : VBE_DDC
Значение : (REG_DWORD) 1 или 0
Пояснение : Если "0" или ключ отсутствует, VBEMP не определяет PNP монитор используя PNP-менеджер, а если "1" - определяет. (появилось в версии от июня2007! Не для legacy-mode драйверов!).
Необходима перезагрузка : Да.
 
Ключ : VBE_EDID
Значение : (REG_DWORD) 1 или 0
Пояснение : Если "0" или ключ отсутствует, VBEMP не определяет PNP монитор используя внутренние механизмы драйвера, а если "1" - определяет. (появилось в версии от июля2007!).
Необходима перезагрузка : Да.
 
Ключ : VBE_RAWEDID
Значение : (REG_BINARY)
Пояснение : Когда VBE_EDID = 1, EDID-блок пишется сюда. (появилось в версии от июля2007!).
 
Ключ : VBE_NVSCALE
Значение : (REG_DWORD) 2, 1 или 0
Пояснение : Если "0" или ключ отсутствует, масштабирование включено, если "1" - выключено и изображение центрировано, если "2" - выключено и изображение вверху слева. Значение играет роль только для карт nVidia, подключенных к LCD дисплею через DVI. (появилось в версии от января2009!).
Необходима перезагрузка : Да.
 
Ключ : VBE_RGB555
Значение : (REG_DWORD) 1 или 0
Пояснение : Если "0" или ключ отсутствует Режимы R5G5B5 отражаются как 15-бит и R5G6B5 - как 16-бит, если "1" - режимы R5G5B5 отражаются как 16-бит и R5G6B5 - как 15-бит. Это изменение нужно для их коррекной поддержки через Microsoft FRAMEBUF.DLL драйвер, который не умеет использовать режим еслии сообщается что он - 15-bpp. (появилось в версии от июня2010!).
Необходима перезагрузка : Да.

Скриншоты. Проект VBE NT в работе :)



Инструкция: Полное удаление драйвера VBEMP из системы WinNT/2K/XP/2K3


  1. Удалить файлы:
    \%WINDOWS_DIR%\SYSTEM32\DRIVERS\VBEMP.SYS 
    \%WINDOWS_DIR%\INF\oem?.inf
    \%WINDOWS_DIR%\INF\oem?.pnf
    где ? принимает значения 1,2,3,4.....
    содержимое oem?.inf должно соответствовать:
    vbemp4.inf (для Windows NT 4.0)
    vbempnp.inf (для Windows 2000/XP/2003)
    
    \%WINDOWS_DIR%\SYSTEM32\oemvio?.inf (для Windows NT 3.x)
    где ? принимает значения 1,2,3,4.....
    содержимое oemvio?.inf/ должно соответствовать:
    oemsetup.inf (для Windows NT 3.x)
    
  2. Удалить Вашу карту из Менеджера устройств или вычистить ветки реестра:
    Все: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Vbemp
    Только для Windows XP/2003: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video\{yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy}
    где расположение {yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy} описано выше в Настройках реестра
    

Функция Ke386CallBios()


Декларация функции, импорт NTOSKRNL.LIB

#define SIZE_OF_80387_REGISTERS      80
typedef struct _FLOATING_SAVE_AREA {
    ULONG   ControlWord;
    ULONG   StatusWord;
    ULONG   TagWord;
    ULONG   ErrorOffset;
    ULONG   ErrorSelector;
    ULONG   DataOffset;
    ULONG   DataSelector;
    UCHAR   RegisterArea[SIZE_OF_80387_REGISTERS];
    ULONG   Cr0NpxState;
} FLOATING_SAVE_AREA;

typedef struct _CONTEXT {
    ULONG ContextFlags;
    ULONG   Dr0;
    ULONG   Dr1;
    ULONG   Dr2;
    ULONG   Dr3;
    ULONG   Dr6;
    ULONG   Dr7;
    FLOATING_SAVE_AREA FloatSave;
    ULONG   SegGs;
    ULONG   SegFs;
    ULONG   SegEs;
    ULONG   SegDs;
    ULONG   Edi;
    ULONG   Esi;
    ULONG   Ebx;
    ULONG   Edx;
    ULONG   Ecx;
    ULONG   Eax;
    ULONG   Ebp;
    ULONG   Eip;
    ULONG   SegCs;              // НЕ ТРОЖЬ - ХУЖЕ БУДЕТ
    ULONG   EFlags;             // НЕ ТРОЖЬ - ХУЖЕ БУДЕТ
    ULONG   Esp;
    ULONG   SegSs;

} CONTEXT;
typedef CONTEXT *PCONTEXT;

NTSTATUS
Ke386CallBios (
    IN ULONG BiosCommand,
    IN OUT PCONTEXT BiosArguments
    );

Дополнительная информация


Официальная информация по стандарту VESA BIOS Extensions 2.0 - http://www.vesa.org/public/vbe/vbe20.pdf.

Официальная информация по стандарту VESA BIOS Extensions 3.0 - http://www.vesa.org/public/vbe/vbe3.pdf.

Официальная информация по стандарту VESA BIOS Extensions 3.0 - http://www.vesa.org/public/vbe/vbecore3.pdf.

Официальная информация по стандарту VESA BIOS AF - http://www.vesa.org/public/vbe/VBE-AF07.pdf.

Официальная информация по стандарту VESA BIOS DDC Extensions 1.1 - http://www.vesa.org/public/vbe/VBEDDC11.pdf.

THE VESA GENERALIZED TIMING FORMULA (GTF) Excel™ spreadsheet - http://www.vesa.org/Public/GTF/GTF_V1R1.xls.

VESA COORDINATED VIDEO TIMING (CVT) GENERATOR Revision 1.1 Excel™ spreadsheet - http://www.vesa.org/Public/CVT/CVTd6r1.xls.

Файл справки "Дисплеи и устройства печати: Windows XP DDK" (Built on Friday, February 18, 2005) - [?],[?].

SciTech Software Inc выпустила коммерческую версию аналогичного драйвера (SciTech SNAP Graphics changelog) для Windows, OS/2, QNX & Linux. Эти версии пробные на 21 день.

  1. Скачать Windows 2000/XP Version 3.1.4 DPVL beta2 [dpvlbeta2.zip].
  2. Скачать Windows NT 4.0 Версия 3.1.1 [snap-winnt-3.1.1.exe]. Поддерживаемое оборудование.
  3. Скачать Windows NT 4.0 Версия 3.1.3 beta 1284 [snap-winnt-3.1.3-1284.exe].
  4. Скачать DOS Версия 3.1.1 [snap-dos-3.1.1.exe]. Поддерживаемое оборудование.
  5. Скачать IBM OS/2 (eCS) Версия 3.1.8 [snap-os2-3.1.8.exe]. Поддерживаемое оборудование.

Более новую Персональную версию (пробную на 6 месяцев) можно скачать БЕСПЛАТНО зарегистрировавшись на http://my.scitechsoft.com/navigate.php.

Посетите сайт http://et6000.narod.ru/ который содержит драйвер и исходный код к нему для видеокарт Tseng Labs ET6000, ET6100 и ET6300 PCI для Windows 2000/XP.

VIDEOSIM.SYS frame buffer simulator пример видеодрайвера (исходный код) из комплекта разработчика устройств (DDK) Windows NT 4.0 [?],[?].

MIRROR.SYS frame buffer mirror пример видеодрайвера (исходный код) из комплекта разработчика устройств (DDK) Windows 2000 [?],[?].

Посетите ReactOS operating system 'tm subversion repository для обзора исходников последней версии видео драйверов - http://svn.reactos.org/.../miniport/

Посетите VirtualBox 'tm subversion repository для обзора исходников последней версии драйвера для виртуального видеоадаптера - http://www.virtualbox.de/.../WINNT/Graphics?rev=1

Здесь Вы можете найти некоторые тесты и бенчмарки, которые я использовал для тестирования производительности моего драйвера - benches.rar

Вот список протестированного стороннего програмнного обеспечения, совместимого с VBEMP драйвером и обеспечивающее ограниченную поддержку 3D ускорения. Данный список также относится к драйверу VGA.SYS из Windows XP/2003 и далее.

Наименование ПО

Владелец

API

Совместимость

Заметки

Reference Rasterizer (DitectX SDK)

Microsoft

DX8, DX9

Aналогично DirectX, x86/x64

Поддержка шейдеров, Медленно

RGB Rasterizer (DitectX SDK)

Microsoft

DX8, DX9

Aналогично DirectX, x86/x64

Нет поддержки шейдеров, быстрее чем reference

Pixomatic

RAD Game Tools

DX8, DX9

Windows9x/NT4 и далее

Поддержка SMP. Нет поддержки шейдеров, быстрее чем MS RGB Rasterizer

SwiftShader 2.0/3.0

TransGaming

DX8, DX9

Windows 2000 и далее

Поддержка SMP. С версии 3.0 умеет x64, но нет поддержки Windows 2000. Немного медленнее Pixomatic. Умеет шейдеры. Проблемы при FFP рендеринге.

Mesa3D

open-source

OpenGL

Windows9x/NT4 и далее

Новые версии совместимы только с Windows XP и новее.

Посетите сайт VOGONS Vintage Driver Library для скачивания Mesa3D, SwiftShader.

Вот список прочего ПО, которое было протестировано: Realtech VR DXGL Wrapper, AltOpenGL, TechLand Soft OpenGL, mesaFX OpenGL, SciTech Software GLDirect.


Протестированные видеокарты/чипсеты


  1. VBE 3.00 INTERNAL Intel 5/6/7/8 series Chipset Graphics
  2. VBE 3.00 INTERNAL Intel G31/G33/G41/G43/G45 Graphics
  3. VBE 3.00 INTERNAL Intel G963/G965 Graphics
  4. VBE 3.00 INTERNAL Intel 945G/915G/910G Graphics
  5. VBE 3.00 INTERNAL Intel 865G/852G/845G/815G/810 Graphics
  6. VBE 3.00 AGP/PCI 3Dfx Interactive Voodoo3 series
  7. VBE 3.00 AGP/PCI nVidia RIVA 128 2D/3D Gui Accelerator
  8. VBE 3.00 AGP/PCI nVidia RIVA TNT/TNT2 series
  9. VBE 3.00 AGP/PCI nVidia GeForce2/Geforce3/Geforce4/FX series
  10. VBE 3.00 INTERNAL nVidia GeForce 6100 nForce 430
  11. VBE 3.00 PCIe/AGP/PCI nVidia GeForce 6000/7000 series
  12. VBE 2.00 AGP/PCI Matrox Millenium II
  13. VBE 3.00 AGP/PCI Matrox MGA-G450/MGA-G400/MGA-G200/MGA-G100
  14. VBE 2.00 AGP/PCI ATI Rage IIC
  15. VBE 2.00 PCI/INTERNAL ATI RageXL
  16. VBE 2.00 AGP/PCI ATI Rage 3D Pro
  17. VBE 2.00 AGP/PCI ATI Rage Mobility
  18. VBE 2.00 AGP/PCI ATI Rage128 PF/Pro
  19. VBE 2.00 AGP/PCI ATI Radeon 7x00/8x00/9xx0 series
  20. VBE 2.00 INTERNAL ATI Radeon Xpress 200M series
  21. VBE 3.00 PCIe/AGP/PCI ATI Radeon X1xx50 series (ATOMBIOS)
  22. VBE 2.00 PCI TSENG LABS Inc ET6000/ET6100
  23. VBE 1.32 PCI/VLB/INTERNAL TSENG LABS Inc ET4000
  24. VBE 2.00 AGP/PCI S3 Inc Savage series
  25. VBE 2.00 AGP/PCI S3 Inc 86C368 Trio3D/2X
  26. VBE 2.00 PCI S3 Inc 86C375 ViRGE/DX/GX
  27. VBE 2.00 PCI/VLB S3 Inc Vision964/864/968/868
  28. VBE 2.00 PCI/VLB S3 Inc Trio32/Trio64
  29. VBE 2.00 PCI/VLB/INTERNAL Cirrus Logic CL-GD54xx series
  30. VBE 1.02 VLB/ISA/INTERNAL Cirrus Logic CL-GD542x series
  31. VBE 2.00 AGP/PCI 3DLabs PERMEDIA 2
  32. VBE 2.00 PCI Avance Logic
  33. VBE 2.00 PCI Alliance Semiconductor ProMotion 6410
  34. VBE 2.00 PCI ARK Logic ARK2000PV
  35. VBE 2.00 PCI SIS 6216/6326
  36. VBE 2.00 PCI Sigma REALmagic64/GX
  37. VBE 2.00 PCI Rendition Verite 2100/2200
  38. VBE 2.00 INTERNAL Trident CyberBlade i7
  39. VBE 1.02 ISA Trident 8900/9000i
  40. VBE 1.02 ISA Realtek 3106 [RTG3106]
  41. VBE 2.00 PCI VirtualBox VBE Adapter (Innotek VirtualBox)
  42. VBE 2.00 PCI VMware SVGA II (VMware)
  43. VBE 2.00 PCI Cirrus Logic CL-GD5446 (QEMU)
  44. VBE 2.00 PCI IBM Plex86/Bochs VBE Adapter (QEMU/Bochs)
  45. VBE 2.00 PCI IBM Plex86/Bochs VBE Adapter [vmware] (QEMU/Bochs)
  46. no VBE ISA 256KB Elpin VGABIOS (Bochs)

Решение проблем с драйвером


Когда у Вас возникают проблемы с драйвером, обычно существуют два базовых сценария:

  1. Компьютер стартует, но драйвер работает неправильно.
  2. Компьютер не стартует, т.е. "падает", показывает BSOD или "зависает".

Перед отладкой попробуйте эти операции, указанные ниже:

  1. Физически удалите чипы памяти или используйте опцию /MAXMEM в boot.ini для этого по образцу (например если у Вас 1024 Mb RAM): 512 -> 256 -> 128 -> 64 -> 32 -> 16 -> 8.
  2. Обновите BIOS материнской платы до последней версии.
  3. Очистите настройки CMOS до безопасных или по умолчанию.
  4. Уменьшите AGP Aperture в BIOS т.к. она не используется драйвером.
  5. Временно удалите внешние контроллеры как то: usb, sound, hdd, lan и пр.
  6. Попробуйте использовать видеокарту с другой шиной: AGP, PCIe, PCI, набортную.

Для начала процесса отладки Вы ДОЛЖНЫ запросить у меня LOGGED-версию (для метода 1) или DEBUG-версию (для методов 2,3) драйвера по e-mail. Для методов 2,3 Вы ДОЛЖНЫ ПРОЧЕСТЬ эту статью Отладка в WinDbg пособие для тестировщика чтобы понять какая методика отладки наиболее подходит в Вашем случае. Вот возможные шаги, кратко:

После того как Вы получили логи от драйвера Вы можете предоставить мне дополнительную информацию по системе и видеокарте. Это необязательный шаг!!! Без логов от драйвера эта информация бессмысленна для меня!!!

  1. Собрать информацию о VESA BIOS и о системе :

  2. Для владельцев ISA/MCA/VLB карт: Выпущены новые утилиты - lfb_det.exe/lfb.exe, которые умеют автоматически определять адрес буфера кадра в системном адресном пространстве. Они распространяются только по запросу по e-mail. Прочтите пп. 1 ("Собрать информацию о системе"), сделайте логи и я пришлю Вам эти утилиты.


VBE ЧАВО: Список отклонений от стандарта VESA Видео BIOS Расширений

Карты (чипы) affected

Описание

Intel 845G, 855G, 865G, 915G и далее

PRB: Не удается установить "родные" разрешения вроде 1024x600, 800x480, 1280x800, в основном на ноутбуках с встроенной графикой Intel.
DETAILS: В таблицах режимов Video BIOS эти режимы отсутствуют или фильтруются. Когда Вы пытаетесь через BIOS установить эти разрешения, BIOS немедленно возвращает ошибку.
FIX: Обновите Ваш BIOS последней версией или самостоятельно сделайте патч. В DOS/Windows9x возможно использование программного Intel TSR VBIOS VESA-драйвера.

Intel 845G, 855G, 865G, 915G и далее

PRB: Не удается установить разрешение выше 800x600x8бит и 640x480x16бит.
DETAILS: В Video BIOS размер буфера кадра жестко ограничен 832 Кбайт, а этого недостаточно даже для 1024x768x16бит = 1024*768*2 = 1572864, 1572864 > 832K.
FIX: Обновите Ваш BIOS последней версией или самостоятельно сделайте патч. В DOS/Windows9x возможно использование программного Intel TSR VBIOS VESA-драйвера.

Intel 810E, 815E series

PRB: Не удается использовать линейный буфер кадра, хотя карта идентифицирует себя как VBE 3.0 совместимая.
DETAILS: В Video BIOS поддержка линейного буфера кадра отсутствует, а сама карта поддерживает линейный буфер кадра.
FIX: Не известно.

ATI Radeon Xkkkk series (начиная с X700)

PRB: Не удается использовать пользовательские частоты обновления экрана, хотя карта идентифицирует себя как VBE 3.0 совместимая.
DETAILS: В Video BIOS код переключения пользовательских частот обновления экрана отсутствует. Когда Вы пытаетесь через BIOS установить эти разрешения, BIOS немедленно возвращает ошибку VBE 0x34F.
FIX: Не известно.

nVidia GeForce 5xxx/6xxx/7xxx (и более новые)

PRB: Не удается использовать пользовательские частоты обновления экрана, хотя карта идентифицирует себя как VBE 3.0 совместимая.
DETAILS: В Video BIOS код переключения пользовательских частот обновления экрана изменен. Когда Вы пытаетесь через BIOS установить эти разрешения, BIOS всегда использует разрешение по умолчанию (60 Hz).
FIX: Не известно.

Intel 7/8 Seies Chipset Graphics (и более новые)

PRB: Не удается использовать пользовательские частоты обновления экрана, хотя карта идентифицирует себя как VBE 3.0 совместимая.
DETAILS: В Video BIOS код переключения пользовательских частот обновления экрана изменен. Когда Вы пытаетесь через BIOS установить эти разрешения, BIOS всегда использует разрешение по умолчанию (60 Hz).
FIX: Не известно.

nVidia GeForce 5xxx/6xxx/7xxx (и более новые)

PRB: Не удается установить разрешение выше 800x600.
DETAILS: В таблицах режимов Video BIOS режимы 1024x768 и выше отсутствуют или фильтруются. Когда Вы пытаетесь через BIOS установить эти разрешения, BIOS немедленно возвращает ошибку.
FIX: Обновите Ваш BIOS последней версией или самостоятельно сделайте патч.

Карты VESA 1.x

PRB: Когда переключаемся в полноэкранный текстовой режим, компьютер "зависает".
DETAILS: В коде Video BIOS подпрограммы установки режимов "коряво" написаны и некорректно отрабатываются в 32 бит защищённом режиме.
FIX: Не известно. В DOS/Windows9x возможно использование программного VESA-драйвера.

Разнообразные VESA карты

PRB: При вызове VBE функций, старшее слово EAX и возможно других регистров (т.е. 0x????0000) може содержать "мусор".
DETAILS: В коде Video BIOS VESA подпрограммы "коряво" написаны и некорректно отрабатывают использование 32 бит регистров.
FIX: Фильтровать старшее слово в EAX.

Карты Matrox, Trident, TsengLabs

PRB: вызове VBE функций, 16-бит R5G5B5 и R5B6G5 режимы вместе сообщаются как 16-битные. В некоторых случаях это ввди в аблуждение VESA программы - если я выбираю 16-бит режим, какую "битность" (555 или 565) использовать?
DETAILS: В коде Video BIOS VESA подпрограммы "коряво" написаны. Microsoft FRAMEBUF.DLL драйвер путается и пропускает 15-бит режимы если они сообщаются как 15-bpp. Если оба 555 и 565 режима сообщаются как 16-бит, FRAMEBUF.DLL использует первый попавшийся.
FIX: Выбирая такие режимы проверять и "битность" (15 or 16) и распределение каналов 555 или 565). Я выпукаю исправленную версию FRAMEVBE.DLL.




История проекта



Лог разработчика


[!] Важно
[+] Новое
[-] Исправлена ошибка
[*] Изменения
[?] Комментарии

Лог разработчика представлен только в английском варианте. Сорри. :)

Лицензия


Проект VBE NT драйвер *
Лицензия на использование и распространение

* далее по тексту - драйвер.

  1. Все авторские права на драйвер принадлежат только авторам - Bearwindows и Корпорации АнаПа.
  2. Любой пользователь имеет право использовать драйвер в некоммерческих целях бесплатно.
  3. Для коммерческой поддержки пришлите запрос на электронную почту.
  4. Драйвер распространяется свободно, при условии того, что настоящий дистрибутив не изменен. Ни одно частное лицо или организация не может брать плату за распространение драйвера без письменного разрешения автора. Распространение любой версии драйвера датированной до 19/10/2007 или создание "зеркал" содержимого сайта драйвера категорически запрещено.
  5. ДРАЙВЕР ПОСТАВЛЯЕТСЯ ПО ПРИНЦИПУ "AS IS". НИКАКИХ ГАРАНТИЙ НЕ ПРИЛАГАЕТСЯ И НЕ ПРЕДУСМАТРИВАЕТСЯ. ВЫ ИСПОЛЬЗУЕТЕ ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ НА СВОЙ РИСК. АВТОР НЕ БУДЕТ ОТВЕЧАТЬ НИ ЗА КАКИЕ ПОТЕРИ ИЛИ ИСКАЖЕНИЯ ДАННЫХ, ЛЮБУЮ УПУЩЕННУЮ ВЫГОДУ В ПРОЦЕССЕ ИСПОЛЬЗОВАНИЯ ИЛИ НЕПРАВИЛЬНОГО ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ. УСЛОВИЯ ЛИЦЕНЗИИ, СОДЕРЖАЩИЕСЯ В ЭТОМ ДОКУМЕНТЕ МОГУТ БЫТЬ ИЗМЕНЕНЫ БЕЗ ПРЕДВАРИТЕЛЬНОГО УВЕДОМЛЕНИЯ, В БУДУЮЩИХ ИЗДАНИЯХ.
  6. Вы не можете использовать, копировать, эмулировать, создавать новые версии, сдавать в наем или аренду, продавать, изменять, декомпилировать, дизассемблировать, изучать код программы другими способами, передавать зарегистрированную программу или любые из ее составляющих, иначе, чем определено настоящим лицензионным соглашением. Любое такое нелегальное использование означает автоматическое и немедленное прекращение действия настоящего соглашения и может преследоваться по закону.
  7. Все права, не предоставленные здесь явно, сохраняются за Bearwindows и Корпорацией АнаПа.
  8. Установка и использование драйвера означает, что Вы понимаете положения настоящего лицензионного соглашения и согласны с ними.
  9. Если почему-либо вы не согласны с этим лицензионным соглашением, вам необходимо удалить файлы дистрибутива драйвера с ваших устройств хранения информации и прекратить использование драйвера.

Благодарим за использование драйвера.

Bearwindows и Корпорация АнаПа


Direct3D, DirectDraw, DirectShow, DirectSound, DirectX, Microsoft, MS-DOS, Visual C++, Win32, Win32s, Windows, Windows XP, Windows 2003 Server и Windows NT это либо зарегистрированные торговые марки или торговые марки Корпорации Майкрософт в США и/или других странах/регионах.

Имена компаний и продуктов упомянутые здесь могут быть торговыми знаками их уважаемых владельцев.

E-Mail: bearwindows_at_fastmail_dot_com | Последнее обновление: 1 декабря 2019