forget update de.rc
[reactos.git] / reactos / ntoskrnl / lpc / send.c
index b1b8abb..8725e56 100644 (file)
  */
 NTSTATUS STDCALL
 LpcSendTerminationPort (IN PEPORT Port,
-                       IN LARGE_INTEGER CreationTime)
+                       IN LARGE_INTEGER CreateTime)
 {
   NTSTATUS Status;
-  LPC_TERMINATION_MESSAGE Msg;
+  CLIENT_DIED_MSG Msg;
 
 #ifdef __USE_NT_LPC__
-  Msg.Header.MessageType = LPC_NEW_MESSAGE;
+  Msg.h.u2.s2.Type = LPC_CLIENT_DIED;
 #endif
-  Msg.CreationTime = CreationTime;
-  Status = LpcRequestPort (Port, &Msg.Header);
+  Msg.h.u1.s1.TotalLength = sizeof(Msg);
+  Msg.h.u1.s1.DataLength = sizeof(Msg) - sizeof(PORT_MESSAGE);
+  Msg.CreateTime = CreateTime;
+  Status = LpcRequestPort (Port, &Msg.h);
   return(Status);
 }
 
@@ -58,15 +60,15 @@ LpcSendTerminationPort (IN PEPORT Port,
  */
 NTSTATUS STDCALL
 LpcSendDebugMessagePort (IN PEPORT Port,
-                        IN PLPC_DBG_MESSAGE Message,
-                        OUT PLPC_DBG_MESSAGE Reply)
+                        IN PDBGKM_MSG Message,
+                        OUT PDBGKM_MSG Reply)
 {
    NTSTATUS Status;
    KIRQL oldIrql;
    PQUEUEDMESSAGE ReplyMessage;
 
    Status = EiReplyOrRequestPort(Port,
-                                &Message->Header,
+                                &Message->h,
                                 LPC_REQUEST,
                                 Port);
    if (!NT_SUCCESS(Status))
@@ -91,7 +93,7 @@ LpcSendDebugMessagePort (IN PEPORT Port,
    KeAcquireSpinLock(&Port->Lock, &oldIrql);
    ReplyMessage = EiDequeueMessagePort(Port);
    KeReleaseSpinLock(&Port->Lock, oldIrql);
-   memcpy(Reply, &ReplyMessage->Message, ReplyMessage->Message.MessageSize);
+   memcpy(Reply, &ReplyMessage->Message, ReplyMessage->Message.u1.s1.TotalLength);
    ExFreePool(ReplyMessage);
 
    return(STATUS_SUCCESS);
@@ -118,7 +120,7 @@ LpcSendDebugMessagePort (IN PEPORT Port,
  * @implemented
  */
 NTSTATUS STDCALL LpcRequestPort (IN    PEPORT          Port,
-                                IN     PLPC_MESSAGE    LpcMessage)
+                                IN     PPORT_MESSAGE   LpcMessage)
 {
    NTSTATUS Status;
 
@@ -126,15 +128,15 @@ NTSTATUS STDCALL LpcRequestPort (IN       PEPORT          Port,
 
 #ifdef __USE_NT_LPC__
    /* Check the message's type */
-   if (LPC_NEW_MESSAGE == LpcMessage->MessageType)
+   if (LPC_NEW_MESSAGE == LpcMessage->u2.s2.Type)
    {
-      LpcMessage->MessageType = LPC_DATAGRAM;
+      LpcMessage->u2.s2.Type = LPC_DATAGRAM;
    }
-   else if (LPC_DATAGRAM == LpcMessage->MessageType)
+   else if (LPC_DATAGRAM == LpcMessage->u2.s2.Type)
    {
       return STATUS_INVALID_PARAMETER;
    }
-   else if (LpcMessage->MessageType > LPC_CLIENT_DIED)
+   else if (LpcMessage->u2.s2.Type > LPC_CLIENT_DIED)
    {
       return STATUS_INVALID_PARAMETER;
    }
@@ -170,7 +172,7 @@ NTSTATUS STDCALL LpcRequestPort (IN PEPORT          Port,
  * @implemented
  */
 NTSTATUS STDCALL NtRequestPort (IN     HANDLE          PortHandle,
-                               IN      PLPC_MESSAGE    LpcMessage)
+                               IN      PPORT_MESSAGE   LpcMessage)
 {
    NTSTATUS Status;
    PEPORT Port;
@@ -214,15 +216,15 @@ NTSTATUS STDCALL NtRequestPort (IN        HANDLE          PortHandle,
  */
 NTSTATUS STDCALL
 NtRequestWaitReplyPort (IN HANDLE PortHandle,
-                       PLPC_MESSAGE UnsafeLpcRequest,
-                       PLPC_MESSAGE UnsafeLpcReply)
+                       PPORT_MESSAGE UnsafeLpcRequest,
+                       PPORT_MESSAGE UnsafeLpcReply)
 {
    PETHREAD CurrentThread;
    struct _KPROCESS *AttachedProcess;
    PEPORT Port;
    PQUEUEDMESSAGE Message;
    KIRQL oldIrql;
-   PLPC_MESSAGE LpcRequest;
+   PPORT_MESSAGE LpcRequest;
    USHORT LpcRequestMessageSize = 0, LpcRequestDataSize = 0;
    KPROCESSOR_MODE PreviousMode;
    NTSTATUS Status = STATUS_SUCCESS;
@@ -234,12 +236,12 @@ NtRequestWaitReplyPort (IN HANDLE PortHandle,
        _SEH_TRY
          {
            ProbeForRead(UnsafeLpcRequest,
-                        sizeof(LPC_MESSAGE),
+                        sizeof(PORT_MESSAGE),
                         1);
            ProbeForWrite(UnsafeLpcReply,
-                         sizeof(LPC_MESSAGE),
+                         sizeof(PORT_MESSAGE),
                          1);
-           LpcRequestMessageSize = UnsafeLpcRequest->MessageSize;
+           LpcRequestMessageSize = UnsafeLpcRequest->u1.s1.TotalLength;
          }
        _SEH_HANDLE
          {
@@ -254,7 +256,7 @@ NtRequestWaitReplyPort (IN HANDLE PortHandle,
      }
    else
      {
-       LpcRequestMessageSize = UnsafeLpcRequest->MessageSize;
+       LpcRequestMessageSize = UnsafeLpcRequest->u1.s1.TotalLength;
      }
 
    DPRINT("NtRequestWaitReplyPort(PortHandle %x, LpcRequest %x, "
@@ -292,7 +294,7 @@ NtRequestWaitReplyPort (IN HANDLE PortHandle,
        KeDetachProcess();
      }
 
-   if (LpcRequestMessageSize > (sizeof(LPC_MESSAGE) + MAX_MESSAGE_DATA))
+   if (LpcRequestMessageSize > LPC_MAX_MESSAGE_LENGTH)
      {
        if (NULL != AttachedProcess)
          {
@@ -318,8 +320,8 @@ NtRequestWaitReplyPort (IN HANDLE PortHandle,
            RtlCopyMemory(LpcRequest,
                          UnsafeLpcRequest,
                          LpcRequestMessageSize);
-           LpcRequestMessageSize = LpcRequest->MessageSize;
-           LpcRequestDataSize = LpcRequest->DataSize;
+           LpcRequestMessageSize = LpcRequest->u1.s1.TotalLength;
+           LpcRequestDataSize = LpcRequest->u1.s1.DataLength;
          }
        _SEH_HANDLE
          {
@@ -343,11 +345,11 @@ NtRequestWaitReplyPort (IN HANDLE PortHandle,
        RtlCopyMemory(LpcRequest,
                      UnsafeLpcRequest,
                      LpcRequestMessageSize);
-       LpcRequestMessageSize = LpcRequest->MessageSize;
-       LpcRequestDataSize = LpcRequest->DataSize;
+       LpcRequestMessageSize = LpcRequest->u1.s1.TotalLength;
+       LpcRequestDataSize = LpcRequest->u1.s1.DataLength;
      }
 
-   if (LpcRequestMessageSize > (sizeof(LPC_MESSAGE) + MAX_MESSAGE_DATA))
+   if (LpcRequestMessageSize > LPC_MAX_MESSAGE_LENGTH)
      {
        ExFreePool(LpcRequest);
        if (NULL != AttachedProcess)
@@ -357,7 +359,7 @@ NtRequestWaitReplyPort (IN HANDLE PortHandle,
        ObDereferenceObject(Port);
        return(STATUS_PORT_MESSAGE_TOO_LONG);
      }
-   if (LpcRequestDataSize != (LpcRequestMessageSize - sizeof(LPC_MESSAGE)))
+   if (LpcRequestDataSize > LPC_MAX_DATA_LENGTH)
      {
        ExFreePool(LpcRequest);
        if (NULL != AttachedProcess)
@@ -406,15 +408,15 @@ NtRequestWaitReplyPort (IN HANDLE PortHandle,
        KeReleaseSpinLock(&Port->Lock, oldIrql);
        if (Message)
          {
-           DPRINT("Message->Message.MessageSize %d\n",
-                 Message->Message.MessageSize);
+           DPRINT("Message->Message.u1.s1.TotalLength %d\n",
+                 Message->Message.u1.s1.TotalLength);
            if (PreviousMode != KernelMode)
              {
                _SEH_TRY
                  {
                    RtlCopyMemory(UnsafeLpcReply,
                                  &Message->Message,
-                                 Message->Message.MessageSize);
+                                 Message->Message.u1.s1.TotalLength);
                  }
                _SEH_HANDLE
                  {
@@ -426,7 +428,7 @@ NtRequestWaitReplyPort (IN HANDLE PortHandle,
              {
                RtlCopyMemory(UnsafeLpcReply,
                              &Message->Message,
-                             Message->Message.MessageSize);
+                             Message->Message.u1.s1.TotalLength);
              }
            ExFreePool(Message);
          }
@@ -463,7 +465,7 @@ NtRequestWaitReplyPort (IN HANDLE PortHandle,
  * REVISIONS
  */
 NTSTATUS STDCALL NtWriteRequestData (HANDLE            PortHandle,
-                                    PLPC_MESSAGE       Message,
+                                    PPORT_MESSAGE      Message,
                                     ULONG              Index,
                                     PVOID              Buffer,
                                     ULONG              BufferLength,