Remove all non-official LPC structures/defines/hardcoded hacks, and use actual correct sizes and structures. Modified: trunk/reactos/boot/freeldr/freeldr/include/freeldr.h Modified: trunk/reactos/include/ndk/fixmes.txt Modified: trunk/reactos/include/ndk/lpctypes.h Modified: trunk/reactos/include/ndk/ntndk.h Modified: trunk/reactos/include/reactos/helper.h Modified: trunk/reactos/include/subsys/csrss/csrss.h Modified: trunk/reactos/include/subsys/lsass/lsass.h Modified: trunk/reactos/include/subsys/sm/api.h Modified: trunk/reactos/lib/lsasrv/lsaport.c Modified: trunk/reactos/lib/ntdll/csr/lpc.c Modified: trunk/reactos/lib/rtl/thread.c Modified: trunk/reactos/lib/secur32/lsa.c Modified: trunk/reactos/ntoskrnl/include/internal/port.h Modified: trunk/reactos/ntoskrnl/io/error.c Modified: trunk/reactos/ntoskrnl/lpc/send.c Modified: trunk/reactos/services/eventlog/eventlog.h Modified: trunk/reactos/services/eventlog/logport.c Modified: trunk/reactos/subsys/csrss/api/process.c Modified: trunk/reactos/subsys/csrss/api/user.c Modified: trunk/reactos/subsys/csrss/api/wapi.c Modified: trunk/reactos/subsys/csrss/win32csr/conio.c Modified: trunk/reactos/subsys/csrss/win32csr/desktopbg.c Modified: trunk/reactos/subsys/csrss/win32csr/exitros.c Modified: trunk/reactos/subsys/smss/debug.c Modified: trunk/reactos/subsys/smss/smapi.c Modified: trunk/reactos/subsys/system/dhcp/dhclient.c Modified: trunk/reactos/subsys/win32k/ntuser/csr.c Modified: trunk/reactos/w32api/include/ddk/ntifs.h Modified: trunk/reactos/w32api/include/ddk/prntfont.h _____
Modified: trunk/reactos/boot/freeldr/freeldr/include/freeldr.h --- trunk/reactos/boot/freeldr/freeldr/include/freeldr.h 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/boot/freeldr/freeldr/include/freeldr.h 2005-08-16 23:05:33 UTC (rev 17417) @@ -35,8 +35,6 @@
#include <portio.h> #include <reactos.h>
-#define ROUND_UP(N, S) (((N) + (S) - 1) & ~((S) - 1)) -#define ROUND_DOWN(N, S) ((N) & ~((S) - 1)) #define Ke386EraseFlags(x) __asm__ __volatile__("pushl $0 ; popfl\n")
extern BOOL UserInterfaceUp; /* Tells us if the user interface is displayed */ _____
Modified: trunk/reactos/include/ndk/fixmes.txt --- trunk/reactos/include/ndk/fixmes.txt 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/include/ndk/fixmes.txt 2005-08-16 23:05:33 UTC (rev 17417) @@ -33,8 +33,45 @@
Priority 4: - FIXED: Kernel and Memory Types are not architecture-specific (Eric) [ketypes.h, mmtypes.h] - FIXED: Win32K Builds with windows.h (Filip) [extypes.h, ketypes.h] + - Move out stuff from umtypes.h into the actual header where they should go. Use ifdeffing + directly in that file to protect user-mode versus kernel-mode types. umtypes.h will only + end up containing the misc types that are needed for compatibility. This would create a + significant cleanup.
Priority 5: - - LPC Types are totally wrong. [lpctypes.h] + - FIXED: LPC Types are totally wrong. (Alex) [lpctypes.h] - Missing System Info Classes [zwtypes.h] - FIXED: Process Priority Classes are messed up (Alex) [pstypes.h] + +Generic Note: + One of the most difficult things is when certain structures require the IFS for some of their + members. Up until some time ago, the IFS was 1000$, so it was senseless to require it in order + to allow people to use the NDK. Recently, however, the IFS price went down to 100$. This is + still way too much. Even though the GNU NTIFS.H exists, I don't want to fallback on it. The + good news is that the WDK (Windows Driver Kit), which will supplant the DDK in about a year, + includes the IFS. At that point we can remove all the #ifndef/ifdef NTIFS hacks, since it'll + be OK to "force" IFS usage. + + UPDATE: + However, I'm giving serious consideration of making the IFS a requirement, and suggesting + usage of the GNU IFS for anyone that needs it. The problem, however, is that the official + GNU IFS is outdated and quite invalid in many ways, compared to the ReactOS IFS (which still + isn't perfect yet). Also, this would include many more definitions then needed. A third + option that I'm considering is creating a new header, until the WDK is out, which will be + called ifstypes. It would be the brother of umtypes, but for kernel mode. Only a small + number of types will need to be included, and hence they will be easy to locate in case + the official ones change (by the time they do, the WDK will be out however, so no worries). + It would reduce all the ifdeffing to a single file. + + UPDATE2: + No. This is a bad idea. I've just added a note to purge out large parts of umtypes.h into the + actual xxtypes.h files, and then use iffdefing. This is a direct contradiction to my idea of + generalizing all the IFS stuff together. + + UPDATE3: + No. This is different...the user-mode types will always be unavailable in kernel-mode, and + dissipating them into the real files is a good thing, because they will never move out and + they are much easier to maintain. However, once the WDK comes out, all #ifdef ntifs will + become obsolete, and they will have to be hunted down and removed. Having a single file that + is automatically added if the IFS is not detected is much easier to remove once the time + comes. _____
Modified: trunk/reactos/include/ndk/lpctypes.h --- trunk/reactos/include/ndk/lpctypes.h 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/include/ndk/lpctypes.h 2005-08-16 23:05:33 UTC (rev 17417) @@ -9,18 +9,10 @@
#ifndef _LPCTYPES_H #define _LPCTYPES_H
-#define LPC_MESSAGE_TYPE(m) ((m).Header.u2.s2.Type) - /* DEPENDENCIES **************************************************************/
/* EXPORTED DATA *************************************************************/
-/* CONSTANTS *****************************************************************/ -#define LPC_MESSAGE_BASE_SIZE 24 -#define MAX_MESSAGE_DATA (0x130) -#define LPC_MAX_DATA_LENGTH 0x104 -#define LPC_MAX_MESSAGE_LENGTH 0x148 - /* ENUMERATIONS **************************************************************/
typedef enum _LPC_TYPE @@ -42,6 +34,13 @@
/* TYPES *********************************************************************/
+/* + * Native Structures in IFS. Duplicated here for user-mode. + * Also duplicated if the IFS is not present. Until the WDK is + * released, we should not force the usage of a 100$ kit. + */ +#if defined(NTOS_MODE_USER) || !(defined(_NTIFS_)) + #if defined(USE_LPC6432) #define LPC_CLIENT_ID CLIENT_ID64 #define LPC_SIZE_T ULONGLONG @@ -104,11 +103,98 @@ LPC_PVOID ViewBase; } REMOTE_PORT_VIEW, *PREMOTE_PORT_VIEW;
-/* FIXME: USE REAL DEFINITION */ -typedef struct _LPC_MAX_MESSAGE +typedef struct _LPCP_MESSAGE { - PORT_MESSAGE Header; - BYTE Data[MAX_MESSAGE_DATA]; -} LPC_MAX_MESSAGE, *PLPC_MAX_MESSAGE; + UCHAR Data[0x14]; + PORT_MESSAGE Request; +} LPCP_MESSAGE;
+typedef struct _LPCP_CONNECTION_MESSAGE +{ + UCHAR Data[0x2C]; +} LPCP_CONNECTION_MESSAGE; + +/* Kernel-Mode Structures */ +#else + +typedef struct _LPCP_NONPAGED_PORT_QUEUE +{ + KSEMAPHORE Semaphore; + struct _LPCP_PORT_OBJECT *BackPointer; +} LPCP_NONPAGED_PORT_QUEUE, *PLPCP_NONPAGED_PORT_QUEUE; + +typedef struct _LPCP_PORT_QUEUE +{ + PLPCP_NONPAGED_PORT_QUEUE NonPagedPortQueue; + KSEMAPHORE Semaphore; + LIST_ENTRY ReceiveHead; +} LPCP_PORT_QUEUE, *PLPCP_PORT_QUEUE; + +#ifdef _NTIFS_ +typedef struct _LPCP_PORT_OBJECT +{ + ULONG Length; + ULONG Flags; + struct _LPCP_PORT_OBJECT *ConnectionPort; + struct _LPCP_PORT_OBJECT *ConnectedPort; + LPCP_PORT_QUEUE MsgQueue; + CLIENT_ID Creator; + PVOID ClientSectionBase; + PVOID ServerSectionBase; + PVOID PortContext; + ULONG MaxMessageLength; + ULONG MaxConnectionInfoLength; + PETHREAD ClientThread; + SECURITY_QUALITY_OF_SERVICE SecurityQos; + SECURITY_CLIENT_CONTEXT StaticSecurity; + LIST_ENTRY LpcReplyChainHead; + LIST_ENTRY LpcDataInfoChainHead; +} LPCP_PORT_OBJECT, *PLPCP_PORT_OBJECT; + +typedef struct _LPCP_MESSAGE +{ + union + { + LIST_ENTRY Entry; + struct + { + SINGLE_LIST_ENTRY FreeEntry; + ULONG Reserved0; + }; + }; + PLPCP_PORT_OBJECT SenderPort; + PETHREAD RepliedToThread; + PVOID PortContext; + PORT_MESSAGE Request; +} LPCP_MESSAGE, *PLPCP_MESSAGE; + +typedef struct _LPCP_CONNECTION_MESSAGE +{ + PORT_VIEW ClientView; + PLPCP_PORT_OBJECT ClientPort; + PVOID SectionToMap; + REMOTE_PORT_VIEW ServerView; +} LPCP_CONNECTION_MESSAGE, *PLPCP_CONNECTION_MESSAGE; #endif + +#endif + +/* CONSTANTS *****************************************************************/ + +#define PORT_MAXIMUM_MESSAGE_LENGTH 256 + +#define LPCP_MAX_MESSAGE_SIZE \ + ROUND_UP(PORT_MAXIMUM_MESSAGE_LENGTH + \ + sizeof(LPCP_MESSAGE) + \ + sizeof(LPCP_CONNECTION_MESSAGE), 16) + +#define LPC_MAX_MESSAGE_LENGTH \ + (LPCP_MAX_MESSAGE_SIZE - \ + FIELD_OFFSET(LPCP_MESSAGE, Request)) + +#define LPC_MAX_DATA_LENGTH \ + (LPC_MAX_MESSAGE_LENGTH - \ + sizeof(PORT_MESSAGE) - \ + sizeof(LPCP_CONNECTION_MESSAGE)) + +#endif _____
Modified: trunk/reactos/include/ndk/ntndk.h --- trunk/reactos/include/ndk/ntndk.h 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/include/ndk/ntndk.h 2005-08-16 23:05:33 UTC (rev 17417) @@ -13,6 +13,9 @@
#include <stdarg.h> #include <excpt.h>
+/* Helper Header */ +#include <helper.h> + /* Kernel-Mode NDK */ #ifndef NTOS_MODE_USER #include "kdtypes.h" /* Kernel Debugger Types */ @@ -27,7 +30,6 @@ #include "iofuncs.h" /* Input/Output Manager Functions */ #include "ketypes.h" /* Kernel Types */ #include "kefuncs.h" /* Kernel Functions */ - #include "lpctypes.h" /* Local Procedure Call Types */ #include "mmtypes.h" /* Memory Manager Types */ #include "mmfuncs.h" /* Memory Manager Functions */ #include "obtypes.h" /* Object Manager Types */ @@ -45,6 +47,7 @@ /* Shared NDK */ #include "ldrfuncs.h" /* Loader Functions */ #include "ldrtypes.h" /* Loader Types */ +#include "lpctypes.h" /* Local Procedure Call Types */ #include "pstypes.h" /* Process Manager Types */ #include "rtltypes.h" /* Runtime Library Types */ #include "rtlfuncs.h" /* Runtime Library Functions */ _____
Modified: trunk/reactos/include/reactos/helper.h --- trunk/reactos/include/reactos/helper.h 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/include/reactos/helper.h 2005-08-16 23:05:33 UTC (rev 17417) @@ -1,6 +1,7 @@
#ifndef _HELPER_H #define _HELPER_H - + +/* FIXME: clean this mess up and move to NDK */ #define ROUNDUP(a,b) ((((a)+(b)-1)/(b))*(b)) #define ROUNDDOWN(a,b) (((a)/(b))*(b)) #define ROUND_UP ROUNDUP _____
Modified: trunk/reactos/include/subsys/csrss/csrss.h --- trunk/reactos/include/subsys/csrss/csrss.h 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/include/subsys/csrss/csrss.h 2005-08-16 23:05:33 UTC (rev 17417) @@ -411,19 +411,19 @@
} CSRSS_GET_INPUT_WAIT_HANDLE, *PCSRSS_GET_INPUT_WAIT_HANDLE;
#define CSRSS_MAX_WRITE_CONSOLE \ - (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(CSRSS_WRITE_CONSOLE)) + (LPC_MAX_DATA_LENGTH - sizeof(ULONG) - sizeof(CSRSS_WRITE_CONSOLE))
-#define CSRSS_MAX_SET_TITLE (MAX_MESSAGE_DATA - sizeof( HANDLE ) - sizeof( DWORD ) - sizeof( ULONG ) - LPC_MESSAGE_BASE_SIZE) +#define CSRSS_MAX_SET_TITLE (LPC_MAX_DATA_LENGTH - sizeof( HANDLE ) - sizeof( DWORD ) - sizeof( ULONG ) - sizeof(PORT_MESSAGE))
-#define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_WRITE_CONSOLE_OUTPUT_CHAR )) +#define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - sizeof( ULONG ) - sizeof( CSRSS_WRITE_CONSOLE_OUTPUT_CHAR ))
-#define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB ((MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB )) / 2) +#define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB ((LPC_MAX_DATA_LENGTH - sizeof( ULONG ) - sizeof( CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB )) / 2)
-#define CSRSS_MAX_READ_CONSOLE (MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_READ_CONSOLE )) +#define CSRSS_MAX_READ_CONSOLE (LPC_MAX_DATA_LENGTH - sizeof( ULONG ) - sizeof( CSRSS_READ_CONSOLE ))
-#define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(HANDLE) - sizeof(DWORD) - sizeof(CSRSS_READ_CONSOLE_OUTPUT_CHAR)) +#define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - sizeof(ULONG) - sizeof(HANDLE) - sizeof(DWORD) - sizeof(CSRSS_READ_CONSOLE_OUTPUT_CHAR))
-#define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(HANDLE) - sizeof(DWORD) - sizeof(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB)) +#define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - sizeof(ULONG) - sizeof(HANDLE) - sizeof(DWORD) - sizeof(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB))
/* WCHARs, not bytes! */ #define CSRSS_MAX_TITLE_LENGTH 80 @@ -485,7 +485,7 @@ #define GET_PROCESS_LIST (0x36)
/* Keep in sync with definition below. */ -#define CSRSS_HEADER_SIZE (LPC_MESSAGE_BASE_SIZE + sizeof(ULONG) + sizeof(NTSTATUS)) +#define CSRSS_HEADER_SIZE (sizeof(PORT_MESSAGE) + sizeof(ULONG) + sizeof(NTSTATUS))
typedef struct _CSR_API_MESSAGE { @@ -494,7 +494,7 @@ PORT_MESSAGE Header; struct { - BYTE HeaderReserved[LPC_MESSAGE_BASE_SIZE]; + BYTE HeaderReserved[sizeof(PORT_MESSAGE)]; ULONG Type; NTSTATUS Status; union _____
Modified: trunk/reactos/include/subsys/lsass/lsass.h --- trunk/reactos/include/subsys/lsass/lsass.h 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/include/subsys/lsass/lsass.h 2005-08-16 23:05:33 UTC (rev 17417) @@ -98,7 +98,7 @@
{ PORT_MESSAGE Header; struct { - UCHAR LpcHeader[LPC_MESSAGE_BASE_SIZE]; + UCHAR LpcHeader[sizeof(PORT_MESSAGE)]; ULONG Type; union { _____
Modified: trunk/reactos/include/subsys/sm/api.h --- trunk/reactos/include/subsys/sm/api.h 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/include/subsys/sm/api.h 2005-08-16 23:05:33 UTC (rev 17417) @@ -112,7 +112,7 @@
/*** LPC common header ***/ PORT_MESSAGE Header; struct { - UCHAR LpcHeader[LPC_MESSAGE_BASE_SIZE]; + UCHAR LpcHeader[sizeof(PORT_MESSAGE)]; /*** SM common header ***/ struct { DWORD ApiIndex; _____
Modified: trunk/reactos/lib/lsasrv/lsaport.c --- trunk/reactos/lib/lsasrv/lsaport.c 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/lib/lsasrv/lsaport.c 2005-08-16 23:05:33 UTC (rev 17417) @@ -19,7 +19,7 @@
{ OBJECT_ATTRIBUTES ObjectAttributes; UNICODE_STRING PortName; - LPC_MAX_MESSAGE Request; + PORT_MESSAGE Request; NTSTATUS Status;
ConnectPortHandle = NULL; @@ -46,7 +46,7 @@ }
Status = NtListenPort(ConnectPortHandle, - &Request.Header); + &Request); if (!NT_SUCCESS(Status)) { DPRINT1("NtListenPort() failed (Status %lx)\n", Status); @@ -89,7 +89,7 @@ static NTSTATUS ProcessPortMessage(VOID) { - LPC_MAX_MESSAGE Request; + PORT_MESSAGE Request; // LPC_MAX_MESSAGE Reply; NTSTATUS Status;
@@ -103,7 +103,7 @@ Status = NtReplyWaitReceivePort(MessagePortHandle, 0, NULL, - &Request.Header); + &Request); if (!NT_SUCCESS(Status)) { DPRINT1("NtReplyWaitReceivePort() failed (Status %lx)\n", Status); @@ -112,18 +112,18 @@
DPRINT("Received message\n");
- if (Request.Header.u2.s2.Type == LPC_PORT_CLOSED) + if (Request.u2.s2.Type == LPC_PORT_CLOSED) { DPRINT("Port closed\n");
// return STATUS_UNSUCCESSFUL; } - if (Request.Header.u2.s2.Type == LPC_REQUEST) + if (Request.u2.s2.Type == LPC_REQUEST) { DPRINT("Received request\n");
} - else if (Request.Header.u2.s2.Type == LPC_DATAGRAM) + else if (Request.u2.s2.Type == LPC_DATAGRAM) { DPRINT("Received datagram\n");
_____
Modified: trunk/reactos/lib/ntdll/csr/lpc.c --- trunk/reactos/lib/ntdll/csr/lpc.c 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/lib/ntdll/csr/lpc.c 2005-08-16 23:05:33 UTC (rev 17417) @@ -81,7 +81,7 @@
/* Fill out the header */ Request->Type = ApiNumber; - Request->Header.u1.s1.DataLength = RequestLength - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = RequestLength - sizeof(PORT_MESSAGE); Request->Header.u1.s1.TotalLength = RequestLength; DPRINT("CSR: API: %x, u1.s1.DataLength: %x, u1.s1.TotalLength: %x\n", ApiNumber, _____
Modified: trunk/reactos/lib/rtl/thread.c --- trunk/reactos/lib/rtl/thread.c 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/lib/rtl/thread.c 2005-08-16 23:05:33 UTC (rev 17417) @@ -192,7 +192,7 @@
OBJECT_ATTRIBUTES ObjectAttributes; CONTEXT Context;
- DPRINT("RtlCreateUserThread: (hProcess: %lx, Suspended: %lx," + DPRINT1("RtlCreateUserThread: (hProcess: %lx, Suspended: %lx," "ZeroBits: %lx, StackReserve: %lx, StackCommit: %lx," "StartAddress: %p, Parameter: %lx)\n", ProcessHandle, CreateSuspended, StackZeroBits, StackReserve, StackCommit, _____
Modified: trunk/reactos/lib/secur32/lsa.c --- trunk/reactos/lib/secur32/lsa.c 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/lib/secur32/lsa.c 2005-08-16 23:05:33 UTC (rev 17417) @@ -75,18 +75,18 @@
{ PLSASS_REQUEST Request; PLSASS_REPLY Reply; - UCHAR RawRequest[MAX_MESSAGE_DATA]; - UCHAR RawReply[MAX_MESSAGE_DATA]; + LSASS_REQUEST RawRequest; + LSASS_REPLY RawReply; NTSTATUS Status; ULONG OutBufferSize;
- Request = (PLSASS_REQUEST)RawRequest; - Reply = (PLSASS_REPLY)RawReply; + Request = (PLSASS_REQUEST)&RawRequest; + Reply = (PLSASS_REPLY)&RawReply;
Request->Header.u1.s1.DataLength = sizeof(LSASS_REQUEST) + SubmitBufferLength - - LPC_MESSAGE_BASE_SIZE; + sizeof(PORT_MESSAGE); Request->Header.u1.s1.TotalLength = - Request->Header.u1.s1.DataLength + LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength + sizeof(PORT_MESSAGE); Request->Type = LSASS_REQUEST_CALL_AUTHENTICATION_PACKAGE; Request->d.CallAuthenticationPackageRequest.AuthenticationPackage = AuthenticationPackage; @@ -142,14 +142,14 @@ { NTSTATUS Status; PLSASS_REQUEST Request; - UCHAR RawRequest[MAX_MESSAGE_DATA]; + LSASS_REQUEST RawRequest; LSASS_REPLY Reply;
- Request = (PLSASS_REQUEST)RawRequest; + Request = (PLSASS_REQUEST)&RawRequest; Request->Header.u1.s1.DataLength = sizeof(LSASS_REQUEST) + PackageName->Length - - LPC_MESSAGE_BASE_SIZE; + sizeof(PORT_MESSAGE); Request->Header.u1.s1.TotalLength = Request->Header.u1.s1.DataLength + - LPC_MESSAGE_BASE_SIZE; + sizeof(PORT_MESSAGE); Request->Type = LSASS_REQUEST_LOOKUP_AUTHENTICATION_PACKAGE;
Status = NtRequestWaitReplyPort(LsaHandle, @@ -192,23 +192,23 @@ ULONG RequestLength; ULONG CurrentLength; PLSASS_REQUEST Request; - UCHAR RawMessage[MAX_MESSAGE_DATA]; + LSASS_REQUEST RawMessage; PLSASS_REPLY Reply; - UCHAR RawReply[MAX_MESSAGE_DATA]; + LSASS_REPLY RawReply; NTSTATUS Status;
- RequestLength = sizeof(LSASS_REQUEST) - LPC_MESSAGE_BASE_SIZE; + RequestLength = sizeof(LSASS_REQUEST) - sizeof(PORT_MESSAGE); RequestLength = RequestLength + (OriginName->Length * sizeof(WCHAR)); RequestLength = RequestLength + AuthenticationInformationLength; RequestLength = RequestLength + (LocalGroups->GroupCount * sizeof(SID_AND_ATTRIBUTES));
CurrentLength = 0; - Request = (PLSASS_REQUEST)RawMessage; + Request = (PLSASS_REQUEST)&RawMessage;
Request->d.LogonUserRequest.OriginNameLength = OriginName->Length; - Request->d.LogonUserRequest.OriginName = (PWSTR)&RawMessage[CurrentLength]; - memcpy((PWSTR)&RawMessage[CurrentLength], + Request->d.LogonUserRequest.OriginName = (PWSTR)&RawMessage + CurrentLength; + memcpy((PWSTR)&RawMessage + CurrentLength, OriginName->Buffer, OriginName->Length * sizeof(WCHAR)); CurrentLength = CurrentLength + (OriginName->Length * sizeof(WCHAR)); @@ -219,28 +219,28 @@ AuthenticationPackage;
Request->d.LogonUserRequest.AuthenticationInformation = - (PVOID)&RawMessage[CurrentLength]; + (PVOID)((ULONG_PTR)&RawMessage + CurrentLength); Request->d.LogonUserRequest.AuthenticationInformationLength = AuthenticationInformationLength; - memcpy((PVOID)&RawMessage[CurrentLength], + memcpy((PVOID)((ULONG_PTR)&RawMessage + CurrentLength), AuthenticationInformation, AuthenticationInformationLength); CurrentLength = CurrentLength + AuthenticationInformationLength;
Request->d.LogonUserRequest.LocalGroupsCount = LocalGroups->GroupCount; Request->d.LogonUserRequest.LocalGroups = - (PSID_AND_ATTRIBUTES)&RawMessage[CurrentLength]; - memcpy((PSID_AND_ATTRIBUTES)&RawMessage[CurrentLength], + (PSID_AND_ATTRIBUTES)&RawMessage + CurrentLength; + memcpy((PSID_AND_ATTRIBUTES)&RawMessage + CurrentLength, LocalGroups->Groups, LocalGroups->GroupCount * sizeof(SID_AND_ATTRIBUTES));
Request->d.LogonUserRequest.SourceContext = *SourceContext;
Request->Type = LSASS_REQUEST_LOGON_USER; - Request->Header.u1.s1.DataLength = RequestLength - LPC_MESSAGE_BASE_SIZE; - Request->Header.u1.s1.TotalLength = RequestLength + LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = RequestLength - sizeof(PORT_MESSAGE); + Request->Header.u1.s1.TotalLength = RequestLength + sizeof(PORT_MESSAGE);
- Reply = (PLSASS_REPLY)RawReply; + Reply = (PLSASS_REPLY)&RawReply;
Status = NtRequestWaitReplyPort(LsaHandle, &Request->Header, @@ -304,7 +304,7 @@
Request.Type = LSASS_REQUEST_REGISTER_LOGON_PROCESS; Request.Header.u1.s1.DataLength = sizeof(LSASS_REQUEST) - - LPC_MESSAGE_BASE_SIZE; + sizeof(PORT_MESSAGE); Request.Header.u1.s1.TotalLength = sizeof(LSASS_REQUEST);
Request.d.RegisterLogonProcessRequest.Length = LsaLogonProcessName->Length; _____
Modified: trunk/reactos/ntoskrnl/include/internal/port.h --- trunk/reactos/ntoskrnl/include/internal/port.h 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/ntoskrnl/include/internal/port.h 2005-08-16 23:05:33 UTC (rev 17417) @@ -88,7 +88,6 @@
PEPORT Sender; LIST_ENTRY QueueListEntry; PORT_MESSAGE Message; - UCHAR MessageData [MAX_MESSAGE_DATA]; } QUEUEDMESSAGE, *PQUEUEDMESSAGE;
typedef struct _LPC_DBG_MESSAGE _____
Modified: trunk/reactos/ntoskrnl/io/error.c --- trunk/reactos/ntoskrnl/io/error.c 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/ntoskrnl/io/error.c 2005-08-16 23:05:33 UTC (rev 17417) @@ -159,7 +159,7 @@
IopLogWorker (PVOID Parameter) { PERROR_LOG_ENTRY LogEntry; - PLPC_MAX_MESSAGE Request; + PPORT_MESSAGE Request; PIO_ERROR_LOG_MESSAGE Message; PIO_ERROR_LOG_PACKET Packet; KIRQL Irql; @@ -249,7 +249,7 @@
/* Allocate request buffer */ Request = ExAllocatePool (NonPagedPool, - sizeof(LPC_MAX_MESSAGE)); + sizeof(PORT_MESSAGE) + PORT_MAXIMUM_MESSAGE_LENGTH); if (Request == NULL) { DPRINT ("Failed to allocate request buffer!\n"); @@ -264,7 +264,7 @@ }
/* Initialize the log message */ - Message = (PIO_ERROR_LOG_MESSAGE)Request->Data; + Message = (PIO_ERROR_LOG_MESSAGE)(Request + 1); Message->Type = IO_TYPE_ERROR_MESSAGE; Message->Size = sizeof(IO_ERROR_LOG_MESSAGE) - sizeof(IO_ERROR_LOG_PACKET) + @@ -285,13 +285,13 @@
DPRINT ("SequenceNumber %lx\n", Packet->SequenceNumber);
- Request->Header.u1.s1.DataLength = Message->Size; - Request->Header.u1.s1.TotalLength = - Request->Header.u1.s1.DataLength + sizeof(PPORT_MESSAGE); + Request->u1.s1.DataLength = Message->Size; + Request->u1.s1.TotalLength = + Request->u1.s1.DataLength + sizeof(PPORT_MESSAGE);
/* Send the error message to the log port */ Status = ZwRequestPort (IopLogPort, - &Request->Header); + Request);
/* Release request buffer */ ExFreePool (Request); _____
Modified: trunk/reactos/ntoskrnl/lpc/send.c --- trunk/reactos/ntoskrnl/lpc/send.c 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/ntoskrnl/lpc/send.c 2005-08-16 23:05:33 UTC (rev 17417) @@ -292,7 +292,7 @@
KeDetachProcess(); }
- if (LpcRequestMessageSize > (sizeof(PORT_MESSAGE) + MAX_MESSAGE_DATA)) + if (LpcRequestMessageSize > LPC_MAX_MESSAGE_LENGTH) { if (NULL != AttachedProcess) { @@ -347,7 +347,7 @@ LpcRequestDataSize = LpcRequest->u1.s1.DataLength; }
- if (LpcRequestMessageSize > (sizeof(PORT_MESSAGE) + MAX_MESSAGE_DATA)) + if (LpcRequestMessageSize > LPC_MAX_MESSAGE_LENGTH) { ExFreePool(LpcRequest); if (NULL != AttachedProcess) _____
Modified: trunk/reactos/services/eventlog/eventlog.h --- trunk/reactos/services/eventlog/eventlog.h 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/services/eventlog/eventlog.h 2005-08-16 23:05:33 UTC (rev 17417) @@ -2,6 +2,11 @@
#ifndef __EVENTLOG_H__ #define __EVENTLOG_H__
+typedef struct _IO_ERROR_LPC +{ + PORT_MESSAGE Header; + IO_ERROR_LOG_MESSAGE Message; +} IO_ERROR_LPC, *PIO_ERROR_LPC;
BOOL StartPortThread(VOID); _____
Modified: trunk/reactos/services/eventlog/logport.c --- trunk/reactos/services/eventlog/logport.c 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/services/eventlog/logport.c 2005-08-16 23:05:33 UTC (rev 17417) @@ -50,7 +50,7 @@
{ OBJECT_ATTRIBUTES ObjectAttributes; UNICODE_STRING PortName; - LPC_MAX_MESSAGE Request; + PORT_MESSAGE Request; NTSTATUS Status;
ConnectPortHandle = NULL; @@ -76,7 +76,7 @@ }
Status = NtListenPort(ConnectPortHandle, - &Request.Header); + &Request); if (!NT_SUCCESS(Status)) { DPRINT1("NtListenPort() failed (Status %lx)\n", Status); @@ -115,11 +115,10 @@ return Status; }
- static NTSTATUS ProcessPortMessage(VOID) { - LPC_MAX_MESSAGE Request; + IO_ERROR_LPC Request; PIO_ERROR_LOG_MESSAGE Message; //#ifndef NDEBUG ULONG i; @@ -162,7 +161,7 @@ DPRINT("Received datagram\n");
- Message = (PIO_ERROR_LOG_MESSAGE)&Request.Data; + Message = (PIO_ERROR_LOG_MESSAGE)&Request.Message;
DPRINT("Message->Type %hx\n", Message->Type); DPRINT("Message->Size %hu\n", Message->Size); _____
Modified: trunk/reactos/subsys/csrss/api/process.c --- trunk/reactos/subsys/csrss/api/process.c 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/subsys/csrss/api/process.c 2005-08-16 23:05:33 UTC (rev 17417) @@ -194,7 +194,7 @@
PCSRSS_PROCESS_DATA NewProcessData; NTSTATUS Status;
- Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE); Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE);
NewProcessData = CsrCreateProcessData(Request->Data.CreateProcessRequest.NewProcessId); @@ -224,7 +224,7 @@
CSR_API(CsrTerminateProcess) { - Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE); Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE);
if (ProcessData == NULL) @@ -239,7 +239,7 @@ CSR_API(CsrConnectProcess) { Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
Request->Status = STATUS_SUCCESS;
@@ -249,7 +249,7 @@ CSR_API(CsrGetShutdownParameters) { Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
if (ProcessData == NULL) { @@ -267,7 +267,7 @@ CSR_API(CsrSetShutdownParameters) { Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
if (ProcessData == NULL) { @@ -285,7 +285,7 @@ CSR_API(CsrGetInputHandle) { Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
if (ProcessData == NULL) { @@ -310,7 +310,7 @@ CSR_API(CsrGetOutputHandle) { Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
if (ProcessData == NULL) { @@ -337,7 +337,7 @@ CSR_API(CsrCloseHandle) { Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
if (ProcessData == NULL) { @@ -353,7 +353,7 @@ CSR_API(CsrVerifyHandle) { Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
Request->Status = CsrVerifyObject(ProcessData, Request->Data.VerifyHandleRequest.Handle); if (!NT_SUCCESS(Request->Status)) @@ -369,7 +369,7 @@ Object_t *Object;
Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
ProcessData = CsrGetProcessData(Request->Data.DuplicateHandleRequest.ProcessId); Request->Status = CsrGetObject(ProcessData, Request->Data.DuplicateHandleRequest.Handle, &Object); @@ -389,7 +389,7 @@ CSR_API(CsrGetInputWaitHandle) { Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
if (ProcessData == NULL) { _____
Modified: trunk/reactos/subsys/csrss/api/user.c --- trunk/reactos/subsys/csrss/api/user.c 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/subsys/csrss/api/user.c 2005-08-16 23:05:33 UTC (rev 17417) @@ -27,7 +27,7 @@
NTSTATUS Status;
Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
if (ServicesProcessIdValid == TRUE) { _____
Modified: trunk/reactos/subsys/csrss/api/wapi.c --- trunk/reactos/subsys/csrss/api/wapi.c 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/subsys/csrss/api/wapi.c 2005-08-16 23:05:33 UTC (rev 17417) @@ -97,7 +97,7 @@
{ DPRINT1("CSR: Unknown request type 0x%x\n", Request->Type); Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE); Request->Status = STATUS_INVALID_SYSTEM_SERVICE; } } @@ -108,8 +108,7 @@ ClientConnectionThread(HANDLE ServerPort) { NTSTATUS Status; - LPC_MAX_MESSAGE LpcRequest; - PCSR_API_MESSAGE Request; + CSR_API_MESSAGE Request; PCSR_API_MESSAGE Reply; PCSRSS_PROCESS_DATA ProcessData;
@@ -125,7 +124,7 @@ Status = NtReplyWaitReceivePort(ServerPort, 0, &Reply->Header, - &LpcRequest.Header); + &Request.Header); if (!NT_SUCCESS(Status)) { DPRINT1("CSR: NtReplyWaitReceivePort failed\n"); @@ -133,34 +132,31 @@ }
/* If the connection was closed, handle that */ - if (LpcRequest.Header.u2.s2.Type == LPC_PORT_CLOSED) + if (Request.Header.u2.s2.Type == LPC_PORT_CLOSED) { - CsrFreeProcessData( LpcRequest.Header.ClientId.UniqueProcess ); + CsrFreeProcessData( Request.Header.ClientId.UniqueProcess ); break; } - - /* Get the CSR Message */ - Request = (PCSR_API_MESSAGE)&LpcRequest; - + DPRINT("CSR: Got CSR API: %x [Message Origin: %x]\n", - Request->Type, - Request->Header.ClientId.UniqueProcess); + Request.Type, + Request.Header.ClientId.UniqueProcess);
/* Get the Process Data */ - ProcessData = CsrGetProcessData(LpcRequest.Header.ClientId.UniqueProcess); + ProcessData = CsrGetProcessData(Request.Header.ClientId.UniqueProcess); if (ProcessData == NULL) { DPRINT1("CSR: Message %d: Unable to find data for process 0x%x\n", - LpcRequest.Header.u2.s2.Type, - LpcRequest.Header.ClientId.UniqueProcess); + Request.Header.u2.s2.Type, + Request.Header.ClientId.UniqueProcess); break; }
/* Call the Handler */ - CsrApiCallHandler(ProcessData, Request); + CsrApiCallHandler(ProcessData, &Request);
/* Send back the reply */ - Reply = Request; + Reply = &Request; }
/* Close the port and exit the thread */ @@ -180,7 +176,7 @@ ServerApiPortThread (PVOID PortHandle) { NTSTATUS Status = STATUS_SUCCESS; - LPC_MAX_MESSAGE Request; + PORT_MESSAGE Request; HANDLE hApiListenPort = * (PHANDLE) PortHandle; HANDLE ServerPort = (HANDLE) 0; HANDLE ServerThread = (HANDLE) 0; @@ -195,7 +191,7 @@ REMOTE_PORT_VIEW LpcRead; ServerPort = NULL;
- Status = NtListenPort (hApiListenPort, & Request.Header); + Status = NtListenPort (hApiListenPort, &Request); if (!NT_SUCCESS(Status)) { DPRINT1("CSR: NtListenPort() failed\n"); @@ -213,11 +209,11 @@ break; }
- ProcessData = CsrCreateProcessData(Request.Header.ClientId.UniqueProcess); + ProcessData = CsrCreateProcessData(Request.ClientId.UniqueProcess); if (ProcessData == NULL) { DPRINT1("Unable to allocate or find data for process 0x%x\n", - Request.Header.ClientId.UniqueProcess); + Request.ClientId.UniqueProcess); Status = STATUS_UNSUCCESSFUL; break; } @@ -273,14 +269,14 @@ { HANDLE hSbApiPortListen = * (PHANDLE) PortHandle; HANDLE hConnectedPort = (HANDLE) 0; - LPC_MAX_MESSAGE Request; + PORT_MESSAGE Request; PVOID Context = NULL; NTSTATUS Status = STATUS_SUCCESS;
DPRINT("CSR: %s called\n", __FUNCTION__);
- RtlZeroMemory(&Request, sizeof(LPC_MAX_MESSAGE)); - Status = NtListenPort (hSbApiPortListen, & Request.Header); + RtlZeroMemory(&Request, sizeof(PORT_MESSAGE)); + Status = NtListenPort (hSbApiPortListen, & Request); if (!NT_SUCCESS(Status)) { DPRINT1("CSR: %s: NtListenPort(SB) failed (Status=0x%08lx)\n", @@ -324,19 +320,19 @@ Status = NtReplyWaitReceivePort(hConnectedPort,
Context,
Reply, - & Request.Header); + & Request); if(!NT_SUCCESS(Status)) { DPRINT1("CSR: %s: NtReplyWaitReceivePort failed (Status=0x%08lx)\n", __FUNCTION__, Status); break; } - switch (Request.Header.u2.s2.Type)//fix .h PORT_MESSAGE_TYPE(Request)) + switch (Request.u2.s2.Type)//fix .h PORT_MESSAGE_TYPE(Request)) { /* TODO */ default: DPRINT1("CSR: %s received message (type=%d)\n", - __FUNCTION__, Request.Header.u2.s2.Type); + __FUNCTION__, Request.u2.s2.Type); } DPRINT("-- 5\n"); } _____
Modified: trunk/reactos/subsys/csrss/win32csr/conio.c --- trunk/reactos/subsys/csrss/win32csr/conio.c 2005-08-16 22:16:09 UTC (rev 17416) +++ trunk/reactos/subsys/csrss/win32csr/conio.c 2005-08-16 23:05:33 UTC (rev 17417) @@ -228,7 +228,7 @@
DPRINT("CsrAllocConsole\n");
Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
if (ProcessData == NULL) { @@ -357,7 +357,7 @@ DPRINT("CsrFreeConsole\n");
Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
if (ProcessData == NULL || ProcessData->Console == NULL) { @@ -562,7 +562,7 @@ /* truncate length to CSRSS_MAX_READ_CONSOLE_REQUEST */ nNumberOfCharsToRead = min(Request->Data.ReadConsoleRequest.NrCharactersToRead, CSRSS_MAX_READ_CONSOLE / CharSize); Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = Request->Header.u1.s1.TotalLength - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = Request->Header.u1.s1.TotalLength - sizeof(PORT_MESSAGE);
Buffer = Request->Data.ReadConsoleRequest.Buffer; UnicodeBuffer = (PWCHAR)Buffer; @@ -927,13 +927,13 @@ { DPRINT1("Invalid request size\n"); Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE); return Request->Status = STATUS_INVALID_PARAMETER; } Status = ConioConsoleFromProcessData(ProcessData, &Console);
Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
if (! NT_SUCCESS(Status)) { @@ -1431,7 +1431,7 @@ DPRINT("CsrGetScreenBufferInfo\n");
Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - LPC_MESSAGE_BASE_SIZE; + Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
Status = ConioLockScreenBuffer(ProcessData, Request->Data.ScreenBufferInfoRequest.ConsoleHandle, &Buff); if (! NT_SUCCESS(Status)) @@ -1474,7 +1474,7 @@ [truncated at 1000 lines; 558 more skipped]