ВУЗ:
Составители:
68
В самом начале файла макроопределением
DECLARE_VIRTUAL_DEVICEDDB объявлен блок дескриптора
устройства DDB. Параметры этого макроопределения один к одному
соответствуют полям блока дескриптора устройства DDB, описанного в
секции "Блок Дескриптора Устройства" главы 3. SKELCTRL.ASM
использует только первые шесть макропараметров, потому что VxD не
экспортирует API ни V86, ни защищенного режима. Поскольку
SKELETON не экспортирует API или другие сервисные функции, не
требуется
VxD ID, так что SKELCTRL.ASM использует
UNDEFINED_DEVICE_ID для макропараметра Device_Num (Device_Num
– то же, что Device ID). SKELETON не требует специального порядка
инициализации, так что для макропараметра Init_Order используется
значение UNDEFINED_INIT_ORDER.
Вторая половина SKELCTRL.ASM определяет управляющую
процедуру устройства VxD (Control Proc). Управляющая процедура
устройства VxD должна размещаться в заблокированном сегменте, для
этого Control Proc окружен макрокопределениями
VXD_LOCKED_CODE_SEG и VXD_LOCKED_CODE_ENDS. Control
Proc использует
последовательность макроопределений Control_Dispatch
генерации кода основного оператора переключения. Например, строка
Contro1_Dispatch SYS_VM_INIT, _OnSysVmInit, cCall. <ebx>
транслируется в код, который сравнивает код сообщения в EAX с
SYS_VM_INIT, и, если они совпадают, вызывает функцию OnSysVMInit в
модуле Си, принимая обработчик VM в EBX как параметр.
Этой информации о SKELCTRL.ASM достаточно чтобы
модифицировать VxD для обработки других сообщения в имеющемся
драйвере.
68 В самом начале файла макроопределением DECLARE_VIRTUAL_DEVICEDDB объявлен блок дескриптора устройства DDB. Параметры этого макроопределения один к одному соответствуют полям блока дескриптора устройства DDB, описанного в секции "Блок Дескриптора Устройства" главы 3. SKELCTRL.ASM использует только первые шесть макропараметров, потому что VxD не экспортирует API ни V86, ни защищенного режима. Поскольку SKELETON не экспортирует API или другие сервисные функции, не требуется VxD ID, так что SKELCTRL.ASM использует UNDEFINED_DEVICE_ID для макропараметра Device_Num (Device_Num – то же, что Device ID). SKELETON не требует специального порядка инициализации, так что для макропараметра Init_Order используется значение UNDEFINED_INIT_ORDER. Вторая половина SKELCTRL.ASM определяет управляющую процедуру устройства VxD (Control Proc). Управляющая процедура устройства VxD должна размещаться в заблокированном сегменте, для этого Control Proc окружен макрокопределениями VXD_LOCKED_CODE_SEG и VXD_LOCKED_CODE_ENDS. Control Proc использует последовательность макроопределений Control_Dispatch генерации кода основного оператора переключения. Например, строка Contro1_Dispatch SYS_VM_INIT, _OnSysVmInit, cCall.транслируется в код, который сравнивает код сообщения в EAX с SYS_VM_INIT, и, если они совпадают, вызывает функцию OnSysVMInit в модуле Си, принимая обработчик VM в EBX как параметр. Этой информации о SKELCTRL.ASM достаточно чтобы модифицировать VxD для обработки других сообщения в имеющемся драйвере.
Страницы
- « первая
- ‹ предыдущая
- …
- 66
- 67
- 68
- 69
- 70
- …
- следующая ›
- последняя »