Организация ввода-вывода. Часть 1. Виртуальные драйверы и виртуальное окружение WINDOWS. Рощин А.В. - 62 стр.

UptoLike

Составители: 

62
4.2. Исходные файлы версии "DDK "
"DDK" версия скелетного VxD состоит из двух исходных файлов:
SKELCTRL.ASM, который содержит блок дескриптора
устройства (DDB) и управляющую процедуру устройства,
имеющиеся в каждом VxD;
SKELETON.C, который содержит функции обработчика
сообщений, вызываемые управляющей процедурой устройства.
Кроме того, фирма Vireo (изготовитель VToolsD) предоставляет файл
VXDCALL.C, который содержит заплату, устраняющую ошибку в
компиляторе Microsoft VC ++ 4.1.
Хотя
не обязательно размещать DDB и управляющую процедуру
устройства в файле на языке ассемблера (VToolsD этого не делает), лучше
это делать так. Они очень малы и легко могут быть написаны на
ассемблере, а помещение их в файл Си потребовало бы написания
сложного макроса и включения ассемблерного фрагмента.
Как уже говорилось, когда модуль Си вызывает
сервисную функцию
VMM или VxD, функция на языке ассемблера должна брать параметры из
стека и размещать их в соответствующих регистрах, как этого ожидает
соответствующая сервисная функция. Библиотека VXDWRAPS.CLB в
DDK обеспечивает оболочки для некоторых часто используемых
сервисных функций VMM и VxD, но SKELETON.VXD использует
некоторые функции, которые не содержатся в этой библиотеке.
В этой главе сосредоточено
внимание на том, как SKELETON.С
(листинг 4.1) использует функции в библиотеке оболочки, а не функции
оболочки непосредственно.
Если вы используете Microsoft VC++ 4.1 для разработки
собственного VxD, вам надо будет прикомпоновать в ваш VxD еще один
файл – VXDCALL.C. Без этого модуля ошибка в компиляторе версии 4.1
                                    62



      4.2. Исходные файлы версии "DDK "

      "DDK" версия скелетного VxD состоит из двух исходных файлов:
      – SKELCTRL.ASM,       который        содержит    блок       дескриптора
        устройства (DDB) и управляющую процедуру устройства,
        имеющиеся в каждом VxD;
      – SKELETON.C,      который         содержит    функции      обработчика
        сообщений, вызываемые управляющей процедурой устройства.
      Кроме того, фирма Vireo (изготовитель VToolsD) предоставляет файл
VXDCALL.C, который содержит заплату, устраняющую ошибку в
компиляторе Microsoft VC ++ 4.1.
      Хотя не обязательно размещать DDB и управляющую процедуру
устройства в файле на языке ассемблера (VToolsD этого не делает), лучше
это делать так. Они очень малы и легко могут быть написаны                 на
ассемблере, а помещение их в файл Си потребовало бы написания
сложного макроса и включения ассемблерного фрагмента.
      Как уже говорилось, когда модуль Си вызывает сервисную функцию
VMM или VxD, функция на языке ассемблера должна брать параметры из
стека и размещать их в соответствующих регистрах, как этого ожидает
соответствующая сервисная функция. Библиотека VXDWRAPS.CLB в
DDK    обеспечивает   оболочки     для    некоторых   часто    используемых
сервисных функций VMM и VxD, но SKELETON.VXD использует
некоторые функции, которые не содержатся в этой библиотеке.
      В этой главе сосредоточено внимание на том, как SKELETON.С
(листинг 4.1) использует функции в библиотеке оболочки, а не функции
оболочки непосредственно.
      Если   вы   используете    Microsoft    VC++    4.1   для    разработки
собственного VxD, вам надо будет прикомпоновать в ваш VxD еще один
файл – VXDCALL.C. Без этого модуля ошибка в компиляторе версии 4.1