public void Dequeue(byte* MessageOut, int MessageMaxSize, int* MessageSizeOut)
{
if (Messages.Count <= 0)
{
//Console.Error.WriteLine("MsgPipe.Dequeue (Failed)");
throw (new SceKernelException(SceKernelErrors.ERROR_KERNEL_MESSAGE_PIPE_EMPTY));
}
else
{
//Console.Error.WriteLine("MsgPipe.Dequeue (Ok)");
var MessagePartition = Messages.Dequeue();
var ReadSize = Math.Min(MessagePartition.Size, MessageMaxSize);
PspMemory.ReadBytes(MessagePartition.Low, MessageOut, ReadSize);
MessagePartition.DeallocateFromParent();
if (MessageSizeOut != null)
{
*MessageSizeOut = ReadSize;
}
NoticeAvailableForSend();
}
}