* RETURN VALUE
*
* REVISIONS
- *
*/
NTSTATUS STDCALL
EiReplyOrRequestPort (IN PEPORT Port,
if (Port == NULL)
{
- KeBugCheck(0);
+ KEBUGCHECK(0);
}
MessageReply = ExAllocatePoolWithTag(NonPagedPool, sizeof(QUEUEDMESSAGE),
memcpy(&MessageReply->Message, LpcReply, LpcReply->MessageSize);
}
- MessageReply->Message.Cid.UniqueProcess = PsGetCurrentProcessId();
- MessageReply->Message.Cid.UniqueThread = PsGetCurrentThreadId();
+ MessageReply->Message.ClientId.UniqueProcess = PsGetCurrentProcessId();
+ MessageReply->Message.ClientId.UniqueThread = PsGetCurrentThreadId();
MessageReply->Message.MessageType = MessageType;
MessageReply->Message.MessageId = InterlockedIncrement((LONG *)&EiNextLpcMessageId);
* RETURN VALUE
*
* REVISIONS
- *
*/
NTSTATUS STDCALL
NtReplyPort (IN HANDLE PortHandle,
* RETURN VALUE
*
* REVISIONS
- *
*/
NTSTATUS STDCALL
NtReplyWaitReceivePortEx(IN HANDLE PortHandle,
if (!NT_SUCCESS(Status))
{
- DPRINT1("NtReplyWaitReceivePortEx() = %x\n", Status);
+ if (STATUS_THREAD_IS_TERMINATING != Status)
+ {
+ DPRINT1("NtReplyWaitReceivePortEx() = %x\n", Status);
+ }
ObDereferenceObject(Port);
return(Status);
}
*/
KeAcquireSpinLock(&Port->Lock, &oldIrql);
Request = EiDequeueMessagePort(Port);
-
+ KeReleaseSpinLock(&Port->Lock, oldIrql);
+
if (Request->Message.MessageType == LPC_CONNECTION_REQUEST)
{
LPC_MESSAGE Header;
Header.DataSize = CRequest->ConnectDataLength;
Header.MessageSize = Header.DataSize + sizeof(LPC_MESSAGE);
Status = MmCopyToCaller(LpcMessage, &Header, sizeof(LPC_MESSAGE));
- if (!NT_SUCCESS(Status))
+ if (NT_SUCCESS(Status))
{
Status = MmCopyToCaller((PVOID)(LpcMessage + 1),
CRequest->ConnectData,
* undo what we did and return.
* FIXME: Also increment semaphore.
*/
+ KeAcquireSpinLock(&Port->Lock, &oldIrql);
EiEnqueueMessageAtHeadPort(Port, Request);
KeReleaseSpinLock(&Port->Lock, oldIrql);
ObDereferenceObject(Port);
}
if (Request->Message.MessageType == LPC_CONNECTION_REQUEST)
{
+ KeAcquireSpinLock(&Port->Lock, &oldIrql);
EiEnqueueConnectMessagePort(Port, Request);
KeReleaseSpinLock(&Port->Lock, oldIrql);
}
else
{
- KeReleaseSpinLock(&Port->Lock, oldIrql);
ExFreePool(Request);
}
* RETURN VALUE
*
* REVISIONS
- *
*/
NTSTATUS STDCALL
NtReplyWaitReceivePort (IN HANDLE PortHandle,
* RETURN VALUE
*
* REVISIONS
- *
*/
NTSTATUS STDCALL
NtReplyWaitReplyPort (HANDLE PortHandle,
PLPC_MESSAGE ReplyMessage)
{
UNIMPLEMENTED;
+ return(STATUS_NOT_IMPLEMENTED);
}