Создание VxD на Visual C++ без ассемблерных модулей

Блок описателя драйвера


Ключевым элементом драйвера является структура данных DDB

(Device Descriptor Block — блок описателя устройства), которая описывает параметры драйвера. DDB содержит следующие важнейшие поля:

  • Идентификация устройства (драйвера) — имя модуля драйвера (максимум восемь символов) и его идентификатор.
  • Версия драйвера — старший (major) и младший (minor) номера версий, определяющих функциональность драйвера (устройства).
  • Адрес процедуры диспетчера системных сообщений — адрес функции диспетчера, которая будет вызываться для обработки системных сообщений, посылаемых драйверу.
  • Адрес и размер таблицы обработчиков сервисных функций — адрес таблицы указателей (адресов) индивидуальных процедур, которые будут вызываться для выполнения сервисных функций, и количество сервисных функций, выполняемых драйвером.
  • Адреса обработчиков функций API — адреса индивидуальных процедур, которые вызываются для обработки запросов API от 16-разрядных программ (виртуальных машин DOS и программ Win16).
  • Символическое имя, назначенное DDB, должно быть описано в модуле драйвера в качестве первой экспортируемой точки входа (exported entry). Сам DDB должен находиться в одной секции резидентного кода вместе с диспетчером системных сообщений.



    Содержание раздела