142,11 → 142,7 |
cmp [edi+SRV.size], sizeof.SRV |
jne .fail |
|
; stdcall [edi+SRV.srv_proc], esi |
mov eax, [edi+SRV.srv_proc] |
test eax, eax |
jz .fail |
stdcall eax, esi |
stdcall [edi+SRV.srv_proc], esi |
ret |
.fail: |
xor eax, eax |
178,11 → 174,7 |
cmp [eax+SRV.size], sizeof.SRV |
jne .fail |
|
; stdcall [eax+SRV.srv_proc], ecx |
mov eax, [eax+SRV.srv_proc] |
test eax, eax |
jz .fail |
stdcall eax, ecx |
stdcall [eax+SRV.srv_proc], ecx |
ret |
.fail: |
or eax, -1 |
221,31 → 213,9 |
ret |
endp |
|
reg_service: |
xor eax, eax |
mov ecx, [esp+8] |
jecxz .nothing |
push sizeof.SRV |
push ecx |
pushd [esp+12] |
call reg_service_ex |
.nothing: |
ret 8 |
align 4 |
proc reg_service stdcall, name:dword, handler:dword |
|
reg_usb_driver: |
push sizeof.USBSRV |
pushd [esp+12] |
pushd [esp+12] |
call reg_service_ex |
test eax, eax |
jz .nothing |
mov ecx, [esp+12] |
mov [eax+USBSRV.usb_func], ecx |
.nothing: |
ret 12 |
|
proc reg_service_ex stdcall, name:dword, handler:dword, srvsize:dword |
|
push ebx |
|
xor eax, eax |
253,10 → 223,10 |
cmp [name], eax |
je .fail |
|
; cmp [handler], eax |
; je .fail |
cmp [handler], eax |
je .fail |
|
mov eax, [srvsize] |
mov eax, sizeof.SRV |
call malloc |
test eax, eax |
jz .fail |