forget update de.rc
[reactos.git] / reactos / ntoskrnl / lpc / connect.c
index 7afa196..c2e5a50 100644 (file)
@@ -90,14 +90,14 @@ EiConnectPort(IN PEPORT* ConnectedPort,
   /*
    * Initialize the request message.
    */
-  RequestMessage->MessageHeader.DataSize =
+  RequestMessage->MessageHeader.u1.s1.DataLength =
     sizeof(EPORT_CONNECT_REQUEST_MESSAGE) + RequestConnectDataLength -
-    sizeof(LPC_MESSAGE);
-  RequestMessage->MessageHeader.MessageSize =
+    sizeof(PORT_MESSAGE);
+  RequestMessage->MessageHeader.u1.s1.TotalLength =
     sizeof(EPORT_CONNECT_REQUEST_MESSAGE) + RequestConnectDataLength;
   DPRINT("RequestMessageSize %d\n",
-        RequestMessage->MessageHeader.MessageSize);
-  RequestMessage->MessageHeader.SectionSize = 0;
+        RequestMessage->MessageHeader.u1.s1.TotalLength);
+  RequestMessage->MessageHeader.ClientViewSize = 0;
   RequestMessage->ConnectingProcess = PsGetCurrentProcess();
   ObReferenceObjectByPointer(RequestMessage->ConnectingProcess,
                             PROCESS_VM_OPERATION,
@@ -148,7 +148,7 @@ EiConnectPort(IN PEPORT* ConnectedPort,
   /*
    * Check for connection refusal.
    */
-  if (CReply->MessageHeader.MessageType == LPC_CONNECTION_REFUSED)
+  if (CReply->MessageHeader.u2.s2.Type == LPC_CONNECTION_REFUSED)
     {
       ObDereferenceObject(OurPort);
       ExFreePool(Reply);
@@ -240,15 +240,15 @@ NTSTATUS STDCALL
 NtConnectPort (PHANDLE                         UnsafeConnectedPortHandle,
               PUNICODE_STRING                  PortName,
               PSECURITY_QUALITY_OF_SERVICE     Qos,
-              PLPC_SECTION_WRITE               UnsafeWriteMap,
-              PLPC_SECTION_READ                UnsafeReadMap,
+              PPORT_VIEW               UnsafeWriteMap,
+              PREMOTE_PORT_VIEW                UnsafeReadMap,
               PULONG                           UnsafeMaximumMessageSize,
               PVOID                            UnsafeConnectData,
               PULONG                           UnsafeConnectDataLength)
 {
   HANDLE ConnectedPortHandle;
-  LPC_SECTION_WRITE WriteMap;
-  LPC_SECTION_READ ReadMap;
+  PORT_VIEW WriteMap;
+  REMOTE_PORT_VIEW ReadMap;
   ULONG MaximumMessageSize;
   PVOID ConnectData = NULL;
   ULONG ConnectDataLength = 0;
@@ -265,14 +265,10 @@ NtConnectPort (PHANDLE                            UnsafeConnectedPortHandle,
     {
       _SEH_TRY
         {
-          ProbeForWrite(UnsafeConnectedPortHandle,
-                        sizeof(HANDLE),
-                        sizeof(ULONG));
+          ProbeForWriteHandle(UnsafeConnectedPortHandle);
           if (UnsafeMaximumMessageSize != NULL)
             {
-              ProbeForWrite(UnsafeMaximumMessageSize,
-                            sizeof(ULONG),
-                            sizeof(ULONG));
+              ProbeForWriteUlong(UnsafeMaximumMessageSize);
             }
         }
       _SEH_HANDLE
@@ -297,11 +293,11 @@ NtConnectPort (PHANDLE                            UnsafeConnectedPortHandle,
           _SEH_TRY
             {
               ProbeForWrite(UnsafeWriteMap,
-                            sizeof(LPC_SECTION_WRITE),
+                            sizeof(PORT_VIEW),
                             1);
               RtlCopyMemory(&WriteMap,
                             UnsafeWriteMap,
-                            sizeof(LPC_SECTION_WRITE));
+                            sizeof(PORT_VIEW));
             }
           _SEH_HANDLE
             {
@@ -318,10 +314,10 @@ NtConnectPort (PHANDLE                            UnsafeConnectedPortHandle,
         {
           RtlCopyMemory(&WriteMap,
                         UnsafeWriteMap,
-                        sizeof(LPC_SECTION_WRITE));
+                        sizeof(PORT_VIEW));
         }
 
-      if (WriteMap.Length != sizeof(LPC_SECTION_WRITE))
+      if (WriteMap.Length != sizeof(PORT_VIEW))
        {
          return(STATUS_INVALID_PARAMETER_4);
        }
@@ -341,10 +337,7 @@ NtConnectPort (PHANDLE                             UnsafeConnectedPortHandle,
         {
           _SEH_TRY
             {
-              ProbeForRead(UnsafeConnectDataLength,
-                           sizeof(ULONG),
-                           1);
-              ConnectDataLength = *UnsafeConnectDataLength;
+              ConnectDataLength = ProbeForReadUlong(UnsafeConnectDataLength);
             }
           _SEH_HANDLE
             {
@@ -374,9 +367,7 @@ NtConnectPort (PHANDLE                              UnsafeConnectedPortHandle,
             {
               _SEH_TRY
                 {
-                  ProbeForWrite(UnsafeConnectData,
-                                ConnectDataLength,
-                                1);
+                  ProbeForWriteUlong(UnsafeConnectData);
                   RtlCopyMemory(ConnectData,
                                 UnsafeConnectData,
                                 ConnectDataLength);
@@ -410,7 +401,7 @@ NtConnectPort (PHANDLE                              UnsafeConnectedPortHandle,
                                     NULL,
                                     PORT_ALL_ACCESS,  /* DesiredAccess */
                                     LpcPortObjectType,
-                                    UserMode,
+                                    PreviousMode,
                                     NULL,
                                     (PVOID*)&NamedPort);
   if (!NT_SUCCESS(Status))
@@ -430,7 +421,7 @@ NtConnectPort (PHANDLE                              UnsafeConnectedPortHandle,
       Status = ObReferenceObjectByHandle(WriteMap.SectionHandle,
                                         SECTION_MAP_READ | SECTION_MAP_WRITE,
                                         MmSectionObjectType,
-                                        UserMode,
+                                        PreviousMode,
                                         (PVOID*)&SectionObject,
                                         NULL);
       if (!NT_SUCCESS(Status))
@@ -457,7 +448,7 @@ NtConnectPort (PHANDLE                              UnsafeConnectedPortHandle,
                         SectionOffset,
                         WriteMap.ViewSize,
                         &WriteMap.ViewBase,
-                        &WriteMap.TargetViewBase,
+                        &WriteMap.ViewRemoteBase,
                         &ReadMap.ViewSize,
                         &ReadMap.ViewBase,
                         &MaximumMessageSize,
@@ -579,14 +570,14 @@ NtConnectPort (PHANDLE                            UnsafeConnectedPortHandle,
             {
               RtlCopyMemory(UnsafeWriteMap,
                             &WriteMap,
-                            sizeof(LPC_SECTION_WRITE));
+                            sizeof(PORT_VIEW));
             }
 
           if (UnsafeReadMap != NULL)
             {
               RtlCopyMemory(UnsafeReadMap,
                             &ReadMap,
-                            sizeof(LPC_SECTION_READ));
+                            sizeof(REMOTE_PORT_VIEW));
             }
 
           if (UnsafeMaximumMessageSize != NULL)
@@ -613,14 +604,14 @@ NtConnectPort (PHANDLE                            UnsafeConnectedPortHandle,
         {
           RtlCopyMemory(UnsafeWriteMap,
                         &WriteMap,
-                        sizeof(LPC_SECTION_WRITE));
+                        sizeof(PORT_VIEW));
         }
 
       if (UnsafeReadMap != NULL)
         {
           RtlCopyMemory(UnsafeReadMap,
                         &ReadMap,
-                        sizeof(LPC_SECTION_READ));
+                        sizeof(REMOTE_PORT_VIEW));
         }
 
       if (UnsafeMaximumMessageSize != NULL)
@@ -656,10 +647,10 @@ NtConnectPort (PHANDLE                            UnsafeConnectedPortHandle,
 /*EXPORTED*/ NTSTATUS STDCALL
 NtAcceptConnectPort (PHANDLE                   ServerPortHandle,
                     HANDLE                     NamedPortHandle,
-                    PLPC_MESSAGE               LpcMessage,
+                    PPORT_MESSAGE              LpcMessage,
                     BOOLEAN                    AcceptIt,
-                    PLPC_SECTION_WRITE WriteMap,
-                    PLPC_SECTION_READ  ReadMap)
+                    PPORT_VIEW WriteMap,
+                    PREMOTE_PORT_VIEW  ReadMap)
 {
   NTSTATUS     Status;
   PEPORT               NamedPort;
@@ -669,11 +660,12 @@ NtAcceptConnectPort (PHANDLE                      ServerPortHandle,
   PEPORT_CONNECT_REQUEST_MESSAGE CRequest;
   PEPORT_CONNECT_REPLY_MESSAGE CReply;
   ULONG Size;
+  KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
 
   Size = sizeof(EPORT_CONNECT_REPLY_MESSAGE);
   if (LpcMessage)
   {
-     Size += LpcMessage->DataSize;
+     Size += LpcMessage->u1.s1.DataLength;
   }
 
   CReply = ExAllocatePool(NonPagedPool, Size);
@@ -685,7 +677,7 @@ NtAcceptConnectPort (PHANDLE                        ServerPortHandle,
   Status = ObReferenceObjectByHandle(NamedPortHandle,
                                     PORT_ALL_ACCESS,
                                     LpcPortObjectType,
-                                    UserMode,
+                                    PreviousMode,
                                     (PVOID*)&NamedPort,
                                     NULL);
   if (!NT_SUCCESS(Status))
@@ -699,10 +691,10 @@ NtAcceptConnectPort (PHANDLE                      ServerPortHandle,
    */
   if (AcceptIt)
     {
-      Status = ObCreateObject(ExGetPreviousMode(),
+      Status = ObCreateObject(PreviousMode,
                              LpcPortObjectType,
                              NULL,
-                             ExGetPreviousMode(),
+                             PreviousMode,
                              NULL,
                              sizeof(EPORT),
                              0,
@@ -745,20 +737,20 @@ NtAcceptConnectPort (PHANDLE                      ServerPortHandle,
    */
   if (LpcMessage != NULL)
     {
-      memcpy(&CReply->MessageHeader, LpcMessage, sizeof(LPC_MESSAGE));
+      memcpy(&CReply->MessageHeader, LpcMessage, sizeof(PORT_MESSAGE));
       memcpy(&CReply->ConnectData, (PVOID)(LpcMessage + 1),
-            LpcMessage->DataSize);
-      CReply->MessageHeader.MessageSize =
-       sizeof(EPORT_CONNECT_REPLY_MESSAGE) + LpcMessage->DataSize;
-      CReply->MessageHeader.DataSize = CReply->MessageHeader.MessageSize -
-       sizeof(LPC_MESSAGE);
-      CReply->ConnectDataLength = LpcMessage->DataSize;
+            LpcMessage->u1.s1.DataLength);
+      CReply->MessageHeader.u1.s1.TotalLength =
+       sizeof(EPORT_CONNECT_REPLY_MESSAGE) + LpcMessage->u1.s1.DataLength;
+      CReply->MessageHeader.u1.s1.DataLength = CReply->MessageHeader.u1.s1.TotalLength -
+       sizeof(PORT_MESSAGE);
+      CReply->ConnectDataLength = LpcMessage->u1.s1.DataLength;
     }
   else
     {
-      CReply->MessageHeader.MessageSize = sizeof(EPORT_CONNECT_REPLY_MESSAGE);
-      CReply->MessageHeader.DataSize = sizeof(EPORT_CONNECT_REPLY_MESSAGE) -
-       sizeof(LPC_MESSAGE);
+      CReply->MessageHeader.u1.s1.TotalLength = sizeof(EPORT_CONNECT_REPLY_MESSAGE);
+      CReply->MessageHeader.u1.s1.DataLength = sizeof(EPORT_CONNECT_REPLY_MESSAGE) -
+       sizeof(PORT_MESSAGE);
       CReply->ConnectDataLength = 0;
     }
   if (!AcceptIt)
@@ -789,7 +781,7 @@ NtAcceptConnectPort (PHANDLE                        ServerPortHandle,
       Status = ObReferenceObjectByHandle(WriteMap->SectionHandle,
                                         SECTION_MAP_READ | SECTION_MAP_WRITE,
                                         MmSectionObjectType,
-                                        UserMode,
+                                        PreviousMode,
                                         (PVOID*)&SectionObject,
                                         NULL);
       if (!NT_SUCCESS(Status))
@@ -798,11 +790,11 @@ NtAcceptConnectPort (PHANDLE                      ServerPortHandle,
        }
 
       SectionOffset.QuadPart = WriteMap->SectionOffset;
-      WriteMap->TargetViewBase = 0;
+      WriteMap->ViewRemoteBase = 0;
       CReply->ReceiveClientViewSize = WriteMap->ViewSize;
       Status = MmMapViewOfSection(SectionObject,
                                  CRequest->ConnectingProcess,
-                                 &WriteMap->TargetViewBase,
+                                 &WriteMap->ViewRemoteBase,
                                  0,
                                  CReply->ReceiveClientViewSize,
                                  &SectionOffset,
@@ -869,9 +861,9 @@ NtAcceptConnectPort (PHANDLE                        ServerPortHandle,
     }
   if (WriteMap != NULL)
     {
-      CReply->ReceiveClientViewBase = WriteMap->TargetViewBase;
+      CReply->ReceiveClientViewBase = WriteMap->ViewRemoteBase;
     }
-  CReply->MaximumMessageSize = PORT_MAX_MESSAGE_LENGTH;
+  CReply->MaximumMessageSize = LPC_MAX_MESSAGE_LENGTH;
 
 
   /*
@@ -880,7 +872,7 @@ NtAcceptConnectPort (PHANDLE                        ServerPortHandle,
   OurPort->OtherPort = ConnectionRequest->Sender;
   OurPort->OtherPort->OtherPort = OurPort;
   EiReplyOrRequestPort(ConnectionRequest->Sender,
-                      (PLPC_MESSAGE)CReply,
+                      (PPORT_MESSAGE)CReply,
                       LPC_REPLY,
                       OurPort);
   ExFreePool(ConnectionRequest);
@@ -919,9 +911,9 @@ NTSTATUS STDCALL
 NtSecureConnectPort (OUT    PHANDLE                            ConnectedPort,
                     IN     PUNICODE_STRING                     PortName,
                     IN     PSECURITY_QUALITY_OF_SERVICE        Qos,
-                    IN OUT PLPC_SECTION_WRITE                  WriteMap                OPTIONAL,
+                    IN OUT PPORT_VIEW                  WriteMap                OPTIONAL,
                     IN     PSID                                ServerSid               OPTIONAL,
-                    IN OUT PLPC_SECTION_READ                   ReadMap                 OPTIONAL,
+                    IN OUT PREMOTE_PORT_VIEW                   ReadMap                 OPTIONAL,
                     OUT    PULONG                              MaxMessageSize          OPTIONAL,
                     IN OUT PVOID                               ConnectInfo             OPTIONAL,
                     IN OUT PULONG                              UserConnectInfoLength   OPTIONAL)