0,0 → 1,61 |
format PE DLL native |
entry START |
|
__DEBUG__ = 1 |
__DEBUG_LEVEL__ = 2 |
|
section '.flat' readable writable executable |
|
include '../../proc32.inc' |
include '../../struct.inc' |
include '../../macros.inc' |
include '../../fdo.inc' |
|
proc START c, reason:dword |
|
DEBUGF 2,"Loading 'asm_drv' driver\n" |
cmp [reason], DRV_ENTRY |
jne .fail |
|
invoke RegService, my_service, service_proc |
ret |
|
.fail: |
xor eax, eax |
ret |
|
endp |
|
proc service_proc stdcall, ioctl:dword |
|
mov ebx, [ioctl] |
mov eax, [ebx + IOCTL.io_code] |
cmp eax, 0 ; FUNCTION ADD(a+b); |
jne .fail |
|
mov eax, [ebx + IOCTL.input] |
mov ecx, eax |
add ecx, 4 |
|
mov eax, [eax] |
add eax, [ecx] |
|
mov ecx, [ebx + IOCTL.output] |
mov [ecx], eax |
|
xor eax, eax |
ret |
|
.fail: |
or eax, -1 |
ret |
endp |
|
data fixups |
end data |
|
include '../../peimport.inc' |
|
my_service db 'asm_drv',0 ; max 16 chars include zero |
|
include_debug_strings |