Драйверы устройств в системе Windows


Драйвер виртуального устройства - часть 3


 

VxD_DATA_SEG

 

;

; Структура дескриптора виртуального прерывания

;

;  Данная   структура  передается   VPIDC_Virtualize_IRQ.  В    данной

;  структуре  описывается  уровень  прерывания,  процедура  прерывания

;  аппаратных  средств,  и  процедура,  которую  вызывает VPICD, когда

;  прерывание  диспетчируется  в  виртуальной  машине  VM  и  когда VM

;  возвращается из прерывания.

;

IRQD VPICD_IRQ_Descriptor

 

hIRQ         dd   -1     ; обработчик IRQ

hOwner       dd   -1     ; обработчик, владеющий VM

hTimeout     dd    0     ; обработчик к обратному вызову по тайм-ауту

bFakeData    dd  01111111b ; имитировать данные порта ввода-вывода

 

VxD_DATA_ENDS

 

subttl Dispatch VxD Control

 

VxD_LOCKED_CODE_SEG

 

BeginProc CheckOwner, NO_LOG

     cmp ebx,hOwner

     jne short col

     ret   ; выйти, если вызывается владелец

col:

     cmp hOwner,-1

     jne short co2  ; пропустить, если вызов не владельца

     mov hOwner,ebx ;установить владельца

     ret

co2:

     mov al,-1

     ret

EndProc CheckOwner

 

BeginProc TimeoutProc

     mov hTimeout,0 ;почистить обработчик

     cmp edx,hOwner ; все еще тот же владелец?

     jne short tol  ; пропустить, если нет

     test   bFakeData,FAKE_STAT_BUSY  ;отложенный ввод-вывод?

     jnz short tol  ; пропустить, если нет

     cmp hOwner,-1  ; имеется ли владелец?

     je  short tol  ; пропустить, если нет

     mov eax,hIRQ

     mov ebx,hOwner

     VxDcall VPICD_Set_Int_Request ;добавить прерывание

     mov al,bFakeData

     and al,NOT (FAKE_STAT_IRQ) ; указывает также в порте состояния

     or  al,FAKE_STAT_BUSY ; указывает, что больше не занято

     mov bFakeData,al

tol:

     ret

End Proc TimeoutProc

 

;IP Port_IO_Callback - выполняет доступ к FAKE_PORT

;

; ENTRY (вход)

;    EAX - выходное значение (для выходных операторов)

;    EBX - обработчик к текущему VM

;    ECX - тип операции ввода-вывода

;    DS,ES - FLAT

;

; EXIT (выход)




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



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