public new static KernelResult RemoveName(Horizon System, string Name) { KAutoObject FoundObj = KAutoObject.FindNamedObject(System, Name); if (!(FoundObj is KClientPort)) { return(KernelResult.NotFound); } return(KAutoObject.RemoveName(System, Name)); }
private KernelResult ConnectToNamedPort(ulong namePtr, out int handle) { handle = 0; if (!KernelTransfer.UserToKernelString(_system, namePtr, 12, out string name)) { return(KernelResult.UserCopyFailed); } if (name.Length > 11) { return(KernelResult.MaximumExceeded); } KAutoObject autoObj = KAutoObject.FindNamedObject(_system, name); if (!(autoObj is KClientPort clientPort)) { return(KernelResult.NotFound); } KProcess currentProcess = _system.Scheduler.GetCurrentProcess(); KernelResult result = currentProcess.HandleTable.ReserveHandle(out handle); if (result != KernelResult.Success) { return(result); } result = clientPort.Connect(out KClientSession clientSession); if (result != KernelResult.Success) { currentProcess.HandleTable.CancelHandleReservation(handle); return(result); } currentProcess.HandleTable.SetReservedHandleObj(handle, clientSession); clientSession.DecrementReferenceCount(); return(result); }