SVC: Difference between revisions
m Count attributes were swapped |
No edit summary |
||
Line 1,167: | Line 1,167: | ||
svcDebugActiveProcess stops execution of the target process, the normal method for resuming it requires svcContinueDebugEvent(see above). Closing the debug handle also results in execution being resumed. | svcDebugActiveProcess stops execution of the target process, the normal method for resuming it requires svcContinueDebugEvent(see above). Closing the debug handle also results in execution being resumed. | ||
= Structures = | = Enum/Structures = | ||
== DeviceName == | == DeviceName == | ||
{| class=wikitable | {| class=wikitable | ||
Line 1,264: | Line 1,264: | ||
|- | |- | ||
| 4 || LimitableResource_Sessions | | 4 || LimitableResource_Sessions | ||
|} | |||
== ProcessState == | |||
{| class=wikitable | |||
! Value || Name | |||
|- | |||
| 0 || ProcessState_Created | |||
|- | |||
| 1 || | |||
|- | |||
| 2 || | |||
|- | |||
| 3 || | |||
|- | |||
| 4 || ProcessState_Running | |||
|- | |||
| 5 || ProcessState_Exiting | |||
|- | |||
| 6 || ProcessState_Exited | |||
|- | |||
| 7 || ProcessState_DebugSuspended | |||
|} | |} | ||
Line 1,384: | Line 1,405: | ||
! Value || Type || Meaning | ! Value || Type || Meaning | ||
|- | |- | ||
| <code>0x00000000</code> || | | <code>0x00000000</code> || MemoryType_Unmapped || | ||
|- | |- | ||
| <code>0x00002001</code> || | | <code>0x00002001</code> || MemoryType_Io || Mapped by kernel capability parsing in [[#svcCreateProcess]]. | ||
|- | |- | ||
| <code>0x00042002</code> || | | <code>0x00042002</code> || MemoryType_Normal || Mapped by kernel capability parsing in [[#svcCreateProcess]]. | ||
|- | |- | ||
| <code>0x00DC7E03</code> || | | <code>0x00DC7E03</code> || MemoryType_CodeStatic || Mapped during [[#svcCreateProcess]]. | ||
|- | |- | ||
| <code>0x01FEBD04</code> || | | <code>0x01FEBD04</code> || MemoryType_CodeMutable || Transition from 0xDC7E03 performed by [[#svcSetProcessMemoryPermission]]. | ||
|- | |- | ||
| <code>0x017EBD05</code> || | | <code>0x017EBD05</code> || MemoryType_Heap || Mapped using [[#svcSetHeapSize]]. | ||
|- | |- | ||
| <code>0x00402006</code> || | | <code>0x00402006</code> || MemoryType_SharedMemory || Mapped using [[#svcMapSharedMemory]]. | ||
|- | |- | ||
| <code>0x00482907</code> || [1.0.0] | | <code>0x00482907</code> || [1.0.0] MemoryType_WeirdSharedMemory || Mapped using [[#svcMapMemory]]. | ||
|- | |- | ||
| <code>0x00DD7E08</code> || | | <code>0x00DD7E08</code> || MemoryType_ModuleCodeStatic || Mapped using [[#svcMapProcessCodeMemory]]. | ||
|- | |- | ||
| <code>0x01FFBD09</code> || | | <code>0x01FFBD09</code> || MemoryType_ModuleCodeMutable || Transition from 0xDD7E08 performed by [[#svcSetProcessMemoryPermission]]. | ||
|- | |- | ||
| <code>0x005C3C0A</code> || [[IPC_Marshalling|IPC]] buffers || IPC buffers with descriptor flags=0 | | <code>0x005C3C0A</code> || [[IPC_Marshalling|MemoryType_IpcBuffer0]] || IPC buffers with descriptor flags=0. | ||
|- | |||
| <code>0x005C3C0B</code> || MemoryType_MappedMemory || Mapped using [[#svcMapMemory]]. | |||
|- | |||
| <code>0x0040200C</code> || [[Thread Local Storage|MemoryType_ThreadLocal]] || Mapped during [[#svcCreateThread]]. | |||
|- | |||
| <code>0x015C3C0D</code> || MemoryType_TransferMemoryIsolated || Mapped using [[#svcMapTransferMemory]] when the owning process has perm=0. | |||
|- | |||
| <code>0x005C380E</code> || MemoryType_TransferMemory || Mapped using [[#svcMapTransferMemory]] when the owning process has perm!=0. | |||
|- | |||
| <code>0x0040380F</code> || MemoryType_ProcessMemory || Mapped using [[#svcMapProcessMemory]]. | |||
|- | |||
| <code>0x00000010</code> || MemoryType_Reserved || | |||
|- | |||
| <code>0x005C3811</code> || [[IPC_Marshalling|MemoryType_IpcBuffer1]] || IPC buffers with descriptor flags=1. | |||
|- | |||
| <code>0x004C2812</code> || [[IPC_Marshalling|MemoryType_IpcBuffer3]] || IPC buffers with descriptor flags=3. | |||
|- | |||
| <code>0x00002013</code> || MemoryType_KernelStack || Mapped in kernel during [[#svcCreateThread]]. | |||
|} | |||
== DebugEventInfo == | |||
{| class=wikitable | |||
! Offset || Length || Description | |||
|- | |||
| 0 || u32 || EventType | |||
|- | |||
| 4 || u32 || Flags (bit0: NeedsContinue) | |||
|- | |||
| 8 || u64 || ThreadId? | |||
|- | |||
| 0x10 || || PerTypeSpecifics | |||
|} | |||
AttachProcess specific: | |||
{| class=wikitable | |||
! Offset || Length || Description | |||
|- | |||
| 0x10 || u64 || TitleId | |||
|- | |||
| 0x18 || u64 || ProcessId | |||
|- | |||
| 0x20 || char[12] || ProcessName | |||
|- | |||
| 0x2C || u32 || MmuFlags | |||
|} | |||
AttachThread specific: | |||
{| class=wikitable | |||
! Offset || Length || Description | |||
|- | |||
| 0x10 || u64 || | |||
|- | |||
| 0x18 || u64 || | |||
|- | |||
| 0x20 || u64 || | |||
|} | |||
ExitProcess/ExitThread specific: | |||
{| class=wikitable | |||
! Offset || Length || Description | |||
|- | |||
| 0x10 || u32 || ProcessId/ThreadId? | |||
|} | |||
Exception specific: | |||
{| class=wikitable | |||
! Offset || Length || Description | |||
|- | |||
| 0x10 || u64 || ExceptionType | |||
|- | |||
| 0x18 || u64 || | |||
|- | |||
| 0x20 || || PerExceptionSpecifics | |||
|} | |||
=== DebugEventType === | |||
{| class=wikitable | |||
! Value || Name | |||
|- | |||
| 0 || DebugEvent_AttachProcess | |||
|- | |||
| 1 || DebugEvent_AttachThread | |||
|- | |||
| 2 || DebugEvent_ExitProcess? | |||
|- | |||
| 3 || DebugEvent_ExitThread | |||
|- | |||
| 3 || DebugEvent_Exception | |||
|} | |||
=== DebugExceptionType === | |||
{| class=wikitable | |||
! Value || Name | |||
|- | |- | ||
| | | 0 || | ||
|- | |- | ||
| | | 1 || | ||
|- | |- | ||
| | | 2 || | ||
|- | |- | ||
| | | 3 || | ||
|- | |- | ||
| | | 4 || | ||
|- | |- | ||
| | | 5 || | ||
|- | |- | ||
| | | 6 || | ||
|- | |- | ||
| | | 7 || | ||
|- | |- | ||
| | | 8 || | ||
|} | |} | ||