Changes

Jump to navigation Jump to search
1,313 bytes added ,  21:33, 26 April 2014
Created page with "Every RPC command sent to services starts with a u32 header code: {| class="wikitable" border="1" |- ! Bits ! Description |- | 0-5 | Number of translate parameters (=x) |- | 6..."
Every RPC command sent to services starts with a u32 header code:
{| class="wikitable" border="1"
|-
! Bits
! Description
|-
| 0-5
| Number of translate parameters (=x)
|-
| 6-15
| Number of normal parameters (=y)
|-
| 16-23
| Command ID
|-
| 24-31
| Unknown
|}

The entire command has the following structure:
{| class="wikitable" border="1"
|-
! Word
! Size
! Description
|-
| 0
| 1
| Header code
|-
| 1
| x
| Normal parameters
|-
| x
| y
| Translate parameters
|}

Translate parameters are modified/translated transparently by the kernel. They are used to transfer handles/buffers between the different processes.

Translate parameters comes in pairs of two words, one descriptor and one value.

{| class="wikitable" border="1"
|-
! Descriptor
! Description
|-
| 0x00000000
| The corresponding value is a KHandle
|-
| 0x00000010
| The corresponding value is a KHandle, that should not be closed locally?
|-
| 0x00000020
| Let kernel set value to local ProcessID
|-
| 0x0000???2 <nowiki>|</nowiki> (size<<14)
| The corresponding value contains a ptr to a buffer of said size.
|-
| 0x0000000A <nowiki>|</nowiki> (size<<4)
| The corresponding value contains a ptr to a buffer of said size.
|-
| 0x0000000C <nowiki>|</nowiki> (size<<4)
| The corresponding value contains a ptr to a buffer of said size.
|}

Navigation menu