private KernelResult TerminateProcess(int handle) { KProcess process = _process.HandleTable.GetObject <KProcess>(handle); KernelResult result; if (process != null) { if (process == _system.Scheduler.GetCurrentProcess()) { result = KernelResult.Success; process.DecrementToZeroWhileTerminatingCurrent(); } else { result = process.Terminate(); process.DecrementReferenceCount(); } } else { result = KernelResult.InvalidHandle; } return(result); }