Subversion Repositories Kolibri OS

Rev

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
======================================================================