WSTEP DO VxD
Writeln by [CoxoC]
Zaczne od tego ze VxDki dziela sie na STATIC i DYNAMICALLY-LOADABLE.
Na wstepie przytaczam znalezione przeze mnie opisy segmentow VxDkow STATYCZNYCH :
VxD_CODE - jest to protected-mode code segment. Ten segment zawiera
procedure kontrolna urzadzenia , callback procedury ,
serwisy, i API procedury . Ten segment jest rowniez nazywany
_LTEXT . W kodzie uzywa sie makr :
VxD_CODE_SEG
;kod
VxD_CODE_ENDS
VxD_DATA - jest to protected-mode data segment. Ten segment zawiera
device descriptor block, service table i globalne dane
wirtualnego urzadzenia.Inna nazwa to _LDATA. Przyklad:
VxD_DATA_SEG
;dane
VxD_DATA_ENDS
VxD_ICODE - Segment inicjalizacyjny trybu chronionego. Ten segment
przewaznie zawiera procedury i serwisy potrzebne do inicjacji
urzadzenia . Virtual manager (VMM) odlacza ten segment po
odbiorze komunikatu Init_Complete. Inna nazwa to _ITEXT
VxD_ICODE_SEG
;kod
VxD_ICODE_ENDS
VxD_IDATA - Podobnie jak segment _ITEXT jest odlaczany przez VMM po
odbiorze kominukatu Init_Complete. Sluzy on do przechowywania
danych procedur inicjalizacyjnych . inna nazwa to _IDATA.
VxD_IDATA_SEG
;dane
VxD_IDATA_ENDS
VxD_REAL_INIT - jest to real-mode inicjalizacyjny segment. Zawiera on real-mode
procedure inicjalizacyjna oraz dane. VMM wywoluje ta procedure
przed wgraniem reszty kodu Virtual device i odlacza ten segment
wtedy gdy procedura zakonczy swoje dzialanie. Ten segment wystepuje
tylko w statycznych VxDkach ! .Makra
VxD_REAL_INIT_SEG
VxD_REAL_INIT_ENDS
definiuja poczatek i koniec tego segmentu. Inna nazwa to _RTEXT
Caly kod i segmenty danych z wyjatkiem real-mode initialization segmentu sa 32-bitowe,
flat model i protected mode. Znaczy to ze te segmenty posiadaja 32bitowe offsety i nalezy
uzywac makra OFFSET32 zamiast OFFSET.Virtual devices nie moga uzywac CS , DS , ES i SS
rejestrow za to moga uzywac FS i GS rejestrow.
Jezeli nasz VxD nazywa sie : "PIERWSZY" i jest DYNAMICALLY-LOADABLE to przykladowy
szkielet powinien wygladac nastepujaco :
;============================================================================
; I N C L U D E S
;============================================================================
.486p
.xlist
include vmm.inc ;Przykladowa lista
include vwin32.inc
include shell.inc
include vkd.inc
include ifsmgr.inc
include vmd.inc
include debug.inc
include minivdd.inc
.list
;============================================================================
; C Z E S C I N I C J A L I Z A C Y J N A U R Z A D Z E N I A
;============================================================================
VXD_Icode_Seg
BeginProc PIERWSZY_Device_Init
clc
ret
EndProc PIERWSZY_Device_Init
VXD_Icode_Ends
;============================================================================
; D E K L A R A C J A U R Z A D Z E N I A
;============================================================================
VXD_Locked_Code_Seg
Declare_Virtual_Device PIERWSZY,0,1,PIERWSZY_Control,Undefined_Device_ID, \
Undefined_Init_Order,,
;----------------------------------------------------------------------------
;
; Procedura kontrolna urzadzenia dla VxD
;
;----------------------------------------------------------------------------
BeginProc PIERWSZY_Control
Control_Dispatch SYS_DYNAMIC_DEVICE_INIT, PIERWSZY_Device_Init
Control_Dispatch SYS_DYNAMIC_DEVICE_EXIT, PIERWSZY_Device_Exit
Control_Dispatch W32_DEVICEIOCONTROL, PIERWSZY_ioctl
clc
ret
SWAPPAGE_Control ENDP
BeginProc PIERWSZY_ioctl
mov ecx,[esi].dwIoControlCode
xor eax, eax
clc
ret
EndProc PIERWSZY_ioctl
;----------------------------------------------------------------------------
;
; Procedura konczaca
;
;----------------------------------------------------------------------------
BeginProc PIERWSZY_Device_Exit
clc
ret
EndProc PIERWSZY_Device_Exit
;============================================================================
; D A N E
;============================================================================
dana1 db 0
;============================================================================
; C Z E S C G L O W N A
;============================================================================
BeginProc Procedurka
clc
ret
EndProc Procedurka
VXD_LOCKED_CODE_ENDS
end
;=========================== K O N I E C K O D U ==========================
Teraz nasuwa sie pytanie w jaki sposob nalezy ten kod skompilowac ... Odsylam
do tutoriali Iczeliona.
Wyszukiwarka
Podobne podstrony:
FORMATY PLIKóW VxDtut4FORMATY PLIKóW VxDtut5FORMATY PLIKóW VxDtut1FORMATY PLIKóW VxDtut2FORMATY PLIKóW VxDtut6FORMATY PLIKóW VxDtut3Dostosuj swój stary Office do nowych formatów plikówFORMATY PLIKóW GifFORMATY PLIKóW BMPFORMATY PLIKóW Mod infoFORMATY PLIKóW PEFORMATY PLIKóW bgiSylwester Zajac Multimedia Formaty plikow graficznychFORMATY PLIKóW Modform4 Formaty plikow w DTPFORMATY PLIKóW GIF89MFORMATY PLIKóW PE formatFORMATY PLIKóW Mid frm4więcej podobnych podstron