11,7 → 11,9 |
|
include 'proc32.inc' |
include 'imports.inc' |
include '../struct.inc' |
|
|
VID_INTEL = 0x8086 |
VID_NVIDIA = 0x10DE |
VID_VIA = 0x1106 |
149,10 → 151,24 |
public service_proc |
public version |
|
struct SRV |
srv_name rb 16 ;ASCIIZ string |
magic dd ? ;+0x10 ;'SRV ' |
size dd ? ;+0x14 ;size of structure SRV |
fd dd ? ;+0x18 ;next SRV descriptor |
bk dd ? ;+0x1C ;prev SRV descriptor |
base dd ? ;+0x20 ;service base address |
entry dd ? ;+0x24 ;service START function |
srv_proc dd ? ;+0x28 ;user mode service handler |
srv_proc_ex dd ? ;+0x2C ;kernel mode service handler |
ends |
|
|
section '.flat' code readable align 16 |
|
proc START stdcall, state:dword |
|
mov eax, [srv_entry] |
cmp [state], 1 |
jne .stop |
|
161,9 → 177,16 |
call SysMsgBoardStr |
end if |
|
test eax, eax |
jnz .done |
call detect_controller |
ret |
.stop: |
test eax, eax |
jz .done |
leave |
jmp eax |
.done: |
xor eax, eax |
ret |
endp |
237,7 → 260,11 |
end if |
|
stdcall GetService, dword[edi+4] |
test eax, eax |
jz .err |
|
mov edx, [eax+SRV.entry] |
mov [srv_entry], edx |
ret |
|
.err: |
377,6 → 404,8 |
|
version dd (5 shl 16) or (API_VERSION and 0xFFFF) |
|
srv_entry dd 0 |
|
intelac97 db 'INTELAC97', 0 |
vt823x db 'VT823X', 0 |
sis db 'SIS', 0 |
390,4 → 419,5 |
msgLoading db 'Loading ',0 |
msgNewline db 13,10,0 |
|
|
section '.data' data readable writable align 16 |