Rev 9779 | Rev 9822 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9779 | Rev 9796 | ||
---|---|---|---|
Line 3664... | Line 3664... | ||
3664 | ---------------------- Constants for registers: ---------------------- |
3664 | ---------------------- Constants for registers: ---------------------- |
3665 | eax - SF_SYS_MISC (68) |
3665 | eax - SF_SYS_MISC (68) |
3666 | ebx - SSF_MEM_ALLOC_RING (29) |
3666 | ebx - SSF_MEM_ALLOC_RING (29) |
Line 3667... | Line 3667... | ||
3667 | 3667 | ||
3668 | ====================================================================== |
3668 | ====================================================================== |
3669 | ============ Function 68, subfunction 31 - get data driver. ========== |
3669 | =========== Function 68, subfunction 31 - get driver data. =========== |
- | 3670 | ====================================================================== |
|
- | 3671 | Driver structures are organized into a doubly linked list. Its head is |
|
- | 3672 | a dummy structure with the forward and backward pointers only. Other |
|
- | 3673 | structures, if any, are as follows: |
|
- | 3674 | * +0: 16*byte: driver name, ASCIIZ |
|
- | 3675 | * +16 = +0x10: dword: pointer to the next driver structure |
|
- | 3676 | * +20 = +0x14: dword: pointer to the previous driver structure |
|
- | 3677 | * +24 = +0x18: dword: driver's base address |
|
- | 3678 | * +28 = +0x1C: dword: driver's entry point address |
|
- | 3679 | * +32 = +0x20: dword: driver's service handler address |
|
- | 3680 | ||
3670 | ====================================================================== |
3681 | -------------- Subsubfunction 1 - get driver list head. -------------- |
3671 | Параметры: |
3682 | Parameters: |
3672 | * eax = 68 - function number |
3683 | * eax = 68 - function number |
3673 | * ebx = 31 - subfunction number |
3684 | * ebx = 31 - subfunction number |
3674 | * ecx = function (1 - get first pointers on list, |
3685 | * ecx = 1 - subsubfunction number |
3675 | 2 - get item list) |
3686 | Returned value: |
3676 | * edx = if ecx=2 pointer on structure. |
3687 | * ebx = pointer to the next driver structure |
3677 | * edi = if ecx=2 pointer on memory for structure. |
- | |
3678 | Возвращаемое значение: |
- | |
3679 | * If ecx = 1, then ebx = fd |
- | |
3680 | ecx = bk |
- | |
3681 | * If ecx = 2, then eax = 0 ok |
- | |
3682 | eax = -1 error |
- | |
3683 | Примечания: |
- | |
3684 | * Returned structure |
- | |
3685 | data_service: |
- | |
3686 | .name: rb 16 |
- | |
3687 | .fd: rd 1 |
- | |
3688 | .bk: rd 1 |
- | |
3689 | .base: rd 1 |
- | |
3690 | .entry: rd 1 |
- | |
Line -... | Line 3688... | ||
- | 3688 | * ecx = pointer to the previous driver structure |
|
- | 3689 | ||
- | 3690 | --------- Subsubfunction 2 - get driver list item by pointer. -------- |
|
- | 3691 | Parameters: |
|
- | 3692 | * eax = 68 - function number |
|
- | 3693 | * ebx = 31 - subfunction number |
|
- | 3694 | * ecx = 2 - subsubfunction number |
|
- | 3695 | * edx = pointer to the list item |
|
- | 3696 | * edi = pointer to memory for driver data |
|
Line 3691... | Line 3697... | ||
3691 | .srv_proc: rd 1 |
3697 | Returned value: |
3692 | 3698 | * eax = 0 (ok), -1 (error) |
|
3693 | 3699 | ||
3694 | ====================================================================== |
3700 | ====================================================================== |