Операционная система Microsoft Windows 3.1 для программиста. Дополнительные главы


Листинг 5.1. Файл vxdsrv\vxdsrv.asm - часть 2


; Значение, передаваемое процедуре Sys_Critical_Init xor edx, edx ret RealInit endp

VxD_Hello db '*VXDSRV* Copyright (C) Alexandr Frolov 1995' db 0dh, 0ah, '$' VXD_REAL_INIT_ENDS

; =================================================== ; Системная критическая инициализация ; =================================================== VXD_ICODE_SEG BeginProc VXDSRV_Sys_Crit_Init

; Устанавливаем фильтр для прерывания int 21h mov eax, 21h mov esi, offset32 V86_Int21_Handler VMMcall Hook_V86_Int_Chain

clc ; признак успешного завершения ret EndProc VXDSRV_Sys_Crit_Init VXD_ICODE_ENDS

; =================================================== ; Зафиксированный сегмент кода ; =================================================== VxD_LOCKED_CODE_SEG

; --------------------------------------------------- ; Определение управляющих процедур ; --------------------------------------------------- BeginProc VXDSRV_Control

; Процедура системной критической инициализации Control_Dispatch Sys_Critical_Init, VXDSRV_Sys_Crit_Init

clc ret EndProc VXDSRV_Control

VxD_LOCKED_CODE_ENDS

; =================================================== ; Сегмент данных ; =================================================== VxD_DATA_SEG

; --------------------------------------------------- ; Таблица адресов функций API драйвера ; --------------------------------------------------- VXDSRV_API_Call label dword

dd offset32 vxdapiGetVersion ; AX=0 dd offset32 vxdapiRegisterWnd ; AX=1 dd offset32 vxdapiUnregisterWnd ; AX=2

VXDSRV_API_MaxCall EQU ($ - VXDSRV_API_Call) / 4

CallbackSel dw 0h ; селектор функции обратного вызова CallbackOff dd 0h ; смещение функции обратного вызова V86CallFlag dd 0 ; вызов из виртуальной машины V86 CallbackBuf dd 0 ; адрес буфера для передачи строки

flatpCmdLine dd 0 ; адрес командной строки flatpParmLine dd 0 ; адрес строки параметров hSem dd 0 ; идентификатор семафора

nCurDisk db 0 ; текущий диск szCurPath db 64 dup(0) ; текущий каталог

; Сегмент буфера для получения текущего пути wPathSeg dw 0




Начало  Назад  Вперед



Книжный магазин