Rev 4430 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4430 | Rev 4433 | ||
---|---|---|---|
Line 623... | Line 623... | ||
623 | .fail: ;simply return to caller |
623 | .fail: ;simply return to caller |
624 | mov esp, ebp |
624 | mov esp, ebp |
625 | pop ebx ;restore exception number (#PF) |
625 | pop ebx ;restore exception number (#PF) |
626 | ret |
626 | ret |
Line 627... | Line -... | ||
627 | - | ||
628 | ; xchg bx, bx |
- | |
629 | ; add esp,12 ;clear in stack: locals(.err_addr) + #PF + ret_to_caller |
- | |
630 | ; restore_ring3_context |
- | |
631 | ; iretd |
- | |
632 | 627 | ||
633 | .user_space: |
628 | .user_space: |
634 | test eax, PG_MAP |
629 | test eax, PG_MAP |
635 | jnz .err_access ;Страница присутствует |
630 | jnz .err_access ;Страница присутствует |
Line 667... | Line 662... | ||
667 | 662 | ||
668 | .err_access: |
663 | .err_access: |
669 | ; access denied? this may be a result of copy-on-write protection for DLL |
664 | ; access denied? this may be a result of copy-on-write protection for DLL |
670 | ; check list of HDLLs |
665 | ; check list of HDLLs |
671 | and ebx, not 0xFFF |
666 | and ebx, not 0xFFF |
672 | mov eax, [CURRENT_TASK] |
- | |
673 | shl eax, 8 |
667 | mov eax, [current_process] |
674 | mov eax, [SLOT_BASE+eax+APPDATA.dlls_list_ptr] |
668 | mov eax, [eax+PROC.dlls_list_ptr] |
675 | test eax, eax |
669 | test eax, eax |
676 | jz .fail |
670 | jz .fail |
677 | mov esi, [eax+HDLL.fd] |
671 | mov esi, [eax+HDLL.fd] |
678 | .scan_hdll: |
672 | .scan_hdll: |
Line 902... | Line 896... | ||
902 | cli |
896 | cli |
903 | cld |
897 | cld |
904 | push ebx ecx |
898 | push ebx ecx |
905 | mov eax, [slot] |
899 | mov eax, [slot] |
906 | shl eax, 8 |
900 | shl eax, 8 |
907 | mov eax, [SLOT_BASE+eax+APPDATA.dlls_list_ptr] |
901 | mov eax, [SLOT_BASE+eax+APPDATA.process] |
- | 902 | mov eax, [eax+PROC.dlls_list_ptr] |
|
908 | test eax, eax |
903 | test eax, eax |
909 | jz .no_hdll |
904 | jz .no_hdll |
910 | mov ecx, [eax+HDLL.fd] |
905 | mov ecx, [eax+HDLL.fd] |
911 | .scan_hdll: |
906 | .scan_hdll: |
912 | cmp ecx, eax |
907 | cmp ecx, eax |