FORMATY PLIKóW VxDtut0



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 VxDtut4
FORMATY PLIKóW VxDtut5
FORMATY PLIKóW VxDtut1
FORMATY PLIKóW VxDtut2
FORMATY PLIKóW VxDtut6
FORMATY PLIKóW VxDtut3
Dostosuj swój stary Office do nowych formatów plików
FORMATY PLIKóW Gif
FORMATY PLIKóW BMP
FORMATY PLIKóW Mod info
FORMATY PLIKóW PE
FORMATY PLIKóW bgi
Sylwester Zajac Multimedia Formaty plikow graficznych
FORMATY PLIKóW Modform
4 Formaty plikow w DTP
FORMATY PLIKóW GIF89M
FORMATY PLIKóW PE format
FORMATY PLIKóW Mid frm4

więcej podobnych podstron