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 ()




- -  - -  - -