Rev 1074 | Rev 1078 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1074 | Rev 1077 | ||
---|---|---|---|
Line 3625... | Line 3625... | ||
3625 | * +0: dword: identifier for underlying data of signal |
3625 | * +0: dword: identifier for underlying data of signal |
3626 | * +4: data of signal (20 bytes), format of which is defining by |
3626 | * +4: data of signal (20 bytes), format of which is defining by |
3627 | first dword |
3627 | first dword |
Line 3628... | Line 3628... | ||
3628 | 3628 | ||
3629 | ====================================================================== |
3629 | ====================================================================== |
3630 | ====== Function 68, subfunction 15 - set new exceptions handler ====== |
3630 | ====== Function 68, subfunction 15 - set FPU exception handler. ====== |
3631 | ====================================================================== |
- | |
3632 | Parameters: |
- | |
3633 | * eax = 68 - function number |
- | |
3634 | * ebx = 15 - subfunction number |
- | |
3635 | * ecx = address of the new exception handler |
- | |
3636 | * edx = the mask of processing exceptions |
- | |
3637 | Returned value: |
- | |
3638 | * eax = address of the old exception handler (0, if it was not set) |
- | |
3639 | * ebx = the old mask of exception handler |
- | |
3640 | Remarks: |
- | |
3641 | * Bit number in mask of exceptions is correspond to exception number |
- | |
3642 | by CPU-specification (Intel-PC). For example, FPU-exception have |
- | |
3643 | number 16 (#MF), and SSE-exception - 19 (#XF) |
3631 | ====================================================================== |
3644 | * The current implementation ignore the inquiry for hook of 7 |
- | |
3645 | exception - system process #NM by one's own. |
- | |
3646 | * User handler get exception number in stack parameter. So, correct |
- | |
3647 | exit from handler is: RET 4. Return from handler is to the same |
3632 | Deleted (in current implementation only 0 is returned). |
3648 | instruction, that was cause the exception |
- | |
3649 | * When control is transfering to user handler, corresponding bit in |
- | |
3650 | exception mask is clearing. Rising this exception in consequence |
- | |
3651 | - reduce to default-handling. Exactly: terminating the application, |
- | |
3652 | or suspending with debug-notify to owner. |
- | |
3653 | * After completion of critical operations in user handler, it may be |
- | |
3654 | rising corresponding bit in exception mask by using subfunction 18 |
- | |
3655 | Clearing exceptions flags in FPU and/or XMM modules - is |
- | |
Line 3656... | Line 3633... | ||
3656 | responsibility of user handler too. |
3633 | Using subfunctions 24, 25 is true. |
3657 | 3634 | ||
3658 | ====================================================================== |
3635 | ====================================================================== |
3659 | ============= Function 68, subfunction 16 - load driver. ============= |
3636 | ============= Function 68, subfunction 16 - load driver. ============= |
Line 3692... | Line 3669... | ||
3692 | * Function codes and the structure of input/output data |
3669 | * Function codes and the structure of input/output data |
3693 | are defined by driver. |
3670 | are defined by driver. |
3694 | * Previously one must obtain driver handle by subfunction 16. |
3671 | * Previously one must obtain driver handle by subfunction 16. |
Line 3695... | Line 3672... | ||
3695 | 3672 | ||
3696 | ====================================================================== |
3673 | ====================================================================== |
3697 | ==== Function 68, subfunction 18 - change state of signal activity === |
3674 | ====== Function 68, subfunction 18 - set SSE exception handler. ====== |
3698 | ====================================================================== |
- | |
3699 | Parameters: |
- | |
3700 | * eax = 68 - function number |
- | |
3701 | * ebx = 15 - subfunction number |
- | |
3702 | * ecx = signal number |
- | |
3703 | * edx = value of activity (0/1) |
- | |
3704 | Returned value: |
- | |
3705 | * eax = value of old activity for this signal (0/1) |
- | |
3706 | Remarks: |
3675 | ====================================================================== |
3707 | * In current implementation, it is changed only exception mask for |
- | |
3708 | user exception handler, wich was previously set by subfunction 15. |
3676 | Deleted (in current implementation only 0 is returned). |
Line 3709... | Line 3677... | ||
3709 | At that, number of signal correspond to exception number. |
3677 | Using subfunctions 24, 25 is true. |
3710 | 3678 | ||
3711 | ====================================================================== |
3679 | ====================================================================== |
3712 | =============== Function 68, subfunction 19 - load DLL. ============== |
3680 | =============== Function 68, subfunction 19 - load DLL. ============== |
Line 3745... | Line 3713... | ||
3745 | * If ecx=0, the function frees memory block at edx and returns 0. |
3713 | * If ecx=0, the function frees memory block at edx and returns 0. |
3746 | * The contents of the block are unchanged up to the shorter of |
3714 | * The contents of the block are unchanged up to the shorter of |
3747 | the new and old sizes. |
3715 | the new and old sizes. |
Line 3748... | Line 3716... | ||
3748 | 3716 | ||
- | 3717 | ====================================================================== |
|
- | 3718 | ====== Function 68, subfunction 24 - set new exceptions handler ====== |
|
- | 3719 | ====================================================================== |
|
- | 3720 | Parameters: |
|
- | 3721 | * eax = 68 - function number |
|
- | 3722 | * ebx = 24 - subfunction number |
|
- | 3723 | * ecx = address of the new exception handler |
|
- | 3724 | * edx = the mask of processing exceptions |
|
- | 3725 | Returned value: |
|
- | 3726 | * eax = address of the old exception handler (0, if it was not set) |
|
- | 3727 | * ebx = the old mask of exception handler |
|
- | 3728 | Remarks: |
|
- | 3729 | * Bit number in mask of exceptions is correspond to exception number |
|
- | 3730 | by CPU-specification (Intel-PC). For example, FPU-exception have |
|
- | 3731 | number 16 (#MF), and SSE-exception - 19 (#XF) |
|
- | 3732 | * The current implementation ignore the inquiry for hook of 7 |
|
- | 3733 | exception - system process #NM by one's own. |
|
- | 3734 | * User handler get exception number in stack parameter. So, correct |
|
- | 3735 | exit from handler is: RET 4. Return from handler is to the same |
|
- | 3736 | instruction, that was cause the exception |
|
- | 3737 | * When control is transfering to user handler, corresponding bit in |
|
- | 3738 | exception mask is clearing. Rising this exception in consequence |
|
- | 3739 | - reduce to default-handling. Exactly: terminating the application, |
|
- | 3740 | or suspending with debug-notify to owner. |
|
- | 3741 | * After completion of critical operations in user handler, it may be |
|
- | 3742 | rising corresponding bit in exception mask by using subfunction 18 |
|
- | 3743 | Clearing exceptions flags in FPU and/or XMM modules - is |
|
- | 3744 | responsibility of user handler too. |
|
- | 3745 | ||
- | 3746 | ====================================================================== |
|
- | 3747 | ==== Function 68, subfunction 25 - change state of signal activity === |
|
- | 3748 | ====================================================================== |
|
- | 3749 | Parameters: |
|
- | 3750 | * eax = 68 - function number |
|
- | 3751 | * ebx = 25 - subfunction number |
|
- | 3752 | * ecx = signal number |
|
- | 3753 | * edx = value of activity (0/1) |
|
- | 3754 | Returned value: |
|
- | 3755 | * eax = value of old activity for this signal (0/1) |
|
- | 3756 | Remarks: |
|
- | 3757 | * In current implementation, it is changed only exception mask for |
|
- | 3758 | user exception handler, wich was previously set by subfunction 15. |
|
- | 3759 | At that, number of signal correspond to exception number. |
|
- | 3760 | ||
3749 | ====================================================================== |
3761 | ====================================================================== |
3750 | ====================== Fucntion 69 - debugging. ====================== |
3762 | ====================== Fucntion 69 - debugging. ====================== |
3751 | ====================================================================== |
3763 | ====================================================================== |
3752 | A process can load other process as debugged by set of corresponding |
3764 | A process can load other process as debugged by set of corresponding |
3753 | bit by call to subfunction 7 of function 70. |
3765 | bit by call to subfunction 7 of function 70. |