Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        protected override void Destroy()
        {
            if (_hasBeenInitialized)
            {
                KProcess creatorProcess = ClientSession.CreatorProcess;

                creatorProcess.ResourceLimit?.Release(LimitableResource.Session, 1);

                creatorProcess.DecrementReferenceCount();
            }
        }
Exemplo n.º 3
0
        protected override void Destroy()
        {
            if (_hasBeenInitialized)
            {
                if (!_isMapped && _creator.MemoryManager.UnborrowTransferMemory(Address, Size, _pageList) != KernelResult.Success)
                {
                    throw new InvalidOperationException("Unexpected failure restoring transfer memory attributes.");
                }

                _creator.ResourceLimit?.Release(LimitableResource.TransferMemory, 1);
                _creator.DecrementReferenceCount();
            }
        }