Changes

174 bytes added ,  21:39, 31 January 2016
Line 79: Line 79:     
The type of parameter is described by the bits 1-3 in the translation descriptor. Parameter types accepted for sending by the kernel are: 0, 1, 2, 5, 6, 7.  
 
The type of parameter is described by the bits 1-3 in the translation descriptor. Parameter types accepted for sending by the kernel are: 0, 1, 2, 5, 6, 7.  
Type 0 is used to send handles across processes:
+
 
if desc & 0x30 == 0x20:
+
Type 0 is used to send handles across processes. The corresponding translation descriptor looks as follows:
  write process id to value
+
{| class="wikitable" border="1"
  else:
+
|-
  translate handle
+
!  Bits
  if desc & 0x30 == 0x10:
+
! Description
    close handle for caller
+
|-
 +
| 4
 +
| If set, the handle is closed for the caller. Ignored if bit5 is set.
 +
|-
 +
| 5
 +
| If set, the process ID is written to value. Otherwise, translate the handle between client and server.
 +
|}
    
For replies, only 0, 1, 5, 6, 7 are allowed. In other words any type 2 fields must be zeroed before calling svcReplyAndReceive on the server-side. For replies, type 0, 1, and 2 are ignored. Types 5, 6, and 7 do something with the mem pointer upon reply. The type 0 descriptor can be used to ignore parameters. The number of parameters covered by a type-0 descriptor is (desc >> 26) + 1.
 
For replies, only 0, 1, 5, 6, 7 are allowed. In other words any type 2 fields must be zeroed before calling svcReplyAndReceive on the server-side. For replies, type 0, 1, and 2 are ignored. Types 5, 6, and 7 do something with the mem pointer upon reply. The type 0 descriptor can be used to ignore parameters. The number of parameters covered by a type-0 descriptor is (desc >> 26) + 1.
549

edits