Process Manager services: Difference between revisions
Line 30: | Line 30: | ||
If launch_flags has mask 1 set, it sets mask 1 in process flags. | If launch_flags has mask 1 set, it sets mask 1 in process flags. | ||
If launch_flags | If launch_flags has mask 0x10 set, it sets mask 8 in process flags. | ||
If ((*(u8*) (info_output+2)) & 3) is == 1, it sets 0x40 in the process flags, and signals the event returned by [[#EnableDebug]]. svcStartProcess is not called in this case, it has to be done manually by the [[#StartProcess]] command. | If ((*(u8*) (info_output+2)) & 3) is == 1, it sets 0x40 in the process flags, and signals the event returned by [[#EnableDebug]]. svcStartProcess is not called in this case, it has to be done manually by the [[#StartProcess]] command. | ||
If the title-id matches the title-id given in [[#EnableDebugForTitleId]], then svcStartProcess is not called. Instead process remains in suspended state, and has to be done manually by the [[#StartProcess]] command. | |||
If launch_flags has mask 2 set, svcStartProcess is skipped. | |||
Finally it does svcStartProcess on the process handle that was returned by [[Loader_services|ldr:pm]] CreateProcess, and sets process state to 2. | Finally it does svcStartProcess on the process handle that was returned by [[Loader_services|ldr:pm]] CreateProcess, and sets process state to 2. | ||
Thus at the point of launch, the pid is already registered in ldr, fs, sm, and pm. | Thus at the point of launch, the pid is already registered in ldr, fs, sm, and pm. |