IV
В последнем разделе главы мы рассмотрим динамические виртуальные драйверы. Существует три способа загрузки виртуальных динамических драйверов.
Именно последним способом загрузки динамических драйверов мы сейчас и займемся. Схема использования динамических виртуальных драйверов следующая:
Перейдем теперь к программе загрузки динамического драйвера. Программа показана на Рисунок 4.7.4. Она загружает драйвер msg.vxd и вызывает сервис 3 драйвера.
; файл FILES1.ASM .386P ; плоская модель .MODEL FLAT, stdcall ; константы STD_INPUT_HANDLE equ -10 FILE_FLAG_DELETE_ON_CLOSE equ 4000000h
; прототипы внешних процедур EXTERN GetStdHandle@4:NEAR EXTERN ExitProcess@4:NEAR EXTERN GetCommandLineA@0:NEAR EXTERN CreateFileA@28:NEAR EXTERN CloseHandle@4:NEAR EXTERN MessageBoxA@16:NEAR EXTERN ReadConsoleA@20:NEAR EXTERN DeviceIoControl@32:NEAR ; ;------------------------------------------------ ;директивы компоновщику для подключения библиотек includelib c:\masm32\lib\user32.lib includelib c:\masm32\lib\kernel32.lib ;------------------------------------------------ ; ; сегмент данных _DATA SEGMENT DWORD PUBLIC USE32 'DATA' HANDL DWORD ? HFILE DWORD ? BUF DB "\\.\msg.vxd",0 CAP DB "Окно сообщения",0 MES DB "Ошибка загрузки драйвера",0 BUFER DB 20 DUP (0) LENS DWORD ? ; количество выведенных символов MES1 DB "Вызов сервиса OK!",0 _DATA ENDS