Ассемблер для Windows




Программа загружающая использующая и выгружающая динамический драйвер - часть 2


lpvOutBuffer - указатель на буфер, в который драйвер может поместить информацию для вызывающей программы.

cbOutBuffer - количество байт в буфере.

lpcbBytesReturned - количество возвращаемых байт.

lpoOverlapped - указатель на OverLapped-структуру.

hDevice - дескриптор драйвера, возвращаемый функцией CreateFile.

tagProcess - признак процесса.

.386P include vmm.inc include vcond.inc include vwin32.inc include shell.inc

DECLARE_VIRTUAL_DEVICE MSG,1,0, MSG_Control,\ UNDEFINED_DEVICE_ID, UNDEFINED_INIT_ORDER

Begin_control_dispatch MSG ; будем обрабатывать сообщение w32_Device!oControl ; процедурой PROC1 Control_Dispatch w32_DeviceIoControl, PROC1 End_control_dispatch MSG

; сегмент данных VxD_PAGEABLE_DATA_SEG CAP1 DB "Окно сообщения",0 MES1 DB 50 DUP (0) VxD_PAGEABLE_DATA_ENDS

; сегмент кода VxD_PAGEABLE_CODE_SEG BeginProc PROC1 CMP DWORD PTR [ESI]+12,DIOC_Open JNE L1 XOR EAX,EAX JMP _EXIT L1: CMP DWORD PTR [ESI]+12,3 JNZ _EXIT ; длина строки MOV EDI,DWORD PTR [ESI]+16 VMMCall _lstrlen, <EDI> ; копировать в буфер INC EAX ; длина VMMCall _lstrcpyn,<OFFSET MES1,EDI,EAX> ; вызвать функцию SHELL_Message MOV ECX,OFFSET MES1 ; DWORD PTR [ESI]+14 MOV EDI,OFFSET CAP1 MOV EAX,MB_OK + MB_ICONEXCLAMATION VMMCall Get_Sys_VM_Handle ; адрес CaliBack функции, в данном случае NULL XOR ESI,ESI ; ссылка на данные для CallBack-функции XOR EDX,EDX VxDCall SHELL_Message XOR EAX,EAX _EXIT: RET EndProc PROC1 VxD_PAGEABLE_CODE_ENDS

end




Содержание  Назад  Вперед