Rev 363 | Rev 378 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 363 | Rev 377 | ||
---|---|---|---|
Line 239... | Line 239... | ||
239 | not eax |
239 | not eax |
240 | ret |
240 | ret |
241 | endp |
241 | endp |
242 | 242 | ||
Line -... | Line 243... | ||
- | 243 | ; param |
|
- | 244 | ; ebx= io_control |
|
- | 245 | ; |
|
- | 246 | ; retval |
|
- | 247 | ; eax= error code |
|
- | 248 | ||
243 | align 4 |
249 | align 4 |
244 | proc srv_handlerEx stdcall, ioctl:dword |
250 | srv_handlerEx: |
245 | mov esi, [ioctl] |
- | |
246 | test esi, esi |
251 | test ebx, ebx |
247 | jz .err |
252 | jz .fail |
248 | add esi, new_app_base |
253 | add ebx, new_app_base |
Line 249... | Line 254... | ||
249 | 254 | ||
250 | mov edi, [esi+handle] |
255 | mov eax, [ebx+handle] |
251 | cmp [edi+SRV.magic], ' SRV' |
256 | cmp [eax+SRV.magic], ' SRV' |
Line 252... | Line 257... | ||
252 | jne .fail |
257 | jne .fail |
253 | 258 | ||
Line 254... | Line 259... | ||
254 | cmp [edi+SRV.size], SRV_SIZE |
259 | cmp [eax+SRV.size], SRV_SIZE |
255 | jne .fail |
260 | jne .fail |
Line 256... | Line 261... | ||
256 | 261 | ||
257 | add [esi+input], new_app_base |
262 | add [ebx+input], new_app_base |
258 | add [esi+output], new_app_base |
263 | add [ebx+output], new_app_base |
259 | 264 | ||
260 | stdcall [edi+SRV.srv_proc], esi |
- | |
261 | ret |
- | |
262 | .fail: |
- | |
263 | xor eax, eax |
265 | stdcall [eax+SRV.srv_proc], ebx |
264 | not eax |
- | |
265 | mov [esi+output], eax |
- | |
266 | mov [esi+out_size], 4 |
- | |
267 | ret |
- | |
268 | .err: |
- | |
Line 269... | Line 266... | ||
269 | xor eax, eax |
266 | ret |
270 | not eax |
267 | .fail: |
271 | ret |
268 | or eax, -1 |
272 | endp |
269 | ret |