[NTDLL/KERNEL32/CSRSRV/WIN32K/USER32/WIN32CSR]
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Wed, 17 Oct 2012 23:10:40 +0000 (23:10 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Wed, 17 Oct 2012 23:10:40 +0000 (23:10 +0000)
- Use the new messaging structures and the new macros, plus the new CSR_API function's signature (--> and rename some variables).
- Code cleaning & formatting.

[CSRSS/NDK]
- Reorganize all the header files in logical units (server.h for server-side of CSR, client.h for client-side, and msg.h for messaging), removing duplicated definitions.
- Code cleaning & formatting.

The next step would be to activate the code of server-dll loading inside csrsrv, then moving all the console-related APIs from win32csr to winsrv, the latter built with the same structure as csrsrv's.

svn path=/branches/ros-csrss/; revision=57570

45 files changed:
dll/ntdll/csr/api.c
dll/ntdll/csr/connect.c
dll/ntdll/include/ntdll.h
dll/ntdll/include/ntdllp.h
dll/win32/kernel32/CMakeLists.txt
dll/win32/kernel32/client/dllmain.c
dll/win32/kernel32/client/dosdev.c
dll/win32/kernel32/client/file/console.c
dll/win32/kernel32/client/file/deviceio.c
dll/win32/kernel32/client/file/filename.c
dll/win32/kernel32/client/proc.c
dll/win32/kernel32/client/vdm.c
dll/win32/kernel32/client/vista.c
dll/win32/kernel32/k32.h
include/ndk/umfuncs.h
include/ndk/umtypes.h
include/reactos/subsys/csrss/client.h [new file with mode: 0644]
include/reactos/subsys/csrss/csrcons.h [new file with mode: 0644]
include/reactos/subsys/csrss/csrss.h
include/reactos/subsys/csrss/msg.h [new file with mode: 0644]
include/reactos/subsys/csrss/server.h [moved from include/reactos/subsys/csr/server.h with 62% similarity]
subsystems/win32/csrss/csrsrv/api/process.c
subsystems/win32/csrss/csrsrv/api/user.c
subsystems/win32/csrss/csrsrv/api/wapi.c
subsystems/win32/csrss/csrsrv/procsup.c
subsystems/win32/csrss/csrsrv/server.c
subsystems/win32/csrss/csrsrv/thredsup.c
subsystems/win32/csrss/include/api.h
win32ss/pch.h
win32ss/user/ntuser/csr.c
win32ss/user/ntuser/desktop.c
win32ss/user/ntuser/simplecall.c
win32ss/user/user32/include/user32.h
win32ss/user/user32/include/user_x.h
win32ss/user/user32/misc/exit.c
win32ss/user/user32/misc/misc.c
win32ss/user/win32csr/alias.c
win32ss/user/win32csr/coninput.c
win32ss/user/win32csr/conoutput.c
win32ss/user/win32csr/console.c
win32ss/user/win32csr/desktopbg.c
win32ss/user/win32csr/exitros.c
win32ss/user/win32csr/file.c
win32ss/user/win32csr/handle.c
win32ss/user/win32csr/lineinput.c

index de280d9..965fe5c 100644 (file)
@@ -37,8 +37,8 @@ CsrSetPriorityClass(HANDLE hProcess,
                     PULONG PriorityClass)
 {
     NTSTATUS Status;
-    CSR_API_MESSAGE2 ApiMessage; /* <- Remove the "2" when CSR is commited */
-    PCSR_SET_PRIORITY_CLASS SetPriorityClass = &ApiMessage.SetPriorityClass;
+    CSR_API_MESSAGE ApiMessage;
+    PCSR_SET_PRIORITY_CLASS SetPriorityClass = &ApiMessage.Data.SetPriorityClass;
 
     /* Set up the data for CSR */
     DbgBreakPoint();
@@ -46,10 +46,9 @@ CsrSetPriorityClass(HANDLE hProcess,
     SetPriorityClass->PriorityClass = *PriorityClass;
 
     /* Call it */
-    Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
+    Status = CsrClientCallServer(&ApiMessage,
                                  NULL,
-                                 CSR_MAKE_OPCODE(CsrpSetPriorityClass,
-                                                 CSR_SRV_SERVER),
+                                 CSR_CREATE_API_NUMBER(CSR_SRV_SERVER, CsrpSetPriorityClass),
                                  sizeof(CSR_SET_PRIORITY_CLASS));
     
     /* Return what we got, if requested */
@@ -67,19 +66,18 @@ NTAPI
 CsrIdentifyAlertableThread (VOID)
 {
     NTSTATUS Status;
-    CSR_API_MESSAGE2 ApiMessage; /* <- Remove the "2" when CSR is commited */
+    CSR_API_MESSAGE ApiMessage;
     PCSR_IDENTIFY_ALTERTABLE_THREAD IdentifyAlertableThread;
     
     /* Set up the data for CSR */
     DbgBreakPoint();
-    IdentifyAlertableThread = &ApiMessage.IdentifyAlertableThread;
+    IdentifyAlertableThread = &ApiMessage.Data.IdentifyAlertableThread;
     IdentifyAlertableThread->Cid = NtCurrentTeb()->ClientId;
 
     /* Call it */
-    Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
+    Status = CsrClientCallServer(&ApiMessage,
                                  NULL,
-                                 CSR_MAKE_OPCODE(CsrpIdentifyAlertable,
-                                                 CSR_SRV_SERVER),
+                                 CSR_CREATE_API_NUMBER(CSR_SRV_SERVER, CsrpIdentifyAlertable),
                                  sizeof(CSR_SET_PRIORITY_CLASS));
 
     /* Return to caller */
index e356cc7..17220f2 100644 (file)
@@ -27,7 +27,6 @@ typedef NTSTATUS
 PCSR_SERVER_API_ROUTINE CsrServerApiRoutine;
 
 #define UNICODE_PATH_SEP L"\\"
-#define CSR_PORT_NAME L"ApiPort"
 
 /* FUNCTIONS *****************************************************************/
 
@@ -63,8 +62,7 @@ CsrClientCallServer(PCSR_API_MESSAGE ApiMessage,
     ApiMessage->Header.u1.s1.TotalLength = RequestLength;
 
     /* Fill out the CSR Header */
-    ApiMessage->Type = ApiNumber;
-    //ApiMessage->Opcode = ApiNumber; <- Activate with new CSR
+    ApiMessage->ApiNumber = ApiNumber;
     ApiMessage->CsrCaptureData = NULL;
 
     DPRINT("API: %lx, u1.s1.DataLength: %x, u1.s1.TotalLength: %x\n", 
@@ -332,9 +330,8 @@ CsrClientConnectToServer(PWSTR ObjectDirectory,
     HANDLE hCsrSrv;
     ANSI_STRING CsrServerRoutineName;
     PCSR_CAPTURE_BUFFER CaptureBuffer;
-    CSR_API_MESSAGE RosApiMessage;
-    CSR_API_MESSAGE2 ApiMessage;
-    PCSR_CLIENT_CONNECT ClientConnect = &ApiMessage.ClientConnect;
+    CSR_API_MESSAGE ApiMessage;
+    PCSR_CLIENT_CONNECT ClientConnect = &ApiMessage.Data.CsrClientConnect;
 
     /* Validate the Connection Info */
     DPRINT("CsrClientConnectToServer: %lx %p\n", ServerId, ConnectionInfo);
@@ -437,14 +434,14 @@ CsrClientConnectToServer(PWSTR ObjectDirectory,
 #if 0
         Status = CsrClientCallServer(&ApiMessage,
                                      CaptureBuffer,
-                                     CSR_MAKE_OPCODE(CsrpClientConnect,
-                                                     CSR_SRV_DLL),
+                                     CSR_CREATE_API_NUMBER(CSR_SRV_DLL, CsrpClientConnect),
                                      sizeof(CSR_CLIENT_CONNECT));
-#endif
-        Status = CsrClientCallServer(&RosApiMessage,
-                                     NULL,
-                                     MAKE_CSR_API(CONNECT_PROCESS, CSR_NATIVE),
+#else
+        Status = CsrClientCallServer(&ApiMessage,
+                                     CaptureBuffer,
+                                     CSR_CREATE_API_NUMBER(CSR_NATIVE, CONNECT_PROCESS),
                                      sizeof(CSR_API_MESSAGE));
+#endif
     }
     else
     {
index edbce5a..c2bef83 100644 (file)
@@ -42,7 +42,8 @@
 #include "ntdllp.h"
 
 /* CSRSS Header */
-#include <csrss/csrss.h>
+#include <csrss/client.h>
+#include <csrss/csrss.h> // FIXME: data header.
 
 /* PSEH */
 #include <pseh/pseh2.h>
index e806e00..0880b27 100644 (file)
@@ -143,11 +143,11 @@ LdrpFreeUnicodeString(PUNICODE_STRING String);
 /* FIXME: Cleanup this mess */
 typedef NTSTATUS (NTAPI *PEPFUNC)(PPEB);
 NTSTATUS LdrMapSections(HANDLE ProcessHandle,
-                       PVOID ImageBase,
-                       HANDLE SectionHandle,
-                       PIMAGE_NT_HEADERS NTHeaders);
+                        PVOID ImageBase,
+                        HANDLE SectionHandle,
+                        PIMAGE_NT_HEADERS NTHeaders);
 NTSTATUS LdrMapNTDllForProcess(HANDLE ProcessHandle,
-                              PHANDLE NTDllSectionHandle);
+                               PHANDLE NTDllSectionHandle);
 ULONG
 LdrpGetResidentSize(PIMAGE_NT_HEADERS NTHeaders);
 
index ad5a2a3..70d35c8 100644 (file)
@@ -8,34 +8,34 @@ set_rc_compiler()
 spec2def(kernel32.dll kernel32.spec ADD_IMPORTLIB)
 
 list(APPEND SOURCE
-       client/appcache.c
-       client/atom.c
-       client/compname.c
+    client/appcache.c
+    client/atom.c
+    client/compname.c
     client/debugger.c
     client/dosdev.c
-       client/dllmain.c
-       client/environ.c
+    client/dllmain.c
+    client/environ.c
     client/except.c
     client/fiber.c
-       client/handle.c
+    client/handle.c
     client/heapmem.c
     client/job.c
-       client/loader.c
-       client/path.c
-       client/perfcnt.c
-       client/power.c
+    client/loader.c
+    client/path.c
+    client/perfcnt.c
+    client/power.c
     client/proc.c
-       client/resntfy.c
+    client/resntfy.c
     client/session.c
     client/synch.c
-       client/sysinfo.c
-       client/time.c
-       client/timerqueue.c
-       client/toolhelp.c
-       client/utils.c
+    client/sysinfo.c
+    client/time.c
+    client/timerqueue.c
+    client/toolhelp.c
+    client/utils.c
     client/thread.c
-       client/vdm.c
-       client/version.c
+    client/vdm.c
+    client/version.c
     client/virtmem.c
     client/vista.c
     client/file/backup.c
index 04c5cff..0ad734d 100644 (file)
@@ -62,7 +62,6 @@ WINAPI
 BasepInitConsole(VOID)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
     BOOLEAN NotConsole = FALSE;
     PRTL_USER_PROCESS_PARAMETERS Parameters = NtCurrentPeb()->ProcessParameters;
@@ -178,11 +177,10 @@ BasepInitConsole(VOID)
      * console message to the Base Server. When we finally have a Console
      * Server, this code should be changed to send connection data instead.
      */
-    CsrRequest = MAKE_CSR_API(ALLOC_CONSOLE, CSR_CONSOLE);
     Request.Data.AllocConsoleRequest.CtrlDispatcher = ConsoleControlDispatcher;
     Status = CsrClientCallServer(&Request,
                                  NULL,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, ALLOC_CONSOLE),
                                  sizeof(CSR_API_MESSAGE));
     if(!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
index 7bfb6cd..3da3ec8 100644 (file)
@@ -183,7 +183,7 @@ DefineDosDeviceW(
 
         Status = CsrClientCallServer(&Request,
                                      CaptureBuffer,
-                                     MAKE_CSR_API(DEFINE_DOS_DEVICE, CSR_CONSOLE),
+                                     CSR_CREATE_API_NUMBER(CSR_CONSOLE, DEFINE_DOS_DEVICE),
                                      sizeof(CSR_API_MESSAGE));
         CsrFreeCaptureBuffer(CaptureBuffer);
 
index de9208a..4c90444 100644 (file)
@@ -257,7 +257,6 @@ AddConsoleAliasW(LPCWSTR lpSource,
                  LPCWSTR lpExeName)
 {
     PCSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
     ULONG SourceLength;
     ULONG TargetLength = 0;
@@ -292,10 +291,9 @@ AddConsoleAliasW(LPCWSTR lpSource,
 
     Request->Data.AddConsoleAlias.TargetLength = TargetLength;
 
-    CsrRequest = MAKE_CSR_API(ADD_CONSOLE_ALIAS, CSR_CONSOLE);
     Status = CsrClientCallServer(Request,
                                  NULL,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, ADD_CONSOLE_ALIAS),
                                  RequestLength);
 
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request->Status))
@@ -336,7 +334,6 @@ DuplicateConsoleHandle(HANDLE hConsole,
                        DWORD dwOptions)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
     if (dwOptions & ~(DUPLICATE_CLOSE_SOURCE | DUPLICATE_SAME_ACCESS)
@@ -347,7 +344,6 @@ DuplicateConsoleHandle(HANDLE hConsole,
         return INVALID_HANDLE_VALUE;
     }
 
-    CsrRequest = MAKE_CSR_API(DUPLICATE_HANDLE, CSR_NATIVE);
     Request.Data.DuplicateHandleRequest.Handle = hConsole;
     Request.Data.DuplicateHandleRequest.Access = dwDesiredAccess;
     Request.Data.DuplicateHandleRequest.Inheritable = bInheritHandle;
@@ -355,7 +351,7 @@ DuplicateConsoleHandle(HANDLE hConsole,
 
     Status = CsrClientCallServer(&Request,
                                  NULL,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_NATIVE, DUPLICATE_HANDLE),
                                  sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status=Request.Status))
     {
@@ -372,7 +368,6 @@ IntExpungeConsoleCommandHistory(LPCVOID lpExeName, BOOL bUnicode)
 {
     CSR_API_MESSAGE Request;
     PCSR_CAPTURE_BUFFER CaptureBuffer;
-    ULONG CsrRequest = MAKE_CSR_API(EXPUNGE_COMMAND_HISTORY, CSR_CONSOLE);
     NTSTATUS Status;
 
     if (lpExeName == NULL || !(bUnicode ? *(PWCHAR)lpExeName : *(PCHAR)lpExeName))
@@ -388,15 +383,23 @@ IntExpungeConsoleCommandHistory(LPCVOID lpExeName, BOOL bUnicode)
         SetLastError(ERROR_NOT_ENOUGH_MEMORY);
         return FALSE;
     }
+
     IntCaptureMessageString(CaptureBuffer, lpExeName, bUnicode,
                             &Request.Data.ExpungeCommandHistory.ExeName);
-    Status = CsrClientCallServer(&Request, CaptureBuffer, CsrRequest, sizeof(CSR_API_MESSAGE));
+
+    Status = CsrClientCallServer(&Request,
+                                 CaptureBuffer,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, EXPUNGE_COMMAND_HISTORY),
+                                 sizeof(CSR_API_MESSAGE));
+
     CsrFreeCaptureBuffer(CaptureBuffer);
+
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
         return FALSE;
     }
+
     return TRUE;
 }
 
@@ -433,7 +436,6 @@ GetConsoleAliasW(LPWSTR lpSource,
 {
     PCSR_API_MESSAGE Request;
     PCSR_CAPTURE_BUFFER CaptureBuffer;
-    ULONG CsrRequest;
     NTSTATUS Status;
     ULONG Size;
     ULONG ExeLength;
@@ -449,8 +451,6 @@ GetConsoleAliasW(LPWSTR lpSource,
         return 0;
     }
 
-    CsrRequest = MAKE_CSR_API(GET_CONSOLE_ALIAS, CSR_CONSOLE);
-
     ExeLength = wcslen(lpExeName) + 1;
     SourceLength = wcslen(lpSource) + 1;
 
@@ -492,7 +492,7 @@ GetConsoleAliasW(LPWSTR lpSource,
 
     Status = CsrClientCallServer(Request,
                                  CaptureBuffer,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_CONSOLE_ALIAS),
                                  sizeof(CSR_API_MESSAGE) + Size);
 
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request->Status))
@@ -588,7 +588,6 @@ GetConsoleAliasExesW(LPWSTR lpExeNameBuffer,
 {
     CSR_API_MESSAGE Request;
     PCSR_CAPTURE_BUFFER CaptureBuffer;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
     DPRINT("GetConsoleAliasExesW entered\n");
@@ -601,7 +600,6 @@ GetConsoleAliasExesW(LPWSTR lpExeNameBuffer,
         return 0;
     }
 
-    CsrRequest = MAKE_CSR_API(GET_CONSOLE_ALIASES_EXES, CSR_CONSOLE);
     CsrAllocateMessagePointer(CaptureBuffer,
                               ExeNameBufferLength,
                               (PVOID*)&Request.Data.GetConsoleAliasesExes.ExeNames);
@@ -609,7 +607,7 @@ GetConsoleAliasExesW(LPWSTR lpExeNameBuffer,
 
     Status = CsrClientCallServer(&Request,
                                  CaptureBuffer,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_CONSOLE_ALIASES_EXES),
                                  sizeof(CSR_API_MESSAGE));
 
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
@@ -660,18 +658,15 @@ WINAPI
 GetConsoleAliasExesLengthW(VOID)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
     DPRINT("GetConsoleAliasExesLengthW entered\n");
 
-    CsrRequest = MAKE_CSR_API(GET_CONSOLE_ALIASES_EXES_LENGTH, CSR_CONSOLE);
     Request.Data.GetConsoleAliasesExesLength.Length = 0;
 
-
     Status = CsrClientCallServer(&Request,
                                  NULL,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_CONSOLE_ALIASES_EXES_LENGTH),
                                  sizeof(CSR_API_MESSAGE));
 
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
@@ -713,7 +708,6 @@ GetConsoleAliasesW(LPWSTR AliasBuffer,
                    LPWSTR ExeName)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
     DWORD dwLength;
 
@@ -723,14 +717,13 @@ GetConsoleAliasesW(LPWSTR AliasBuffer,
     if (!dwLength || dwLength > AliasBufferLength)
         return 0;
 
-    CsrRequest = MAKE_CSR_API(GET_ALL_CONSOLE_ALIASES, CSR_CONSOLE);
     Request.Data.GetAllConsoleAlias.AliasBuffer = AliasBuffer;
     Request.Data.GetAllConsoleAlias.AliasBufferLength = AliasBufferLength;
     Request.Data.GetAllConsoleAlias.lpExeName = ExeName;
 
     Status = CsrClientCallServer(&Request,
                                  NULL,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_ALL_CONSOLE_ALIASES),
                                  sizeof(CSR_API_MESSAGE));
 
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
@@ -784,18 +777,16 @@ WINAPI
 GetConsoleAliasesLengthW(LPWSTR lpExeName)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
     DPRINT("GetConsoleAliasesLengthW entered\n");
 
-    CsrRequest = MAKE_CSR_API(GET_ALL_CONSOLE_ALIASES_LENGTH, CSR_CONSOLE);
     Request.Data.GetAllConsoleAliasesLength.lpExeName = lpExeName;
     Request.Data.GetAllConsoleAliasesLength.Length = 0;
 
     Status = CsrClientCallServer(&Request,
                                  NULL,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_ALL_CONSOLE_ALIASES_LENGTH),
                                  sizeof(CSR_API_MESSAGE));
 
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
@@ -838,7 +829,6 @@ IntGetConsoleCommandHistory(LPVOID lpHistory, DWORD cbHistory, LPCVOID lpExeName
 {
     CSR_API_MESSAGE Request;
     PCSR_CAPTURE_BUFFER CaptureBuffer;
-    ULONG CsrRequest = MAKE_CSR_API(GET_COMMAND_HISTORY, CSR_CONSOLE);
     NTSTATUS Status;
     DWORD HistoryLength = cbHistory * (bUnicode ? 1 : sizeof(WCHAR));
 
@@ -856,13 +846,17 @@ IntGetConsoleCommandHistory(LPVOID lpHistory, DWORD cbHistory, LPCVOID lpExeName
         SetLastError(ERROR_NOT_ENOUGH_MEMORY);
         return 0;
     }
+
     IntCaptureMessageString(CaptureBuffer, lpExeName, bUnicode,
                             &Request.Data.GetCommandHistory.ExeName);
     Request.Data.GetCommandHistory.Length = HistoryLength;
     CsrAllocateMessagePointer(CaptureBuffer, HistoryLength,
                               (PVOID*)&Request.Data.GetCommandHistory.History);
 
-    Status = CsrClientCallServer(&Request, CaptureBuffer, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 CaptureBuffer,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_COMMAND_HISTORY),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         CsrFreeCaptureBuffer(CaptureBuffer);
@@ -885,6 +879,7 @@ IntGetConsoleCommandHistory(LPVOID lpHistory, DWORD cbHistory, LPCVOID lpExeName
                             cbHistory,
                             NULL, NULL);
     }
+
     CsrFreeCaptureBuffer(CaptureBuffer);
     return Request.Data.GetCommandHistory.Length;
 }
@@ -919,7 +914,6 @@ IntGetConsoleCommandHistoryLength(LPCVOID lpExeName, BOOL bUnicode)
 {
     CSR_API_MESSAGE Request;
     PCSR_CAPTURE_BUFFER CaptureBuffer;
-    ULONG CsrRequest = MAKE_CSR_API(GET_COMMAND_HISTORY_LENGTH, CSR_CONSOLE);
     NTSTATUS Status;
 
     if (lpExeName == NULL || !(bUnicode ? *(PWCHAR)lpExeName : *(PCHAR)lpExeName))
@@ -935,15 +929,23 @@ IntGetConsoleCommandHistoryLength(LPCVOID lpExeName, BOOL bUnicode)
         SetLastError(ERROR_NOT_ENOUGH_MEMORY);
         return 0;
     }
+
     IntCaptureMessageString(CaptureBuffer, lpExeName, bUnicode,
                             &Request.Data.GetCommandHistoryLength.ExeName);
-    Status = CsrClientCallServer(&Request, CaptureBuffer, CsrRequest, sizeof(CSR_API_MESSAGE));
+
+    Status = CsrClientCallServer(&Request,
+                                 CaptureBuffer,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_COMMAND_HISTORY_LENGTH),
+                                 sizeof(CSR_API_MESSAGE));
+
     CsrFreeCaptureBuffer(CaptureBuffer);
+
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
         return 0;
     }
+
     return Request.Data.GetCommandHistoryLength.Length;
 }
 
@@ -1029,16 +1031,14 @@ GetConsoleHardwareState(HANDLE hConsole,
                         PDWORD State)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(SETGET_CONSOLE_HW_STATE, CSR_CONSOLE);
     Request.Data.ConsoleHardwareStateRequest.ConsoleHandle = hConsole;
     Request.Data.ConsoleHardwareStateRequest.SetGet = CONSOLE_HARDWARE_STATE_GET;
 
     Status = CsrClientCallServer(&Request,
                                  NULL,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, SETGET_CONSOLE_HW_STATE),
                                  sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
@@ -1059,14 +1059,11 @@ WINAPI
 GetConsoleInputWaitHandle(VOID)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(GET_INPUT_WAIT_HANDLE, CSR_CONSOLE);
-
     Status = CsrClientCallServer(&Request,
                                  NULL,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_INPUT_WAIT_HANDLE),
                                  sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
@@ -1136,11 +1133,11 @@ OpenConsoleW(LPCWSTR wsName,
 
     if (wsName && 0 == _wcsicmp(wsName, L"CONIN$"))
     {
-        CsrRequest = MAKE_CSR_API(GET_INPUT_HANDLE, CSR_NATIVE);
+        CsrRequest = CSR_CREATE_API_NUMBER(CSR_NATIVE, GET_INPUT_HANDLE);
     }
     else if (wsName && 0 == _wcsicmp(wsName, L"CONOUT$"))
     {
-        CsrRequest = MAKE_CSR_API(GET_OUTPUT_HANDLE, CSR_NATIVE);
+        CsrRequest = CSR_CREATE_API_NUMBER(CSR_NATIVE, GET_OUTPUT_HANDLE);
     }
     else
     {
@@ -1239,17 +1236,15 @@ SetConsoleHardwareState(HANDLE hConsole,
                         DWORD State)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(SETGET_CONSOLE_HW_STATE, CSR_CONSOLE);
     Request.Data.ConsoleHardwareStateRequest.ConsoleHandle = hConsole;
     Request.Data.ConsoleHardwareStateRequest.SetGet = CONSOLE_HARDWARE_STATE_SET;
     Request.Data.ConsoleHardwareStateRequest.State = State;
 
     Status = CsrClientCallServer(&Request,
                                  NULL,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, SETGET_CONSOLE_HW_STATE),
                                  sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
@@ -1311,7 +1306,6 @@ IntSetConsoleNumberOfCommands(DWORD dwNumCommands,
 {
     CSR_API_MESSAGE Request;
     PCSR_CAPTURE_BUFFER CaptureBuffer;
-    ULONG CsrRequest = MAKE_CSR_API(SET_HISTORY_NUMBER_COMMANDS, CSR_CONSOLE);
     NTSTATUS Status;
 
     if (lpExeName == NULL || !(bUnicode ? *(PWCHAR)lpExeName : *(PCHAR)lpExeName))
@@ -1327,16 +1321,24 @@ IntSetConsoleNumberOfCommands(DWORD dwNumCommands,
         SetLastError(ERROR_NOT_ENOUGH_MEMORY);
         return FALSE;
     }
+
     IntCaptureMessageString(CaptureBuffer, lpExeName, bUnicode,
                             &Request.Data.SetHistoryNumberCommands.ExeName);
     Request.Data.SetHistoryNumberCommands.NumCommands = dwNumCommands;
-    Status = CsrClientCallServer(&Request, CaptureBuffer, CsrRequest, sizeof(CSR_API_MESSAGE));
+
+    Status = CsrClientCallServer(&Request,
+                                 CaptureBuffer,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, SET_HISTORY_NUMBER_COMMANDS),
+                                 sizeof(CSR_API_MESSAGE));
+
     CsrFreeCaptureBuffer(CaptureBuffer);
+
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
         return FALSE;
     }
+
     return TRUE;
 }
 
@@ -1407,15 +1409,13 @@ WINAPI
 VerifyConsoleIoHandle(HANDLE Handle)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(VERIFY_HANDLE, CSR_NATIVE);
     Request.Data.VerifyHandleRequest.Handle = Handle;
 
     Status = CsrClientCallServer(&Request,
                                  NULL,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_NATIVE, VERIFY_HANDLE),
                                  sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status))
     {
@@ -1467,15 +1467,13 @@ WINAPI
 CloseConsoleHandle(HANDLE Handle)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(CLOSE_HANDLE, CSR_NATIVE);
     Request.Data.CloseHandleRequest.Handle = Handle;
 
     Status = CsrClientCallServer(&Request,
                                  NULL,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_NATIVE, CLOSE_HANDLE),
                                  sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status))
     {
@@ -1592,7 +1590,7 @@ IntWriteConsole(HANDLE hConsoleOutput,
         return FALSE;
     }
 
-    CsrRequest = MAKE_CSR_API(WRITE_CONSOLE, CSR_CONSOLE);
+    CsrRequest = CSR_CREATE_API_NUMBER(CSR_CONSOLE, WRITE_CONSOLE);
 
     while (nNumberOfCharsToWrite > 0)
     {
@@ -1694,8 +1692,8 @@ IntReadConsole(HANDLE hConsoleInput,
                BOOL bUnicode)
 {
     CSR_API_MESSAGE Request;
+    ULONG CsrRequest;
     PCSR_CAPTURE_BUFFER CaptureBuffer;
-    ULONG CsrRequest = MAKE_CSR_API(READ_CONSOLE, CSR_CONSOLE);
     NTSTATUS Status = STATUS_SUCCESS;
     ULONG CharSize = (bUnicode ? sizeof(WCHAR) : sizeof(CHAR));
 
@@ -1725,6 +1723,8 @@ IntReadConsole(HANDLE hConsoleInput,
         Request.Data.ReadConsoleRequest.CtrlWakeupMask = pInputControl->dwCtrlWakeupMask;
     }
 
+    CsrRequest = CSR_CREATE_API_NUMBER(CSR_CONSOLE, READ_CONSOLE);
+
     do
     {
         if (Status == STATUS_PENDING)
@@ -1739,7 +1739,10 @@ IntReadConsole(HANDLE hConsoleInput,
             }
         }
 
-        Status = CsrClientCallServer(&Request, CaptureBuffer, CsrRequest, sizeof(CSR_API_MESSAGE));
+        Status = CsrClientCallServer(&Request,
+                                     CaptureBuffer,
+                                     CsrRequest,
+                                     sizeof(CSR_API_MESSAGE));
         if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
         {
             DPRINT1("CSR returned error in ReadConsole\n");
@@ -1820,7 +1823,6 @@ WINAPI
 AllocConsole(VOID)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
     HANDLE hStdError;
     STARTUPINFO si;
@@ -1838,9 +1840,10 @@ AllocConsole(VOID)
     Request.Data.AllocConsoleRequest.ConsoleNeeded = TRUE;
     Request.Data.AllocConsoleRequest.ShowCmd = si.wShowWindow;
 
-    CsrRequest = MAKE_CSR_API(ALLOC_CONSOLE, CSR_CONSOLE);
-
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, ALLOC_CONSOLE),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
@@ -1875,12 +1878,12 @@ FreeConsole(VOID)
     // but I just tried to reverse what AllocConsole() does...
 
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(FREE_CONSOLE, CSR_CONSOLE);
-
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, FREE_CONSOLE),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
@@ -1903,13 +1906,14 @@ GetConsoleScreenBufferInfo(HANDLE hConsoleOutput,
                            PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(SCREEN_BUFFER_INFO, CSR_CONSOLE);
     Request.Data.ScreenBufferInfoRequest.ConsoleHandle = hConsoleOutput;
 
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, SCREEN_BUFFER_INFO),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
@@ -1931,14 +1935,15 @@ SetConsoleCursorPosition(HANDLE hConsoleOutput,
                          COORD dwCursorPosition)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(SET_CURSOR, CSR_CONSOLE);
     Request.Data.SetCursorRequest.ConsoleHandle = hConsoleOutput;
     Request.Data.SetCursorRequest.Position = dwCursorPosition;
 
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, SET_CURSOR),
+                                 sizeof(CSR_API_MESSAGE));
     if(!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
@@ -1959,10 +1964,8 @@ IntFillConsoleOutputCharacter(HANDLE hConsoleOutput,
                               BOOL bUnicode)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(FILL_OUTPUT, CSR_CONSOLE);
     Request.Data.FillOutputRequest.ConsoleHandle = hConsoleOutput;
     Request.Data.FillOutputRequest.Unicode = bUnicode;
 
@@ -1976,7 +1979,7 @@ IntFillConsoleOutputCharacter(HANDLE hConsoleOutput,
 
     Status = CsrClientCallServer(&Request,
                                  NULL,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, FILL_OUTPUT),
                                  sizeof(CSR_API_MESSAGE));
 
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
@@ -2046,7 +2049,6 @@ IntPeekConsoleInput(HANDLE hConsoleInput,
                     BOOL bUnicode)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     PCSR_CAPTURE_BUFFER CaptureBuffer;
     ULONG Size;
 
@@ -2075,7 +2077,6 @@ IntPeekConsoleInput(HANDLE hConsoleInput,
                             (PVOID*)&Request.Data.PeekConsoleInputRequest.InputRecord);
 
     /* Set up the data to send to the Console Server */
-    CsrRequest = MAKE_CSR_API(PEEK_CONSOLE_INPUT, CSR_CONSOLE);
     Request.Data.PeekConsoleInputRequest.ConsoleHandle = hConsoleInput;
     Request.Data.PeekConsoleInputRequest.Unicode = bUnicode;
     Request.Data.PeekConsoleInputRequest.Length = nLength;
@@ -2083,7 +2084,7 @@ IntPeekConsoleInput(HANDLE hConsoleInput,
     /* Call the server */
     CsrClientCallServer(&Request,
                         CaptureBuffer,
-                        CsrRequest,
+                        CSR_CREATE_API_NUMBER(CSR_CONSOLE, PEEK_CONSOLE_INPUT),
                         sizeof(CSR_API_MESSAGE));
     DPRINT("Server returned: %x\n", Request.Status);
 
@@ -2166,7 +2167,7 @@ IntReadConsoleInput(HANDLE hConsoleInput,
     ULONG Read;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(READ_INPUT, CSR_CONSOLE);
+    CsrRequest = CSR_CREATE_API_NUMBER(CSR_CONSOLE, READ_INPUT);
     Read = 0;
 
     while (nLength > 0)
@@ -2280,7 +2281,6 @@ IntWriteConsoleInput(HANDLE hConsoleInput,
                      BOOL bUnicode)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     PCSR_CAPTURE_BUFFER CaptureBuffer;
     DWORD Size;
 
@@ -2309,7 +2309,6 @@ IntWriteConsoleInput(HANDLE hConsoleInput,
                             (PVOID*)&Request.Data.WriteConsoleInputRequest.InputRecord);
 
     /* Set up the data to send to the Console Server */
-    CsrRequest = MAKE_CSR_API(WRITE_CONSOLE_INPUT, CSR_CONSOLE);
     Request.Data.WriteConsoleInputRequest.ConsoleHandle = hConsoleInput;
     Request.Data.WriteConsoleInputRequest.Unicode = bUnicode;
     Request.Data.WriteConsoleInputRequest.Length = nLength;
@@ -2317,7 +2316,7 @@ IntWriteConsoleInput(HANDLE hConsoleInput,
     /* Call the server */
     CsrClientCallServer(&Request,
                         CaptureBuffer,
-                        CsrRequest,
+                        CSR_CREATE_API_NUMBER(CSR_CONSOLE, WRITE_CONSOLE_INPUT),
                         sizeof(CSR_API_MESSAGE));
     DPRINT("Server returned: %x\n", Request.Status);
 
@@ -2393,7 +2392,6 @@ IntReadConsoleOutput(HANDLE hConsoleOutput,
                      BOOL bUnicode)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     PCSR_CAPTURE_BUFFER CaptureBuffer;
     DWORD Size, SizeX, SizeY;
 
@@ -2422,7 +2420,6 @@ IntReadConsoleOutput(HANDLE hConsoleOutput,
                             (PVOID*)&Request.Data.ReadConsoleOutputRequest.CharInfo);
 
     /* Set up the data to send to the Console Server */
-    CsrRequest = MAKE_CSR_API(READ_CONSOLE_OUTPUT, CSR_CONSOLE);
     Request.Data.ReadConsoleOutputRequest.ConsoleHandle = hConsoleOutput;
     Request.Data.ReadConsoleOutputRequest.Unicode = bUnicode;
     Request.Data.ReadConsoleOutputRequest.BufferSize = dwBufferSize;
@@ -2432,7 +2429,7 @@ IntReadConsoleOutput(HANDLE hConsoleOutput,
     /* Call the server */
     CsrClientCallServer(&Request,
                         CaptureBuffer,
-                        CsrRequest,
+                        CSR_CREATE_API_NUMBER(CSR_CONSOLE, READ_CONSOLE_OUTPUT),
                         sizeof(CSR_API_MESSAGE));
     DPRINT("Server returned: %x\n", Request.Status);
 
@@ -2520,7 +2517,6 @@ IntWriteConsoleOutput(HANDLE hConsoleOutput,
                       BOOL bUnicode)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     PCSR_CAPTURE_BUFFER CaptureBuffer;
     ULONG Size;
 
@@ -2546,7 +2542,6 @@ IntWriteConsoleOutput(HANDLE hConsoleOutput,
     RtlCopyMemory(Request.Data.WriteConsoleOutputRequest.CharInfo, lpBuffer, Size);
 
     /* Set up the data to send to the Console Server */
-    CsrRequest = MAKE_CSR_API(WRITE_CONSOLE_OUTPUT, CSR_CONSOLE);
     Request.Data.WriteConsoleOutputRequest.ConsoleHandle = hConsoleOutput;
     Request.Data.WriteConsoleOutputRequest.Unicode = bUnicode;
     Request.Data.WriteConsoleOutputRequest.BufferSize = dwBufferSize;
@@ -2556,7 +2551,7 @@ IntWriteConsoleOutput(HANDLE hConsoleOutput,
     /* Call the server */
     CsrClientCallServer(&Request,
                         CaptureBuffer,
-                        CsrRequest,
+                        CSR_CREATE_API_NUMBER(CSR_CONSOLE, WRITE_CONSOLE_OUTPUT),
                         sizeof(CSR_API_MESSAGE));
     DPRINT("Server returned: %x\n", Request.Status);
 
@@ -2651,7 +2646,7 @@ IntReadConsoleOutputCharacter(HANDLE hConsoleOutput,
         return FALSE;
     }
 
-    CsrRequest = MAKE_CSR_API(READ_CONSOLE_OUTPUT_CHAR, CSR_CONSOLE);
+    CsrRequest = CSR_CREATE_API_NUMBER(CSR_CONSOLE, READ_CONSOLE_OUTPUT_CHAR);
     Request->Data.ReadConsoleOutputCharRequest.ReadCoord = dwReadCoord;
 
     while (nLength > 0)
@@ -2771,7 +2766,7 @@ ReadConsoleOutputAttribute(HANDLE hConsoleOutput,
         return FALSE;
     }
 
-    CsrRequest = MAKE_CSR_API(READ_CONSOLE_OUTPUT_ATTRIB, CSR_CONSOLE);
+    CsrRequest = CSR_CREATE_API_NUMBER(CSR_CONSOLE, READ_CONSOLE_OUTPUT_ATTRIB);
 
     while (nLength != 0)
     {
@@ -2840,7 +2835,7 @@ IntWriteConsoleOutputCharacter(HANDLE hConsoleOutput,
         return FALSE;
     }
 
-    CsrRequest = MAKE_CSR_API(WRITE_CONSOLE_OUTPUT_CHAR, CSR_CONSOLE);
+    CsrRequest = CSR_CREATE_API_NUMBER(CSR_CONSOLE, WRITE_CONSOLE_OUTPUT_CHAR);
     Request->Data.WriteConsoleOutputCharRequest.Coord = dwWriteCoord;
 
     while (nLength > 0)
@@ -2958,7 +2953,7 @@ WriteConsoleOutputAttribute(HANDLE hConsoleOutput,
         return FALSE;
     }
 
-    CsrRequest = MAKE_CSR_API(WRITE_CONSOLE_OUTPUT_ATTRIB, CSR_CONSOLE);
+    CsrRequest = CSR_CREATE_API_NUMBER(CSR_CONSOLE, WRITE_CONSOLE_OUTPUT_ATTRIB);
     Request->Data.WriteConsoleOutputAttribRequest.Coord = dwWriteCoord;
 
     if (lpNumberOfAttrsWritten)
@@ -3007,16 +3002,17 @@ FillConsoleOutputAttribute(HANDLE hConsoleOutput,
                            LPDWORD lpNumberOfAttrsWritten)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(FILL_OUTPUT_ATTRIB, CSR_CONSOLE);
     Request.Data.FillOutputAttribRequest.ConsoleHandle = hConsoleOutput;
     Request.Data.FillOutputAttribRequest.Attribute = (CHAR)wAttribute;
     Request.Data.FillOutputAttribRequest.Coord = dwWriteCoord;
     Request.Data.FillOutputAttribRequest.Length = (WORD)nLength;
 
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, FILL_OUTPUT_ATTRIB),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError ( Status );
@@ -3041,18 +3037,20 @@ GetConsoleMode(HANDLE hConsoleHandle,
                LPDWORD lpMode)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(GET_CONSOLE_MODE, CSR_CONSOLE);
     Request.Data.GetConsoleModeRequest.ConsoleHandle = hConsoleHandle;
 
-    Status = CsrClientCallServer( &Request, NULL, CsrRequest, sizeof( CSR_API_MESSAGE ) );
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_CONSOLE_MODE),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
-        BaseSetLastNTError ( Status );
+        BaseSetLastNTError(Status);
         return FALSE;
     }
+
     *lpMode = Request.Data.GetConsoleModeRequest.ConsoleMode;
 
     return TRUE;
@@ -3070,7 +3068,6 @@ GetNumberOfConsoleInputEvents(HANDLE hConsoleInput,
                               LPDWORD lpNumberOfEvents)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
     if (lpNumberOfEvents == NULL)
@@ -3079,10 +3076,12 @@ GetNumberOfConsoleInputEvents(HANDLE hConsoleInput,
         return FALSE;
     }
 
-    CsrRequest = MAKE_CSR_API(GET_NUM_INPUT_EVENTS, CSR_CONSOLE);
     Request.Data.GetNumInputEventsRequest.ConsoleHandle = hConsoleInput;
 
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_NUM_INPUT_EVENTS),
+                                 sizeof(CSR_API_MESSAGE));
     if(!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
@@ -3122,7 +3121,6 @@ GetConsoleCursorInfo(HANDLE hConsoleOutput,
                      PCONSOLE_CURSOR_INFO lpConsoleCursorInfo)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
     if (!lpConsoleCursorInfo)
@@ -3135,16 +3133,18 @@ GetConsoleCursorInfo(HANDLE hConsoleOutput,
         return FALSE;
     }
 
-    CsrRequest = MAKE_CSR_API(GET_CURSOR_INFO, CSR_CONSOLE);
     Request.Data.GetCursorInfoRequest.ConsoleHandle = hConsoleOutput;
 
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
-
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_CURSOR_INFO),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
         return FALSE;
     }
+
     *lpConsoleCursorInfo = Request.Data.GetCursorInfoRequest.Info;
 
     return TRUE;
@@ -3177,17 +3177,18 @@ SetConsoleMode(HANDLE hConsoleHandle,
                DWORD dwMode)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(SET_CONSOLE_MODE, CSR_CONSOLE);
     Request.Data.SetConsoleModeRequest.ConsoleHandle = hConsoleHandle;
     Request.Data.SetConsoleModeRequest.Mode = dwMode;
 
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, SET_CONSOLE_MODE),
+                                 sizeof(CSR_API_MESSAGE));
     if(!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
-        BaseSetLastNTError ( Status );
+        BaseSetLastNTError(Status);
         return FALSE;
     }
 
@@ -3205,13 +3206,14 @@ WINAPI
 SetConsoleActiveScreenBuffer(HANDLE hConsoleOutput)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(SET_SCREEN_BUFFER, CSR_CONSOLE);
     Request.Data.SetScreenBufferRequest.OutputHandle = hConsoleOutput;
 
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, SET_SCREEN_BUFFER),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
@@ -3232,13 +3234,14 @@ WINAPI
 FlushConsoleInputBuffer(HANDLE hConsoleInput)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(FLUSH_INPUT_BUFFER, CSR_CONSOLE);
     Request.Data.FlushInputBufferRequest.ConsoleInput = hConsoleInput;
 
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, FLUSH_INPUT_BUFFER),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
@@ -3260,14 +3263,15 @@ SetConsoleScreenBufferSize(HANDLE hConsoleOutput,
                            COORD dwSize)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(SET_SCREEN_BUFFER_SIZE, CSR_CONSOLE);
     Request.Data.SetScreenBufferSize.OutputHandle = hConsoleOutput;
     Request.Data.SetScreenBufferSize.Size = dwSize;
 
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, SET_SCREEN_BUFFER_SIZE),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
@@ -3288,14 +3292,15 @@ SetConsoleCursorInfo(HANDLE hConsoleOutput,
                      CONST CONSOLE_CURSOR_INFO *lpConsoleCursorInfo)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(SET_CURSOR_INFO, CSR_CONSOLE);
     Request.Data.SetCursorInfoRequest.ConsoleHandle = hConsoleOutput;
     Request.Data.SetCursorInfoRequest.Info = *lpConsoleCursorInfo;
 
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, SET_CURSOR_INFO),
+                                 sizeof(CSR_API_MESSAGE));
     if(!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
@@ -3316,10 +3321,8 @@ IntScrollConsoleScreenBuffer(HANDLE hConsoleOutput,
                              BOOL bUnicode)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(SCROLL_CONSOLE_SCREEN_BUFFER, CSR_CONSOLE);
     Request.Data.ScrollConsoleScreenBufferRequest.ConsoleHandle = hConsoleOutput;
     Request.Data.ScrollConsoleScreenBufferRequest.Unicode = bUnicode;
     Request.Data.ScrollConsoleScreenBufferRequest.ScrollRectangle = *lpScrollRectangle;
@@ -3339,7 +3342,7 @@ IntScrollConsoleScreenBuffer(HANDLE hConsoleOutput,
 
     Status = CsrClientCallServer(&Request,
                                  NULL,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, SCROLL_CONSOLE_SCREEN_BUFFER),
                                  sizeof(CSR_API_MESSAGE));
 
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
@@ -3424,14 +3427,15 @@ SetConsoleTextAttribute(HANDLE hConsoleOutput,
                         WORD wAttributes)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(SET_ATTRIB, CSR_CONSOLE);
     Request.Data.SetAttribRequest.ConsoleHandle = hConsoleOutput;
     Request.Data.SetAttribRequest.Attrib = wAttributes;
 
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, SET_ATTRIB),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
@@ -3549,7 +3553,6 @@ GenerateConsoleCtrlEvent(DWORD dwCtrlEvent,
                          DWORD dwProcessGroupId)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
     if (dwCtrlEvent != CTRL_C_EVENT && dwCtrlEvent != CTRL_BREAK_EVENT)
@@ -3558,13 +3561,12 @@ GenerateConsoleCtrlEvent(DWORD dwCtrlEvent,
         return FALSE;
     }
 
-    CsrRequest = MAKE_CSR_API(GENERATE_CTRL_EVENT, CSR_CONSOLE);
     Request.Data.GenerateCtrlEvent.Event = dwCtrlEvent;
     Request.Data.GenerateCtrlEvent.ProcessGroup = dwProcessGroupId;
 
     Status = CsrClientCallServer(&Request,
                                  NULL,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GENERATE_CTRL_EVENT),
                                  sizeof(CSR_API_MESSAGE));
     if(!NT_SUCCESS(Status) || !(NT_SUCCESS(Status = Request.Status)))
     {
@@ -3581,7 +3583,6 @@ IntGetConsoleTitle(LPVOID lpConsoleTitle, DWORD nSize, BOOL bUnicode)
 {
     CSR_API_MESSAGE Request;
     PCSR_CAPTURE_BUFFER CaptureBuffer;
-    ULONG CsrRequest = MAKE_CSR_API(GET_TITLE, CSR_CONSOLE);
     NTSTATUS Status;
 
     if (nSize == 0)
@@ -3600,7 +3601,10 @@ IntGetConsoleTitle(LPVOID lpConsoleTitle, DWORD nSize, BOOL bUnicode)
                               Request.Data.GetTitleRequest.Length,
                               (PVOID*)&Request.Data.GetTitleRequest.Title);
 
-    Status = CsrClientCallServer(&Request, CaptureBuffer, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 CaptureBuffer,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_TITLE),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !(NT_SUCCESS(Status = Request.Status)))
     {
         CsrFreeCaptureBuffer(CaptureBuffer);
@@ -3675,7 +3679,6 @@ SetConsoleTitleW(LPCWSTR lpConsoleTitle)
 {
     CSR_API_MESSAGE Request;
     PCSR_CAPTURE_BUFFER CaptureBuffer;
-    ULONG CsrRequest = MAKE_CSR_API(SET_TITLE, CSR_CONSOLE);
     NTSTATUS Status;
 
     Request.Data.SetTitleRequest.Length = wcslen(lpConsoleTitle) * sizeof(WCHAR);
@@ -3693,8 +3696,13 @@ SetConsoleTitleW(LPCWSTR lpConsoleTitle)
                             Request.Data.SetTitleRequest.Length,
                             (PVOID*)&Request.Data.SetTitleRequest.Title);
 
-    Status = CsrClientCallServer(&Request, CaptureBuffer, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 CaptureBuffer,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, SET_TITLE),
+                                 sizeof(CSR_API_MESSAGE));
+
     CsrFreeCaptureBuffer(CaptureBuffer);
+
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
@@ -3745,7 +3753,6 @@ CreateConsoleScreenBuffer(DWORD dwDesiredAccess,
                           LPVOID lpScreenBufferData)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
     if (dwDesiredAccess & ~(GENERIC_READ | GENERIC_WRITE)
@@ -3761,8 +3768,10 @@ CreateConsoleScreenBuffer(DWORD dwDesiredAccess,
     Request.Data.CreateScreenBufferRequest.Inheritable =
         lpSecurityAttributes ? lpSecurityAttributes->bInheritHandle : FALSE;
 
-    CsrRequest = MAKE_CSR_API(CREATE_SCREEN_BUFFER, CSR_CONSOLE);
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, CREATE_SCREEN_BUFFER),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
@@ -3782,11 +3791,12 @@ WINAPI
 GetConsoleCP(VOID)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(GET_CONSOLE_CP, CSR_CONSOLE);
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_CONSOLE_CP),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError (Status);
@@ -3807,13 +3817,14 @@ WINAPI
 SetConsoleCP(UINT wCodePageID)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(SET_CONSOLE_CP, CSR_CONSOLE);
     Request.Data.SetConsoleCodePage.CodePage = wCodePageID;
 
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, SET_CONSOLE_CP),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
@@ -3833,11 +3844,12 @@ WINAPI
 GetConsoleOutputCP(VOID)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(GET_CONSOLE_OUTPUT_CP, CSR_CONSOLE);
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_CONSOLE_OUTPUT_CP),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError (Status);
@@ -3858,12 +3870,14 @@ WINAPI
 SetConsoleOutputCP(UINT wCodePageID)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(SET_CONSOLE_OUTPUT_CP, CSR_CONSOLE);
     Request.Data.SetConsoleOutputCodePage.CodePage = wCodePageID;
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, SET_CONSOLE_OUTPUT_CP),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
@@ -3885,7 +3899,6 @@ GetConsoleProcessList(LPDWORD lpdwProcessList,
 {
     PCSR_CAPTURE_BUFFER CaptureBuffer;
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     ULONG nProcesses;
     NTSTATUS Status;
 
@@ -3903,7 +3916,6 @@ GetConsoleProcessList(LPDWORD lpdwProcessList,
         return FALSE;
     }
 
-    CsrRequest = MAKE_CSR_API(GET_PROCESS_LIST, CSR_CONSOLE);
     Request.Data.GetProcessListRequest.nMaxIds = dwProcessCount;
     CsrAllocateMessagePointer(CaptureBuffer,
                               dwProcessCount * sizeof(DWORD),
@@ -3911,7 +3923,7 @@ GetConsoleProcessList(LPDWORD lpdwProcessList,
 
     Status = CsrClientCallServer(&Request,
                                  CaptureBuffer,
-                                 CsrRequest,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_PROCESS_LIST),
                                  sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
@@ -3943,8 +3955,10 @@ WINAPI
 GetConsoleSelectionInfo(PCONSOLE_SELECTION_INFO lpConsoleSelectionInfo)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest = MAKE_CSR_API(GET_CONSOLE_SELECTION_INFO, CSR_CONSOLE);
-    NTSTATUS Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    NTSTATUS Status = CsrClientCallServer(&Request,
+                                          NULL,
+                                          CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_CONSOLE_SELECTION_INFO),
+                                          sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
@@ -3980,11 +3994,12 @@ WINAPI
 GetConsoleWindow(VOID)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(GET_CONSOLE_WINDOW, CSR_CONSOLE);
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_CONSOLE_WINDOW),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status ) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
@@ -4005,13 +4020,14 @@ WINAPI
 SetConsoleIcon(HICON hicon)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest;
     NTSTATUS Status;
 
-    CsrRequest = MAKE_CSR_API(SET_CONSOLE_ICON, CSR_CONSOLE);
     Request.Data.SetConsoleIconRequest.WindowIcon = hicon;
 
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, SET_CONSOLE_ICON),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
index caa331b..28eab55 100644 (file)
@@ -31,7 +31,7 @@ NotifySoundSentry(VOID)
     {
         CsrClientCallServer(&ApiMessage,
                             NULL,
-                            MAKE_CSR_API(SOUND_SENTRY, CSR_NATIVE),
+                            CSR_CREATE_API_NUMBER(CSR_NATIVE, SOUND_SENTRY),
                             sizeof(CSR_API_MESSAGE));
     }
 }
index a1aa505..6a3e210 100644 (file)
@@ -158,7 +158,10 @@ GetTempFileNameW(IN LPCWSTR lpPathName,
         /* If user didn't gave any ID, ask Csrss to give one */
         if (!uUnique)
         {
-            CsrClientCallServer(&ApiMessage, NULL, MAKE_CSR_API(GET_TEMP_FILE, CSR_NATIVE), sizeof(CSR_API_MESSAGE));
+            CsrClientCallServer(&ApiMessage,
+                                NULL,
+                                CSR_CREATE_API_NUMBER(CSR_NATIVE, GET_TEMP_FILE),
+                                sizeof(CSR_API_MESSAGE));
             if (ApiMessage.Data.GetTempFile.UniqueID == 0)
             {
                 Num++;
index cbf5437..601e688 100644 (file)
@@ -508,7 +508,7 @@ BasepNotifyCsrOfThread(IN HANDLE ThreadHandle,
     /* Call CSR */
     Status = CsrClientCallServer(&CsrRequest,
                                  NULL,
-                                 MAKE_CSR_API(Request, CSR_NATIVE),
+                                 CSR_CREATE_API_NUMBER(CSR_NATIVE, Request),
                                  sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(CsrRequest.Status))
     {
@@ -584,7 +584,7 @@ BasepCreateFirstThread(HANDLE ProcessHandle,
     /* Call CSR */
     Status = CsrClientCallServer(&CsrRequest,
                                  NULL,
-                                 MAKE_CSR_API(Request, CSR_NATIVE),
+                                 CSR_CREATE_API_NUMBER(CSR_NATIVE, Request),
                                  sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(CsrRequest.Status))
     {
@@ -1182,7 +1182,7 @@ GetProcessShutdownParameters(OUT LPDWORD lpdwLevel,
     /* Ask CSRSS for shutdown information */
     Status = CsrClientCallServer(&CsrRequest,
                                  NULL,
-                                 MAKE_CSR_API(GET_SHUTDOWN_PARAMETERS, CSR_NATIVE),
+                                 CSR_CREATE_API_NUMBER(CSR_NATIVE, GET_SHUTDOWN_PARAMETERS),
                                  sizeof(CSR_API_MESSAGE));
     if (!(NT_SUCCESS(Status)) || !(NT_SUCCESS(CsrRequest.Status)))
     {
@@ -1213,7 +1213,7 @@ SetProcessShutdownParameters(IN DWORD dwLevel,
     CsrRequest.Data.SetShutdownParametersRequest.Flags = dwFlags;
     Status = CsrClientCallServer(&CsrRequest,
                                  NULL,
-                                 MAKE_CSR_API(SET_SHUTDOWN_PARAMETERS, CSR_NATIVE),
+                                 CSR_CREATE_API_NUMBER(CSR_NATIVE, SET_SHUTDOWN_PARAMETERS),
                                  sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(CsrRequest.Status))
     {
@@ -1760,7 +1760,7 @@ ExitProcess(IN UINT uExitCode)
         CsrRequest.Data.TerminateProcessRequest.uExitCode = uExitCode;
         CsrClientCallServer(&CsrRequest,
                             NULL,
-                            MAKE_CSR_API(TERMINATE_PROCESS, CSR_NATIVE),
+                            CSR_CREATE_API_NUMBER(CSR_NATIVE, TERMINATE_PROCESS),
                             sizeof(CSR_API_MESSAGE));
 
         /* Now do it again */
index 2c122e0..166cd21 100644 (file)
@@ -89,7 +89,6 @@ BaseUpdateVDMEntry(IN ULONG UpdateIndex,
 {
     NTSTATUS Status;
     CSR_API_MESSAGE Msg;
-    ULONG CsrRequest = MAKE_CSR_API(UPDATE_VDM_ENTRY, CSR_CONSOLE);
 
     /* Check what update is being sent */
     switch (UpdateIndex)
@@ -133,7 +132,10 @@ BaseUpdateVDMEntry(IN ULONG UpdateIndex,
     Msg.Data.UpdateVdmEntry.BinaryType = BinaryType;
 
     /* Send the message to CSRSS */
-    Status = CsrClientCallServer(&Msg, NULL, CsrRequest, sizeof(Msg));
+    Status = CsrClientCallServer(&Msg,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, UPDATE_VDM_ENTRY),
+                                 sizeof(Msg));
     if (!(NT_SUCCESS(Status)) || !(NT_SUCCESS(Msg.Status)))
     {
         /* Handle failure */
@@ -160,7 +162,6 @@ BaseCheckForVDM(IN HANDLE ProcessHandle,
     NTSTATUS Status;
     EVENT_BASIC_INFORMATION EventBasicInfo;
     CSR_API_MESSAGE Msg;
-    ULONG CsrRequest = MAKE_CSR_API(GET_VDM_EXIT_CODE, CSR_CONSOLE);
 
     /* It's VDM if the process is actually a wait handle (an event) */
     Status = NtQueryEvent(ProcessHandle,
@@ -175,7 +176,10 @@ BaseCheckForVDM(IN HANDLE ProcessHandle,
     Msg.Data.GetVdmExitCode.hParent = ProcessHandle;
 
     /* Call CSRSS */
-    Status = CsrClientCallServer(&Msg, NULL, CsrRequest, sizeof(Msg));
+    Status = CsrClientCallServer(&Msg,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_VDM_EXIT_CODE),
+                                 sizeof(Msg));
     if (!NT_SUCCESS(Status)) return FALSE;
 
     /* Get the exit code from the reply */
index aff5208..697207d 100644 (file)
@@ -319,22 +319,28 @@ WINAPI
 GetConsoleHistoryInfo(PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest = MAKE_CSR_API(GET_HISTORY_INFO, CSR_CONSOLE);
     NTSTATUS Status;
+
     if (lpConsoleHistoryInfo->cbSize != sizeof(CONSOLE_HISTORY_INFO))
     {
         SetLastError(ERROR_INVALID_PARAMETER);
         return FALSE;
     }
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_HISTORY_INFO),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
         return FALSE;
     }
+
     lpConsoleHistoryInfo->HistoryBufferSize      = Request.Data.GetHistoryInfo.HistoryBufferSize;
     lpConsoleHistoryInfo->NumberOfHistoryBuffers = Request.Data.GetHistoryInfo.NumberOfHistoryBuffers;
     lpConsoleHistoryInfo->dwFlags                = Request.Data.GetHistoryInfo.dwFlags;
+
     return TRUE;
 }
 
@@ -349,22 +355,28 @@ WINAPI
 SetConsoleHistoryInfo(IN PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
 {
     CSR_API_MESSAGE Request;
-    ULONG CsrRequest = MAKE_CSR_API(GET_HISTORY_INFO, CSR_CONSOLE);
     NTSTATUS Status;
+
     if (lpConsoleHistoryInfo->cbSize != sizeof(CONSOLE_HISTORY_INFO))
     {
         SetLastError(ERROR_INVALID_PARAMETER);
         return FALSE;
     }
+
     Request.Data.SetHistoryInfo.HistoryBufferSize      = lpConsoleHistoryInfo->HistoryBufferSize;
     Request.Data.SetHistoryInfo.NumberOfHistoryBuffers = lpConsoleHistoryInfo->NumberOfHistoryBuffers;
     Request.Data.SetHistoryInfo.dwFlags                = lpConsoleHistoryInfo->dwFlags;
-    Status = CsrClientCallServer(&Request, NULL, CsrRequest, sizeof(CSR_API_MESSAGE));
+
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_HISTORY_INFO),
+                                 sizeof(CSR_API_MESSAGE));
     if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
         BaseSetLastNTError(Status);
         return FALSE;
     }
+
     return TRUE;
 }
 
index d791465..997e023 100644 (file)
@@ -36,7 +36,8 @@
 #include <ndk/umfuncs.h>
 
 /* CSRSS Header */
-#include <csrss/csrss.h>
+#include <csrss/client.h>
+#include <csrss/csrss.h> // FIXME: data header.
 
 /* C Headers */
 #include <ctype.h>
index 16b8f46..f8c8692 100644 (file)
@@ -25,103 +25,6 @@ Author:
 #include <umtypes.h>
 #include <dbgktypes.h>
 
-//
-// Don't force inclusion of csrss header, leave this opaque.
-//
-struct _CSR_API_MESSAGE;
-struct _CSR_CAPTURE_BUFFER;
-
-//
-// CSR Functions
-//
-PVOID
-NTAPI
-CsrAllocateCaptureBuffer(
-    ULONG ArgumentCount,
-    ULONG BufferSize
-);
-
-ULONG
-NTAPI
-CsrAllocateMessagePointer(
-    struct _CSR_CAPTURE_BUFFER *CaptureBuffer,
-    ULONG MessageLength,
-    PVOID *CaptureData
-);
-
-VOID
-NTAPI
-CsrCaptureMessageBuffer(
-    struct _CSR_CAPTURE_BUFFER *CaptureBuffer,
-    PVOID MessageString,
-    ULONG StringLength,
-    PVOID *CapturedData
-);
-
-NTSTATUS
-NTAPI
-CsrClientConnectToServer(
-    PWSTR ObjectDirectory,
-    ULONG ServerId,
-    PVOID ConnectionInfo,
-    PULONG ConnectionInfoSize,
-    PBOOLEAN ServerToServerCall
-);
-
-NTSTATUS
-NTAPI
-CsrClientCallServer(
-    struct _CSR_API_MESSAGE *Request,
-    struct _CSR_CAPTURE_BUFFER *CaptureBuffer OPTIONAL,
-    ULONG ApiNumber,
-    ULONG RequestLength
-);
-
-NTSTATUS
-NTAPI
-CsrIdentifyAlertableThread(
-    VOID
-);
-
-VOID
-NTAPI
-CsrFreeCaptureBuffer(
-    struct _CSR_CAPTURE_BUFFER *CaptureBuffer
-);
-
-HANDLE
-NTAPI
-CsrGetProcessId(
-    VOID
-);
-
-NTSTATUS
-NTAPI
-CsrNewThread(VOID);
-
-NTSTATUS
-NTAPI
-CsrSetPriorityClass(
-    HANDLE Process,
-    PULONG PriorityClass
-);
-
-VOID
-NTAPI
-CsrProbeForRead(
-    IN PVOID Address,
-    IN ULONG Length,
-    IN ULONG Alignment
-);
-
-VOID
-NTAPI
-CsrProbeForWrite(
-    IN PVOID Address,
-    IN ULONG Length,
-    IN ULONG Alignment
-);
-
 //
 // Debug Functions
 //
index 6c5a331..ff8af0e 100644 (file)
@@ -105,13 +105,6 @@ Author:
 #define MAXUSHORT                       0xffff
 #define MAXULONG                        0xffffffff
 
-//
-// CSR Macros
-//
-#define CSR_MAKE_OPCODE(s,m)            ((s) << 16) | (m)
-#define CSR_API_ID_FROM_OPCODE(n)       ((ULONG)((USHORT)(n)))
-#define CSR_SERVER_ID_FROM_OPCODE(n)    (ULONG)((n) >> 16)
-
 //
 // Basic Types that aren't defined in User-Mode Headers
 //
diff --git a/include/reactos/subsys/csrss/client.h b/include/reactos/subsys/csrss/client.h
new file mode 100644 (file)
index 0000000..251296e
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/subsys/csrss/client.h
+ * PURPOSE:         Public Definitions for CSR Clients
+ * PROGRAMMERS:     Alex Ionescu (alex@relsoft.net)
+ *                  Hermes Belusca-Maito (hermes.belusca@sfr.fr)
+ */
+
+#ifndef _CSRCLIENT_H
+#define _CSRCLIENT_H
+
+#include "msg.h"
+
+/*
+BOOLEAN
+NTAPI
+CsrCaptureArguments(IN PCSR_THREAD CsrThread,
+                    IN PCSR_API_MESSAGE ApiMessage);
+
+VOID
+NTAPI
+CsrReleaseCapturedArguments(IN PCSR_API_MESSAGE ApiMessage);
+*/
+
+NTSTATUS
+NTAPI
+CsrClientConnectToServer(IN PWSTR ObjectDirectory,
+                         IN ULONG ServerId,
+                         IN PVOID ConnectionInfo,
+                         IN OUT PULONG ConnectionInfoSize,
+                         OUT PBOOLEAN ServerToServerCall);
+
+NTSTATUS
+NTAPI
+CsrClientCallServer(IN OUT PCSR_API_MESSAGE Request,
+                    IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer OPTIONAL,
+                    IN ULONG ApiNumber,
+                    IN ULONG RequestLength);
+
+PVOID
+NTAPI
+CsrAllocateCaptureBuffer(IN ULONG ArgumentCount,
+                         IN ULONG BufferSize);
+
+VOID
+NTAPI
+CsrFreeCaptureBuffer(IN PCSR_CAPTURE_BUFFER CaptureBuffer);
+
+ULONG
+NTAPI
+CsrAllocateMessagePointer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
+                          IN ULONG MessageLength,
+                          OUT PVOID* CaptureData);
+
+VOID
+NTAPI
+CsrCaptureMessageBuffer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
+                        IN PVOID MessageString,
+                        IN ULONG StringLength,
+                        OUT PVOID* CapturedData);
+
+BOOLEAN
+NTAPI
+CsrValidateMessageBuffer(IN PCSR_API_MESSAGE ApiMessage,
+                         IN PVOID* Buffer,
+                         IN ULONG ArgumentSize,
+                         IN ULONG ArgumentCount);
+
+VOID
+NTAPI
+CsrProbeForRead(IN PVOID Address,
+                IN ULONG Length,
+                IN ULONG Alignment);
+
+VOID
+NTAPI
+CsrProbeForWrite(IN PVOID Address,
+                 IN ULONG Length,
+                 IN ULONG Alignment);
+
+NTSTATUS
+NTAPI
+CsrIdentifyAlertableThread(VOID);
+
+HANDLE
+NTAPI
+CsrGetProcessId(VOID);
+
+NTSTATUS
+NTAPI
+CsrNewThread(VOID);
+
+NTSTATUS
+NTAPI
+CsrSetPriorityClass(IN HANDLE Process,
+                    IN OUT PULONG PriorityClass);
+
+#endif // _CSRCLIENT_H
+
+/* EOF */
diff --git a/include/reactos/subsys/csrss/csrcons.h b/include/reactos/subsys/csrss/csrcons.h
new file mode 100644 (file)
index 0000000..ce7e7d0
--- /dev/null
@@ -0,0 +1,392 @@
+/*
+ * CSRSS Console management structures.
+ */
+
+#ifndef __CSRCONS_H__
+#define __CSRCONS_H__
+
+#include <drivers/blue/ntddblue.h>
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    BOOL Unicode;
+    ULONG NrCharactersToWrite;
+    ULONG NrCharactersWritten;
+    HANDLE UnpauseEvent;
+    BYTE Buffer[0];
+} CSRSS_WRITE_CONSOLE, *PCSRSS_WRITE_CONSOLE;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    BOOL Unicode;
+    WORD NrCharactersToRead;
+    WORD NrCharactersRead;
+    HANDLE EventHandle;
+    PVOID Buffer;
+    UNICODE_STRING ExeName;
+    DWORD CtrlWakeupMask;
+    DWORD ControlKeyState;
+} CSRSS_READ_CONSOLE, *PCSRSS_READ_CONSOLE;
+
+typedef struct
+{
+    PCONTROLDISPATCHER CtrlDispatcher;
+    BOOLEAN ConsoleNeeded;
+    INT ShowCmd;
+    HANDLE Console;
+    HANDLE InputHandle;
+    HANDLE OutputHandle;
+} CSRSS_ALLOC_CONSOLE, *PCSRSS_ALLOC_CONSOLE;
+
+typedef struct
+{
+    ULONG Dummy;
+} CSRSS_FREE_CONSOLE, *PCSRSS_FREE_CONSOLE;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    CONSOLE_SCREEN_BUFFER_INFO Info;
+} CSRSS_SCREEN_BUFFER_INFO, *PCSRSS_SCREEN_BUFFER_INFO;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    COORD Position;
+} CSRSS_SET_CURSOR, *PCSRSS_SET_CURSOR;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    BOOL Unicode;
+    union
+    {
+        CHAR AsciiChar;
+        WCHAR UnicodeChar;
+    } Char;
+    COORD Position;
+    WORD Length;
+    ULONG NrCharactersWritten;
+} CSRSS_FILL_OUTPUT, *PCSRSS_FILL_OUTPUT;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    CHAR Attribute;
+    COORD Coord;
+    WORD Length;
+} CSRSS_FILL_OUTPUT_ATTRIB, *PCSRSS_FILL_OUTPUT_ATTRIB;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    BOOL Unicode;
+    INPUT_RECORD Input;
+    BOOL MoreEvents;
+    HANDLE Event;
+} CSRSS_READ_INPUT, *PCSRSS_READ_INPUT;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    BOOL Unicode;
+    WORD Length;
+    COORD Coord;
+    COORD EndCoord;
+    ULONG NrCharactersWritten;
+    CHAR String[0];
+} CSRSS_WRITE_CONSOLE_OUTPUT_CHAR, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    WORD Length;
+    COORD Coord;
+    COORD EndCoord;
+    WORD Attribute[0];
+} CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    CONSOLE_CURSOR_INFO Info;
+} CSRSS_GET_CURSOR_INFO, *PCSRSS_GET_CURSOR_INFO;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    CONSOLE_CURSOR_INFO Info;
+} CSRSS_SET_CURSOR_INFO, *PCSRSS_SET_CURSOR_INFO;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    WORD Attrib;
+} CSRSS_SET_ATTRIB, *PCSRSS_SET_ATTRIB;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    DWORD Mode;
+} CSRSS_SET_CONSOLE_MODE, *PCSRSS_SET_CONSOLE_MODE;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    DWORD ConsoleMode;
+} CSRSS_GET_CONSOLE_MODE, *PCSRSS_GET_CONSOLE_MODE;
+
+typedef struct
+{
+    DWORD Access;
+    DWORD ShareMode;
+    BOOL Inheritable;
+    HANDLE OutputHandle;  /* handle to newly created screen buffer */
+} CSRSS_CREATE_SCREEN_BUFFER, *PCSRSS_CREATE_SCREEN_BUFFER;
+
+typedef struct
+{
+    HANDLE OutputHandle;  /* handle to screen buffer to switch to */
+} CSRSS_SET_SCREEN_BUFFER, *PCSRSS_SET_SCREEN_BUFFER;
+
+typedef struct
+{
+    DWORD Length;
+    PWCHAR Title;
+} CSRSS_SET_TITLE, *PCSRSS_SET_TITLE;
+
+typedef struct
+{
+    DWORD Length;
+    PWCHAR Title;
+} CSRSS_GET_TITLE, *PCSRSS_GET_TITLE;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    BOOL Unicode;
+    COORD BufferSize;
+    COORD BufferCoord;
+    SMALL_RECT WriteRegion;
+    CHAR_INFO* CharInfo;
+} CSRSS_WRITE_CONSOLE_OUTPUT, *PCSRSS_WRITE_CONSOLE_OUTPUT;
+
+typedef struct
+{
+    HANDLE ConsoleInput;
+} CSRSS_FLUSH_INPUT_BUFFER, *PCSRSS_FLUSH_INPUT_BUFFER;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    BOOL Unicode;
+    SMALL_RECT ScrollRectangle;
+    BOOLEAN UseClipRectangle;
+    SMALL_RECT ClipRectangle;
+    COORD DestinationOrigin;
+    CHAR_INFO Fill;
+} CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    BOOL Unicode;
+    DWORD NumCharsToRead;
+    COORD ReadCoord;
+    COORD EndCoord;
+    DWORD CharsRead;
+    CHAR String[0];
+} CSRSS_READ_CONSOLE_OUTPUT_CHAR, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    DWORD NumAttrsToRead;
+    COORD ReadCoord;
+    COORD EndCoord;
+    WORD Attribute[0];
+} CSRSS_READ_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB;
+
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    BOOL Unicode;
+    DWORD Length;
+    INPUT_RECORD* InputRecord;
+} CSRSS_PEEK_CONSOLE_INPUT, *PCSRSS_PEEK_CONSOLE_INPUT;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    BOOL Unicode;
+    COORD BufferSize;
+    COORD BufferCoord;
+    SMALL_RECT ReadRegion;
+    CHAR_INFO* CharInfo;
+} CSRSS_READ_CONSOLE_OUTPUT, *PCSRSS_READ_CONSOLE_OUTPUT;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    BOOL Unicode;
+    DWORD Length;
+    INPUT_RECORD* InputRecord;
+} CSRSS_WRITE_CONSOLE_INPUT, *PCSRSS_WRITE_CONSOLE_INPUT;
+
+typedef struct
+{
+    DWORD Access;
+    BOOL Inheritable;
+    HANDLE Handle;
+    DWORD ShareMode;
+} CSRSS_GET_INPUT_HANDLE, *PCSRSS_GET_INPUT_HANDLE,
+  CSRSS_GET_OUTPUT_HANDLE, *PCSRSS_GET_OUTPUT_HANDLE;
+
+
+#define CONSOLE_HARDWARE_STATE_GET 0
+#define CONSOLE_HARDWARE_STATE_SET 1
+
+#define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
+#define CONSOLE_HARDWARE_STATE_DIRECT      1
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    DWORD SetGet; /* 0=get; 1=set */
+    DWORD State;
+} CSRSS_SETGET_CONSOLE_HW_STATE, *PCSRSS_SETGET_CONSOLE_HW_STATE;
+
+typedef struct
+{
+    HWND   WindowHandle;
+} CSRSS_GET_CONSOLE_WINDOW, *PCSRSS_GET_CONSOLE_WINDOW;
+
+typedef struct
+{
+    HICON  WindowIcon;
+} CSRSS_SET_CONSOLE_ICON, *PCSRSS_SET_CONSOLE_ICON;
+
+typedef struct
+{
+    ULONG SourceLength;
+    ULONG ExeLength;
+    ULONG TargetLength;
+} CSRSS_ADD_CONSOLE_ALIAS, *PCSRSS_ADD_CONSOLE_ALIAS;
+
+typedef struct
+{
+    ULONG SourceLength;
+    ULONG ExeLength;
+    ULONG BytesWritten;
+    ULONG TargetBufferLength;
+    PVOID TargetBuffer;
+} CSRSS_GET_CONSOLE_ALIAS, *PCSRSS_GET_CONSOLE_ALIAS;
+
+typedef struct
+{
+    LPWSTR lpExeName;
+    DWORD BytesWritten;
+    DWORD AliasBufferLength;
+    LPWSTR AliasBuffer;
+} CSRSS_GET_ALL_CONSOLE_ALIASES, *PCSRSS_GET_ALL_CONSOLE_ALIAS;
+
+typedef struct
+{
+    LPWSTR lpExeName;
+    DWORD Length;
+} CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH, *PCSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH;
+
+typedef struct
+{
+    DWORD BytesWritten;
+    DWORD Length;
+    LPWSTR ExeNames;
+} CSRSS_GET_CONSOLE_ALIASES_EXES, *PCSRSS_GET_CONSOLE_ALIASES_EXES;
+
+typedef struct
+{
+    DWORD Length;
+} CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH, *PCSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH;
+
+typedef struct
+{
+    DWORD Event;
+    DWORD ProcessGroup;
+} CSRSS_GENERATE_CTRL_EVENT, *PCSRSS_GENERATE_CTRL_EVENT;
+
+typedef struct
+{
+    HANDLE ConsoleHandle;
+    DWORD NumInputEvents;
+} CSRSS_GET_NUM_INPUT_EVENTS, *PCSRSS_GET_NUM_INPUT_EVENTS;
+
+typedef struct
+{
+    HANDLE OutputHandle;
+    COORD Size;
+} CSRSS_SET_SCREEN_BUFFER_SIZE, *PCSRSS_SET_SCREEN_BUFFER_SIZE;
+
+typedef struct
+{
+    CONSOLE_SELECTION_INFO Info;
+} CSRSS_GET_CONSOLE_SELECTION_INFO, *PCSRSS_GET_CONSOLE_SELECTION_INFO;
+
+typedef struct
+{
+    UNICODE_STRING ExeName;
+    DWORD Length;
+} CSRSS_GET_COMMAND_HISTORY_LENGTH, *PCSRSS_GET_COMMAND_HISTORY_LENGTH;
+
+typedef struct
+{
+    UNICODE_STRING ExeName;
+    PWCHAR History;
+    DWORD Length;
+} CSRSS_GET_COMMAND_HISTORY, *PCSRSS_GET_COMMAND_HISTORY;
+
+typedef struct
+{
+  UNICODE_STRING ExeName;
+} CSRSS_EXPUNGE_COMMAND_HISTORY, *PCSRSS_EXPUNGE_COMMAND_HISTORY;
+
+typedef struct
+{
+    UNICODE_STRING ExeName;
+    DWORD NumCommands;
+} CSRSS_SET_HISTORY_NUMBER_COMMANDS, *PCSRSS_SET_HISTORY_NUMBER_COMMANDS;
+
+typedef struct
+{
+    DWORD HistoryBufferSize;
+    DWORD NumberOfHistoryBuffers;
+    DWORD dwFlags;
+} CSRSS_GET_HISTORY_INFO, *PCSRSS_GET_HISTORY_INFO,
+  CSRSS_SET_HISTORY_INFO, *PCSRSS_SET_HISTORY_INFO;;
+
+  
+typedef struct
+{
+    UINT CodePage;
+} CSRSS_GET_CONSOLE_CP, *PCSRSS_GET_CONSOLE_CP;
+
+typedef struct
+{
+    UINT CodePage;
+} CSRSS_SET_CONSOLE_CP, *PCSRSS_SET_CONSOLE_CP;
+
+typedef struct
+{
+    UINT CodePage;
+} CSRSS_GET_CONSOLE_OUTPUT_CP, *PCSRSS_GET_CONSOLE_OUTPUT_CP;
+
+typedef struct
+{
+    UINT CodePage;
+} CSRSS_SET_CONSOLE_OUTPUT_CP, *PCSRSS_SET_CONSOLE_OUTPUT_CP;
+
+#endif // __CSRCONS_H__
+
+/* EOF */
index beb5780..0638562 100644 (file)
@@ -1,26 +1,14 @@
+/*****************************  CSRSS Data  ***********************************/
+
 #ifndef __INCLUDE_CSRSS_CSRSS_H
 #define __INCLUDE_CSRSS_CSRSS_H
 
-#include <drivers/blue/ntddblue.h>
-
 #define CSR_NATIVE     0x0000
 #define CSR_CONSOLE    0x0001
 #define CSR_GUI        0x0002
 #define CONSOLE_INPUT_MODE_VALID  (0x0f)
 #define CONSOLE_OUTPUT_MODE_VALID (0x03)
 
-/*
-typedef union _CSR_API_NUMBER
-{
-    WORD Index;     // CSRSS API number
-    WORD Subsystem; // 0=NTDLL;1=KERNEL32;2=KERNEL32
-} CSR_API_NUMBER, *PCSR_API_NUMBER;
-*/
-
-typedef ULONG CSR_API_NUMBER;
-
-#define MAKE_CSR_API(Number, Server) \
-    ((Server) << 16) + Number
 
 #define CSR_CSRSS_SECTION_SIZE          (65536)
 
@@ -90,149 +78,7 @@ typedef struct
     ULONG nProcessIdsTotal;
 } CSRSS_GET_PROCESS_LIST, *PCSRSS_GET_PROCESS_LIST;
 
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    BOOL Unicode;
-    ULONG NrCharactersToWrite;
-    ULONG NrCharactersWritten;
-    HANDLE UnpauseEvent;
-    BYTE Buffer[0];
-} CSRSS_WRITE_CONSOLE, *PCSRSS_WRITE_CONSOLE;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    BOOL Unicode;
-    WORD NrCharactersToRead;
-    WORD NrCharactersRead;
-    HANDLE EventHandle;
-    PVOID Buffer;
-    UNICODE_STRING ExeName;
-    DWORD CtrlWakeupMask;
-    DWORD ControlKeyState;
-} CSRSS_READ_CONSOLE, *PCSRSS_READ_CONSOLE;
-
-typedef struct
-{
-    PCONTROLDISPATCHER CtrlDispatcher;
-    BOOLEAN ConsoleNeeded;
-    INT ShowCmd;
-    HANDLE Console;
-    HANDLE InputHandle;
-    HANDLE OutputHandle;
-} CSRSS_ALLOC_CONSOLE, *PCSRSS_ALLOC_CONSOLE;
-
-typedef struct
-{
-    ULONG Dummy;
-} CSRSS_FREE_CONSOLE, *PCSRSS_FREE_CONSOLE;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    CONSOLE_SCREEN_BUFFER_INFO Info;
-} CSRSS_SCREEN_BUFFER_INFO, *PCSRSS_SCREEN_BUFFER_INFO;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    COORD Position;
-} CSRSS_SET_CURSOR, *PCSRSS_SET_CURSOR;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    BOOL Unicode;
-    union
-    {
-        CHAR AsciiChar;
-        WCHAR UnicodeChar;
-    } Char;
-    COORD Position;
-    WORD Length;
-    ULONG NrCharactersWritten;
-} CSRSS_FILL_OUTPUT, *PCSRSS_FILL_OUTPUT;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    CHAR Attribute;
-    COORD Coord;
-    WORD Length;
-} CSRSS_FILL_OUTPUT_ATTRIB, *PCSRSS_FILL_OUTPUT_ATTRIB;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    BOOL Unicode;
-    INPUT_RECORD Input;
-    BOOL MoreEvents;
-    HANDLE Event;
-} CSRSS_READ_INPUT, *PCSRSS_READ_INPUT;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    BOOL Unicode;
-    WORD Length;
-    COORD Coord;
-    COORD EndCoord;
-    ULONG NrCharactersWritten;
-    CHAR String[0];
-} CSRSS_WRITE_CONSOLE_OUTPUT_CHAR, *PCSRSS_WRITE_CONSOLE_OUTPUT_CHAR;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    WORD Length;
-    COORD Coord;
-    COORD EndCoord;
-    WORD Attribute[0];
-} CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    CONSOLE_CURSOR_INFO Info;
-} CSRSS_GET_CURSOR_INFO, *PCSRSS_GET_CURSOR_INFO;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    CONSOLE_CURSOR_INFO Info;
-} CSRSS_SET_CURSOR_INFO, *PCSRSS_SET_CURSOR_INFO;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    WORD Attrib;
-} CSRSS_SET_ATTRIB, *PCSRSS_SET_ATTRIB;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    DWORD Mode;
-} CSRSS_SET_CONSOLE_MODE, *PCSRSS_SET_CONSOLE_MODE;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    DWORD ConsoleMode;
-} CSRSS_GET_CONSOLE_MODE, *PCSRSS_GET_CONSOLE_MODE;
-
-typedef struct
-{
-    DWORD Access;
-    DWORD ShareMode;
-    BOOL Inheritable;
-    HANDLE OutputHandle;  /* handle to newly created screen buffer */
-} CSRSS_CREATE_SCREEN_BUFFER, *PCSRSS_CREATE_SCREEN_BUFFER;
-
-typedef struct
-{
-    HANDLE OutputHandle;  /* handle to screen buffer to switch to */
-} CSRSS_SET_SCREEN_BUFFER, *PCSRSS_SET_SCREEN_BUFFER;
+#include "csrcons.h"
 
 typedef struct
 {
@@ -240,70 +86,6 @@ typedef struct
     CLIENT_ID Cid;
 } CSRSS_IDENTIFY_ALERTABLE_THREAD, *PCSRSS_IDENTIFY_ALERTABLE_THREAD;
 
-typedef struct
-{
-    DWORD Length;
-    PWCHAR Title;
-} CSRSS_SET_TITLE, *PCSRSS_SET_TITLE;
-
-typedef struct
-{
-    DWORD Length;
-    PWCHAR Title;
-} CSRSS_GET_TITLE, *PCSRSS_GET_TITLE;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    BOOL Unicode;
-    COORD BufferSize;
-    COORD BufferCoord;
-    SMALL_RECT WriteRegion;
-    CHAR_INFO* CharInfo;
-} CSRSS_WRITE_CONSOLE_OUTPUT, *PCSRSS_WRITE_CONSOLE_OUTPUT;
-
-typedef struct
-{
-    HANDLE ConsoleInput;
-} CSRSS_FLUSH_INPUT_BUFFER, *PCSRSS_FLUSH_INPUT_BUFFER;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    BOOL Unicode;
-    SMALL_RECT ScrollRectangle;
-    BOOLEAN UseClipRectangle;
-    SMALL_RECT ClipRectangle;
-    COORD DestinationOrigin;
-    CHAR_INFO Fill;
-} CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER, *PCSRSS_SCROLL_CONSOLE_SCREEN_BUFFER;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    BOOL Unicode;
-    DWORD NumCharsToRead;
-    COORD ReadCoord;
-    COORD EndCoord;
-    DWORD CharsRead;
-    CHAR String[0];
-} CSRSS_READ_CONSOLE_OUTPUT_CHAR, *PCSRSS_READ_CONSOLE_OUTPUT_CHAR;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    DWORD NumAttrsToRead;
-    COORD ReadCoord;
-    COORD EndCoord;
-    WORD Attribute[0];
-} CSRSS_READ_CONSOLE_OUTPUT_ATTRIB, *PCSRSS_READ_CONSOLE_OUTPUT_ATTRIB;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    DWORD NumInputEvents;
-} CSRSS_GET_NUM_INPUT_EVENTS, *PCSRSS_GET_NUM_INPUT_EVENTS;
-
 typedef struct
 {
     HANDLE ProcessId;
@@ -327,41 +109,6 @@ typedef struct
     DWORD Flags;
 } CSRSS_GET_SHUTDOWN_PARAMETERS, *PCSRSS_GET_SHUTDOWN_PARAMETERS;
 
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    BOOL Unicode;
-    DWORD Length;
-    INPUT_RECORD* InputRecord;
-} CSRSS_PEEK_CONSOLE_INPUT, *PCSRSS_PEEK_CONSOLE_INPUT;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    BOOL Unicode;
-    COORD BufferSize;
-    COORD BufferCoord;
-    SMALL_RECT ReadRegion;
-    CHAR_INFO* CharInfo;
-} CSRSS_READ_CONSOLE_OUTPUT, *PCSRSS_READ_CONSOLE_OUTPUT;
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    BOOL Unicode;
-    DWORD Length;
-    INPUT_RECORD* InputRecord;
-} CSRSS_WRITE_CONSOLE_INPUT, *PCSRSS_WRITE_CONSOLE_INPUT;
-
-typedef struct
-{
-    DWORD Access;
-    BOOL Inheritable;
-    HANDLE Handle;
-    DWORD ShareMode;
-} CSRSS_GET_INPUT_HANDLE, *PCSRSS_GET_INPUT_HANDLE,
-  CSRSS_GET_OUTPUT_HANDLE, *PCSRSS_GET_OUTPUT_HANDLE;
-
 typedef struct
 {
     HANDLE Handle;
@@ -380,29 +127,6 @@ typedef struct
     DWORD Options;
 } CSRSS_DUPLICATE_HANDLE, *PCSRSS_DUPLICATE_HANDLE;
 
-#define CONSOLE_HARDWARE_STATE_GET 0
-#define CONSOLE_HARDWARE_STATE_SET 1
-
-#define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
-#define CONSOLE_HARDWARE_STATE_DIRECT      1
-
-typedef struct
-{
-    HANDLE ConsoleHandle;
-    DWORD SetGet; /* 0=get; 1=set */
-    DWORD State;
-} CSRSS_SETGET_CONSOLE_HW_STATE, *PCSRSS_SETGET_CONSOLE_HW_STATE;
-
-typedef struct
-{
-    HWND   WindowHandle;
-} CSRSS_GET_CONSOLE_WINDOW, *PCSRSS_GET_CONSOLE_WINDOW;
-
-typedef struct
-{
-    HICON  WindowIcon;
-} CSRSS_SET_CONSOLE_ICON, *PCSRSS_SET_CONSOLE_ICON;
-
 typedef struct
 {
     HDESK DesktopHandle;
@@ -431,122 +155,11 @@ typedef struct
     BOOL Register;
 } CSRSS_REGISTER_LOGON_PROCESS, *PCSRSS_REGISTER_LOGON_PROCESS;
 
-typedef struct
-{
-    UINT CodePage;
-} CSRSS_GET_CONSOLE_CP, *PCSRSS_GET_CONSOLE_CP;
-
-typedef struct
-{
-    UINT CodePage;
-} CSRSS_SET_CONSOLE_CP, *PCSRSS_SET_CONSOLE_CP;
-
-typedef struct
-{
-    UINT CodePage;
-} CSRSS_GET_CONSOLE_OUTPUT_CP, *PCSRSS_GET_CONSOLE_OUTPUT_CP;
-
-typedef struct
-{
-    UINT CodePage;
-} CSRSS_SET_CONSOLE_OUTPUT_CP, *PCSRSS_SET_CONSOLE_OUTPUT_CP;
-
 typedef struct
 {
     HANDLE InputWaitHandle;
 } CSRSS_GET_INPUT_WAIT_HANDLE, *PCSRSS_GET_INPUT_WAIT_HANDLE;
 
-typedef struct
-{
-    ULONG SourceLength;
-    ULONG ExeLength;
-    ULONG TargetLength;
-} CSRSS_ADD_CONSOLE_ALIAS, *PCSRSS_ADD_CONSOLE_ALIAS;
-
-typedef struct
-{
-    ULONG SourceLength;
-    ULONG ExeLength;
-    ULONG BytesWritten;
-    ULONG TargetBufferLength;
-    PVOID TargetBuffer;
-} CSRSS_GET_CONSOLE_ALIAS, *PCSRSS_GET_CONSOLE_ALIAS;
-
-typedef struct
-{
-    LPWSTR lpExeName;
-    DWORD BytesWritten;
-    DWORD AliasBufferLength;
-    LPWSTR AliasBuffer;
-} CSRSS_GET_ALL_CONSOLE_ALIASES, *PCSRSS_GET_ALL_CONSOLE_ALIAS;
-
-typedef struct
-{
-    LPWSTR lpExeName;
-    DWORD Length;
-} CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH, *PCSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH;
-
-typedef struct
-{
-    DWORD BytesWritten;
-    DWORD Length;
-    LPWSTR ExeNames;
-} CSRSS_GET_CONSOLE_ALIASES_EXES, *PCSRSS_GET_CONSOLE_ALIASES_EXES;
-
-typedef struct
-{
-    DWORD Length;
-} CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH, *PCSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH;
-
-typedef struct
-{
-    DWORD Event;
-    DWORD ProcessGroup;
-} CSRSS_GENERATE_CTRL_EVENT, *PCSRSS_GENERATE_CTRL_EVENT;
-
-typedef struct
-{
-    HANDLE OutputHandle;
-    COORD Size;
-} CSRSS_SET_SCREEN_BUFFER_SIZE, *PCSRSS_SET_SCREEN_BUFFER_SIZE;
-
-typedef struct
-{
-    CONSOLE_SELECTION_INFO Info;
-} CSRSS_GET_CONSOLE_SELECTION_INFO, *PCSRSS_GET_CONSOLE_SELECTION_INFO;
-
-typedef struct
-{
-    UNICODE_STRING ExeName;
-    DWORD Length;
-} CSRSS_GET_COMMAND_HISTORY_LENGTH, *PCSRSS_GET_COMMAND_HISTORY_LENGTH;
-
-typedef struct
-{
-    UNICODE_STRING ExeName;
-    PWCHAR History;
-    DWORD Length;
-} CSRSS_GET_COMMAND_HISTORY, *PCSRSS_GET_COMMAND_HISTORY;
-
-typedef struct
-{
-  UNICODE_STRING ExeName;
-} CSRSS_EXPUNGE_COMMAND_HISTORY, *PCSRSS_EXPUNGE_COMMAND_HISTORY;
-
-typedef struct
-{
-    UNICODE_STRING ExeName;
-    DWORD NumCommands;
-} CSRSS_SET_HISTORY_NUMBER_COMMANDS, *PCSRSS_SET_HISTORY_NUMBER_COMMANDS;
-
-typedef struct
-{
-    DWORD HistoryBufferSize;
-    DWORD NumberOfHistoryBuffers;
-    DWORD dwFlags;
-} CSRSS_GET_HISTORY_INFO, *PCSRSS_GET_HISTORY_INFO,
-  CSRSS_SET_HISTORY_INFO, *PCSRSS_SET_HISTORY_INFO;;
-
 typedef struct
 {
     UINT UniqueID;
@@ -621,174 +234,85 @@ typedef struct
 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_CHAR      (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_CHAR))
 #define CSRSS_MAX_READ_CONSOLE_OUTPUT_ATTRIB    (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB))
 
-#define CREATE_PROCESS                (0x0)
-#define TERMINATE_PROCESS             (0x1)
-#define WRITE_CONSOLE                 (0x2)
-#define READ_CONSOLE                  (0x3)
-#define ALLOC_CONSOLE                 (0x4)
-#define FREE_CONSOLE                  (0x5)
-#define CONNECT_PROCESS               (0x6)
-#define SCREEN_BUFFER_INFO            (0x7)
-#define SET_CURSOR                    (0x8)
-#define FILL_OUTPUT                   (0x9)
-#define READ_INPUT                    (0xA)
-#define WRITE_CONSOLE_OUTPUT_CHAR     (0xB)
-#define WRITE_CONSOLE_OUTPUT_ATTRIB   (0xC)
-#define FILL_OUTPUT_ATTRIB            (0xD)
-#define GET_CURSOR_INFO               (0xE)
-#define SET_CURSOR_INFO               (0xF)
-#define SET_ATTRIB                    (0x10)
-#define GET_CONSOLE_MODE              (0x11)
-#define SET_CONSOLE_MODE              (0x12)
-#define CREATE_SCREEN_BUFFER          (0x13)
-#define SET_SCREEN_BUFFER             (0x14)
-#define SET_TITLE                     (0x15)
-#define GET_TITLE                     (0x16)
-#define WRITE_CONSOLE_OUTPUT          (0x17)
-#define FLUSH_INPUT_BUFFER            (0x18)
-#define SCROLL_CONSOLE_SCREEN_BUFFER  (0x19)
-#define READ_CONSOLE_OUTPUT_CHAR      (0x1A)
-#define READ_CONSOLE_OUTPUT_ATTRIB    (0x1B)
-#define GET_NUM_INPUT_EVENTS          (0x1C)
-#define REGISTER_SERVICES_PROCESS     (0x1D)
-#define EXIT_REACTOS                  (0x1E)
-#define GET_SHUTDOWN_PARAMETERS       (0x1F)
-#define SET_SHUTDOWN_PARAMETERS       (0x20)
-#define PEEK_CONSOLE_INPUT            (0x21)
-#define READ_CONSOLE_OUTPUT           (0x22)
-#define WRITE_CONSOLE_INPUT           (0x23)
-#define GET_INPUT_HANDLE              (0x24)
-#define GET_OUTPUT_HANDLE             (0x25)
-#define CLOSE_HANDLE                  (0x26)
-#define VERIFY_HANDLE                 (0x27)
-#define DUPLICATE_HANDLE             (0x28)
-#define SETGET_CONSOLE_HW_STATE       (0x29)
-#define GET_CONSOLE_WINDOW            (0x2A)
-#define CREATE_DESKTOP                (0x2B)
-#define SHOW_DESKTOP                  (0x2C)
-#define HIDE_DESKTOP                  (0x2D)
-#define SET_CONSOLE_ICON              (0x2E)
-#define SET_LOGON_NOTIFY_WINDOW       (0x2F)
-#define REGISTER_LOGON_PROCESS        (0x30)
-#define GET_CONSOLE_CP                (0x31)
-#define SET_CONSOLE_CP                (0x32)
-#define GET_CONSOLE_OUTPUT_CP         (0x33)
-#define SET_CONSOLE_OUTPUT_CP         (0x34)
-#define GET_INPUT_WAIT_HANDLE        (0x35)
-#define GET_PROCESS_LIST              (0x36)
-#define START_SCREEN_SAVER            (0x37)
-#define ADD_CONSOLE_ALIAS             (0x38)
-#define GET_CONSOLE_ALIAS             (0x39)
+#define CREATE_PROCESS                  (0x0)
+#define TERMINATE_PROCESS               (0x1)
+#define WRITE_CONSOLE                   (0x2)
+#define READ_CONSOLE                    (0x3)
+#define ALLOC_CONSOLE                   (0x4)
+#define FREE_CONSOLE                    (0x5)
+#define CONNECT_PROCESS                 (0x6)
+#define SCREEN_BUFFER_INFO              (0x7)
+#define SET_CURSOR                      (0x8)
+#define FILL_OUTPUT                     (0x9)
+#define READ_INPUT                      (0xA)
+#define WRITE_CONSOLE_OUTPUT_CHAR       (0xB)
+#define WRITE_CONSOLE_OUTPUT_ATTRIB     (0xC)
+#define FILL_OUTPUT_ATTRIB              (0xD)
+#define GET_CURSOR_INFO                 (0xE)
+#define SET_CURSOR_INFO                 (0xF)
+#define SET_ATTRIB                      (0x10)
+#define GET_CONSOLE_MODE                (0x11)
+#define SET_CONSOLE_MODE                (0x12)
+#define CREATE_SCREEN_BUFFER            (0x13)
+#define SET_SCREEN_BUFFER               (0x14)
+#define SET_TITLE                       (0x15)
+#define GET_TITLE                       (0x16)
+#define WRITE_CONSOLE_OUTPUT            (0x17)
+#define FLUSH_INPUT_BUFFER              (0x18)
+#define SCROLL_CONSOLE_SCREEN_BUFFER    (0x19)
+#define READ_CONSOLE_OUTPUT_CHAR        (0x1A)
+#define READ_CONSOLE_OUTPUT_ATTRIB      (0x1B)
+#define GET_NUM_INPUT_EVENTS            (0x1C)
+#define REGISTER_SERVICES_PROCESS       (0x1D)
+#define EXIT_REACTOS                    (0x1E)
+#define GET_SHUTDOWN_PARAMETERS         (0x1F)
+#define SET_SHUTDOWN_PARAMETERS         (0x20)
+#define PEEK_CONSOLE_INPUT              (0x21)
+#define READ_CONSOLE_OUTPUT             (0x22)
+#define WRITE_CONSOLE_INPUT             (0x23)
+#define GET_INPUT_HANDLE                (0x24)
+#define GET_OUTPUT_HANDLE               (0x25)
+#define CLOSE_HANDLE                    (0x26)
+#define VERIFY_HANDLE                   (0x27)
+#define DUPLICATE_HANDLE                (0x28)
+#define SETGET_CONSOLE_HW_STATE         (0x29)
+#define GET_CONSOLE_WINDOW              (0x2A)
+#define CREATE_DESKTOP                  (0x2B)
+#define SHOW_DESKTOP                    (0x2C)
+#define HIDE_DESKTOP                    (0x2D)
+#define SET_CONSOLE_ICON                (0x2E)
+#define SET_LOGON_NOTIFY_WINDOW         (0x2F)
+#define REGISTER_LOGON_PROCESS          (0x30)
+#define GET_CONSOLE_CP                  (0x31)
+#define SET_CONSOLE_CP                  (0x32)
+#define GET_CONSOLE_OUTPUT_CP           (0x33)
+#define SET_CONSOLE_OUTPUT_CP           (0x34)
+#define GET_INPUT_WAIT_HANDLE           (0x35)
+#define GET_PROCESS_LIST                (0x36)
+#define START_SCREEN_SAVER              (0x37)
+#define ADD_CONSOLE_ALIAS               (0x38)
+#define GET_CONSOLE_ALIAS               (0x39)
 #define GET_ALL_CONSOLE_ALIASES         (0x3A)
-#define GET_ALL_CONSOLE_ALIASES_LENGTH (0x3B)
-#define GET_CONSOLE_ALIASES_EXES      (0x3C)
+#define GET_ALL_CONSOLE_ALIASES_LENGTH  (0x3B)
+#define GET_CONSOLE_ALIASES_EXES        (0x3C)
 #define GET_CONSOLE_ALIASES_EXES_LENGTH (0x3D)
-#define GENERATE_CTRL_EVENT           (0x3E)
-#define CREATE_THREAD                 (0x3F)
-#define SET_SCREEN_BUFFER_SIZE        (0x40)
-#define GET_CONSOLE_SELECTION_INFO    (0x41)
-#define GET_COMMAND_HISTORY_LENGTH    (0x42)
-#define GET_COMMAND_HISTORY           (0x43)
-#define EXPUNGE_COMMAND_HISTORY       (0x44)
-#define SET_HISTORY_NUMBER_COMMANDS   (0x45)
-#define GET_HISTORY_INFO              (0x46)
-#define SET_HISTORY_INFO              (0x47)
-#define GET_TEMP_FILE                 (0x48)
-#define DEFINE_DOS_DEVICE                        (0X49)
-#define SOUND_SENTRY                  (0x50)
-#define UPDATE_VDM_ENTRY              (0x51)
-#define GET_VDM_EXIT_CODE             (0x52)
-#define CHECK_VDM                     (0x53)
-
-/* Keep in sync with definition below. */
-#define CSRSS_HEADER_SIZE (sizeof(PORT_MESSAGE) + sizeof(ULONG) + sizeof(NTSTATUS))
-
-typedef struct _CSR_API_MESSAGE
-{
-    PORT_MESSAGE Header;
-    PVOID CsrCaptureData;
-    ULONG Type;
-    NTSTATUS Status;
-    union
-    {
-        CSRSS_CREATE_PROCESS CreateProcessRequest;
-        CSRSS_CREATE_THREAD CreateThreadRequest;
-        CSRSS_TERMINATE_PROCESS TerminateProcessRequest;
-        CSRSS_CONNECT_PROCESS ConnectRequest;
-        CSRSS_WRITE_CONSOLE WriteConsoleRequest;
-        CSRSS_READ_CONSOLE ReadConsoleRequest;
-        CSRSS_ALLOC_CONSOLE AllocConsoleRequest;
-        CSRSS_SCREEN_BUFFER_INFO ScreenBufferInfoRequest;
-        CSRSS_SET_CURSOR SetCursorRequest;
-        CSRSS_FILL_OUTPUT FillOutputRequest;
-        CSRSS_READ_INPUT ReadInputRequest;
-        CSRSS_WRITE_CONSOLE_OUTPUT_CHAR WriteConsoleOutputCharRequest;
-        CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB WriteConsoleOutputAttribRequest;
-        CSRSS_FILL_OUTPUT_ATTRIB FillOutputAttribRequest;
-        CSRSS_SET_CURSOR_INFO SetCursorInfoRequest;
-        CSRSS_GET_CURSOR_INFO GetCursorInfoRequest;
-        CSRSS_SET_ATTRIB SetAttribRequest;
-        CSRSS_SET_CONSOLE_MODE SetConsoleModeRequest;
-        CSRSS_GET_CONSOLE_MODE GetConsoleModeRequest;
-        CSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest;
-        CSRSS_SET_SCREEN_BUFFER SetScreenBufferRequest;
-        CSRSS_SET_TITLE SetTitleRequest;
-        CSRSS_GET_TITLE GetTitleRequest;
-        CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest;
-        CSRSS_FLUSH_INPUT_BUFFER FlushInputBufferRequest;
-        CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER ScrollConsoleScreenBufferRequest;
-        CSRSS_READ_CONSOLE_OUTPUT_CHAR ReadConsoleOutputCharRequest;
-        CSRSS_READ_CONSOLE_OUTPUT_ATTRIB ReadConsoleOutputAttribRequest;
-        CSRSS_GET_NUM_INPUT_EVENTS GetNumInputEventsRequest;
-        CSRSS_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest;
-        CSRSS_EXIT_REACTOS ExitReactosRequest;
-        CSRSS_SET_SHUTDOWN_PARAMETERS SetShutdownParametersRequest;
-        CSRSS_GET_SHUTDOWN_PARAMETERS GetShutdownParametersRequest;
-        CSRSS_PEEK_CONSOLE_INPUT PeekConsoleInputRequest;
-        CSRSS_READ_CONSOLE_OUTPUT ReadConsoleOutputRequest;
-        CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest;
-        CSRSS_GET_INPUT_HANDLE GetInputHandleRequest;
-        CSRSS_GET_OUTPUT_HANDLE GetOutputHandleRequest;
-        CSRSS_CLOSE_HANDLE CloseHandleRequest;
-        CSRSS_VERIFY_HANDLE VerifyHandleRequest;
-        CSRSS_DUPLICATE_HANDLE DuplicateHandleRequest;
-        CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest;
-        CSRSS_GET_CONSOLE_WINDOW GetConsoleWindowRequest;
-        CSRSS_CREATE_DESKTOP CreateDesktopRequest;
-        CSRSS_SHOW_DESKTOP ShowDesktopRequest;
-        CSRSS_HIDE_DESKTOP HideDesktopRequest;
-        CSRSS_SET_CONSOLE_ICON SetConsoleIconRequest;
-        CSRSS_SET_LOGON_NOTIFY_WINDOW SetLogonNotifyWindowRequest;
-        CSRSS_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest;
-        CSRSS_GET_CONSOLE_CP GetConsoleCodePage;
-        CSRSS_SET_CONSOLE_CP SetConsoleCodePage;
-        CSRSS_GET_CONSOLE_OUTPUT_CP GetConsoleOutputCodePage;
-        CSRSS_SET_CONSOLE_OUTPUT_CP SetConsoleOutputCodePage;
-        CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle;
-        CSRSS_GET_PROCESS_LIST GetProcessListRequest;
-        CSRSS_ADD_CONSOLE_ALIAS AddConsoleAlias;
-        CSRSS_GET_CONSOLE_ALIAS GetConsoleAlias;
-        CSRSS_GET_ALL_CONSOLE_ALIASES GetAllConsoleAlias;
-        CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH GetAllConsoleAliasesLength;
-        CSRSS_GET_CONSOLE_ALIASES_EXES GetConsoleAliasesExes;
-        CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH GetConsoleAliasesExesLength;
-        CSRSS_GENERATE_CTRL_EVENT GenerateCtrlEvent;
-        CSRSS_SET_SCREEN_BUFFER_SIZE SetScreenBufferSize;
-        CSRSS_GET_CONSOLE_SELECTION_INFO GetConsoleSelectionInfo;
-        CSRSS_GET_COMMAND_HISTORY_LENGTH GetCommandHistoryLength;
-        CSRSS_GET_COMMAND_HISTORY GetCommandHistory;
-        CSRSS_EXPUNGE_COMMAND_HISTORY ExpungeCommandHistory;
-        CSRSS_SET_HISTORY_NUMBER_COMMANDS SetHistoryNumberCommands;
-        CSRSS_GET_HISTORY_INFO GetHistoryInfo;
-        CSRSS_SET_HISTORY_INFO SetHistoryInfo;
-        CSRSS_GET_TEMP_FILE GetTempFile;
-        CSRSS_DEFINE_DOS_DEVICE DefineDosDeviceRequest;
-        CSRSS_SOUND_SENTRY SoundSentryRequest;
-        CSRSS_UPDATE_VDM_ENTRY UpdateVdmEntry;
-        CSRSS_GET_VDM_EXIT_CODE GetVdmExitCode;
-        CSRSS_CHECK_VDM CheckVdm;
-    } Data;
-} CSR_API_MESSAGE, *PCSR_API_MESSAGE;
+#define GENERATE_CTRL_EVENT             (0x3E)
+#define CREATE_THREAD                   (0x3F)
+#define SET_SCREEN_BUFFER_SIZE          (0x40)
+#define GET_CONSOLE_SELECTION_INFO      (0x41)
+#define GET_COMMAND_HISTORY_LENGTH      (0x42)
+#define GET_COMMAND_HISTORY             (0x43)
+#define EXPUNGE_COMMAND_HISTORY         (0x44)
+#define SET_HISTORY_NUMBER_COMMANDS     (0x45)
+#define GET_HISTORY_INFO                (0x46)
+#define SET_HISTORY_INFO                (0x47)
+#define GET_TEMP_FILE                   (0x48)
+#define DEFINE_DOS_DEVICE               (0x49)
+#define SOUND_SENTRY                    (0x50)
+#define UPDATE_VDM_ENTRY                (0x51)
+#define GET_VDM_EXIT_CODE               (0x52)
+#define CHECK_VDM                       (0x53)
+
 
 typedef struct _NLS_USER_INFO
 {
@@ -827,7 +351,7 @@ typedef struct _NLS_USER_INFO
     WCHAR sLocaleName[85];
     LCID UserLocaleId;
     LUID InteractiveUserLuid;
-    CHAR InteractiveUserSid[68]; // SECURITY_MAX_SID_SIZE to make ros happy
+    CHAR InteractiveUserSid[68]; // SECURITY_MAX_SID_SIZE to make ROS happy
     ULONG ulCacheUpdateCount;
 } NLS_USER_INFO, *PNLS_USER_INFO;
 
@@ -860,8 +384,7 @@ typedef struct _BASE_STATIC_SERVER_DATA
 
 
 /* Types used in the new CSR. Temporarly here for proper compile of NTDLL */
-#define CSR_SRV_SERVER 0
-
+// Not used at the moment...
 typedef enum _CSR_SRV_API_NUMBER
 {
     CsrpClientConnect,
@@ -872,68 +395,4 @@ typedef enum _CSR_SRV_API_NUMBER
     CsrpMaxApiNumber
 } CSR_SRV_API_NUMBER, *PCSR_SRV_API_NUMBER;
 
-#define CSR_MAKE_OPCODE(s,m) ((s) << 16) | (m)
-
-typedef struct _CSR_CONNECTION_INFO
-{
-    ULONG Version;
-    ULONG Unknown;
-    HANDLE ObjectDirectory;
-    PVOID SharedSectionBase;
-    PVOID SharedSectionHeap;
-    PVOID SharedSectionData;
-    ULONG DebugFlags;
-    ULONG Unknown2[3];
-    HANDLE ProcessId;
-} CSR_CONNECTION_INFO, *PCSR_CONNECTION_INFO;
-
-typedef struct _CSR_CLIENT_CONNECT
-{
-    ULONG ServerId;
-    PVOID ConnectionInfo;
-    ULONG ConnectionInfoSize;
-} CSR_CLIENT_CONNECT, *PCSR_CLIENT_CONNECT;
-
-typedef struct _CSR_IDENTIFY_ALTERTABLE_THREAD
-{
-    CLIENT_ID Cid;
-} CSR_IDENTIFY_ALTERTABLE_THREAD, *PCSR_IDENTIFY_ALTERTABLE_THREAD;
-
-typedef struct _CSR_SET_PRIORITY_CLASS
-{
-    HANDLE hProcess;
-    ULONG PriorityClass;
-} CSR_SET_PRIORITY_CLASS, *PCSR_SET_PRIORITY_CLASS;
-
-typedef struct _CSR_API_MESSAGE2
-{
-    PORT_MESSAGE Header;
-    union
-    {
-        CSR_CONNECTION_INFO ConnectionInfo;
-        struct
-        {
-            PVOID CsrCaptureData;
-            CSR_API_NUMBER Opcode;
-            ULONG Status;
-            ULONG Reserved;
-            union
-            {
-                CSR_CLIENT_CONNECT ClientConnect;
-                CSR_SET_PRIORITY_CLASS SetPriorityClass;
-                CSR_IDENTIFY_ALTERTABLE_THREAD IdentifyAlertableThread;
-            };
-        };
-    };
-} CSR_API_MESSAGE2, *PCSR_API_MESSAGE2;
-
-typedef struct _CSR_CAPTURE_BUFFER
-{
-    ULONG Size;
-    struct _CSR_CAPTURE_BUFFER *PreviousCaptureBuffer;
-    ULONG PointerCount;
-    ULONG_PTR BufferEnd;
-    ULONG_PTR PointerArray[1];
-} CSR_CAPTURE_BUFFER, *PCSR_CAPTURE_BUFFER;
-
 #endif /* __INCLUDE_CSRSS_CSRSS_H */
diff --git a/include/reactos/subsys/csrss/msg.h b/include/reactos/subsys/csrss/msg.h
new file mode 100644 (file)
index 0000000..1f77ba3
--- /dev/null
@@ -0,0 +1,219 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/subsys/csrss/msg.h
+ * PURPOSE:         Public Definitions for communication
+ *                  between CSR Clients and Servers.
+ * PROGRAMMERS:     Alex Ionescu (alex@relsoft.net)
+ *                  Hermes Belusca-Maito (hermes.belusca@sfr.fr)
+ */
+
+#ifndef _CSRMSG_H
+#define _CSRMSG_H
+
+typedef struct _CSR_CONNECTION_INFO
+{
+    ULONG Version;
+    ULONG Unknown;
+    HANDLE ObjectDirectory;
+    PVOID SharedSectionBase;
+    PVOID SharedSectionHeap;
+    PVOID SharedSectionData;
+    ULONG DebugFlags;
+    ULONG Unknown2[3];
+    HANDLE ProcessId;
+} CSR_CONNECTION_INFO, *PCSR_CONNECTION_INFO;
+
+typedef struct _CSR_IDENTIFY_ALTERTABLE_THREAD
+{
+    CLIENT_ID Cid;
+} CSR_IDENTIFY_ALTERTABLE_THREAD, *PCSR_IDENTIFY_ALTERTABLE_THREAD;
+
+typedef struct _CSR_SET_PRIORITY_CLASS
+{
+    HANDLE hProcess;
+    ULONG PriorityClass;
+} CSR_SET_PRIORITY_CLASS, *PCSR_SET_PRIORITY_CLASS;
+
+typedef struct _CSR_CLIENT_CONNECT
+{
+    ULONG ServerId;
+    PVOID ConnectionInfo;
+    ULONG ConnectionInfoSize;
+} CSR_CLIENT_CONNECT, *PCSR_CLIENT_CONNECT;
+
+typedef struct _CSR_CAPTURE_BUFFER
+{
+    ULONG Size;
+    struct _CSR_CAPTURE_BUFFER *PreviousCaptureBuffer;
+    ULONG PointerCount;
+    ULONG_PTR BufferEnd;
+    ULONG_PTR PointerArray[1];
+} CSR_CAPTURE_BUFFER, *PCSR_CAPTURE_BUFFER;
+
+/*
+typedef union _CSR_API_NUMBER
+{
+    WORD Index;
+    WORD Subsystem;
+} CSR_API_NUMBER, *PCSR_API_NUMBER;
+*/
+typedef ULONG CSR_API_NUMBER;
+
+#include "csrss.h" // remove it when the data structures are not used anymore.
+
+/* Keep in sync with definition below. */
+// #define CSRSS_HEADER_SIZE (sizeof(PORT_MESSAGE) + sizeof(ULONG) + sizeof(NTSTATUS))
+
+typedef struct _CSR_API_MESSAGE
+{
+    PORT_MESSAGE Header;
+    union
+    {
+        CSR_CONNECTION_INFO ConnectionInfo;
+        struct
+        {
+            PCSR_CAPTURE_BUFFER CsrCaptureData;
+            CSR_API_NUMBER ApiNumber;
+            ULONG Status;
+            ULONG Reserved;
+            union
+            {
+                CSR_CLIENT_CONNECT CsrClientConnect;
+
+                CSR_SET_PRIORITY_CLASS SetPriorityClass;
+                CSR_IDENTIFY_ALTERTABLE_THREAD IdentifyAlertableThread;
+
+            /*** Temporary ***/
+#if 1
+                CSRSS_CREATE_PROCESS CreateProcessRequest;
+                CSRSS_CREATE_THREAD CreateThreadRequest;
+                CSRSS_TERMINATE_PROCESS TerminateProcessRequest;
+                CSRSS_CONNECT_PROCESS ConnectRequest;
+                CSRSS_WRITE_CONSOLE WriteConsoleRequest;
+                CSRSS_READ_CONSOLE ReadConsoleRequest;
+                CSRSS_ALLOC_CONSOLE AllocConsoleRequest;
+                CSRSS_SCREEN_BUFFER_INFO ScreenBufferInfoRequest;
+                CSRSS_SET_CURSOR SetCursorRequest;
+                CSRSS_FILL_OUTPUT FillOutputRequest;
+                CSRSS_READ_INPUT ReadInputRequest;
+                CSRSS_WRITE_CONSOLE_OUTPUT_CHAR WriteConsoleOutputCharRequest;
+                CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB WriteConsoleOutputAttribRequest;
+                CSRSS_FILL_OUTPUT_ATTRIB FillOutputAttribRequest;
+                CSRSS_SET_CURSOR_INFO SetCursorInfoRequest;
+                CSRSS_GET_CURSOR_INFO GetCursorInfoRequest;
+                CSRSS_SET_ATTRIB SetAttribRequest;
+                CSRSS_SET_CONSOLE_MODE SetConsoleModeRequest;
+                CSRSS_GET_CONSOLE_MODE GetConsoleModeRequest;
+                CSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest;
+                CSRSS_SET_SCREEN_BUFFER SetScreenBufferRequest;
+                CSRSS_SET_TITLE SetTitleRequest;
+                CSRSS_GET_TITLE GetTitleRequest;
+                CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest;
+                CSRSS_FLUSH_INPUT_BUFFER FlushInputBufferRequest;
+                CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER ScrollConsoleScreenBufferRequest;
+                CSRSS_READ_CONSOLE_OUTPUT_CHAR ReadConsoleOutputCharRequest;
+                CSRSS_READ_CONSOLE_OUTPUT_ATTRIB ReadConsoleOutputAttribRequest;
+                CSRSS_GET_NUM_INPUT_EVENTS GetNumInputEventsRequest;
+                CSRSS_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest;
+                CSRSS_EXIT_REACTOS ExitReactosRequest;
+                CSRSS_SET_SHUTDOWN_PARAMETERS SetShutdownParametersRequest;
+                CSRSS_GET_SHUTDOWN_PARAMETERS GetShutdownParametersRequest;
+                CSRSS_PEEK_CONSOLE_INPUT PeekConsoleInputRequest;
+                CSRSS_READ_CONSOLE_OUTPUT ReadConsoleOutputRequest;
+                CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest;
+                CSRSS_GET_INPUT_HANDLE GetInputHandleRequest;
+                CSRSS_GET_OUTPUT_HANDLE GetOutputHandleRequest;
+                CSRSS_CLOSE_HANDLE CloseHandleRequest;
+                CSRSS_VERIFY_HANDLE VerifyHandleRequest;
+                CSRSS_DUPLICATE_HANDLE DuplicateHandleRequest;
+                CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest;
+                CSRSS_GET_CONSOLE_WINDOW GetConsoleWindowRequest;
+                CSRSS_CREATE_DESKTOP CreateDesktopRequest;
+                CSRSS_SHOW_DESKTOP ShowDesktopRequest;
+                CSRSS_HIDE_DESKTOP HideDesktopRequest;
+                CSRSS_SET_CONSOLE_ICON SetConsoleIconRequest;
+                CSRSS_SET_LOGON_NOTIFY_WINDOW SetLogonNotifyWindowRequest;
+                CSRSS_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest;
+                CSRSS_GET_CONSOLE_CP GetConsoleCodePage;
+                CSRSS_SET_CONSOLE_CP SetConsoleCodePage;
+                CSRSS_GET_CONSOLE_OUTPUT_CP GetConsoleOutputCodePage;
+                CSRSS_SET_CONSOLE_OUTPUT_CP SetConsoleOutputCodePage;
+                CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle;
+                CSRSS_GET_PROCESS_LIST GetProcessListRequest;
+                CSRSS_ADD_CONSOLE_ALIAS AddConsoleAlias;
+                CSRSS_GET_CONSOLE_ALIAS GetConsoleAlias;
+                CSRSS_GET_ALL_CONSOLE_ALIASES GetAllConsoleAlias;
+                CSRSS_GET_ALL_CONSOLE_ALIASES_LENGTH GetAllConsoleAliasesLength;
+                CSRSS_GET_CONSOLE_ALIASES_EXES GetConsoleAliasesExes;
+                CSRSS_GET_CONSOLE_ALIASES_EXES_LENGTH GetConsoleAliasesExesLength;
+                CSRSS_GENERATE_CTRL_EVENT GenerateCtrlEvent;
+                CSRSS_SET_SCREEN_BUFFER_SIZE SetScreenBufferSize;
+                CSRSS_GET_CONSOLE_SELECTION_INFO GetConsoleSelectionInfo;
+                CSRSS_GET_COMMAND_HISTORY_LENGTH GetCommandHistoryLength;
+                CSRSS_GET_COMMAND_HISTORY GetCommandHistory;
+                CSRSS_EXPUNGE_COMMAND_HISTORY ExpungeCommandHistory;
+                CSRSS_SET_HISTORY_NUMBER_COMMANDS SetHistoryNumberCommands;
+                CSRSS_GET_HISTORY_INFO GetHistoryInfo;
+                CSRSS_SET_HISTORY_INFO SetHistoryInfo;
+                CSRSS_GET_TEMP_FILE GetTempFile;
+                CSRSS_DEFINE_DOS_DEVICE DefineDosDeviceRequest;
+                CSRSS_SOUND_SENTRY SoundSentryRequest;
+                CSRSS_UPDATE_VDM_ENTRY UpdateVdmEntry;
+                CSRSS_GET_VDM_EXIT_CODE GetVdmExitCode;
+                CSRSS_CHECK_VDM CheckVdm;
+#endif
+            /*****************/
+            } Data;
+        };
+    };
+} CSR_API_MESSAGE, *PCSR_API_MESSAGE;
+
+/*** old ***
+typedef struct _CSR_API_MESSAGE
+{
+    PORT_MESSAGE Header;
+    PVOID CsrCaptureData;
+    ULONG Type;
+    NTSTATUS Status;
+    union
+    {
+        CSRSS_CREATE_PROCESS CreateProcessRequest;
+        CSRSS_CREATE_THREAD CreateThreadRequest;
+        CSRSS_TERMINATE_PROCESS TerminateProcessRequest;
+        CSRSS_CONNECT_PROCESS ConnectRequest;
+
+    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .
+
+        CSRSS_GET_VDM_EXIT_CODE GetVdmExitCode;
+        CSRSS_CHECK_VDM CheckVdm;
+    } Data;
+} CSR_API_MESSAGE, *PCSR_API_MESSAGE;
+
+***/
+
+
+
+
+#define CSR_PORT_NAME L"ApiPort"
+
+/**** move these defines elsewhere ****/
+
+#define CSR_SRV_SERVER 0
+#define CSR_SERVER_DLL_MAX 4
+
+/**************************************/
+
+
+
+#define CSR_CREATE_API_NUMBER(ServerId, ApiId) \
+    (CSR_API_NUMBER)(((ServerId) << 16) | (ApiId))
+
+#define CSR_API_NUMBER_TO_SERVER_ID(ApiNumber) \
+    (ULONG)((ULONG)(ApiNumber) >> 16)
+
+#define CSR_API_NUMBER_TO_API_ID(ApiNumber) \
+    (ULONG)((ULONG)(ApiNumber) & 0xFFFF)
+
+#endif // _CSRMSG_H
+
+/* EOF */
similarity index 62%
rename from include/reactos/subsys/csr/server.h
rename to include/reactos/subsys/csrss/server.h
index db3a506..e5d1280 100644 (file)
@@ -1,9 +1,11 @@
 /*
  * PROJECT:         ReactOS Native Headers
- * FILE:            include/subsys/csr/server.h
+ * FILE:            include/subsys/csrss/server.h
  * PURPOSE:         Public Definitions for CSR Servers
- * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * PROGRAMMERS:     Alex Ionescu (alex@relsoft.net)
+ *                  Hermes Belusca-Maito (hermes.belusca@sfr.fr)
  */
+
 #ifndef _CSRSERVER_H
 #define _CSRSERVER_H
 
 #pragma warning (disable:4201)
 #endif
 
-/* DEPENDENCIES **************************************************************/
+#include "msg.h"
 
 /* TYPES **********************************************************************/
+
 typedef struct _CSR_NT_SESSION
 {
     ULONG ReferenceCount;
@@ -22,6 +25,20 @@ typedef struct _CSR_NT_SESSION
     ULONG SessionId;
 } CSR_NT_SESSION, *PCSR_NT_SESSION;
 
+/*** old thingie, remove it later... (put it in winsrv -- console) ***/
+typedef struct _CSRSS_CON_PROCESS_DATA
+{
+    HANDLE ConsoleEvent;
+    struct tagCSRSS_CONSOLE *Console;
+    struct tagCSRSS_CONSOLE *ParentConsole;
+    BOOL bInheritHandles;
+    RTL_CRITICAL_SECTION HandleTableLock;
+    ULONG HandleTableSize;
+    struct _CSRSS_HANDLE *HandleTable;
+    PCONTROLDISPATCHER CtrlDispatcher;
+    LIST_ENTRY ConsoleLink;
+} CSRSS_CON_PROCESS_DATA, *PCSRSS_CON_PROCESS_DATA;
+/*********************************************************************/
 typedef struct _CSR_PROCESS
 {
     CLIENT_ID ClientId;
@@ -47,7 +64,8 @@ typedef struct _CSR_PROCESS
     ULONG Reserved;
     ULONG ShutdownLevel;
     ULONG ShutdownFlags;
-    PVOID ServerData[ANYSIZE_ARRAY];
+//    PVOID ServerData[ANYSIZE_ARRAY];
+    CSRSS_CON_PROCESS_DATA; //// FIXME: Remove it after we activate the previous member.
 } CSR_PROCESS, *PCSR_PROCESS;
 
 typedef struct _CSR_THREAD
@@ -64,33 +82,36 @@ typedef struct _CSR_THREAD
     ULONG ImpersonationCount;
 } CSR_THREAD, *PCSR_THREAD;
 
-/* ENUMERATIONS **************************************************************/
-#define CSR_SRV_SERVER 0
+#define CsrGetClientThread() \
+    ((PCSR_THREAD)(NtCurrentTeb()->CsrClientThread))
+
+
+/* ENUMERATIONS ***************************************************************/
 
 typedef enum _CSR_PROCESS_FLAGS
 {
-    CsrProcessTerminating = 0x1,
-    CsrProcessSkipShutdown = 0x2,
-    CsrProcessNormalPriority = 0x10,
-    CsrProcessIdlePriority = 0x20,
-    CsrProcessHighPriority = 0x40,
-    CsrProcessRealtimePriority = 0x80,
-    CsrProcessCreateNewGroup = 0x100,
-    CsrProcessTerminated = 0x200,
+    CsrProcessTerminating          = 0x1,
+    CsrProcessSkipShutdown         = 0x2,
+    CsrProcessNormalPriority       = 0x10,
+    CsrProcessIdlePriority         = 0x20,
+    CsrProcessHighPriority         = 0x40,
+    CsrProcessRealtimePriority     = 0x80,
+    CsrProcessCreateNewGroup       = 0x100,
+    CsrProcessTerminated           = 0x200,
     CsrProcessLastThreadTerminated = 0x400,
-    CsrProcessIsConsoleApp = 0x800
+    CsrProcessIsConsoleApp         = 0x800
 } CSR_PROCESS_FLAGS, *PCSR_PROCESS_FLAGS;
 
 #define CsrProcessPriorityFlags (CsrProcessNormalPriority | \
-                                 CsrProcessIdlePriority | \
-                                 CsrProcessHighPriority | \
+                                 CsrProcessIdlePriority   | \
+                                 CsrProcessHighPriority   | \
                                  CsrProcessRealtimePriority)
 
 typedef enum _CSR_THREAD_FLAGS
 {
-    CsrThreadAltertable = 0x1,
-    CsrThreadInTermination = 0x2,
-    CsrThreadTerminated = 0x4,
+    CsrThreadAltertable     = 0x1,
+    CsrThreadInTermination  = 0x2,
+    CsrThreadTerminated     = 0x4,
     CsrThreadIsServerThread = 0x10
 } CSR_THREAD_FLAGS, *PCSR_THREAD_FLAGS;
 
@@ -104,7 +125,7 @@ typedef enum _SHUTDOWN_RESULT
 typedef enum _CSR_SHUTDOWN_FLAGS
 {
     CsrShutdownSystem = 4,
-    CsrShutdownOther = 8
+    CsrShutdownOther  = 8
 } CSR_SHUTDOWN_FLAGS, *PCSR_SHUTDOWN_FLAGS;
 
 typedef enum _CSR_DEBUG_FLAGS
@@ -113,7 +134,48 @@ typedef enum _CSR_DEBUG_FLAGS
     CsrDebugProcessChildren = 2
 } CSR_PROCESS_DEBUG_FLAGS, *PCSR_PROCESS_DEBUG_FLAGS;
 
-/* FUNCTION TYPES ************************************************************/
+
+/*
+ * Wait block
+ */
+typedef
+BOOLEAN
+(*CSR_WAIT_FUNCTION)(
+    IN PLIST_ENTRY WaitList,
+    IN PCSR_THREAD WaitThread,
+    IN PCSR_API_MESSAGE WaitApiMessage,
+    IN PVOID WaitContext,
+    IN PVOID WaitArgument1,
+    IN PVOID WaitArgument2,
+    IN ULONG WaitFlags
+);
+
+typedef struct _CSR_WAIT_BLOCK
+{
+    ULONG Size;
+    LIST_ENTRY WaitList;
+    LIST_ENTRY UserWaitList;
+    PVOID WaitContext;
+    PCSR_THREAD WaitThread;
+    CSR_WAIT_FUNCTION WaitFunction;
+    CSR_API_MESSAGE WaitApiMessage;
+} CSR_WAIT_BLOCK, *PCSR_WAIT_BLOCK;
+
+
+/*
+ * Server DLL structure
+ */
+typedef
+NTSTATUS
+(NTAPI *PCSR_API_ROUTINE)(
+    IN OUT PCSR_API_MESSAGE ApiMessage,
+    OUT PULONG Reply
+);
+
+#define CSR_API(n) NTSTATUS NTAPI n (   \
+    IN OUT PCSR_API_MESSAGE ApiMessage, \
+    OUT PULONG Reply)
+
 typedef
 NTSTATUS
 (NTAPI *PCSR_CONNECT_CALLBACK)(
@@ -148,69 +210,6 @@ ULONG
     IN BOOLEAN FirstPhase
 );
 
-
-/* FIXME: Put into public NDK Header */
-typedef ULONG CSR_API_NUMBER;
-
-#define CSR_MAKE_OPCODE(s,m) ((s) << 16) | (m)
-#define CSR_API_ID_FROM_OPCODE(n) ((ULONG)((USHORT)(n)))
-#define CSR_SERVER_ID_FROM_OPCODE(n) (ULONG)((n) >> 16)
-
-typedef struct _CSR_CONNECTION_INFO
-{
-    ULONG Unknown[2];
-    HANDLE ObjectDirectory;
-    PVOID SharedSectionBase;
-    PVOID SharedSectionHeap;
-    PVOID SharedSectionData;
-    ULONG DebugFlags;
-    ULONG Unknown2[3];
-    HANDLE ProcessId;
-} CSR_CONNECTION_INFO, *PCSR_CONNECTION_INFO;
-
-typedef struct _CSR_CLIENT_CONNECT
-{
-    ULONG ServerId;
-    PVOID ConnectionInfo;
-    ULONG ConnectionInfoSize;
-} CSR_CLIENT_CONNECT, *PCSR_CLIENT_CONNECT;
-
-typedef struct _CSR_API_MESSAGE
-{
-    PORT_MESSAGE Header;
-    union
-    {
-        CSR_CONNECTION_INFO ConnectionInfo;
-        struct
-        {
-            PVOID CsrCaptureData;
-            CSR_API_NUMBER Opcode;
-            ULONG Status;
-            ULONG Reserved;
-            union
-            {
-                CSR_CLIENT_CONNECT CsrClientConnect;
-            };
-        };
-    };
-} CSR_API_MESSAGE, *PCSR_API_MESSAGE;
-
-typedef struct _CSR_CAPTURE_BUFFER
-{
-    ULONG Size;
-    struct _CSR_CAPTURE_BUFFER *PreviousCaptureBuffer;
-    ULONG PointerCount;
-    ULONG_PTR BufferEnd;
-} CSR_CAPTURE_BUFFER, *PCSR_CAPTURE_BUFFER;
-
-/* Private data resumes here */
-typedef
-NTSTATUS
-(NTAPI *PCSR_API_ROUTINE)(
-    IN OUT PCSR_API_MESSAGE ApiMessage,
-    IN OUT PULONG Reply
-);
-
 typedef struct _CSR_SERVER_DLL
 {
     ULONG Length;
@@ -234,44 +233,78 @@ typedef struct _CSR_SERVER_DLL
     ULONG Unknown2[3];
 } CSR_SERVER_DLL, *PCSR_SERVER_DLL;
 
+
+/* FUNCTION TYPES *************************************************************/
+
 typedef
 NTSTATUS
-(NTAPI *PCSR_SERVER_DLL_INIT_CALLBACK)(IN PCSR_SERVER_DLL ServerDll);
+(NTAPI *PCSR_SERVER_DLL_INIT_CALLBACK)(IN PCSR_SERVER_DLL LoadedServerDll);
 
-typedef
-BOOLEAN
-(*CSR_WAIT_FUNCTION)(
-    IN PLIST_ENTRY WaitList,
-    IN PCSR_THREAD WaitThread,
-    IN PCSR_API_MESSAGE WaitApiMessage,
-    IN PVOID WaitContext,
-    IN PVOID WaitArgument1,
-    IN PVOID WaitArgument2,
-    IN ULONG WaitFlags
-);
+/*
+NTSTATUS
+NTAPI
+CsrServerDllInitialization(IN PCSR_SERVER_DLL LoadedServerDll);
+*/
 
-typedef struct _CSR_WAIT_BLOCK
-{
-    ULONG Size;
-    LIST_ENTRY WaitList;
-    LIST_ENTRY UserWaitList;
-    PVOID WaitContext;
-    PCSR_THREAD WaitThread;
-    CSR_WAIT_FUNCTION WaitFunction;
-    CSR_API_MESSAGE WaitApiMessage;
-} CSR_WAIT_BLOCK, *PCSR_WAIT_BLOCK;
 
 /* PROTOTYPES ****************************************************************/
 
 NTSTATUS
 NTAPI
 CsrServerInitialization(
-    ULONG ArgumentCount,
-    PCHAR Arguments[]
+    IN ULONG ArgumentCount,
+    IN PCHAR Arguments[]
 );
 
+///////////
+BOOLEAN
+NTAPI
+CsrCaptureArguments(
+    IN PCSR_THREAD CsrThread,
+    IN PCSR_API_MESSAGE ApiMessage
+);
+
+VOID
+NTAPI
+CsrReleaseCapturedArguments(IN PCSR_API_MESSAGE ApiMessage);
+//////////
+
+PCSR_THREAD
+NTAPI
+CsrAddStaticServerThread(
+    IN HANDLE hThread,
+    IN PCLIENT_ID ClientId,
+    IN ULONG ThreadFlags
+);
+
+PCSR_THREAD
+NTAPI
+CsrConnectToUser(VOID);
+
+BOOLEAN
+NTAPI
+CsrImpersonateClient(IN PCSR_THREAD CsrThread);
+
+BOOLEAN
+NTAPI
+CsrRevertToSelf(VOID);
+
+VOID
+NTAPI
+CsrSetBackgroundPriority(IN PCSR_PROCESS CsrProcess);
+
+LONG
+NTAPI
+CsrUnhandledExceptionFilter(
+    IN PEXCEPTION_POINTERS ExceptionInfo
+);
+
+
+
 #ifdef _MSC_VER
 #pragma warning(pop)
 #endif
 
-#endif
+#endif // _CSRSERVER_H
+
+/* EOF */
index 2493481..7d82c06 100644 (file)
@@ -28,20 +28,22 @@ CSR_API(CsrSrvCreateProcess)
      NTSTATUS Status;
      HANDLE ProcessHandle, ThreadHandle;
      PCSR_THREAD CsrThread;
-     PCSR_PROCESS NewProcessData;
+     PCSR_PROCESS Process, NewProcess;
      ULONG Flags, VdmPower = 0, DebugFlags = 0;
 
      /* Get the current client thread */
-     CsrThread = NtCurrentTeb()->CsrClientThread;
+     CsrThread = CsrGetClientThread();
      ASSERT(CsrThread != NULL);
 
+     Process = CsrThread->Process;
+
      /* Extract the flags out of the process handle */
-     Flags = (ULONG_PTR)Request->Data.CreateProcessRequest.ProcessHandle & 3;
-     Request->Data.CreateProcessRequest.ProcessHandle = (HANDLE)((ULONG_PTR)Request->Data.CreateProcessRequest.ProcessHandle & ~3);
+     Flags = (ULONG_PTR)ApiMessage->Data.CreateProcessRequest.ProcessHandle & 3;
+     ApiMessage->Data.CreateProcessRequest.ProcessHandle = (HANDLE)((ULONG_PTR)ApiMessage->Data.CreateProcessRequest.ProcessHandle & ~3);
 
      /* Duplicate the process handle */
-     Status = NtDuplicateObject(CsrThread->Process->ProcessHandle,
-                                Request->Data.CreateProcessRequest.ProcessHandle,
+     Status = NtDuplicateObject(Process->ProcessHandle,
+                                ApiMessage->Data.CreateProcessRequest.ProcessHandle,
                                 NtCurrentProcess(),
                                 &ProcessHandle,
                                 0,
@@ -54,8 +56,8 @@ CSR_API(CsrSrvCreateProcess)
      }
 
      /* Duplicate the thread handle */
-     Status = NtDuplicateObject(CsrThread->Process->ProcessHandle,
-                                Request->Data.CreateProcessRequest.ThreadHandle,
+     Status = NtDuplicateObject(Process->ProcessHandle,
+                                ApiMessage->Data.CreateProcessRequest.ThreadHandle,
                                 NtCurrentProcess(),
                                 &ThreadHandle,
                                 0,
@@ -86,7 +88,7 @@ CSR_API(CsrSrvCreateProcess)
     }
     
     /* Convert some flags. FIXME: More need conversion */
-    if (Request->Data.CreateProcessRequest.CreationFlags & CREATE_NEW_PROCESS_GROUP)
+    if (ApiMessage->Data.CreateProcessRequest.CreationFlags & CREATE_NEW_PROCESS_GROUP)
     {
         DebugFlags |= CsrProcessCreateNewGroup;
     }
@@ -96,8 +98,8 @@ CSR_API(CsrSrvCreateProcess)
     /* Call CSRSRV to create the CSR_PROCESS structure and the first CSR_THREAD */
     Status = CsrCreateProcess(ProcessHandle,
                               ThreadHandle,
-                              &Request->Data.CreateProcessRequest.ClientId,
-                              CsrThread->Process->NtSession,
+                              &ApiMessage->Data.CreateProcessRequest.ClientId,
+                              Process->NtSession,
                               DebugFlags,
                               NULL);
     if (Status == STATUS_THREAD_IS_TERMINATING)
@@ -118,16 +120,16 @@ CSR_API(CsrSrvCreateProcess)
     /* FIXME: VDM vodoo */
     
     /* ReactOS Compatibility */
-    Status = CsrLockProcessByClientId(Request->Data.CreateProcessRequest.ClientId.UniqueProcess, &NewProcessData);
+    Status = CsrLockProcessByClientId(ApiMessage->Data.CreateProcessRequest.ClientId.UniqueProcess, &NewProcess);
     ASSERT(Status == STATUS_SUCCESS);
-    if (!(Request->Data.CreateProcessRequest.CreationFlags & (CREATE_NEW_CONSOLE | DETACHED_PROCESS)))
+    if (!(ApiMessage->Data.CreateProcessRequest.CreationFlags & (CREATE_NEW_CONSOLE | DETACHED_PROCESS)))
     {
-        NewProcessData->ParentConsole = ProcessData->Console;
-        NewProcessData->bInheritHandles = Request->Data.CreateProcessRequest.bInheritHandles;
+        NewProcess->ParentConsole = Process->Console;
+        NewProcess->bInheritHandles = ApiMessage->Data.CreateProcessRequest.bInheritHandles;
     }
-    RtlInitializeCriticalSection(&NewProcessData->HandleTableLock);
-    CallProcessCreated(ProcessData, NewProcessData);
-    CsrUnlockProcess(NewProcessData);
+    RtlInitializeCriticalSection(&NewProcess->HandleTableLock);
+    CallProcessCreated(Process, NewProcess);
+    CsrUnlockProcess(NewProcess);
 
     /* Return the result of this operation */
     return Status;
@@ -141,36 +143,36 @@ CSR_API(CsrSrvCreateThread)
     PCSR_PROCESS CsrProcess;
     
     /* Get the current CSR thread */
-    CurrentThread = NtCurrentTeb()->CsrClientThread;
+    CurrentThread = CsrGetClientThread();
     if (!CurrentThread)
     {
         DPRINT1("Server Thread TID: [%lx.%lx]\n",
-                Request->Data.CreateThreadRequest.ClientId.UniqueProcess,
-                Request->Data.CreateThreadRequest.ClientId.UniqueThread);
+                ApiMessage->Data.CreateThreadRequest.ClientId.UniqueProcess,
+                ApiMessage->Data.CreateThreadRequest.ClientId.UniqueThread);
         return STATUS_SUCCESS; // server-to-server
     }
 
     /* Get the CSR Process for this request */
     CsrProcess = CurrentThread->Process;
     if (CsrProcess->ClientId.UniqueProcess !=
-        Request->Data.CreateThreadRequest.ClientId.UniqueProcess)
+        ApiMessage->Data.CreateThreadRequest.ClientId.UniqueProcess)
     {
         /* This is a remote thread request -- is it within the server itself? */
-        if (Request->Data.CreateThreadRequest.ClientId.UniqueProcess == NtCurrentTeb()->ClientId.UniqueProcess)
+        if (ApiMessage->Data.CreateThreadRequest.ClientId.UniqueProcess == NtCurrentTeb()->ClientId.UniqueProcess)
         {
             /* Accept this without any further work */
             return STATUS_SUCCESS;
         }
 
         /* Get the real CSR Process for the remote thread's process */
-        Status = CsrLockProcessByClientId(Request->Data.CreateThreadRequest.ClientId.UniqueProcess,
+        Status = CsrLockProcessByClientId(ApiMessage->Data.CreateThreadRequest.ClientId.UniqueProcess,
                                           &CsrProcess);
         if (!NT_SUCCESS(Status)) return Status;
     }
 
     /* Duplicate the thread handle so we can own it */
     Status = NtDuplicateObject(CurrentThread->Process->ProcessHandle,
-                               Request->Data.CreateThreadRequest.ThreadHandle,
+                               ApiMessage->Data.CreateThreadRequest.ThreadHandle,
                                NtCurrentProcess(),
                                &ThreadHandle,
                                0,
@@ -181,7 +183,7 @@ CSR_API(CsrSrvCreateThread)
         /* Call CSRSRV to tell it about the new thread */
         Status = CsrCreateThread(CsrProcess,
                                  ThreadHandle,
-                                 &Request->Data.CreateThreadRequest.ClientId);
+                                 &ApiMessage->Data.CreateThreadRequest.ClientId);
     }
 
     /* Unlock the process and return */
@@ -191,39 +193,42 @@ CSR_API(CsrSrvCreateThread)
 
 CSR_API(CsrTerminateProcess)
 {
-    PCSR_THREAD CsrThread = NtCurrentTeb()->CsrClientThread;
+    PCSR_THREAD CsrThread = CsrGetClientThread();
     ASSERT(CsrThread != NULL);
 
     /* Set magic flag so we don't reply this message back */
-    Request->Type = 0xBABE;
+    ApiMessage->ApiNumber = 0xBABE;
 
     /* Remove the CSR_THREADs and CSR_PROCESS */
     return CsrDestroyProcess(&CsrThread->ClientId,
-                             (NTSTATUS)Request->Data.TerminateProcessRequest.uExitCode);
+                             (NTSTATUS)ApiMessage->Data.TerminateProcessRequest.uExitCode);
 }
 
 CSR_API(CsrConnectProcess)
 {
-
-   return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 CSR_API(CsrGetShutdownParameters)
 {
+    PCSR_THREAD CsrThread = CsrGetClientThread();
+    ASSERT(CsrThread);
 
-  Request->Data.GetShutdownParametersRequest.Level = ProcessData->ShutdownLevel;
-  Request->Data.GetShutdownParametersRequest.Flags = ProcessData->ShutdownFlags;
+    ApiMessage->Data.GetShutdownParametersRequest.Level = CsrThread->Process->ShutdownLevel;
+    ApiMessage->Data.GetShutdownParametersRequest.Flags = CsrThread->Process->ShutdownFlags;
 
-  return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 CSR_API(CsrSetShutdownParameters)
 {
+    PCSR_THREAD CsrThread = CsrGetClientThread();
+    ASSERT(CsrThread);
 
-  ProcessData->ShutdownLevel = Request->Data.SetShutdownParametersRequest.Level;
-  ProcessData->ShutdownFlags = Request->Data.SetShutdownParametersRequest.Flags;
+    CsrThread->Process->ShutdownLevel = ApiMessage->Data.SetShutdownParametersRequest.Level;
+    CsrThread->Process->ShutdownFlags = ApiMessage->Data.SetShutdownParametersRequest.Flags;
 
-  return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 /* EOF */
index 9ce9da0..1ba4fb3 100644 (file)
@@ -32,7 +32,7 @@ CSR_API(CsrRegisterServicesProcess)
     }
   else
     {
-      ServicesProcessId = (ULONG_PTR)Request->Data.RegisterServicesProcessRequest.ProcessId;
+      ServicesProcessId = (ULONG_PTR)ApiMessage->Data.RegisterServicesProcessRequest.ProcessId;
       ServicesProcessIdValid = TRUE;
       return STATUS_SUCCESS;
     }
index af4f764..cd2fa0c 100644 (file)
@@ -62,39 +62,47 @@ CsrApiRegisterDefinitions(PCSRSS_API_DEFINITION NewDefinitions)
   return STATUS_SUCCESS;
 }
 
+/*
 VOID
 FASTCALL
 CsrApiCallHandler(PCSR_PROCESS ProcessData,
                   PCSR_API_MESSAGE Request)
+*/
+VOID
+FASTCALL
+CsrApiCallHandler(
+    IN OUT PCSR_API_MESSAGE ApiMessage,
+    OUT PULONG Reply
+)
 {
   unsigned DefIndex;
-  ULONG Type;
+  ULONG ApiId;
 
-  DPRINT("CSR: Calling handler for type: %x.\n", Request->Type);
-  Type = Request->Type & 0xFFFF; /* FIXME: USE MACRO */
-  DPRINT("CSR: API Number: %x ServerID: %x\n",Type, Request->Type >> 16);
+  DPRINT("CSR: Calling handler for ApiNumber: %x.\n", ApiMessage->ApiNumber);
+  ApiId = CSR_API_NUMBER_TO_API_ID(ApiMessage->ApiNumber);
+  DPRINT("CSR: ApiID: %x ServerID: %x\n", ApiId, CSR_API_NUMBER_TO_SERVER_ID(ApiMessage->ApiNumber));
 
   /* FIXME: Extract DefIndex instead of looping */
   for (DefIndex = 0; DefIndex < ApiDefinitionsCount; DefIndex++)
     {
-      if (ApiDefinitions[DefIndex].Type == Type)
+      if (ApiDefinitions[DefIndex].ApiID == ApiId)
         {
-          if (Request->Header.u1.s1.DataLength < ApiDefinitions[DefIndex].MinRequestSize)
+          if (ApiMessage->Header.u1.s1.DataLength < ApiDefinitions[DefIndex].MinRequestSize)
             {
-              DPRINT1("Request type %d min request size %d actual %d\n",
-                      Type, ApiDefinitions[DefIndex].MinRequestSize,
-                      Request->Header.u1.s1.DataLength);
-              Request->Status = STATUS_INVALID_PARAMETER;
+              DPRINT1("Request ApiID %d min request size %d actual %d\n",
+                      ApiId, ApiDefinitions[DefIndex].MinRequestSize,
+                      ApiMessage->Header.u1.s1.DataLength);
+              ApiMessage->Status = STATUS_INVALID_PARAMETER;
             }
           else
             {
-              Request->Status = (ApiDefinitions[DefIndex].Handler)(ProcessData, Request);
+              ApiMessage->Status = (ApiDefinitions[DefIndex].Handler)(ApiMessage, Reply);
             }
           return;
         }
     }
-  DPRINT1("CSR: Unknown request type 0x%x\n", Request->Type);
-  Request->Status = STATUS_INVALID_SYSTEM_SERVICE;
+  DPRINT1("CSR: Unknown request ApiNumber 0x%x\n", ApiMessage->ApiNumber);
+  ApiMessage->Status = STATUS_INVALID_SYSTEM_SERVICE;
 }
 
 VOID
@@ -127,7 +135,7 @@ CsrHandleHardError(IN PCSR_THREAD ThreadData,
  *        Pointer to the CSR API Message to receive from the server.
  *
  * @return STATUS_SUCCESS in case of success, STATUS_ILLEGAL_FUNCTION
- *         if the opcode is invalid, or STATUS_ACCESS_VIOLATION if there
+ *         if the ApiNumber is invalid, or STATUS_ACCESS_VIOLATION if there
  *         was a problem executing the API.
  *
  * @remarks None.
@@ -146,7 +154,7 @@ CsrCallServerFromServer(PCSR_API_MESSAGE ReceiveMsg,
     NTSTATUS Status;
 
     /* Get the Server ID */
-    ServerId = CSR_SERVER_ID_FROM_OPCODE(ReceiveMsg->Opcode);
+    ServerId = CSR_SERVER_ID_FROM_OPCODE(ReceiveMsg->ApiNumber);
 
     /* Make sure that the ID is within limits, and the Server DLL loaded */
     if ((ServerId >= CSR_SERVER_DLL_MAX) ||
@@ -160,7 +168,7 @@ CsrCallServerFromServer(PCSR_API_MESSAGE ReceiveMsg,
     else
     {
         /* Get the API ID */
-        ApiId = CSR_API_ID_FROM_OPCODE(ReceiveMsg->Opcode);
+        ApiId = CSR_API_NUMBER_TO_API_ID(ReceiveMsg->ApiNumber);
 
         /* Normalize it with our Base ID */
         ApiId -= ServerDll->ApiBase;
@@ -209,6 +217,7 @@ CsrCallServerFromServer(PCSR_API_MESSAGE ReceiveMsg,
 #else // Hacky reactos code
 
     PCSR_PROCESS ProcessData;
+    ULONG ReplyCode;
 
     /* Get the Process Data */
     CsrLockProcessByClientId(&ReceiveMsg->Header.ClientId.UniqueProcess, &ProcessData);
@@ -223,7 +232,7 @@ CsrCallServerFromServer(PCSR_API_MESSAGE ReceiveMsg,
     _SEH2_TRY
     {
         /* Call the API and get the result */
-        CsrApiCallHandler(ProcessData, ReplyMsg);
+        CsrApiCallHandler(ReplyMsg, /*ProcessData*/ &ReplyCode);
     }
     _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
     {
@@ -1163,7 +1172,7 @@ HandleHardError:
             {
                 /* This is an API Message coming from a non-CSR Thread */
                 DPRINT1("No thread found for request %lx and clientID %lx.%lx\n",
-                        Request->Type & 0xFFFF,
+                        Request->ApiNumber & 0xFFFF,
                         Request->Header.ClientId.UniqueProcess,
                         Request->Header.ClientId.UniqueThread);
                 Reply = Request;
@@ -1276,12 +1285,14 @@ HandleHardError:
         ReplyPort = CsrThread->Process->ClientPort;
 
         DPRINT("CSR: Got CSR API: %x [Message Origin: %x]\n",
-                Request->Type,
+                Request->ApiNumber,
                 Request->Header.ClientId.UniqueThread);
 
         /* Validation complete, start SEH */
         _SEH2_TRY
         {
+            ULONG ReplyCode;
+
             /* Make sure we have enough threads */
             CsrpCheckRequestThreads();
 
@@ -1289,7 +1300,7 @@ HandleHardError:
             NtCurrentTeb()->CsrClientThread = CsrThread;
 
             /* Call the Handler */
-            CsrApiCallHandler(CsrThread->Process, Request);
+            CsrApiCallHandler(Request, &ReplyCode);
 
             /* Increase the static thread count */
             _InterlockedIncrement(&CsrpStaticThreadCount);
@@ -1298,7 +1309,7 @@ HandleHardError:
             NtCurrentTeb()->CsrClientThread = ServerThread;
 
             /* Check if this is a dead client now */
-            if (Request->Type == 0xBABE)
+            if (Request->ApiNumber == 0xBABE)
             {
                 /* Reply to the death message */
                 NtReplyPort(ReplyPort, &Reply->Header);
index 2285970..604c7e9 100644 (file)
@@ -187,7 +187,7 @@ NTAPI
 CsrImpersonateClient(IN PCSR_THREAD CsrThread)
 {
     NTSTATUS Status;
-    PCSR_THREAD CurrentThread = NtCurrentTeb()->CsrClientThread;
+    PCSR_THREAD CurrentThread = CsrGetClientThread();
 
     /* Use the current thread if none given */
     if (!CsrThread) CsrThread = CurrentThread;
@@ -241,7 +241,7 @@ NTAPI
 CsrRevertToSelf(VOID)
 {
     NTSTATUS Status;
-    PCSR_THREAD CurrentThread = NtCurrentTeb()->CsrClientThread;
+    PCSR_THREAD CurrentThread = CsrGetClientThread();
     HANDLE ImpersonationToken = NULL;
 
     /* Check if we have a Current Thread */
@@ -699,7 +699,7 @@ CsrCreateProcess(IN HANDLE hProcess,
                  IN ULONG Flags,
                  IN PCLIENT_ID DebugCid)
 {
-    PCSR_THREAD CurrentThread = NtCurrentTeb()->CsrClientThread;
+    PCSR_THREAD CurrentThread = CsrGetClientThread();
     CLIENT_ID CurrentCid;
     PCSR_PROCESS CurrentProcess;
 //    PVOID ProcessData;
index 1221edc..1ca428e 100644 (file)
@@ -281,7 +281,7 @@ CsrSrvClientConnect(IN OUT PCSR_API_MESSAGE ApiMessage,
     NTSTATUS Status;
     PCSR_CLIENT_CONNECT ClientConnect;
     PCSR_SERVER_DLL ServerDll;
-    PCSR_PROCESS CurrentProcess = ((PCSR_THREAD)NtCurrentTeb()->CsrClientThread)->Process;
+    PCSR_PROCESS CurrentProcess = CsrGetClientThread()->Process;
 
     /* Load the Message, set default reply */
     ClientConnect = (PCSR_CLIENT_CONNECT)&ApiMessage->CsrClientConnect;
@@ -525,7 +525,7 @@ NTAPI
 CsrSrvIdentifyAlertableThread(IN OUT PCSR_API_MESSAGE ApiMessage,
                               IN OUT PULONG Reply)
 {
-    PCSR_THREAD CsrThread = NtCurrentTeb()->CsrClientThread;
+    PCSR_THREAD CsrThread = CsrGetClientThread();
 
     /* Set the alertable flag */
     CsrThread->Flags |= CsrThreadAltertable;
index 18cfca1..d1c3de4 100644 (file)
@@ -668,7 +668,7 @@ CsrCreateThread(IN PCSR_PROCESS CsrProcess,
 {
     PCSR_THREAD CsrThread;
     PCSR_PROCESS CurrentProcess;
-    PCSR_THREAD CurrentThread = NtCurrentTeb()->CsrClientThread;
+    PCSR_THREAD CurrentThread = CsrGetClientThread();
     CLIENT_ID CurrentCid;
     KERNEL_USER_TIMES KernelTimes;
 
index 6a71ee0..c7ee19c 100644 (file)
 #include <ndk/psfuncs.h>
 #include <ndk/rtlfuncs.h>
 
-#include <csrss/csrss.h>
-
-#define CSR_SRV_SERVER 0
-#define CSR_SERVER_DLL_MAX 4
-#define LOCK   RtlEnterCriticalSection(&ProcessDataLock)
-#define UNLOCK RtlLeaveCriticalSection(&ProcessDataLock)
-#define CsrAcquireProcessLock() LOCK
-#define CsrReleaseProcessLock() UNLOCK
+#include <csrss/server.h>
+
+
+#define CsrAcquireProcessLock() \
+    RtlEnterCriticalSection(&ProcessDataLock); // CsrProcessLock
+
+#define CsrReleaseProcessLock() \
+    RtlLeaveCriticalSection(&ProcessDataLock);
+
 #define ProcessStructureListLocked() \
     (ProcessDataLock.OwningThread == NtCurrentTeb()->ClientId.UniqueThread)
 
 #define CsrReleaseNtSessionLock() \
     RtlLeaveCriticalSection(&CsrNtSessionLock);
 
-typedef enum _CSR_THREAD_FLAGS
-{
-    CsrThreadAltertable     = 0x1,
-    CsrThreadInTermination  = 0x2,
-    CsrThreadTerminated     = 0x4,
-    CsrThreadIsServerThread = 0x10
-} CSR_THREAD_FLAGS, *PCSR_THREAD_FLAGS;
-
-typedef enum _SHUTDOWN_RESULT
-{
-    CsrShutdownCsrProcess = 1,
-    CsrShutdownNonCsrProcess,
-    CsrShutdownCancelled
-} SHUTDOWN_RESULT, *PSHUTDOWN_RESULT;
-
-typedef enum _CSR_SHUTDOWN_FLAGS
-{
-    CsrShutdownSystem = 4,
-    CsrShutdownOther  = 8
-} CSR_SHUTDOWN_FLAGS, *PCSR_SHUTDOWN_FLAGS;
-
-typedef enum _CSR_DEBUG_FLAGS
-{
-    CsrDebugOnlyThisProcess = 1,
-    CsrDebugProcessChildren = 2
-} CSR_PROCESS_DEBUG_FLAGS, *PCSR_PROCESS_DEBUG_FLAGS;
-
-typedef enum _CSR_PROCESS_FLAGS
-{
-    CsrProcessTerminating          = 0x1,
-    CsrProcessSkipShutdown         = 0x2,
-    CsrProcessNormalPriority       = 0x10,
-    CsrProcessIdlePriority         = 0x20,
-    CsrProcessHighPriority         = 0x40,
-    CsrProcessRealtimePriority     = 0x80,
-    CsrProcessCreateNewGroup       = 0x100,
-    CsrProcessTerminated           = 0x200,
-    CsrProcessLastThreadTerminated = 0x400,
-    CsrProcessIsConsoleApp         = 0x800
-} CSR_PROCESS_FLAGS, *PCSR_PROCESS_FLAGS;
-
-#define CsrProcessPriorityFlags (CsrProcessNormalPriority | \
-                                 CsrProcessIdlePriority   | \
-                                 CsrProcessHighPriority   | \
-                                 CsrProcessRealtimePriority)
-
-typedef struct _CSRSS_CON_PROCESS_DATA
-{
-    HANDLE ConsoleEvent;
-    struct tagCSRSS_CONSOLE *Console;
-    struct tagCSRSS_CONSOLE *ParentConsole;
-    BOOL bInheritHandles;
-    RTL_CRITICAL_SECTION HandleTableLock;
-    ULONG HandleTableSize;
-    struct _CSRSS_HANDLE *HandleTable;
-    PCONTROLDISPATCHER CtrlDispatcher;
-    LIST_ENTRY ConsoleLink;
-} CSRSS_CON_PROCESS_DATA, *PCSRSS_CON_PROCESS_DATA;
-
-typedef struct _CSR_NT_SESSION
-{
-    ULONG ReferenceCount;
-    LIST_ENTRY SessionLink;
-    ULONG SessionId;
-} CSR_NT_SESSION, *PCSR_NT_SESSION;
 
-typedef struct _CSR_PROCESS
-{
-    CLIENT_ID ClientId;
-    LIST_ENTRY ListLink;
-    LIST_ENTRY ThreadList;
-    struct _CSR_PROCESS *Parent;
-    PCSR_NT_SESSION NtSession;
-    ULONG ExpectedVersion;
-    HANDLE ClientPort;
-    ULONG_PTR ClientViewBase;
-    ULONG_PTR ClientViewBounds;
-    HANDLE ProcessHandle;
-    ULONG SequenceNumber;
-    ULONG Flags;
-    ULONG DebugFlags;
-    CLIENT_ID DebugCid;
-    ULONG ReferenceCount;
-    ULONG ProcessGroupId;
-    ULONG ProcessGroupSequence;
-    ULONG fVDM;
-    ULONG ThreadCount;
-    ULONG PriorityClass;
-    ULONG Reserved;
-    ULONG ShutdownLevel;
-    ULONG ShutdownFlags;
-//    PVOID ServerData[ANYSIZE_ARRAY];
-    CSRSS_CON_PROCESS_DATA;
-} CSR_PROCESS, *PCSR_PROCESS;
-
-typedef struct _CSR_THREAD
-{
-    LARGE_INTEGER CreateTime;
-    LIST_ENTRY Link;
-    LIST_ENTRY HashLinks;
-    CLIENT_ID ClientId;
-    PCSR_PROCESS Process;
-    struct _CSR_WAIT_BLOCK *WaitBlock;
-    HANDLE ThreadHandle;
-    ULONG Flags;
-    ULONG ReferenceCount;
-    ULONG ImpersonationCount;
-} CSR_THREAD, *PCSR_THREAD;
-
-typedef
-BOOLEAN
-(*CSR_WAIT_FUNCTION)(
-    IN PLIST_ENTRY WaitList,
-    IN PCSR_THREAD WaitThread,
-    IN PCSR_API_MESSAGE WaitApiMessage,
-    IN PVOID WaitContext,
-    IN PVOID WaitArgument1,
-    IN PVOID WaitArgument2,
-    IN ULONG WaitFlags
-);
 
-typedef struct _CSR_WAIT_BLOCK
+typedef struct _CSRSS_API_DEFINITION
 {
-    ULONG Size;
-    LIST_ENTRY WaitList;
-    LIST_ENTRY UserWaitList;
-    PVOID WaitContext;
-    PCSR_THREAD WaitThread;
-    CSR_WAIT_FUNCTION WaitFunction;
-    CSR_API_MESSAGE WaitApiMessage;
-} CSR_WAIT_BLOCK, *PCSR_WAIT_BLOCK;
-
-typedef
-NTSTATUS
-(NTAPI *PCSR_CONNECT_CALLBACK)(
-    IN PCSR_PROCESS CsrProcess,
-    IN OUT PVOID ConnectionInfo,
-    IN OUT PULONG ConnectionInfoLength
-);
-
-typedef
-VOID
-(NTAPI *PCSR_DISCONNECT_CALLBACK)(IN PCSR_PROCESS CsrProcess);
-
-typedef
-NTSTATUS
-(NTAPI *PCSR_NEWPROCESS_CALLBACK)(
-    IN PCSR_PROCESS Parent,
-    IN PCSR_PROCESS CsrProcess
-);
+    ULONG ApiID;
+    ULONG MinRequestSize;
+    PCSR_API_ROUTINE Handler;
+} CSRSS_API_DEFINITION, *PCSRSS_API_DEFINITION;
 
-typedef
-VOID
-(NTAPI *PCSR_HARDERROR_CALLBACK)(
-    IN PCSR_THREAD CsrThread,
-    IN PHARDERROR_MSG HardErrorMessage
-);
+#define CSRSS_DEFINE_API(Func, Handler) \
+    { Func, sizeof(CSRSS_##Func), Handler }
 
-typedef
-ULONG
-(NTAPI *PCSR_SHUTDOWNPROCESS_CALLBACK)(
-    IN PCSR_PROCESS CsrProcess,
-    IN ULONG Flags,
-    IN BOOLEAN FirstPhase
-);
 
-typedef
-NTSTATUS
-(NTAPI *PCSR_API_ROUTINE)(
-    IN OUT PCSR_API_MESSAGE ApiMessage,
-    IN OUT PULONG Reply
-);
 
-typedef struct _CSR_SERVER_DLL
+typedef struct _CSRSS_LISTEN_DATA
 {
-    ULONG Length;
-    HANDLE Event;
-    ANSI_STRING Name;
-    HANDLE ServerHandle;
-    ULONG ServerId;
-    ULONG Unknown;
-    ULONG ApiBase;
-    ULONG HighestApiSupported;
-    PCSR_API_ROUTINE *DispatchTable;
-    PBOOLEAN ValidTable;
-    PCHAR *NameTable;
-    ULONG SizeOfProcessData;
-    PCSR_CONNECT_CALLBACK ConnectCallback;
-    PCSR_DISCONNECT_CALLBACK DisconnectCallback;
-    PCSR_HARDERROR_CALLBACK HardErrorCallback;
-    PVOID SharedSection;
-    PCSR_NEWPROCESS_CALLBACK NewProcessCallback;
-    PCSR_SHUTDOWNPROCESS_CALLBACK ShutdownProcessCallback;
-    ULONG Unknown2[3];
-} CSR_SERVER_DLL, *PCSR_SERVER_DLL;
-
-typedef
-NTSTATUS
-(NTAPI *PCSR_SERVER_DLL_INIT_CALLBACK)(IN PCSR_SERVER_DLL ServerDll);
+    HANDLE ApiPortHandle;
+    ULONG ApiDefinitionsCount;
+    PCSRSS_API_DEFINITION *ApiDefinitions;
+} CSRSS_LISTEN_DATA, *PCSRSS_LISTEN_DATA;
 
 
-typedef NTSTATUS (WINAPI *CSRSS_API_PROC)(PCSR_PROCESS ProcessData,
-                                           PCSR_API_MESSAGE Request);
 
-typedef struct _CSRSS_API_DEFINITION
-{
-    ULONG Type;
-    ULONG MinRequestSize;
-    CSRSS_API_PROC Handler;
-} CSRSS_API_DEFINITION, *PCSRSS_API_DEFINITION;
 
-#define CSRSS_DEFINE_API(Func, Handler) \
-  { Func, sizeof(CSRSS_##Func), Handler }
+/******************************************************************************
+ ******************************************************************************
+ ******************************************************************************/
 
-typedef struct _CSRSS_LISTEN_DATA
-{
-  HANDLE ApiPortHandle;
-  ULONG ApiDefinitionsCount;
-  PCSRSS_API_DEFINITION *ApiDefinitions;
-} CSRSS_LISTEN_DATA, *PCSRSS_LISTEN_DATA;
 
-#define CSR_API(n) NTSTATUS WINAPI n (  \
-    PCSR_PROCESS ProcessData,           \
-    PCSR_API_MESSAGE Request)
 
 /* init.c */
 extern HANDLE hBootstrapOk;
@@ -304,15 +110,10 @@ CsrInsertProcess(IN PCSR_PROCESS Parent OPTIONAL,
 
 /* api/wapi.c */
 NTSTATUS FASTCALL CsrApiRegisterDefinitions(PCSRSS_API_DEFINITION NewDefinitions);
-VOID FASTCALL CsrApiCallHandler(PCSR_PROCESS ProcessData,
-                                PCSR_API_MESSAGE Request);
+VOID FASTCALL CsrApiCallHandler(IN OUT PCSR_API_MESSAGE ApiMessage, OUT PULONG Reply);
 VOID WINAPI CsrSbApiRequestThread (PVOID PortHandle);
 VOID NTAPI ClientConnectionThread(HANDLE ServerPort);
 
-VOID
-NTAPI
-CsrReleaseCapturedArguments(IN PCSR_API_MESSAGE ApiMessage);
-
 extern HANDLE CsrApiPort;
 extern HANDLE CsrSmApiPort;
 extern HANDLE CsrSbApiPort;
@@ -357,7 +158,7 @@ CsrLockedReferenceThread(IN PCSR_THREAD CsrThread);
 
 /* api/process.c */
 typedef NTSTATUS (WINAPI *CSRSS_ENUM_PROCESS_PROC)(PCSR_PROCESS ProcessData,
-                                                    PVOID Context);
+                                                   PVOID Context);
 NTSTATUS WINAPI CsrInitializeProcessStructure(VOID);
 
 NTSTATUS WINAPI CsrEnumProcesses(CSRSS_ENUM_PROCESS_PROC EnumProc, PVOID Context);
index 921f458..5cbb273 100644 (file)
@@ -70,8 +70,9 @@ typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
 /* SEH support with PSEH */
 #include <pseh/pseh2.h>
 
-/* CSRSS header */
-#include <csrss/csrss.h>
+/* CSRSS Header */
+#include <csrss/client.h>
+#include <csrss/csrss.h> // FIXME: data header.
 
 /* Public Win32K headers */
 #include <include/callback.h>
index af75700..f807d50 100644 (file)
@@ -34,7 +34,7 @@ CsrInit(void)
                           NULL,
                           NULL,
                           &ConnectInfoLength);
-   if (! NT_SUCCESS(Status))
+   if (!NT_SUCCESS(Status))
    {
       return Status;
    }
index fdad25e..8c9b9f3 100644 (file)
@@ -1208,7 +1208,7 @@ NtUserCreateDesktop(
    /*
     * Create a handle for CSRSS and notify CSRSS for Creating Desktop Background Windows and Threads.
     */
-   Request.Type = MAKE_CSR_API(CREATE_DESKTOP, CSR_GUI);
+   Request.ApiNumber = CSR_CREATE_API_NUMBER(CSR_GUI, CREATE_DESKTOP);
    Status = CsrInsertObject(Desktop,
                             GENERIC_ALL,
                             (HANDLE*)&Request.Data.CreateDesktopRequest.DesktopHandle);
index da3041a..91216be 100644 (file)
@@ -52,7 +52,7 @@ co_IntRegisterLogonProcess(HANDLE ProcessId, BOOL Register)
 
    ObDereferenceObject(Process);
 
-   Request.Type = MAKE_CSR_API(REGISTER_LOGON_PROCESS, CSR_GUI);
+   Request.ApiNumber = CSR_CREATE_API_NUMBER(CSR_GUI, REGISTER_LOGON_PROCESS);
    Request.Data.RegisterLogonProcessRequest.ProcessId = ProcessId;
    Request.Data.RegisterLogonProcessRequest.Register = Register;
 
index be2e6cd..0078cab 100644 (file)
@@ -29,8 +29,9 @@
 #include <ndk/rtlfuncs.h>
 #include <ndk/umfuncs.h>
 
-/* CSRSS Headers */
-#include <csrss/csrss.h>
+/* CSRSS Header */
+#include <csrss/client.h>
+#include <csrss/csrss.h> // FIXME: data header.
 
 /* Public Win32K Headers */
 #include <ntusrtyp.h>
index f27d452..16b5a6f 100644 (file)
@@ -109,4 +109,3 @@ static __inline void LoadUserApiHook()
 #define HOOKID_TO_FLAG(HookId) (1 << ((HookId) + 1))
 #define ISITHOOKED(HookId) (GetWin32ClientInfo()->fsHooks & HOOKID_TO_FLAG(HookId) ||\
                            (GetWin32ClientInfo()->pDeskInfo && GetWin32ClientInfo()->pDeskInfo->fsHooks & HOOKID_TO_FLAG(HookId)))
-                                                  
\ No newline at end of file
index 3c16521..0a2ba98 100644 (file)
  */
 BOOL WINAPI
 ExitWindowsEx(UINT uFlags,
-             DWORD dwReserved)
+              DWORD dwReserved)
 {
-  CSR_API_MESSAGE Request;
-  ULONG CsrRequest;
-  NTSTATUS Status;
+    CSR_API_MESSAGE Request;
+    NTSTATUS Status;
 
-  CsrRequest = MAKE_CSR_API(EXIT_REACTOS, CSR_GUI);
-  Request.Data.ExitReactosRequest.Flags = uFlags;
-  Request.Data.ExitReactosRequest.Reserved = dwReserved;
+    Request.Data.ExitReactosRequest.Flags = uFlags;
+    Request.Data.ExitReactosRequest.Reserved = dwReserved;
 
-  Status = CsrClientCallServer(&Request,
-                              NULL,
-                   CsrRequest,
-                              sizeof(CSR_API_MESSAGE));
-  if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_GUI, EXIT_REACTOS),
+                                 sizeof(CSR_API_MESSAGE));
+    if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
-      SetLastError(RtlNtStatusToDosError(Status));
-      return(FALSE);
+        SetLastError(RtlNtStatusToDosError(Status));
+        return FALSE;
     }
 
-  return(TRUE);
+    return TRUE;
 }
 
 
@@ -95,24 +93,22 @@ ExitWindowsEx(UINT uFlags,
 BOOL WINAPI
 RegisterServicesProcess(DWORD ServicesProcessId)
 {
-  CSR_API_MESSAGE Request;
-  ULONG CsrRequest;
-  NTSTATUS Status;
+    CSR_API_MESSAGE Request;
+    NTSTATUS Status;
 
-  CsrRequest = MAKE_CSR_API(REGISTER_SERVICES_PROCESS, CSR_GUI);
-  Request.Data.RegisterServicesProcessRequest.ProcessId = UlongToHandle(ServicesProcessId);
+    Request.Data.RegisterServicesProcessRequest.ProcessId = UlongToHandle(ServicesProcessId);
 
-  Status = CsrClientCallServer(&Request,
-                   NULL,
-                              CsrRequest,
-                              sizeof(CSR_API_MESSAGE));
-  if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_GUI, REGISTER_SERVICES_PROCESS),
+                                 sizeof(CSR_API_MESSAGE));
+    if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
-      SetLastError(RtlNtStatusToDosError(Status));
-      return(FALSE);
+        SetLastError(RtlNtStatusToDosError(Status));
+        return FALSE;
     }
 
-  return(TRUE);
+    return TRUE;
 }
 
 /* EOF */
index 8059f4c..cdf91ff 100644 (file)
@@ -52,25 +52,23 @@ BOOL
 WINAPI
 SetLogonNotifyWindow (HWND Wnd, HWINSTA WinSta)
 {
-  /* Maybe we should call NtUserSetLogonNotifyWindow and let that one inform CSRSS??? */
-  CSR_API_MESSAGE Request;
-  ULONG CsrRequest;
-  NTSTATUS Status;
-
-  CsrRequest = MAKE_CSR_API(SET_LOGON_NOTIFY_WINDOW, CSR_GUI);
-  Request.Data.SetLogonNotifyWindowRequest.LogonNotifyWindow = Wnd;
-
-  Status = CsrClientCallServer(&Request,
-                              NULL,
-                   CsrRequest,
-                              sizeof(CSR_API_MESSAGE));
-  if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
+    /* Maybe we should call NtUserSetLogonNotifyWindow and let that one inform CSRSS??? */
+    CSR_API_MESSAGE Request;
+    NTSTATUS Status;
+
+    Request.Data.SetLogonNotifyWindowRequest.LogonNotifyWindow = Wnd;
+
+    Status = CsrClientCallServer(&Request,
+                                 NULL,
+                                 CSR_CREATE_API_NUMBER(CSR_GUI, SET_LOGON_NOTIFY_WINDOW),
+                                 sizeof(CSR_API_MESSAGE));
+    if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
     {
-      SetLastError(RtlNtStatusToDosError(Status));
-      return(FALSE);
+        SetLastError(RtlNtStatusToDosError(Status));
+        return FALSE;
     }
 
-  return NtUserSetLogonNotifyWindow(Wnd);
+    return NtUserSetLogonNotifyWindow(Wnd);
 }
 
 /*
index 55c6996..a12eb03 100644 (file)
@@ -288,24 +288,24 @@ CSR_API(CsrAddConsoleAlias)
     //ULONG TotalLength;
     //WCHAR * Ptr;
 
-    //TotalLength = Request->Data.AddConsoleAlias.SourceLength + Request->Data.AddConsoleAlias.ExeLength + Request->Data.AddConsoleAlias.TargetLength;
-    //Ptr = (WCHAR*)((ULONG_PTR)Request + sizeof(CSR_API_MESSAGE));
+    //TotalLength = ApiMessage->Data.AddConsoleAlias.SourceLength + ApiMessage->Data.AddConsoleAlias.ExeLength + ApiMessage->Data.AddConsoleAlias.TargetLength;
+    //Ptr = (WCHAR*)((ULONG_PTR)ApiMessage + sizeof(CSR_API_MESSAGE));
 
-    lpSource = (WCHAR*)((ULONG_PTR)Request + sizeof(CSR_API_MESSAGE));
-    lpExeName = (WCHAR*)((ULONG_PTR)Request + sizeof(CSR_API_MESSAGE) + Request->Data.AddConsoleAlias.SourceLength * sizeof(WCHAR));
-    lpTarget = (Request->Data.AddConsoleAlias.TargetLength != 0 ? lpExeName + Request->Data.AddConsoleAlias.ExeLength : NULL);
+    lpSource = (WCHAR*)((ULONG_PTR)ApiMessage + sizeof(CSR_API_MESSAGE));
+    lpExeName = (WCHAR*)((ULONG_PTR)ApiMessage + sizeof(CSR_API_MESSAGE) + ApiMessage->Data.AddConsoleAlias.SourceLength * sizeof(WCHAR));
+    lpTarget = (ApiMessage->Data.AddConsoleAlias.TargetLength != 0 ? lpExeName + ApiMessage->Data.AddConsoleAlias.ExeLength : NULL);
 
-    DPRINT("CsrAddConsoleAlias entered Request %p lpSource %p lpExeName %p lpTarget %p\n", Request, lpSource, lpExeName, lpTarget);
+    DPRINT("CsrAddConsoleAlias entered ApiMessage %p lpSource %p lpExeName %p lpTarget %p\n", ApiMessage, lpSource, lpExeName, lpTarget);
 
     if (lpExeName == NULL || lpSource == NULL)
     {
         return STATUS_INVALID_PARAMETER;
     }
 
-    Request->Status = ConioConsoleFromProcessData(ProcessData, &Console);
-    if (!NT_SUCCESS(Request->Status))
+    ApiMessage->Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
+    if (!NT_SUCCESS(ApiMessage->Status))
     {
-        return Request->Status;
+        return ApiMessage->Status;
     }
 
     Header = IntFindAliasHeader(Console->Aliases, lpExeName);
@@ -326,14 +326,14 @@ CSR_API(CsrAddConsoleAlias)
         if (Entry)
         {
             IntDeleteAliasEntry(Header, Entry);
-            Request->Status = STATUS_SUCCESS;
+            ApiMessage->Status = STATUS_SUCCESS;
         }
         else
         {
-            Request->Status = STATUS_INVALID_PARAMETER;
+            ApiMessage->Status = STATUS_INVALID_PARAMETER;
         }
         ConioUnlockConsole(Console);
-        return Request->Status;
+        return ApiMessage->Status;
     }
 
     Entry = IntCreateAliasEntry(lpSource, lpTarget);
@@ -359,24 +359,24 @@ CSR_API(CsrGetConsoleAlias)
     WCHAR * lpSource;
     WCHAR * lpTarget;
 
-    lpSource = (LPWSTR)((ULONG_PTR)Request + sizeof(CSR_API_MESSAGE));
-    lpExeName = lpSource + Request->Data.GetConsoleAlias.SourceLength;
-    lpTarget = Request->Data.GetConsoleAlias.TargetBuffer;
+    lpSource = (LPWSTR)((ULONG_PTR)ApiMessage + sizeof(CSR_API_MESSAGE));
+    lpExeName = lpSource + ApiMessage->Data.GetConsoleAlias.SourceLength;
+    lpTarget = ApiMessage->Data.GetConsoleAlias.TargetBuffer;
 
 
     DPRINT("CsrGetConsoleAlias entered lpExeName %p lpSource %p TargetBuffer %p TargetBufferLength %u\n",
-           lpExeName, lpSource, lpTarget, Request->Data.GetConsoleAlias.TargetBufferLength);
+           lpExeName, lpSource, lpTarget, ApiMessage->Data.GetConsoleAlias.TargetBufferLength);
 
-    if (Request->Data.GetConsoleAlias.ExeLength == 0 || lpTarget == NULL ||
-            Request->Data.GetConsoleAlias.TargetBufferLength == 0 || Request->Data.GetConsoleAlias.SourceLength == 0)
+    if (ApiMessage->Data.GetConsoleAlias.ExeLength == 0 || lpTarget == NULL ||
+            ApiMessage->Data.GetConsoleAlias.TargetBufferLength == 0 || ApiMessage->Data.GetConsoleAlias.SourceLength == 0)
     {
         return STATUS_INVALID_PARAMETER;
     }
 
-    Request->Status = ConioConsoleFromProcessData(ProcessData, &Console);
-    if (!NT_SUCCESS(Request->Status))
+    ApiMessage->Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
+    if (!NT_SUCCESS(ApiMessage->Status))
     {
-        return Request->Status;
+        return ApiMessage->Status;
     }
 
     Header = IntFindAliasHeader(Console->Aliases, lpExeName);
@@ -394,21 +394,21 @@ CSR_API(CsrGetConsoleAlias)
     }
 
     Length = (wcslen(Entry->lpTarget)+1) * sizeof(WCHAR);
-    if (Length > Request->Data.GetConsoleAlias.TargetBufferLength)
+    if (Length > ApiMessage->Data.GetConsoleAlias.TargetBufferLength)
     {
         ConioUnlockConsole(Console);
         return STATUS_BUFFER_TOO_SMALL;
     }
 
-    if (!Win32CsrValidateBuffer(ProcessData, lpTarget,
-                                Request->Data.GetConsoleAlias.TargetBufferLength, 1))
+    if (!Win32CsrValidateBuffer(CsrGetClientThread()->Process, lpTarget,
+                                ApiMessage->Data.GetConsoleAlias.TargetBufferLength, 1))
     {
         ConioUnlockConsole(Console);
         return STATUS_ACCESS_VIOLATION;
     }
 
     wcscpy(lpTarget, Entry->lpTarget);
-    Request->Data.GetConsoleAlias.BytesWritten = Length;
+    ApiMessage->Data.GetConsoleAlias.BytesWritten = Length;
     ConioUnlockConsole(Console);
     return STATUS_SUCCESS;
 }
@@ -419,33 +419,33 @@ CSR_API(CsrGetAllConsoleAliases)
     ULONG BytesWritten;
     PALIAS_HEADER Header;
 
-    if (Request->Data.GetAllConsoleAlias.lpExeName == NULL)
+    if (ApiMessage->Data.GetAllConsoleAlias.lpExeName == NULL)
     {
         return STATUS_INVALID_PARAMETER;
     }
 
-    Request->Status = ConioConsoleFromProcessData(ProcessData, &Console);
-    if (!NT_SUCCESS(Request->Status))
+    ApiMessage->Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
+    if (!NT_SUCCESS(ApiMessage->Status))
     {
-        return Request->Status;
+        return ApiMessage->Status;
     }
 
-    Header = IntFindAliasHeader(Console->Aliases, Request->Data.GetAllConsoleAlias.lpExeName);
+    Header = IntFindAliasHeader(Console->Aliases, ApiMessage->Data.GetAllConsoleAlias.lpExeName);
     if (!Header)
     {
         ConioUnlockConsole(Console);
         return STATUS_INVALID_PARAMETER;
     }
 
-    if (IntGetAllConsoleAliasesLength(Header) > Request->Data.GetAllConsoleAlias.AliasBufferLength)
+    if (IntGetAllConsoleAliasesLength(Header) > ApiMessage->Data.GetAllConsoleAlias.AliasBufferLength)
     {
         ConioUnlockConsole(Console);
         return STATUS_BUFFER_OVERFLOW;
     }
 
-    if (!Win32CsrValidateBuffer(ProcessData,
-                                Request->Data.GetAllConsoleAlias.AliasBuffer,
-                                Request->Data.GetAllConsoleAlias.AliasBufferLength,
+    if (!Win32CsrValidateBuffer(CsrGetClientThread()->Process,
+                                ApiMessage->Data.GetAllConsoleAlias.AliasBuffer,
+                                ApiMessage->Data.GetAllConsoleAlias.AliasBufferLength,
                                 1))
     {
         ConioUnlockConsole(Console);
@@ -453,10 +453,10 @@ CSR_API(CsrGetAllConsoleAliases)
     }
 
     BytesWritten = IntGetAllConsoleAliases(Header,
-                                           Request->Data.GetAllConsoleAlias.AliasBuffer,
-                                           Request->Data.GetAllConsoleAlias.AliasBufferLength);
+                                           ApiMessage->Data.GetAllConsoleAlias.AliasBuffer,
+                                           ApiMessage->Data.GetAllConsoleAlias.AliasBufferLength);
 
-    Request->Data.GetAllConsoleAlias.BytesWritten = BytesWritten;
+    ApiMessage->Data.GetAllConsoleAlias.BytesWritten = BytesWritten;
     ConioUnlockConsole(Console);
     return STATUS_SUCCESS;
 }
@@ -467,18 +467,18 @@ CSR_API(CsrGetAllConsoleAliasesLength)
     PALIAS_HEADER Header;
     UINT Length;
 
-    if (Request->Data.GetAllConsoleAliasesLength.lpExeName == NULL)
+    if (ApiMessage->Data.GetAllConsoleAliasesLength.lpExeName == NULL)
     {
         return STATUS_INVALID_PARAMETER;
     }
 
-    Request->Status = ConioConsoleFromProcessData(ProcessData, &Console);
-    if (!NT_SUCCESS(Request->Status))
+    ApiMessage->Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
+    if (!NT_SUCCESS(ApiMessage->Status))
     {
-        return Request->Status;
+        return ApiMessage->Status;
     }
 
-    Header = IntFindAliasHeader(Console->Aliases, Request->Data.GetAllConsoleAliasesLength.lpExeName);
+    Header = IntFindAliasHeader(Console->Aliases, ApiMessage->Data.GetAllConsoleAliasesLength.lpExeName);
     if (!Header)
     {
         ConioUnlockConsole(Console);
@@ -486,7 +486,7 @@ CSR_API(CsrGetAllConsoleAliasesLength)
     }
 
     Length = IntGetAllConsoleAliasesLength(Header);
-    Request->Data.GetAllConsoleAliasesLength.Length = Length;
+    ApiMessage->Data.GetAllConsoleAliasesLength.Length = Length;
     ConioUnlockConsole(Console);
     return STATUS_SUCCESS;
 }
@@ -499,29 +499,29 @@ CSR_API(CsrGetConsoleAliasesExes)
 
     DPRINT("CsrGetConsoleAliasesExes entered\n");
 
-    Request->Status = ConioConsoleFromProcessData(ProcessData, &Console);
-    if (!NT_SUCCESS(Request->Status))
+    ApiMessage->Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
+    if (!NT_SUCCESS(ApiMessage->Status))
     {
-        return Request->Status;
+        return ApiMessage->Status;
     }
 
     ExesLength = IntGetConsoleAliasesExesLength(Console->Aliases);
 
-    if (ExesLength > Request->Data.GetConsoleAliasesExes.Length)
+    if (ExesLength > ApiMessage->Data.GetConsoleAliasesExes.Length)
     {
         ConioUnlockConsole(Console);
         return STATUS_BUFFER_OVERFLOW;
     }
 
-    if (Request->Data.GetConsoleAliasesExes.ExeNames == NULL)
+    if (ApiMessage->Data.GetConsoleAliasesExes.ExeNames == NULL)
     {
         ConioUnlockConsole(Console);
         return STATUS_INVALID_PARAMETER;
     }
 
-    if (!Win32CsrValidateBuffer(ProcessData,
-                                Request->Data.GetConsoleAliasesExes.ExeNames,
-                                Request->Data.GetConsoleAliasesExes.Length,
+    if (!Win32CsrValidateBuffer(CsrGetClientThread()->Process,
+                                ApiMessage->Data.GetConsoleAliasesExes.ExeNames,
+                                ApiMessage->Data.GetConsoleAliasesExes.Length,
                                 1))
     {
         ConioUnlockConsole(Console);
@@ -529,10 +529,10 @@ CSR_API(CsrGetConsoleAliasesExes)
     }
 
     BytesWritten = IntGetConsoleAliasesExes(Console->Aliases,
-                                            Request->Data.GetConsoleAliasesExes.ExeNames,
-                                            Request->Data.GetConsoleAliasesExes.Length);
+                                            ApiMessage->Data.GetConsoleAliasesExes.ExeNames,
+                                            ApiMessage->Data.GetConsoleAliasesExes.Length);
 
-    Request->Data.GetConsoleAliasesExes.BytesWritten = BytesWritten;
+    ApiMessage->Data.GetConsoleAliasesExes.BytesWritten = BytesWritten;
     ConioUnlockConsole(Console);
     return STATUS_SUCCESS;
 }
@@ -542,11 +542,11 @@ CSR_API(CsrGetConsoleAliasesExesLength)
     PCSRSS_CONSOLE Console;
     DPRINT("CsrGetConsoleAliasesExesLength entered\n");
 
-    Request->Status = ConioConsoleFromProcessData(ProcessData, &Console);
-    if (NT_SUCCESS(Request->Status))
+    ApiMessage->Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
+    if (NT_SUCCESS(ApiMessage->Status))
     {
-        Request->Data.GetConsoleAliasesExesLength.Length = IntGetConsoleAliasesExesLength(Console->Aliases);
+        ApiMessage->Data.GetConsoleAliasesExesLength.Length = IntGetConsoleAliasesExesLength(Console->Aliases);
         ConioUnlockConsole(Console);
     }
-    return Request->Status;
+    return ApiMessage->Status;
 }
index 93a3f65..a93b8a9 100644 (file)
@@ -30,30 +30,31 @@ CSR_API(CsrReadConsole)
     PWCHAR UnicodeBuffer;
     ULONG i = 0;
     ULONG nNumberOfCharsToRead, CharSize;
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCSRSS_CONSOLE Console;
     NTSTATUS Status;
 
     DPRINT("CsrReadConsole\n");
 
-    CharSize = (Request->Data.ReadConsoleRequest.Unicode ? sizeof(WCHAR) : sizeof(CHAR));
+    CharSize = (ApiMessage->Data.ReadConsoleRequest.Unicode ? sizeof(WCHAR) : sizeof(CHAR));
 
-    nNumberOfCharsToRead = Request->Data.ReadConsoleRequest.NrCharactersToRead;
+    nNumberOfCharsToRead = ApiMessage->Data.ReadConsoleRequest.NrCharactersToRead;
 
-    Buffer = (PCHAR)Request->Data.ReadConsoleRequest.Buffer;
+    Buffer = (PCHAR)ApiMessage->Data.ReadConsoleRequest.Buffer;
     UnicodeBuffer = (PWCHAR)Buffer;
     if (!Win32CsrValidateBuffer(ProcessData, Buffer, nNumberOfCharsToRead, CharSize))
         return STATUS_ACCESS_VIOLATION;
 
-    if (Request->Data.ReadConsoleRequest.NrCharactersRead * sizeof(WCHAR) > nNumberOfCharsToRead * CharSize)
+    if (ApiMessage->Data.ReadConsoleRequest.NrCharactersRead * sizeof(WCHAR) > nNumberOfCharsToRead * CharSize)
         return STATUS_INVALID_PARAMETER;
 
-    Status = ConioLockConsole(ProcessData, Request->Data.ReadConsoleRequest.ConsoleHandle,
+    Status = ConioLockConsole(ProcessData, ApiMessage->Data.ReadConsoleRequest.ConsoleHandle,
                               &Console, GENERIC_READ);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
-    Request->Data.ReadConsoleRequest.EventHandle = ProcessData->ConsoleEvent;
+    ApiMessage->Data.ReadConsoleRequest.EventHandle = ProcessData->ConsoleEvent;
 
     Status = STATUS_PENDING; /* we haven't read anything (yet) */
     if (Console->Mode & ENABLE_LINE_INPUT)
@@ -71,8 +72,8 @@ CSR_API(CsrReadConsole)
             Console->LineComplete = FALSE;
             Console->LineUpPressed = FALSE;
             Console->LineInsertToggle = 0;
-            Console->LineWakeupMask = Request->Data.ReadConsoleRequest.CtrlWakeupMask;
-            Console->LineSize = Request->Data.ReadConsoleRequest.NrCharactersRead;
+            Console->LineWakeupMask = ApiMessage->Data.ReadConsoleRequest.CtrlWakeupMask;
+            Console->LineSize = ApiMessage->Data.ReadConsoleRequest.NrCharactersRead;
             Console->LinePos = Console->LineSize;
             /* pre-filling the buffer is only allowed in the Unicode API,
              * so we don't need to worry about conversion */
@@ -100,7 +101,7 @@ CSR_API(CsrReadConsole)
                     && Input->InputEvent.Event.KeyEvent.bKeyDown)
             {
                 LineInputKeyDown(Console, &Input->InputEvent.Event.KeyEvent);
-                Request->Data.ReadConsoleRequest.ControlKeyState = Input->InputEvent.Event.KeyEvent.dwControlKeyState;
+                ApiMessage->Data.ReadConsoleRequest.ControlKeyState = Input->InputEvent.Event.KeyEvent.dwControlKeyState;
             }
             HeapFree(Win32CsrApiHeap, 0, Input);
         }
@@ -111,7 +112,7 @@ CSR_API(CsrReadConsole)
             while (i < nNumberOfCharsToRead && Console->LinePos != Console->LineSize)
             {
                 WCHAR Char = Console->LineBuffer[Console->LinePos++];
-                if (Request->Data.ReadConsoleRequest.Unicode)
+                if (ApiMessage->Data.ReadConsoleRequest.Unicode)
                     UnicodeBuffer[i++] = Char;
                 else
                     ConsoleInputUnicodeCharToAnsiChar(Console, &Buffer[i++], &Char);
@@ -144,7 +145,7 @@ CSR_API(CsrReadConsole)
                     && Input->InputEvent.Event.KeyEvent.uChar.UnicodeChar != L'\0')
             {
                 WCHAR Char = Input->InputEvent.Event.KeyEvent.uChar.UnicodeChar;
-                if (Request->Data.ReadConsoleRequest.Unicode)
+                if (ApiMessage->Data.ReadConsoleRequest.Unicode)
                     UnicodeBuffer[i++] = Char;
                 else
                     ConsoleInputUnicodeCharToAnsiChar(Console, &Buffer[i++], &Char);
@@ -154,7 +155,7 @@ CSR_API(CsrReadConsole)
         }
     }
 done:
-    Request->Data.ReadConsoleRequest.NrCharactersRead = i;
+    ApiMessage->Data.ReadConsoleRequest.NrCharactersRead = i;
     ConioUnlockConsole(Console);
 
     return Status;
@@ -423,6 +424,7 @@ ConioProcessKey(MSG *msg, PCSRSS_CONSOLE Console, BOOL TextMode)
 CSR_API(CsrReadInputEvent)
 {
     PLIST_ENTRY CurrentEntry;
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCSRSS_CONSOLE Console;
     NTSTATUS Status;
     BOOLEAN Done = FALSE;
@@ -430,9 +432,9 @@ CSR_API(CsrReadInputEvent)
 
     DPRINT("CsrReadInputEvent\n");
 
-    Request->Data.ReadInputRequest.Event = ProcessData->ConsoleEvent;
+    ApiMessage->Data.ReadInputRequest.Event = ProcessData->ConsoleEvent;
 
-    Status = ConioLockConsole(ProcessData, Request->Data.ReadInputRequest.ConsoleHandle, &Console, GENERIC_READ);
+    Status = ConioLockConsole(ProcessData, ApiMessage->Data.ReadInputRequest.ConsoleHandle, &Console, GENERIC_READ);
     if (! NT_SUCCESS(Status))
     {
         return Status;
@@ -447,7 +449,7 @@ CSR_API(CsrReadInputEvent)
 
         if (Done)
         {
-            Request->Data.ReadInputRequest.MoreEvents = TRUE;
+            ApiMessage->Data.ReadInputRequest.MoreEvents = TRUE;
             break;
         }
 
@@ -455,10 +457,10 @@ CSR_API(CsrReadInputEvent)
 
         if (!Done)
         {
-            Request->Data.ReadInputRequest.Input = Input->InputEvent;
-            if (Request->Data.ReadInputRequest.Unicode == FALSE)
+            ApiMessage->Data.ReadInputRequest.Input = Input->InputEvent;
+            if (ApiMessage->Data.ReadInputRequest.Unicode == FALSE)
             {
-                ConioInputEventToAnsi(Console, &Request->Data.ReadInputRequest.Input);
+                ConioInputEventToAnsi(Console, &ApiMessage->Data.ReadInputRequest.Input);
             }
             Done = TRUE;
         }
@@ -490,8 +492,8 @@ CSR_API(CsrFlushInputBuffer)
 
     DPRINT("CsrFlushInputBuffer\n");
 
-    Status = ConioLockConsole(ProcessData,
-                              Request->Data.FlushInputBufferRequest.ConsoleInput,
+    Status = ConioLockConsole(CsrGetClientThread()->Process,
+                              ApiMessage->Data.FlushInputBufferRequest.ConsoleInput,
                               &Console,
                               GENERIC_WRITE);
     if(! NT_SUCCESS(Status))
@@ -523,7 +525,7 @@ CSR_API(CsrGetNumberOfConsoleInputEvents)
 
     DPRINT("CsrGetNumberOfConsoleInputEvents\n");
 
-    Status = ConioLockConsole(ProcessData, Request->Data.GetNumInputEventsRequest.ConsoleHandle, &Console, GENERIC_READ);
+    Status = ConioLockConsole(CsrGetClientThread()->Process, ApiMessage->Data.GetNumInputEventsRequest.ConsoleHandle, &Console, GENERIC_READ);
     if (! NT_SUCCESS(Status))
     {
         return Status;
@@ -541,7 +543,7 @@ CSR_API(CsrGetNumberOfConsoleInputEvents)
 
     ConioUnlockConsole(Console);
 
-    Request->Data.GetNumInputEventsRequest.NumInputEvents = NumEvents;
+    ApiMessage->Data.GetNumInputEventsRequest.NumInputEvents = NumEvents;
 
     return STATUS_SUCCESS;
 }
@@ -549,6 +551,7 @@ CSR_API(CsrGetNumberOfConsoleInputEvents)
 CSR_API(CsrPeekConsoleInput)
 {
     NTSTATUS Status;
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCSRSS_CONSOLE Console;
     DWORD Length;
     PLIST_ENTRY CurrentItem;
@@ -558,14 +561,14 @@ CSR_API(CsrPeekConsoleInput)
 
     DPRINT("CsrPeekConsoleInput\n");
 
-    Status = ConioLockConsole(ProcessData, Request->Data.GetNumInputEventsRequest.ConsoleHandle, &Console, GENERIC_READ);
+    Status = ConioLockConsole(ProcessData, ApiMessage->Data.GetNumInputEventsRequest.ConsoleHandle, &Console, GENERIC_READ);
     if(! NT_SUCCESS(Status))
     {
         return Status;
     }
 
-    InputRecord = Request->Data.PeekConsoleInputRequest.InputRecord;
-    Length = Request->Data.PeekConsoleInputRequest.Length;
+    InputRecord = ApiMessage->Data.PeekConsoleInputRequest.InputRecord;
+    Length = ApiMessage->Data.PeekConsoleInputRequest.Length;
 
     if (!Win32CsrValidateBuffer(ProcessData, InputRecord, Length, sizeof(INPUT_RECORD)))
     {
@@ -586,7 +589,7 @@ CSR_API(CsrPeekConsoleInput)
             ++NumItems;
             *InputRecord = Item->InputEvent;
 
-            if (Request->Data.PeekConsoleInputRequest.Unicode == FALSE)
+            if (ApiMessage->Data.PeekConsoleInputRequest.Unicode == FALSE)
             {
                 ConioInputEventToAnsi(Console, InputRecord);
             }
@@ -598,7 +601,7 @@ CSR_API(CsrPeekConsoleInput)
 
     ConioUnlockConsole(Console);
 
-    Request->Data.PeekConsoleInputRequest.Length = NumItems;
+    ApiMessage->Data.PeekConsoleInputRequest.Length = NumItems;
 
     return STATUS_SUCCESS;
 }
@@ -606,6 +609,7 @@ CSR_API(CsrPeekConsoleInput)
 CSR_API(CsrWriteConsoleInput)
 {
     PINPUT_RECORD InputRecord;
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCSRSS_CONSOLE Console;
     NTSTATUS Status;
     DWORD Length;
@@ -613,14 +617,14 @@ CSR_API(CsrWriteConsoleInput)
 
     DPRINT("CsrWriteConsoleInput\n");
 
-    Status = ConioLockConsole(ProcessData, Request->Data.WriteConsoleInputRequest.ConsoleHandle, &Console, GENERIC_WRITE);
+    Status = ConioLockConsole(ProcessData, ApiMessage->Data.WriteConsoleInputRequest.ConsoleHandle, &Console, GENERIC_WRITE);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
 
-    InputRecord = Request->Data.WriteConsoleInputRequest.InputRecord;
-    Length = Request->Data.WriteConsoleInputRequest.Length;
+    InputRecord = ApiMessage->Data.WriteConsoleInputRequest.InputRecord;
+    Length = ApiMessage->Data.WriteConsoleInputRequest.Length;
 
     if (!Win32CsrValidateBuffer(ProcessData, InputRecord, Length, sizeof(INPUT_RECORD)))
     {
@@ -630,7 +634,7 @@ CSR_API(CsrWriteConsoleInput)
 
     for (i = 0; i < Length && NT_SUCCESS(Status); i++)
     {
-        if (!Request->Data.WriteConsoleInputRequest.Unicode &&
+        if (!ApiMessage->Data.WriteConsoleInputRequest.Unicode &&
             InputRecord->EventType == KEY_EVENT)
         {
             CHAR AsciiChar = InputRecord->Event.KeyEvent.uChar.AsciiChar;
@@ -643,7 +647,7 @@ CSR_API(CsrWriteConsoleInput)
 
     ConioUnlockConsole(Console);
 
-    Request->Data.WriteConsoleInputRequest.Length = i;
+    ApiMessage->Data.WriteConsoleInputRequest.Length = i;
 
     return Status;
 }
index 5415a60..5dff1bb 100644 (file)
@@ -359,22 +359,23 @@ CSR_API(CsrWriteConsole)
     NTSTATUS Status;
     PCHAR Buffer;
     PCSRSS_SCREEN_BUFFER Buff;
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCSRSS_CONSOLE Console;
     DWORD Written = 0;
     ULONG Length;
-    ULONG CharSize = (Request->Data.WriteConsoleRequest.Unicode ? sizeof(WCHAR) : sizeof(CHAR));
+    ULONG CharSize = (ApiMessage->Data.WriteConsoleRequest.Unicode ? sizeof(WCHAR) : sizeof(CHAR));
 
     DPRINT("CsrWriteConsole\n");
 
-    if (Request->Header.u1.s1.TotalLength
+    if (ApiMessage->Header.u1.s1.TotalLength
             < CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE)
-            + (Request->Data.WriteConsoleRequest.NrCharactersToWrite * CharSize))
+            + (ApiMessage->Data.WriteConsoleRequest.NrCharactersToWrite * CharSize))
     {
-        DPRINT1("Invalid request size\n");
+        DPRINT1("Invalid ApiMessage size\n");
         return STATUS_INVALID_PARAMETER;
     }
 
-    Status = ConioLockScreenBuffer(ProcessData, Request->Data.WriteConsoleRequest.ConsoleHandle, &Buff, GENERIC_WRITE);
+    Status = ConioLockScreenBuffer(ProcessData, ApiMessage->Data.WriteConsoleRequest.ConsoleHandle, &Buff, GENERIC_WRITE);
     if (! NT_SUCCESS(Status))
     {
         return Status;
@@ -384,24 +385,24 @@ CSR_API(CsrWriteConsole)
     if (Console->UnpauseEvent)
     {
         Status = NtDuplicateObject(GetCurrentProcess(), Console->UnpauseEvent,
-                                   ProcessData->ProcessHandle, &Request->Data.WriteConsoleRequest.UnpauseEvent,
+                                   ProcessData->ProcessHandle, &ApiMessage->Data.WriteConsoleRequest.UnpauseEvent,
                                    SYNCHRONIZE, 0, 0);
         ConioUnlockScreenBuffer(Buff);
         return NT_SUCCESS(Status) ? STATUS_PENDING : Status;
     }
 
-    if(Request->Data.WriteConsoleRequest.Unicode)
+    if(ApiMessage->Data.WriteConsoleRequest.Unicode)
     {
         Length = WideCharToMultiByte(Console->OutputCodePage, 0,
-                                     (PWCHAR)Request->Data.WriteConsoleRequest.Buffer,
-                                     Request->Data.WriteConsoleRequest.NrCharactersToWrite,
+                                     (PWCHAR)ApiMessage->Data.WriteConsoleRequest.Buffer,
+                                     ApiMessage->Data.WriteConsoleRequest.NrCharactersToWrite,
                                      NULL, 0, NULL, NULL);
         Buffer = RtlAllocateHeap(GetProcessHeap(), 0, Length);
         if (Buffer)
         {
             WideCharToMultiByte(Console->OutputCodePage, 0,
-                                (PWCHAR)Request->Data.WriteConsoleRequest.Buffer,
-                                Request->Data.WriteConsoleRequest.NrCharactersToWrite,
+                                (PWCHAR)ApiMessage->Data.WriteConsoleRequest.Buffer,
+                                ApiMessage->Data.WriteConsoleRequest.NrCharactersToWrite,
                                 Buffer, Length, NULL, NULL);
         }
         else
@@ -411,7 +412,7 @@ CSR_API(CsrWriteConsole)
     }
     else
     {
-        Buffer = (PCHAR)Request->Data.WriteConsoleRequest.Buffer;
+        Buffer = (PCHAR)ApiMessage->Data.WriteConsoleRequest.Buffer;
     }
 
     if (Buffer)
@@ -419,20 +420,20 @@ CSR_API(CsrWriteConsole)
         if (NT_SUCCESS(Status))
         {
             Status = ConioWriteConsole(Console, Buff, Buffer,
-                                       Request->Data.WriteConsoleRequest.NrCharactersToWrite, TRUE);
+                                       ApiMessage->Data.WriteConsoleRequest.NrCharactersToWrite, TRUE);
             if (NT_SUCCESS(Status))
             {
-                Written = Request->Data.WriteConsoleRequest.NrCharactersToWrite;
+                Written = ApiMessage->Data.WriteConsoleRequest.NrCharactersToWrite;
             }
         }
-        if (Request->Data.WriteConsoleRequest.Unicode)
+        if (ApiMessage->Data.WriteConsoleRequest.Unicode)
         {
             RtlFreeHeap(GetProcessHeap(), 0, Buffer);
         }
     }
     ConioUnlockScreenBuffer(Buff);
 
-    Request->Data.WriteConsoleRequest.NrCharactersWritten = Written;
+    ApiMessage->Data.WriteConsoleRequest.NrCharactersWritten = Written;
 
     return Status;
 }
@@ -477,13 +478,13 @@ CSR_API(CsrGetScreenBufferInfo)
 
     DPRINT("CsrGetScreenBufferInfo\n");
 
-    Status = ConioLockScreenBuffer(ProcessData, Request->Data.ScreenBufferInfoRequest.ConsoleHandle, &Buff, GENERIC_READ);
+    Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ApiMessage->Data.ScreenBufferInfoRequest.ConsoleHandle, &Buff, GENERIC_READ);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
     Console = Buff->Header.Console;
-    pInfo = &Request->Data.ScreenBufferInfoRequest.Info;
+    pInfo = &ApiMessage->Data.ScreenBufferInfoRequest.Info;
     pInfo->dwSize.X = Buff->MaxX;
     pInfo->dwSize.Y = Buff->MaxY;
     pInfo->dwCursorPosition.X = Buff->CurrentX;
@@ -510,15 +511,15 @@ CSR_API(CsrSetCursor)
 
     DPRINT("CsrSetCursor\n");
 
-    Status = ConioLockScreenBuffer(ProcessData, Request->Data.SetCursorRequest.ConsoleHandle, &Buff, GENERIC_WRITE);
+    Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ApiMessage->Data.SetCursorRequest.ConsoleHandle, &Buff, GENERIC_WRITE);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
     Console = Buff->Header.Console;
 
-    NewCursorX = Request->Data.SetCursorRequest.Position.X;
-    NewCursorY = Request->Data.SetCursorRequest.Position.Y;
+    NewCursorX = ApiMessage->Data.SetCursorRequest.Position.X;
+    NewCursorY = ApiMessage->Data.SetCursorRequest.Position.Y;
     if (NewCursorX < 0 || NewCursorX >= Buff->MaxX ||
             NewCursorY < 0 || NewCursorY >= Buff->MaxY)
     {
@@ -582,35 +583,35 @@ CSR_API(CsrWriteConsoleOutputChar)
 
     DPRINT("CsrWriteConsoleOutputChar\n");
 
-    CharSize = (Request->Data.WriteConsoleOutputCharRequest.Unicode ? sizeof(WCHAR) : sizeof(CHAR));
+    CharSize = (ApiMessage->Data.WriteConsoleOutputCharRequest.Unicode ? sizeof(WCHAR) : sizeof(CHAR));
 
-    if (Request->Header.u1.s1.TotalLength
+    if (ApiMessage->Header.u1.s1.TotalLength
             < CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_CHAR)
-            + (Request->Data.WriteConsoleOutputCharRequest.Length * CharSize))
+            + (ApiMessage->Data.WriteConsoleOutputCharRequest.Length * CharSize))
     {
-        DPRINT1("Invalid request size\n");
+        DPRINT1("Invalid ApiMessage size\n");
         return STATUS_INVALID_PARAMETER;
     }
 
-    Status = ConioLockScreenBuffer(ProcessData,
-                                    Request->Data.WriteConsoleOutputCharRequest.ConsoleHandle,
+    Status = ConioLockScreenBuffer(CsrGetClientThread()->Process,
+                                    ApiMessage->Data.WriteConsoleOutputCharRequest.ConsoleHandle,
                                     &Buff,
                                     GENERIC_WRITE);
     if (NT_SUCCESS(Status))
     {
         Console = Buff->Header.Console;
-        if(Request->Data.WriteConsoleOutputCharRequest.Unicode)
+        if(ApiMessage->Data.WriteConsoleOutputCharRequest.Unicode)
         {
             Length = WideCharToMultiByte(Console->OutputCodePage, 0,
-                                         (PWCHAR)Request->Data.WriteConsoleOutputCharRequest.String,
-                                         Request->Data.WriteConsoleOutputCharRequest.Length,
+                                         (PWCHAR)ApiMessage->Data.WriteConsoleOutputCharRequest.String,
+                                         ApiMessage->Data.WriteConsoleOutputCharRequest.Length,
                                          NULL, 0, NULL, NULL);
             tmpString = String = RtlAllocateHeap(GetProcessHeap(), 0, Length);
             if (String)
             {
                 WideCharToMultiByte(Console->OutputCodePage, 0,
-                                    (PWCHAR)Request->Data.WriteConsoleOutputCharRequest.String,
-                                    Request->Data.WriteConsoleOutputCharRequest.Length,
+                                    (PWCHAR)ApiMessage->Data.WriteConsoleOutputCharRequest.String,
+                                    ApiMessage->Data.WriteConsoleOutputCharRequest.Length,
                                     String, Length, NULL, NULL);
             }
             else
@@ -620,16 +621,16 @@ CSR_API(CsrWriteConsoleOutputChar)
         }
         else
         {
-            String = (PCHAR)Request->Data.WriteConsoleOutputCharRequest.String;
+            String = (PCHAR)ApiMessage->Data.WriteConsoleOutputCharRequest.String;
         }
 
         if (String)
         {
             if (NT_SUCCESS(Status))
             {
-                X = Request->Data.WriteConsoleOutputCharRequest.Coord.X;
-                Y = (Request->Data.WriteConsoleOutputCharRequest.Coord.Y + Buff->VirtualY) % Buff->MaxY;
-                Length = Request->Data.WriteConsoleOutputCharRequest.Length;
+                X = ApiMessage->Data.WriteConsoleOutputCharRequest.Coord.X;
+                Y = (ApiMessage->Data.WriteConsoleOutputCharRequest.Coord.Y + Buff->VirtualY) % Buff->MaxY;
+                Length = ApiMessage->Data.WriteConsoleOutputCharRequest.Length;
                 Buffer = &Buff->Buffer[2 * (Y * Buff->MaxX + X)];
                 while (Length--)
                 {
@@ -648,23 +649,23 @@ CSR_API(CsrWriteConsoleOutputChar)
                 }
                 if (Buff == Console->ActiveBuffer)
                 {
-                    ConioComputeUpdateRect(Buff, &UpdateRect, &Request->Data.WriteConsoleOutputCharRequest.Coord,
-                                           Request->Data.WriteConsoleOutputCharRequest.Length);
+                    ConioComputeUpdateRect(Buff, &UpdateRect, &ApiMessage->Data.WriteConsoleOutputCharRequest.Coord,
+                                           ApiMessage->Data.WriteConsoleOutputCharRequest.Length);
                     ConioDrawRegion(Console, &UpdateRect);
                 }
 
-                Request->Data.WriteConsoleOutputCharRequest.EndCoord.X = X;
-                Request->Data.WriteConsoleOutputCharRequest.EndCoord.Y = (Y + Buff->MaxY - Buff->VirtualY) % Buff->MaxY;
+                ApiMessage->Data.WriteConsoleOutputCharRequest.EndCoord.X = X;
+                ApiMessage->Data.WriteConsoleOutputCharRequest.EndCoord.Y = (Y + Buff->MaxY - Buff->VirtualY) % Buff->MaxY;
 
             }
-            if (Request->Data.WriteConsoleRequest.Unicode)
+            if (ApiMessage->Data.WriteConsoleRequest.Unicode)
             {
                 RtlFreeHeap(GetProcessHeap(), 0, tmpString);
             }
         }
         ConioUnlockScreenBuffer(Buff);
     }
-    Request->Data.WriteConsoleOutputCharRequest.NrCharactersWritten = Written;
+    ApiMessage->Data.WriteConsoleOutputCharRequest.NrCharactersWritten = Written;
     return Status;
 }
 
@@ -680,21 +681,21 @@ CSR_API(CsrFillOutputChar)
 
     DPRINT("CsrFillOutputChar\n");
 
-    Status = ConioLockScreenBuffer(ProcessData, Request->Data.FillOutputRequest.ConsoleHandle, &Buff, GENERIC_WRITE);
+    Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ApiMessage->Data.FillOutputRequest.ConsoleHandle, &Buff, GENERIC_WRITE);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
     Console = Buff->Header.Console;
 
-    X = Request->Data.FillOutputRequest.Position.X;
-    Y = (Request->Data.FillOutputRequest.Position.Y + Buff->VirtualY) % Buff->MaxY;
+    X = ApiMessage->Data.FillOutputRequest.Position.X;
+    Y = (ApiMessage->Data.FillOutputRequest.Position.Y + Buff->VirtualY) % Buff->MaxY;
     Buffer = &Buff->Buffer[2 * (Y * Buff->MaxX + X)];
-    if(Request->Data.FillOutputRequest.Unicode)
-        ConsoleUnicodeCharToAnsiChar(Console, &Char, &Request->Data.FillOutputRequest.Char.UnicodeChar);
+    if(ApiMessage->Data.FillOutputRequest.Unicode)
+        ConsoleUnicodeCharToAnsiChar(Console, &Char, &ApiMessage->Data.FillOutputRequest.Char.UnicodeChar);
     else
-        Char = Request->Data.FillOutputRequest.Char.AsciiChar;
-    Length = Request->Data.FillOutputRequest.Length;
+        Char = ApiMessage->Data.FillOutputRequest.Char.AsciiChar;
+    Length = ApiMessage->Data.FillOutputRequest.Length;
     while (Length--)
     {
         *Buffer = Char;
@@ -713,14 +714,14 @@ CSR_API(CsrFillOutputChar)
 
     if (Buff == Console->ActiveBuffer)
     {
-        ConioComputeUpdateRect(Buff, &UpdateRect, &Request->Data.FillOutputRequest.Position,
-                               Request->Data.FillOutputRequest.Length);
+        ConioComputeUpdateRect(Buff, &UpdateRect, &ApiMessage->Data.FillOutputRequest.Position,
+                               ApiMessage->Data.FillOutputRequest.Length);
         ConioDrawRegion(Console, &UpdateRect);
     }
 
     ConioUnlockScreenBuffer(Buff);
-    Length = Request->Data.FillOutputRequest.Length;
-    Request->Data.FillOutputRequest.NrCharactersWritten = Length;
+    Length = ApiMessage->Data.FillOutputRequest.Length;
+    ApiMessage->Data.FillOutputRequest.NrCharactersWritten = Length;
     return STATUS_SUCCESS;
 }
 
@@ -736,16 +737,16 @@ CSR_API(CsrWriteConsoleOutputAttrib)
 
     DPRINT("CsrWriteConsoleOutputAttrib\n");
 
-    if (Request->Header.u1.s1.TotalLength
+    if (ApiMessage->Header.u1.s1.TotalLength
             < CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB)
-            + Request->Data.WriteConsoleOutputAttribRequest.Length * sizeof(WORD))
+            + ApiMessage->Data.WriteConsoleOutputAttribRequest.Length * sizeof(WORD))
     {
-        DPRINT1("Invalid request size\n");
+        DPRINT1("Invalid ApiMessage size\n");
         return STATUS_INVALID_PARAMETER;
     }
 
-    Status = ConioLockScreenBuffer(ProcessData,
-                                   Request->Data.WriteConsoleOutputAttribRequest.ConsoleHandle,
+    Status = ConioLockScreenBuffer(CsrGetClientThread()->Process,
+                                   ApiMessage->Data.WriteConsoleOutputAttribRequest.ConsoleHandle,
                                    &Buff,
                                    GENERIC_WRITE);
     if (! NT_SUCCESS(Status))
@@ -754,11 +755,11 @@ CSR_API(CsrWriteConsoleOutputAttrib)
     }
     Console = Buff->Header.Console;
 
-    X = Request->Data.WriteConsoleOutputAttribRequest.Coord.X;
-    Y = (Request->Data.WriteConsoleOutputAttribRequest.Coord.Y + Buff->VirtualY) % Buff->MaxY;
-    Length = Request->Data.WriteConsoleOutputAttribRequest.Length;
+    X = ApiMessage->Data.WriteConsoleOutputAttribRequest.Coord.X;
+    Y = (ApiMessage->Data.WriteConsoleOutputAttribRequest.Coord.Y + Buff->VirtualY) % Buff->MaxY;
+    Length = ApiMessage->Data.WriteConsoleOutputAttribRequest.Length;
     Buffer = &Buff->Buffer[2 * (Y * Buff->MaxX + X) + 1];
-    Attribute = Request->Data.WriteConsoleOutputAttribRequest.Attribute;
+    Attribute = ApiMessage->Data.WriteConsoleOutputAttribRequest.Attribute;
     while (Length--)
     {
         *Buffer = (UCHAR)(*Attribute++);
@@ -776,13 +777,13 @@ CSR_API(CsrWriteConsoleOutputAttrib)
 
     if (Buff == Console->ActiveBuffer)
     {
-        ConioComputeUpdateRect(Buff, &UpdateRect, &Request->Data.WriteConsoleOutputAttribRequest.Coord,
-                               Request->Data.WriteConsoleOutputAttribRequest.Length);
+        ConioComputeUpdateRect(Buff, &UpdateRect, &ApiMessage->Data.WriteConsoleOutputAttribRequest.Coord,
+                               ApiMessage->Data.WriteConsoleOutputAttribRequest.Length);
         ConioDrawRegion(Console, &UpdateRect);
     }
 
-    Request->Data.WriteConsoleOutputAttribRequest.EndCoord.X = X;
-    Request->Data.WriteConsoleOutputAttribRequest.EndCoord.Y = (Y + Buff->MaxY - Buff->VirtualY) % Buff->MaxY;
+    ApiMessage->Data.WriteConsoleOutputAttribRequest.EndCoord.X = X;
+    ApiMessage->Data.WriteConsoleOutputAttribRequest.EndCoord.Y = (Y + Buff->MaxY - Buff->VirtualY) % Buff->MaxY;
 
     ConioUnlockScreenBuffer(Buff);
 
@@ -801,17 +802,17 @@ CSR_API(CsrFillOutputAttrib)
 
     DPRINT("CsrFillOutputAttrib\n");
 
-    Status = ConioLockScreenBuffer(ProcessData, Request->Data.FillOutputAttribRequest.ConsoleHandle, &Buff, GENERIC_WRITE);
+    Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ApiMessage->Data.FillOutputAttribRequest.ConsoleHandle, &Buff, GENERIC_WRITE);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
     Console = Buff->Header.Console;
 
-    X = Request->Data.FillOutputAttribRequest.Coord.X;
-    Y = (Request->Data.FillOutputAttribRequest.Coord.Y + Buff->VirtualY) % Buff->MaxY;
-    Length = Request->Data.FillOutputAttribRequest.Length;
-    Attr = Request->Data.FillOutputAttribRequest.Attribute;
+    X = ApiMessage->Data.FillOutputAttribRequest.Coord.X;
+    Y = (ApiMessage->Data.FillOutputAttribRequest.Coord.Y + Buff->VirtualY) % Buff->MaxY;
+    Length = ApiMessage->Data.FillOutputAttribRequest.Length;
+    Attr = ApiMessage->Data.FillOutputAttribRequest.Attribute;
     Buffer = &Buff->Buffer[(Y * Buff->MaxX * 2) + (X * 2) + 1];
     while (Length--)
     {
@@ -830,8 +831,8 @@ CSR_API(CsrFillOutputAttrib)
 
     if (Buff == Console->ActiveBuffer)
     {
-        ConioComputeUpdateRect(Buff, &UpdateRect, &Request->Data.FillOutputAttribRequest.Coord,
-                               Request->Data.FillOutputAttribRequest.Length);
+        ConioComputeUpdateRect(Buff, &UpdateRect, &ApiMessage->Data.FillOutputAttribRequest.Coord,
+                               ApiMessage->Data.FillOutputAttribRequest.Length);
         ConioDrawRegion(Console, &UpdateRect);
     }
 
@@ -857,13 +858,13 @@ CSR_API(CsrGetCursorInfo)
 
     DPRINT("CsrGetCursorInfo\n");
 
-    Status = ConioLockScreenBuffer(ProcessData, Request->Data.GetCursorInfoRequest.ConsoleHandle, &Buff, GENERIC_READ);
+    Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ApiMessage->Data.GetCursorInfoRequest.ConsoleHandle, &Buff, GENERIC_READ);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
-    Request->Data.GetCursorInfoRequest.Info.bVisible = Buff->CursorInfo.bVisible;
-    Request->Data.GetCursorInfoRequest.Info.dwSize = Buff->CursorInfo.dwSize;
+    ApiMessage->Data.GetCursorInfoRequest.Info.bVisible = Buff->CursorInfo.bVisible;
+    ApiMessage->Data.GetCursorInfoRequest.Info.dwSize = Buff->CursorInfo.dwSize;
     ConioUnlockScreenBuffer(Buff);
 
     return STATUS_SUCCESS;
@@ -879,15 +880,15 @@ CSR_API(CsrSetCursorInfo)
 
     DPRINT("CsrSetCursorInfo\n");
 
-    Status = ConioLockScreenBuffer(ProcessData, Request->Data.SetCursorInfoRequest.ConsoleHandle, &Buff, GENERIC_WRITE);
+    Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ApiMessage->Data.SetCursorInfoRequest.ConsoleHandle, &Buff, GENERIC_WRITE);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
     Console = Buff->Header.Console;
 
-    Size = Request->Data.SetCursorInfoRequest.Info.dwSize;
-    Visible = Request->Data.SetCursorInfoRequest.Info.bVisible;
+    Size = ApiMessage->Data.SetCursorInfoRequest.Info.dwSize;
+    Visible = ApiMessage->Data.SetCursorInfoRequest.Info.bVisible;
     if (Size < 1)
     {
         Size = 1;
@@ -923,14 +924,14 @@ CSR_API(CsrSetTextAttrib)
 
     DPRINT("CsrSetTextAttrib\n");
 
-    Status = ConioLockScreenBuffer(ProcessData, Request->Data.SetCursorRequest.ConsoleHandle, &Buff, GENERIC_WRITE);
+    Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ApiMessage->Data.SetCursorRequest.ConsoleHandle, &Buff, GENERIC_WRITE);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
     Console = Buff->Header.Console;
 
-    Buff->DefaultAttrib = Request->Data.SetAttribRequest.Attrib;
+    Buff->DefaultAttrib = ApiMessage->Data.SetAttribRequest.Attrib;
     if (Buff == Console->ActiveBuffer)
     {
         if (! ConioUpdateScreenInfo(Console, Buff))
@@ -947,6 +948,7 @@ CSR_API(CsrSetTextAttrib)
 
 CSR_API(CsrCreateScreenBuffer)
 {
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCSRSS_CONSOLE Console;
     PCSRSS_SCREEN_BUFFER Buff;
     NTSTATUS Status;
@@ -991,11 +993,11 @@ CSR_API(CsrCreateScreenBuffer)
         if (NT_SUCCESS(Status))
         {
             Status = Win32CsrInsertObject(ProcessData,
-                                          &Request->Data.CreateScreenBufferRequest.OutputHandle,
+                                          &ApiMessage->Data.CreateScreenBufferRequest.OutputHandle,
                                           &Buff->Header,
-                                          Request->Data.CreateScreenBufferRequest.Access,
-                                          Request->Data.CreateScreenBufferRequest.Inheritable,
-                                          Request->Data.CreateScreenBufferRequest.ShareMode);
+                                          ApiMessage->Data.CreateScreenBufferRequest.Access,
+                                          ApiMessage->Data.CreateScreenBufferRequest.Inheritable,
+                                          ApiMessage->Data.CreateScreenBufferRequest.ShareMode);
         }
     }
     else
@@ -1016,7 +1018,7 @@ CSR_API(CsrSetScreenBuffer)
 
     DPRINT("CsrSetScreenBuffer\n");
 
-    Status = ConioLockScreenBuffer(ProcessData, Request->Data.SetScreenBufferRequest.OutputHandle, &Buff, GENERIC_WRITE);
+    Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ApiMessage->Data.SetScreenBufferRequest.OutputHandle, &Buff, GENERIC_WRITE);
     if (! NT_SUCCESS(Status))
     {
         return Status;
@@ -1047,6 +1049,7 @@ CSR_API(CsrSetScreenBuffer)
 CSR_API(CsrWriteConsoleOutput)
 {
     SHORT i, X, Y, SizeX, SizeY;
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCSRSS_CONSOLE Console;
     PCSRSS_SCREEN_BUFFER Buff;
     SMALL_RECT ScreenBuffer;
@@ -1061,7 +1064,7 @@ CSR_API(CsrWriteConsoleOutput)
     DPRINT("CsrWriteConsoleOutput\n");
 
     Status = ConioLockScreenBuffer(ProcessData,
-                                   Request->Data.WriteConsoleOutputRequest.ConsoleHandle,
+                                   ApiMessage->Data.WriteConsoleOutputRequest.ConsoleHandle,
                                    &Buff,
                                    GENERIC_WRITE);
     if (! NT_SUCCESS(Status))
@@ -1070,16 +1073,16 @@ CSR_API(CsrWriteConsoleOutput)
     }
     Console = Buff->Header.Console;
 
-    BufferSize = Request->Data.WriteConsoleOutputRequest.BufferSize;
-    BufferCoord = Request->Data.WriteConsoleOutputRequest.BufferCoord;
-    CharInfo = Request->Data.WriteConsoleOutputRequest.CharInfo;
+    BufferSize = ApiMessage->Data.WriteConsoleOutputRequest.BufferSize;
+    BufferCoord = ApiMessage->Data.WriteConsoleOutputRequest.BufferCoord;
+    CharInfo = ApiMessage->Data.WriteConsoleOutputRequest.CharInfo;
     if (!Win32CsrValidateBuffer(ProcessData, CharInfo,
                                 BufferSize.X * BufferSize.Y, sizeof(CHAR_INFO)))
     {
         ConioUnlockScreenBuffer(Buff);
         return STATUS_ACCESS_VIOLATION;
     }
-    WriteRegion = Request->Data.WriteConsoleOutputRequest.WriteRegion;
+    WriteRegion = ApiMessage->Data.WriteConsoleOutputRequest.WriteRegion;
 
     SizeY = min(BufferSize.Y - BufferCoord.Y, ConioRectHeight(&WriteRegion));
     SizeX = min(BufferSize.X - BufferCoord.X, ConioRectWidth(&WriteRegion));
@@ -1104,7 +1107,7 @@ CSR_API(CsrWriteConsoleOutput)
         for (X = WriteRegion.Left; X <= WriteRegion.Right; X++)
         {
             CHAR AsciiChar;
-            if (Request->Data.WriteConsoleOutputRequest.Unicode)
+            if (ApiMessage->Data.WriteConsoleOutputRequest.Unicode)
             {
                 ConsoleUnicodeCharToAnsiChar(Console, &AsciiChar, &CurCharInfo->Char.UnicodeChar);
             }
@@ -1122,10 +1125,10 @@ CSR_API(CsrWriteConsoleOutput)
 
     ConioUnlockScreenBuffer(Buff);
 
-    Request->Data.WriteConsoleOutputRequest.WriteRegion.Right = WriteRegion.Left + SizeX - 1;
-    Request->Data.WriteConsoleOutputRequest.WriteRegion.Bottom = WriteRegion.Top + SizeY - 1;
-    Request->Data.WriteConsoleOutputRequest.WriteRegion.Left = WriteRegion.Left;
-    Request->Data.WriteConsoleOutputRequest.WriteRegion.Top = WriteRegion.Top;
+    ApiMessage->Data.WriteConsoleOutputRequest.WriteRegion.Right = WriteRegion.Left + SizeX - 1;
+    ApiMessage->Data.WriteConsoleOutputRequest.WriteRegion.Bottom = WriteRegion.Top + SizeY - 1;
+    ApiMessage->Data.WriteConsoleOutputRequest.WriteRegion.Left = WriteRegion.Left;
+    ApiMessage->Data.WriteConsoleOutputRequest.WriteRegion.Top = WriteRegion.Top;
 
     return STATUS_SUCCESS;
 }
@@ -1149,19 +1152,19 @@ CSR_API(CsrScrollConsoleScreenBuffer)
 
     DPRINT("CsrScrollConsoleScreenBuffer\n");
 
-    ConsoleHandle = Request->Data.ScrollConsoleScreenBufferRequest.ConsoleHandle;
-    UseClipRectangle = Request->Data.ScrollConsoleScreenBufferRequest.UseClipRectangle;
-    DestinationOrigin = Request->Data.ScrollConsoleScreenBufferRequest.DestinationOrigin;
-    Fill = Request->Data.ScrollConsoleScreenBufferRequest.Fill;
+    ConsoleHandle = ApiMessage->Data.ScrollConsoleScreenBufferRequest.ConsoleHandle;
+    UseClipRectangle = ApiMessage->Data.ScrollConsoleScreenBufferRequest.UseClipRectangle;
+    DestinationOrigin = ApiMessage->Data.ScrollConsoleScreenBufferRequest.DestinationOrigin;
+    Fill = ApiMessage->Data.ScrollConsoleScreenBufferRequest.Fill;
 
-    Status = ConioLockScreenBuffer(ProcessData, ConsoleHandle, &Buff, GENERIC_WRITE);
+    Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ConsoleHandle, &Buff, GENERIC_WRITE);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
     Console = Buff->Header.Console;
 
-    ScrollRectangle = Request->Data.ScrollConsoleScreenBufferRequest.ScrollRectangle;
+    ScrollRectangle = ApiMessage->Data.ScrollConsoleScreenBufferRequest.ScrollRectangle;
 
     /* Make sure source rectangle is inside the screen buffer */
     ConioInitRect(&ScreenBuffer, 0, 0, Buff->MaxY - 1, Buff->MaxX - 1);
@@ -1183,7 +1186,7 @@ CSR_API(CsrScrollConsoleScreenBuffer)
 
     if (UseClipRectangle)
     {
-        ClipRectangle = Request->Data.ScrollConsoleScreenBufferRequest.ClipRectangle;
+        ClipRectangle = ApiMessage->Data.ScrollConsoleScreenBufferRequest.ClipRectangle;
         if (!ConioGetIntersection(&ClipRectangle, &ClipRectangle, &ScreenBuffer))
         {
             ConioUnlockScreenBuffer(Buff);
@@ -1201,7 +1204,7 @@ CSR_API(CsrScrollConsoleScreenBuffer)
                   DestinationOrigin.Y + ConioRectHeight(&SrcRegion) - 1,
                   DestinationOrigin.X + ConioRectWidth(&SrcRegion) - 1);
 
-    if (Request->Data.ScrollConsoleScreenBufferRequest.Unicode)
+    if (ApiMessage->Data.ScrollConsoleScreenBufferRequest.Unicode)
         ConsoleUnicodeCharToAnsiChar(Console, &FillChar, &Fill.Char.UnicodeChar);
     else
         FillChar = Fill.Char.AsciiChar;
@@ -1236,25 +1239,25 @@ CSR_API(CsrReadConsoleOutputChar)
 
     DPRINT("CsrReadConsoleOutputChar\n");
 
-    ReadBuffer = Request->Data.ReadConsoleOutputCharRequest.String;
+    ReadBuffer = ApiMessage->Data.ReadConsoleOutputCharRequest.String;
 
-    CharSize = (Request->Data.ReadConsoleOutputCharRequest.Unicode ? sizeof(WCHAR) : sizeof(CHAR));
+    CharSize = (ApiMessage->Data.ReadConsoleOutputCharRequest.Unicode ? sizeof(WCHAR) : sizeof(CHAR));
 
-    Status = ConioLockScreenBuffer(ProcessData, Request->Data.ReadConsoleOutputCharRequest.ConsoleHandle, &Buff, GENERIC_READ);
+    Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ApiMessage->Data.ReadConsoleOutputCharRequest.ConsoleHandle, &Buff, GENERIC_READ);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
     Console = Buff->Header.Console;
 
-    Xpos = Request->Data.ReadConsoleOutputCharRequest.ReadCoord.X;
-    Ypos = (Request->Data.ReadConsoleOutputCharRequest.ReadCoord.Y + Buff->VirtualY) % Buff->MaxY;
+    Xpos = ApiMessage->Data.ReadConsoleOutputCharRequest.ReadCoord.X;
+    Ypos = (ApiMessage->Data.ReadConsoleOutputCharRequest.ReadCoord.Y + Buff->VirtualY) % Buff->MaxY;
 
-    for (i = 0; i < Request->Data.ReadConsoleOutputCharRequest.NumCharsToRead; ++i)
+    for (i = 0; i < ApiMessage->Data.ReadConsoleOutputCharRequest.NumCharsToRead; ++i)
     {
         Char = Buff->Buffer[(Xpos * 2) + (Ypos * 2 * Buff->MaxX)];
 
-        if(Request->Data.ReadConsoleOutputCharRequest.Unicode)
+        if(ApiMessage->Data.ReadConsoleOutputCharRequest.Unicode)
         {
             ConsoleAnsiCharToUnicodeChar(Console, (WCHAR*)ReadBuffer, &Char);
             ReadBuffer += sizeof(WCHAR);
@@ -1277,13 +1280,13 @@ CSR_API(CsrReadConsoleOutputChar)
     }
 
     *ReadBuffer = 0;
-    Request->Data.ReadConsoleOutputCharRequest.EndCoord.X = Xpos;
-    Request->Data.ReadConsoleOutputCharRequest.EndCoord.Y = (Ypos - Buff->VirtualY + Buff->MaxY) % Buff->MaxY;
+    ApiMessage->Data.ReadConsoleOutputCharRequest.EndCoord.X = Xpos;
+    ApiMessage->Data.ReadConsoleOutputCharRequest.EndCoord.Y = (Ypos - Buff->VirtualY + Buff->MaxY) % Buff->MaxY;
 
     ConioUnlockScreenBuffer(Buff);
 
-    Request->Data.ReadConsoleOutputCharRequest.CharsRead = (DWORD)((ULONG_PTR)ReadBuffer - (ULONG_PTR)Request->Data.ReadConsoleOutputCharRequest.String) / CharSize;
-    if (Request->Data.ReadConsoleOutputCharRequest.CharsRead * CharSize + CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_CHAR) > sizeof(CSR_API_MESSAGE))
+    ApiMessage->Data.ReadConsoleOutputCharRequest.CharsRead = (DWORD)((ULONG_PTR)ReadBuffer - (ULONG_PTR)ApiMessage->Data.ReadConsoleOutputCharRequest.String) / CharSize;
+    if (ApiMessage->Data.ReadConsoleOutputCharRequest.CharsRead * CharSize + CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_CHAR) > sizeof(CSR_API_MESSAGE))
     {
         DPRINT1("Length won't fit in message\n");
         return STATUS_BUFFER_TOO_SMALL;
@@ -1304,18 +1307,18 @@ CSR_API(CsrReadConsoleOutputAttrib)
 
     DPRINT("CsrReadConsoleOutputAttrib\n");
 
-    ReadBuffer = Request->Data.ReadConsoleOutputAttribRequest.Attribute;
+    ReadBuffer = ApiMessage->Data.ReadConsoleOutputAttribRequest.Attribute;
 
-    Status = ConioLockScreenBuffer(ProcessData, Request->Data.ReadConsoleOutputAttribRequest.ConsoleHandle, &Buff, GENERIC_READ);
+    Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ApiMessage->Data.ReadConsoleOutputAttribRequest.ConsoleHandle, &Buff, GENERIC_READ);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
 
-    Xpos = Request->Data.ReadConsoleOutputAttribRequest.ReadCoord.X;
-    Ypos = (Request->Data.ReadConsoleOutputAttribRequest.ReadCoord.Y + Buff->VirtualY) % Buff->MaxY;
+    Xpos = ApiMessage->Data.ReadConsoleOutputAttribRequest.ReadCoord.X;
+    Ypos = (ApiMessage->Data.ReadConsoleOutputAttribRequest.ReadCoord.Y + Buff->VirtualY) % Buff->MaxY;
 
-    for (i = 0; i < Request->Data.ReadConsoleOutputAttribRequest.NumAttrsToRead; ++i)
+    for (i = 0; i < ApiMessage->Data.ReadConsoleOutputAttribRequest.NumAttrsToRead; ++i)
     {
         *ReadBuffer = Buff->Buffer[(Xpos * 2) + (Ypos * 2 * Buff->MaxX) + 1];
 
@@ -1336,13 +1339,13 @@ CSR_API(CsrReadConsoleOutputAttrib)
 
     *ReadBuffer = 0;
 
-    Request->Data.ReadConsoleOutputAttribRequest.EndCoord.X = Xpos;
-    Request->Data.ReadConsoleOutputAttribRequest.EndCoord.Y = (Ypos - Buff->VirtualY + Buff->MaxY) % Buff->MaxY;
+    ApiMessage->Data.ReadConsoleOutputAttribRequest.EndCoord.X = Xpos;
+    ApiMessage->Data.ReadConsoleOutputAttribRequest.EndCoord.Y = (Ypos - Buff->VirtualY + Buff->MaxY) % Buff->MaxY;
 
     ConioUnlockScreenBuffer(Buff);
 
     CurrentLength = CSR_API_MESSAGE_HEADER_SIZE(CSRSS_READ_CONSOLE_OUTPUT_ATTRIB)
-                    + Request->Data.ReadConsoleOutputAttribRequest.NumAttrsToRead * sizeof(WORD);
+                    + ApiMessage->Data.ReadConsoleOutputAttribRequest.NumAttrsToRead * sizeof(WORD);
     if (CurrentLength > sizeof(CSR_API_MESSAGE))
     {
         DPRINT1("Length won't fit in message\n");
@@ -1354,6 +1357,7 @@ CSR_API(CsrReadConsoleOutputAttrib)
 
 CSR_API(CsrReadConsoleOutput)
 {
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCHAR_INFO CharInfo;
     PCHAR_INFO CurCharInfo;
     PCSRSS_SCREEN_BUFFER Buff;
@@ -1370,16 +1374,16 @@ CSR_API(CsrReadConsoleOutput)
 
     DPRINT("CsrReadConsoleOutput\n");
 
-    Status = ConioLockScreenBuffer(ProcessData, Request->Data.ReadConsoleOutputRequest.ConsoleHandle, &Buff, GENERIC_READ);
+    Status = ConioLockScreenBuffer(ProcessData, ApiMessage->Data.ReadConsoleOutputRequest.ConsoleHandle, &Buff, GENERIC_READ);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
 
-    CharInfo = Request->Data.ReadConsoleOutputRequest.CharInfo;
-    ReadRegion = Request->Data.ReadConsoleOutputRequest.ReadRegion;
-    BufferSize = Request->Data.ReadConsoleOutputRequest.BufferSize;
-    BufferCoord = Request->Data.ReadConsoleOutputRequest.BufferCoord;
+    CharInfo = ApiMessage->Data.ReadConsoleOutputRequest.CharInfo;
+    ReadRegion = ApiMessage->Data.ReadConsoleOutputRequest.ReadRegion;
+    BufferSize = ApiMessage->Data.ReadConsoleOutputRequest.BufferSize;
+    BufferCoord = ApiMessage->Data.ReadConsoleOutputRequest.BufferCoord;
 
     /* FIXME: Is this correct? */
     CodePage = ProcessData->Console->OutputCodePage;
@@ -1410,7 +1414,7 @@ CSR_API(CsrReadConsoleOutput)
         Ptr = ConioCoordToPointer(Buff, ReadRegion.Left, Y);
         for (X = ReadRegion.Left; X < ReadRegion.Right; ++X)
         {
-            if (Request->Data.ReadConsoleOutputRequest.Unicode)
+            if (ApiMessage->Data.ReadConsoleOutputRequest.Unicode)
             {
                 MultiByteToWideChar(CodePage, 0,
                                     (PCHAR)Ptr++, 1,
@@ -1427,10 +1431,10 @@ CSR_API(CsrReadConsoleOutput)
 
     ConioUnlockScreenBuffer(Buff);
 
-    Request->Data.ReadConsoleOutputRequest.ReadRegion.Right = ReadRegion.Left + SizeX - 1;
-    Request->Data.ReadConsoleOutputRequest.ReadRegion.Bottom = ReadRegion.Top + SizeY - 1;
-    Request->Data.ReadConsoleOutputRequest.ReadRegion.Left = ReadRegion.Left;
-    Request->Data.ReadConsoleOutputRequest.ReadRegion.Top = ReadRegion.Top;
+    ApiMessage->Data.ReadConsoleOutputRequest.ReadRegion.Right = ReadRegion.Left + SizeX - 1;
+    ApiMessage->Data.ReadConsoleOutputRequest.ReadRegion.Bottom = ReadRegion.Top + SizeY - 1;
+    ApiMessage->Data.ReadConsoleOutputRequest.ReadRegion.Left = ReadRegion.Left;
+    ApiMessage->Data.ReadConsoleOutputRequest.ReadRegion.Top = ReadRegion.Top;
 
     return STATUS_SUCCESS;
 }
@@ -1441,14 +1445,14 @@ CSR_API(CsrSetScreenBufferSize)
     PCSRSS_CONSOLE Console;
     PCSRSS_SCREEN_BUFFER Buff;
 
-    Status = ConioLockScreenBuffer(ProcessData, Request->Data.SetScreenBufferSize.OutputHandle, &Buff, GENERIC_WRITE);
+    Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ApiMessage->Data.SetScreenBufferSize.OutputHandle, &Buff, GENERIC_WRITE);
     if (!NT_SUCCESS(Status))
     {
         return Status;
     }
     Console = Buff->Header.Console;
 
-    Status = ConioResizeBuffer(Console, Buff, Request->Data.SetScreenBufferSize.Size);
+    Status = ConioResizeBuffer(Console, Buff, ApiMessage->Data.SetScreenBufferSize.Size);
     ConioUnlockScreenBuffer(Buff);
 
     return Status;
index cfb1eba..93186eb 100644 (file)
@@ -174,6 +174,7 @@ CsrInitConsole(PCSRSS_CONSOLE Console, int ShowCmd)
 
 CSR_API(CsrAllocConsole)
 {
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCSRSS_CONSOLE Console;
     NTSTATUS Status = STATUS_SUCCESS;
     BOOLEAN NewConsole = FALSE;
@@ -189,7 +190,7 @@ CSR_API(CsrAllocConsole)
     }
 
     /* If we don't need a console, then get out of here */
-    if (!Request->Data.AllocConsoleRequest.ConsoleNeeded)
+    if (!ApiMessage->Data.AllocConsoleRequest.ConsoleNeeded)
     {
         DPRINT("No console needed\n");
         RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
@@ -197,8 +198,8 @@ CSR_API(CsrAllocConsole)
     }
 
     /* If we already have one, then don't create a new one... */
-    if (!Request->Data.AllocConsoleRequest.Console ||
-            Request->Data.AllocConsoleRequest.Console != ProcessData->ParentConsole)
+    if (!ApiMessage->Data.AllocConsoleRequest.Console ||
+            ApiMessage->Data.AllocConsoleRequest.Console != ProcessData->ParentConsole)
     {
         /* Allocate a console structure */
         NewConsole = TRUE;
@@ -214,7 +215,7 @@ CSR_API(CsrAllocConsole)
         /* insert process data required for GUI initialization */
         InsertHeadList(&Console->ProcessList, &ProcessData->ConsoleLink);
         /* Initialize the Console */
-        Status = CsrInitConsole(Console, Request->Data.AllocConsoleRequest.ShowCmd);
+        Status = CsrInitConsole(Console, ApiMessage->Data.AllocConsoleRequest.ShowCmd);
         if (!NT_SUCCESS(Status))
         {
             DPRINT1("Console init failed\n");
@@ -226,14 +227,14 @@ CSR_API(CsrAllocConsole)
     else
     {
         /* Reuse our current console */
-        Console = Request->Data.AllocConsoleRequest.Console;
+        Console = ApiMessage->Data.AllocConsoleRequest.Console;
     }
 
     /* Set the Process Console */
     ProcessData->Console = Console;
 
     /* Return it to the caller */
-    Request->Data.AllocConsoleRequest.Console = Console;
+    ApiMessage->Data.AllocConsoleRequest.Console = Console;
 
     /* Add a reference count because the process is tied to the console */
     _InterlockedIncrement(&Console->ReferenceCount);
@@ -242,7 +243,7 @@ CSR_API(CsrAllocConsole)
     {
         /* Insert the Objects */
         Status = Win32CsrInsertObject(ProcessData,
-                                      &Request->Data.AllocConsoleRequest.InputHandle,
+                                      &ApiMessage->Data.AllocConsoleRequest.InputHandle,
                                       &Console->Header,
                                       GENERIC_READ | GENERIC_WRITE,
                                       TRUE,
@@ -257,7 +258,7 @@ CSR_API(CsrAllocConsole)
         }
 
         Status = Win32CsrInsertObject(ProcessData,
-                                      &Request->Data.AllocConsoleRequest.OutputHandle,
+                                      &ApiMessage->Data.AllocConsoleRequest.OutputHandle,
                                       &Console->ActiveBuffer->Header,
                                       GENERIC_READ | GENERIC_WRITE,
                                       TRUE,
@@ -267,7 +268,7 @@ CSR_API(CsrAllocConsole)
             DPRINT1("Failed to insert object\n");
             ConioDeleteConsole((Object_t *) Console);
             Win32CsrReleaseObject(ProcessData,
-                                  Request->Data.AllocConsoleRequest.InputHandle);
+                                  ApiMessage->Data.AllocConsoleRequest.InputHandle);
             ProcessData->Console = 0;
             RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
             return Status;
@@ -288,9 +289,9 @@ CSR_API(CsrAllocConsole)
         if (NewConsole || !ProcessData->bInheritHandles)
         {
             Win32CsrReleaseObject(ProcessData,
-                                  Request->Data.AllocConsoleRequest.OutputHandle);
+                                  ApiMessage->Data.AllocConsoleRequest.OutputHandle);
             Win32CsrReleaseObject(ProcessData,
-                                  Request->Data.AllocConsoleRequest.InputHandle);
+                                  ApiMessage->Data.AllocConsoleRequest.InputHandle);
         }
         ProcessData->Console = 0;
         RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
@@ -298,7 +299,7 @@ CSR_API(CsrAllocConsole)
     }
 
     /* Set the Ctrl Dispatcher */
-    ProcessData->CtrlDispatcher = Request->Data.AllocConsoleRequest.CtrlDispatcher;
+    ProcessData->CtrlDispatcher = ApiMessage->Data.AllocConsoleRequest.CtrlDispatcher;
     DPRINT("CSRSS:CtrlDispatcher address: %x\n", ProcessData->CtrlDispatcher);
 
     if (!NewConsole)
@@ -313,7 +314,7 @@ CSR_API(CsrAllocConsole)
 
 CSR_API(CsrFreeConsole)
 {
-    Win32CsrReleaseConsole(ProcessData);
+    Win32CsrReleaseConsole(CsrGetClientThread()->Process);
     return STATUS_SUCCESS;
 }
 
@@ -390,8 +391,8 @@ CSR_API(CsrSetConsoleMode)
 
     DPRINT("CsrSetConsoleMode\n");
 
-    Status = Win32CsrLockObject(ProcessData,
-                                Request->Data.SetConsoleModeRequest.ConsoleHandle,
+    Status = Win32CsrLockObject(CsrGetClientThread()->Process,
+                                ApiMessage->Data.SetConsoleModeRequest.ConsoleHandle,
                                 (Object_t **) &Console, GENERIC_WRITE, 0);
     if (! NT_SUCCESS(Status))
     {
@@ -401,11 +402,11 @@ CSR_API(CsrSetConsoleMode)
     Buff = (PCSRSS_SCREEN_BUFFER)Console;
     if (CONIO_CONSOLE_MAGIC == Console->Header.Type)
     {
-        Console->Mode = Request->Data.SetConsoleModeRequest.Mode & CONSOLE_INPUT_MODE_VALID;
+        Console->Mode = ApiMessage->Data.SetConsoleModeRequest.Mode & CONSOLE_INPUT_MODE_VALID;
     }
     else if (CONIO_SCREEN_BUFFER_MAGIC == Console->Header.Type)
     {
-        Buff->Mode = Request->Data.SetConsoleModeRequest.Mode & CONSOLE_OUTPUT_MODE_VALID;
+        Buff->Mode = ApiMessage->Data.SetConsoleModeRequest.Mode & CONSOLE_OUTPUT_MODE_VALID;
     }
     else
     {
@@ -425,7 +426,7 @@ CSR_API(CsrGetConsoleMode)
 
     DPRINT("CsrGetConsoleMode\n");
 
-    Status = Win32CsrLockObject(ProcessData, Request->Data.GetConsoleModeRequest.ConsoleHandle,
+    Status = Win32CsrLockObject(CsrGetClientThread()->Process, ApiMessage->Data.GetConsoleModeRequest.ConsoleHandle,
                                 (Object_t **) &Console, GENERIC_READ, 0);
     if (! NT_SUCCESS(Status))
     {
@@ -435,11 +436,11 @@ CSR_API(CsrGetConsoleMode)
     Buff = (PCSRSS_SCREEN_BUFFER) Console;
     if (CONIO_CONSOLE_MAGIC == Console->Header.Type)
     {
-        Request->Data.GetConsoleModeRequest.ConsoleMode = Console->Mode;
+        ApiMessage->Data.GetConsoleModeRequest.ConsoleMode = Console->Mode;
     }
     else if (CONIO_SCREEN_BUFFER_MAGIC == Buff->Header.Type)
     {
-        Request->Data.GetConsoleModeRequest.ConsoleMode = Buff->Mode;
+        ApiMessage->Data.GetConsoleModeRequest.ConsoleMode = Buff->Mode;
     }
     else
     {
@@ -453,13 +454,14 @@ CSR_API(CsrGetConsoleMode)
 CSR_API(CsrSetTitle)
 {
     NTSTATUS Status;
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCSRSS_CONSOLE Console;
     PWCHAR Buffer;
 
     DPRINT("CsrSetTitle\n");
 
-    if (!Win32CsrValidateBuffer(ProcessData, Request->Data.SetTitleRequest.Title,
-                                Request->Data.SetTitleRequest.Length, 1))
+    if (!Win32CsrValidateBuffer(ProcessData, ApiMessage->Data.SetTitleRequest.Title,
+                                ApiMessage->Data.SetTitleRequest.Length, 1))
     {
         return STATUS_ACCESS_VIOLATION;
     }
@@ -467,14 +469,14 @@ CSR_API(CsrSetTitle)
     Status = ConioConsoleFromProcessData(ProcessData, &Console);
     if(NT_SUCCESS(Status))
     {
-        Buffer =  RtlAllocateHeap(RtlGetProcessHeap(), 0, Request->Data.SetTitleRequest.Length);
+        Buffer =  RtlAllocateHeap(RtlGetProcessHeap(), 0, ApiMessage->Data.SetTitleRequest.Length);
         if (Buffer)
         {
             /* copy title to console */
             RtlFreeUnicodeString(&Console->Title);
             Console->Title.Buffer = Buffer;
-            Console->Title.Length = Console->Title.MaximumLength = Request->Data.SetTitleRequest.Length;
-            memcpy(Console->Title.Buffer, Request->Data.SetTitleRequest.Title, Console->Title.Length);
+            Console->Title.Length = Console->Title.MaximumLength = ApiMessage->Data.SetTitleRequest.Length;
+            memcpy(Console->Title.Buffer, ApiMessage->Data.SetTitleRequest.Title, Console->Title.Length);
             if (! ConioChangeTitle(Console))
             {
                 Status = STATUS_UNSUCCESSFUL;
@@ -497,14 +499,15 @@ CSR_API(CsrSetTitle)
 CSR_API(CsrGetTitle)
 {
     NTSTATUS Status;
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCSRSS_CONSOLE Console;
     DWORD Length;
 
     DPRINT("CsrGetTitle\n");
 
 
-    if (!Win32CsrValidateBuffer(ProcessData, Request->Data.GetTitleRequest.Title,
-                                Request->Data.GetTitleRequest.Length, 1))
+    if (!Win32CsrValidateBuffer(ProcessData, ApiMessage->Data.GetTitleRequest.Title,
+                                ApiMessage->Data.GetTitleRequest.Length, 1))
     {
         return STATUS_ACCESS_VIOLATION;
     }
@@ -517,14 +520,14 @@ CSR_API(CsrGetTitle)
     }
 
     /* Copy title of the console to the user title buffer */
-    if (Request->Data.GetTitleRequest.Length >= sizeof(WCHAR))
+    if (ApiMessage->Data.GetTitleRequest.Length >= sizeof(WCHAR))
     {
-        Length = min(Request->Data.GetTitleRequest.Length - sizeof(WCHAR), Console->Title.Length);
-        memcpy(Request->Data.GetTitleRequest.Title, Console->Title.Buffer, Length);
-        Request->Data.GetTitleRequest.Title[Length / sizeof(WCHAR)] = L'\0';
+        Length = min(ApiMessage->Data.GetTitleRequest.Length - sizeof(WCHAR), Console->Title.Length);
+        memcpy(ApiMessage->Data.GetTitleRequest.Title, Console->Title.Buffer, Length);
+        ApiMessage->Data.GetTitleRequest.Title[Length / sizeof(WCHAR)] = L'\0';
     }
 
-    Request->Data.GetTitleRequest.Length = Console->Title.Length;
+    ApiMessage->Data.GetTitleRequest.Length = Console->Title.Length;
 
     ConioUnlockConsole(Console);
     return STATUS_SUCCESS;
@@ -572,8 +575,8 @@ CSR_API(CsrHardwareStateProperty)
 
     DPRINT("CsrHardwareStateProperty\n");
 
-    Status = ConioLockConsole(ProcessData,
-                              Request->Data.ConsoleHardwareStateRequest.ConsoleHandle,
+    Status = ConioLockConsole(CsrGetClientThread()->Process,
+                              ApiMessage->Data.ConsoleHardwareStateRequest.ConsoleHandle,
                               &Console,
                               GENERIC_READ);
     if (! NT_SUCCESS(Status))
@@ -582,15 +585,15 @@ CSR_API(CsrHardwareStateProperty)
         return Status;
     }
 
-    switch (Request->Data.ConsoleHardwareStateRequest.SetGet)
+    switch (ApiMessage->Data.ConsoleHardwareStateRequest.SetGet)
     {
     case CONSOLE_HARDWARE_STATE_GET:
-        Request->Data.ConsoleHardwareStateRequest.State = Console->HardwareState;
+        ApiMessage->Data.ConsoleHardwareStateRequest.State = Console->HardwareState;
         break;
 
     case CONSOLE_HARDWARE_STATE_SET:
         DPRINT("Setting console hardware state.\n");
-        Status = SetConsoleHardwareState(Console, Request->Data.ConsoleHardwareStateRequest.State);
+        Status = SetConsoleHardwareState(Console, ApiMessage->Data.ConsoleHardwareStateRequest.State);
         break;
 
     default:
@@ -610,13 +613,13 @@ CSR_API(CsrGetConsoleWindow)
 
     DPRINT("CsrGetConsoleWindow\n");
 
-    Status = ConioConsoleFromProcessData(ProcessData, &Console);
+    Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
 
-    Request->Data.GetConsoleWindowRequest.WindowHandle = Console->hWindow;
+    ApiMessage->Data.GetConsoleWindowRequest.WindowHandle = Console->hWindow;
     ConioUnlockConsole(Console);
 
     return STATUS_SUCCESS;
@@ -629,13 +632,13 @@ CSR_API(CsrSetConsoleIcon)
 
     DPRINT("CsrSetConsoleIcon\n");
 
-    Status = ConioConsoleFromProcessData(ProcessData, &Console);
+    Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
 
-    Status = (ConioChangeIcon(Console, Request->Data.SetConsoleIconRequest.WindowIcon)
+    Status = (ConioChangeIcon(Console, ApiMessage->Data.SetConsoleIconRequest.WindowIcon)
               ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL);
     ConioUnlockConsole(Console);
 
@@ -649,13 +652,13 @@ CSR_API(CsrGetConsoleCodePage)
 
     DPRINT("CsrGetConsoleCodePage\n");
 
-    Status = ConioConsoleFromProcessData(ProcessData, &Console);
+    Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
 
-    Request->Data.GetConsoleCodePage.CodePage = Console->CodePage;
+    ApiMessage->Data.GetConsoleCodePage.CodePage = Console->CodePage;
     ConioUnlockConsole(Console);
     return STATUS_SUCCESS;
 }
@@ -667,15 +670,15 @@ CSR_API(CsrSetConsoleCodePage)
 
     DPRINT("CsrSetConsoleCodePage\n");
 
-    Status = ConioConsoleFromProcessData(ProcessData, &Console);
+    Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
 
-    if (IsValidCodePage(Request->Data.SetConsoleCodePage.CodePage))
+    if (IsValidCodePage(ApiMessage->Data.SetConsoleCodePage.CodePage))
     {
-        Console->CodePage = Request->Data.SetConsoleCodePage.CodePage;
+        Console->CodePage = ApiMessage->Data.SetConsoleCodePage.CodePage;
         ConioUnlockConsole(Console);
         return STATUS_SUCCESS;
     }
@@ -691,13 +694,13 @@ CSR_API(CsrGetConsoleOutputCodePage)
 
     DPRINT("CsrGetConsoleOutputCodePage\n");
 
-    Status = ConioConsoleFromProcessData(ProcessData, &Console);
+    Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
 
-    Request->Data.GetConsoleOutputCodePage.CodePage = Console->OutputCodePage;
+    ApiMessage->Data.GetConsoleOutputCodePage.CodePage = Console->OutputCodePage;
     ConioUnlockConsole(Console);
     return STATUS_SUCCESS;
 }
@@ -709,15 +712,15 @@ CSR_API(CsrSetConsoleOutputCodePage)
 
     DPRINT("CsrSetConsoleOutputCodePage\n");
 
-    Status = ConioConsoleFromProcessData(ProcessData, &Console);
+    Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
 
-    if (IsValidCodePage(Request->Data.SetConsoleOutputCodePage.CodePage))
+    if (IsValidCodePage(ApiMessage->Data.SetConsoleOutputCodePage.CodePage))
     {
-        Console->OutputCodePage = Request->Data.SetConsoleOutputCodePage.CodePage;
+        Console->OutputCodePage = ApiMessage->Data.SetConsoleOutputCodePage.CodePage;
         ConioUnlockConsole(Console);
         return STATUS_SUCCESS;
     }
@@ -729,6 +732,7 @@ CSR_API(CsrSetConsoleOutputCodePage)
 CSR_API(CsrGetProcessList)
 {
     PDWORD Buffer;
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCSRSS_CONSOLE Console;
     PCSR_PROCESS current;
     PLIST_ENTRY current_entry;
@@ -737,8 +741,8 @@ CSR_API(CsrGetProcessList)
 
     DPRINT("CsrGetProcessList\n");
 
-    Buffer = Request->Data.GetProcessListRequest.ProcessId;
-    if (!Win32CsrValidateBuffer(ProcessData, Buffer, Request->Data.GetProcessListRequest.nMaxIds, sizeof(DWORD)))
+    Buffer = ApiMessage->Data.GetProcessListRequest.ProcessId;
+    if (!Win32CsrValidateBuffer(ProcessData, Buffer, ApiMessage->Data.GetProcessListRequest.nMaxIds, sizeof(DWORD)))
         return STATUS_ACCESS_VIOLATION;
 
     Status = ConioConsoleFromProcessData(ProcessData, &Console);
@@ -752,7 +756,7 @@ CSR_API(CsrGetProcessList)
          current_entry = current_entry->Flink)
     {
         current = CONTAINING_RECORD(current_entry, CSR_PROCESS, ConsoleLink);
-        if (++nItems <= Request->Data.GetProcessListRequest.nMaxIds)
+        if (++nItems <= ApiMessage->Data.GetProcessListRequest.nMaxIds)
         {
             *Buffer++ = HandleToUlong(current->ClientId.UniqueProcess);
         }
@@ -760,7 +764,7 @@ CSR_API(CsrGetProcessList)
 
     ConioUnlockConsole(Console);
 
-    Request->Data.GetProcessListRequest.nProcessIdsTotal = nItems;
+    ApiMessage->Data.GetProcessListRequest.nProcessIdsTotal = nItems;
     return STATUS_SUCCESS;
 }
 
@@ -772,13 +776,13 @@ CSR_API(CsrGenerateCtrlEvent)
     DWORD Group;
     NTSTATUS Status;
 
-    Status = ConioConsoleFromProcessData(ProcessData, &Console);
+    Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
     if (! NT_SUCCESS(Status))
     {
         return Status;
     }
 
-    Group = Request->Data.GenerateCtrlEvent.ProcessGroup;
+    Group = ApiMessage->Data.GenerateCtrlEvent.ProcessGroup;
     Status = STATUS_INVALID_PARAMETER;
     for (current_entry = Console->ProcessList.Flink;
             current_entry != &Console->ProcessList;
@@ -787,7 +791,7 @@ CSR_API(CsrGenerateCtrlEvent)
         current = CONTAINING_RECORD(current_entry, CSR_PROCESS, ConsoleLink);
         if (Group == 0 || current->ProcessGroupId == Group)
         {
-            ConioConsoleCtrlEvent(Request->Data.GenerateCtrlEvent.Event, current);
+            ConioConsoleCtrlEvent(ApiMessage->Data.GenerateCtrlEvent.Event, current);
             Status = STATUS_SUCCESS;
         }
     }
@@ -802,12 +806,12 @@ CSR_API(CsrGetConsoleSelectionInfo)
     NTSTATUS Status;
     PCSRSS_CONSOLE Console;
 
-    Status = ConioConsoleFromProcessData(ProcessData, &Console);
+    Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
     if (NT_SUCCESS(Status))
     {
-        memset(&Request->Data.GetConsoleSelectionInfo.Info, 0, sizeof(CONSOLE_SELECTION_INFO));
+        memset(&ApiMessage->Data.GetConsoleSelectionInfo.Info, 0, sizeof(CONSOLE_SELECTION_INFO));
         if (Console->Selection.dwFlags != 0)
-            Request->Data.GetConsoleSelectionInfo.Info = Console->Selection;
+            ApiMessage->Data.GetConsoleSelectionInfo.Info = Console->Selection;
         ConioUnlockConsole(Console);
     }
     return Status;
index 4edd7a3..0235ac0 100644 (file)
@@ -254,7 +254,7 @@ CSR_API(CsrCreateDesktop)
      * The desktop handle we got from win32k is in
      * the scope of CSRSS so we can just use it.
      */
-    ThreadData.Desktop = Request->Data.CreateDesktopRequest.DesktopHandle;
+    ThreadData.Desktop = ApiMessage->Data.CreateDesktopRequest.DesktopHandle;
 
     ThreadData.Event = CreateEventW(NULL, FALSE, FALSE, NULL);
 
@@ -292,14 +292,14 @@ CSR_API(CsrShowDesktop)
     PRIVATE_NOTIFY_DESKTOP nmh;
     DPRINT("CsrShowDesktop\n");
 
-    nmh.hdr.hwndFrom = Request->Data.ShowDesktopRequest.DesktopWindow;
+    nmh.hdr.hwndFrom = ApiMessage->Data.ShowDesktopRequest.DesktopWindow;
     nmh.hdr.idFrom = 0;
     nmh.hdr.code = PM_SHOW_DESKTOP;
 
-    nmh.ShowDesktop.Width = (int)Request->Data.ShowDesktopRequest.Width;
-    nmh.ShowDesktop.Height = (int)Request->Data.ShowDesktopRequest.Height;
+    nmh.ShowDesktop.Width = (int)ApiMessage->Data.ShowDesktopRequest.Width;
+    nmh.ShowDesktop.Height = (int)ApiMessage->Data.ShowDesktopRequest.Height;
 
-    if (SendMessageW(Request->Data.ShowDesktopRequest.DesktopWindow,
+    if (SendMessageW(ApiMessage->Data.ShowDesktopRequest.DesktopWindow,
                      WM_NOTIFY,
                      (WPARAM)nmh.hdr.hwndFrom,
                      (LPARAM)&nmh))
@@ -316,11 +316,11 @@ CSR_API(CsrHideDesktop)
     PRIVATE_NOTIFY_DESKTOP nmh;
     DPRINT("CsrHideDesktop\n");
 
-    nmh.hdr.hwndFrom = Request->Data.ShowDesktopRequest.DesktopWindow;
+    nmh.hdr.hwndFrom = ApiMessage->Data.ShowDesktopRequest.DesktopWindow;
     nmh.hdr.idFrom = 0;
     nmh.hdr.code = PM_HIDE_DESKTOP;
 
-    if (SendMessageW(Request->Data.ShowDesktopRequest.DesktopWindow,
+    if (SendMessageW(ApiMessage->Data.ShowDesktopRequest.DesktopWindow,
                      WM_NOTIFY,
                      (WPARAM)nmh.hdr.hwndFrom,
                      (LPARAM)&nmh))
index fd11c16..9fe92ce 100644 (file)
@@ -18,20 +18,20 @@ static HANDLE LogonProcess = NULL;
 
 CSR_API(CsrRegisterLogonProcess)
 {
-    if (Request->Data.RegisterLogonProcessRequest.Register)
+    if (ApiMessage->Data.RegisterLogonProcessRequest.Register)
     {
         if (0 != LogonProcess)
         {
             return STATUS_LOGON_SESSION_EXISTS;
         }
-        LogonProcess = Request->Data.RegisterLogonProcessRequest.ProcessId;
+        LogonProcess = ApiMessage->Data.RegisterLogonProcessRequest.ProcessId;
     }
     else
     {
-        if (Request->Header.ClientId.UniqueProcess != LogonProcess)
+        if (ApiMessage->Header.ClientId.UniqueProcess != LogonProcess)
         {
             DPRINT1("Current logon process 0x%x, can't deregister from process 0x%x\n",
-                    LogonProcess, Request->Header.ClientId.UniqueProcess);
+                    LogonProcess, ApiMessage->Header.ClientId.UniqueProcess);
             return STATUS_NOT_LOGON_PROCESS;
         }
         LogonProcess = 0;
@@ -44,7 +44,7 @@ CSR_API(CsrSetLogonNotifyWindow)
 {
     DWORD WindowCreator;
 
-    if (0 == GetWindowThreadProcessId(Request->Data.SetLogonNotifyWindowRequest.LogonNotifyWindow,
+    if (0 == GetWindowThreadProcessId(ApiMessage->Data.SetLogonNotifyWindowRequest.LogonNotifyWindow,
                                       &WindowCreator))
     {
         DPRINT1("Can't get window creator\n");
@@ -56,7 +56,7 @@ CSR_API(CsrSetLogonNotifyWindow)
         return STATUS_ACCESS_DENIED;
     }
 
-    LogonNotifyWindow = Request->Data.SetLogonNotifyWindowRequest.LogonNotifyWindow;
+    LogonNotifyWindow = ApiMessage->Data.SetLogonNotifyWindowRequest.LogonNotifyWindow;
 
     return STATUS_SUCCESS;
 }
@@ -915,16 +915,16 @@ UserExitReactos(DWORD UserProcessId, UINT Flags)
 
 CSR_API(CsrExitReactos)
 {
-    if (0 == (Request->Data.ExitReactosRequest.Flags & EWX_INTERNAL_FLAG))
+    if (0 == (ApiMessage->Data.ExitReactosRequest.Flags & EWX_INTERNAL_FLAG))
     {
-        return UserExitReactos((DWORD_PTR) Request->Header.ClientId.UniqueProcess,
-                               Request->Data.ExitReactosRequest.Flags);
+        return UserExitReactos((DWORD_PTR) ApiMessage->Header.ClientId.UniqueProcess,
+                               ApiMessage->Data.ExitReactosRequest.Flags);
     }
     else
     {
-        return InternalExitReactos((DWORD_PTR) Request->Header.ClientId.UniqueProcess,
-                                   (DWORD_PTR) Request->Header.ClientId.UniqueThread,
-                                   Request->Data.ExitReactosRequest.Flags);
+        return InternalExitReactos((DWORD_PTR) ApiMessage->Header.ClientId.UniqueProcess,
+                                   (DWORD_PTR) ApiMessage->Header.ClientId.UniqueThread,
+                                   ApiMessage->Data.ExitReactosRequest.Flags);
     }
 }
 
index 638769f..5ac4f2d 100644 (file)
@@ -73,9 +73,9 @@ CSR_API(CsrGetTempFile)
     DPRINT("CsrGetTempFile entered\n");
 
     /* Return 16-bits ID */
-    Request->Data.GetTempFile.UniqueID = (++CsrGetTempFileUnique & 0xFFFF);
+    ApiMessage->Data.GetTempFile.UniqueID = (++CsrGetTempFileUnique & 0xFFFF);
 
-    DPRINT("Returning: %u\n", Request->Data.GetTempFile.UniqueID);
+    DPRINT("Returning: %u\n", ApiMessage->Data.GetTempFile.UniqueID);
 
     return STATUS_SUCCESS;
 }
@@ -106,16 +106,16 @@ CSR_API(CsrDefineDosDevice)
     PWSTR lpBuffer;
 
     DPRINT("CsrDefineDosDevice entered, Flags:%d, DeviceName:%wZ, TargetName:%wZ\n",
-           Request->Data.DefineDosDeviceRequest.dwFlags,
-           &Request->Data.DefineDosDeviceRequest.DeviceName,
-           &Request->Data.DefineDosDeviceRequest.TargetName);
+           ApiMessage->Data.DefineDosDeviceRequest.dwFlags,
+           &ApiMessage->Data.DefineDosDeviceRequest.DeviceName,
+           &ApiMessage->Data.DefineDosDeviceRequest.TargetName);
 
     Matched = AddHistory = FALSE;
     HistoryEntry = NULL;
     AdminSid = SystemSid = WorldSid = NULL;
     SecurityDescriptor = NULL;
     ListHead = &DosDeviceHistory;
-    dwFlags = Request->Data.DefineDosDeviceRequest.dwFlags;
+    dwFlags = ApiMessage->Data.DefineDosDeviceRequest.dwFlags;
 
     /* Validate the flags */
     if ( (dwFlags & 0xFFFFFFF0) ||
@@ -137,13 +137,13 @@ CSR_API(CsrDefineDosDevice)
     {
         Status =
             RtlUpcaseUnicodeString(&RequestDeviceName,
-                                   &Request->Data.DefineDosDeviceRequest.DeviceName,
+                                   &ApiMessage->Data.DefineDosDeviceRequest.DeviceName,
                                    TRUE);
         if (! NT_SUCCESS(Status))
             _SEH2_LEAVE;
 
         RequestLinkTarget =
-            &Request->Data.DefineDosDeviceRequest.TargetName;
+            &ApiMessage->Data.DefineDosDeviceRequest.TargetName;
         lpBuffer = (PWSTR) RtlAllocateHeap(Win32CsrApiHeap,
                                            HEAP_ZERO_MEMORY,
                                            RequestDeviceName.MaximumLength + 5 * sizeof(WCHAR));
index 1b3201d..dec33a2 100644 (file)
@@ -259,20 +259,21 @@ Win32CsrDuplicateHandleTable(
 CSR_API(CsrGetHandle)
 {
     NTSTATUS Status = STATUS_SUCCESS;
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
 
-    Request->Data.GetInputHandleRequest.Handle = INVALID_HANDLE_VALUE;
+    ApiMessage->Data.GetInputHandleRequest.Handle = INVALID_HANDLE_VALUE;
 
     RtlEnterCriticalSection(&ProcessData->HandleTableLock);
     if (ProcessData->Console)
     {
-        DWORD DesiredAccess = Request->Data.GetInputHandleRequest.Access;
-        DWORD ShareMode = Request->Data.GetInputHandleRequest.ShareMode;
+        DWORD DesiredAccess = ApiMessage->Data.GetInputHandleRequest.Access;
+        DWORD ShareMode = ApiMessage->Data.GetInputHandleRequest.ShareMode;
 
         PCSRSS_CONSOLE Console = ProcessData->Console;
         Object_t *Object;
 
         EnterCriticalSection(&Console->Lock);
-        if (Request->Type == GET_OUTPUT_HANDLE)
+        if (ApiMessage->ApiNumber == GET_OUTPUT_HANDLE)
             Object = &Console->ActiveBuffer->Header;
         else
             Object = &Console->Header;
@@ -288,10 +289,10 @@ CSR_API(CsrGetHandle)
         else
         {
             Status = Win32CsrInsertObject(ProcessData,
-                                          &Request->Data.GetInputHandleRequest.Handle,
+                                          &ApiMessage->Data.GetInputHandleRequest.Handle,
                                           Object,
                                           DesiredAccess,
-                                          Request->Data.GetInputHandleRequest.Inheritable,
+                                          ApiMessage->Data.GetInputHandleRequest.Inheritable,
                                           ShareMode);
         }
         LeaveCriticalSection(&Console->Lock);
@@ -303,15 +304,16 @@ CSR_API(CsrGetHandle)
 
 CSR_API(CsrCloseHandle)
 {
-    return Win32CsrReleaseObject(ProcessData, Request->Data.CloseHandleRequest.Handle);
+    return Win32CsrReleaseObject(CsrGetClientThread()->Process, ApiMessage->Data.CloseHandleRequest.Handle);
 }
 
 CSR_API(CsrVerifyHandle)
 {
     ULONG_PTR Index;
     NTSTATUS Status = STATUS_SUCCESS;
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
 
-    Index = (ULONG_PTR)Request->Data.VerifyHandleRequest.Handle >> 2;
+    Index = (ULONG_PTR)ApiMessage->Data.VerifyHandleRequest.Handle >> 2;
     RtlEnterCriticalSection(&ProcessData->HandleTableLock);
     if (Index >= ProcessData->HandleTableSize ||
         ProcessData->HandleTable[Index].Object == NULL)
@@ -329,53 +331,54 @@ CSR_API(CsrDuplicateHandle)
     ULONG_PTR Index;
     PCSRSS_HANDLE Entry;
     DWORD DesiredAccess;
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
 
-    Index = (ULONG_PTR)Request->Data.DuplicateHandleRequest.Handle >> 2;
+    Index = (ULONG_PTR)ApiMessage->Data.DuplicateHandleRequest.Handle >> 2;
     RtlEnterCriticalSection(&ProcessData->HandleTableLock);
     if (Index >= ProcessData->HandleTableSize
         || (Entry = &ProcessData->HandleTable[Index])->Object == NULL)
     {
-        DPRINT1("Couldn't dup invalid handle %p\n", Request->Data.DuplicateHandleRequest.Handle);
+        DPRINT1("Couldn't dup invalid handle %p\n", ApiMessage->Data.DuplicateHandleRequest.Handle);
         RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
         return STATUS_INVALID_HANDLE;
     }
 
-    if (Request->Data.DuplicateHandleRequest.Options & DUPLICATE_SAME_ACCESS)
+    if (ApiMessage->Data.DuplicateHandleRequest.Options & DUPLICATE_SAME_ACCESS)
     {
         DesiredAccess = Entry->Access;
     }
     else
     {
-        DesiredAccess = Request->Data.DuplicateHandleRequest.Access;
+        DesiredAccess = ApiMessage->Data.DuplicateHandleRequest.Access;
         /* Make sure the source handle has all the desired flags */
         if (~Entry->Access & DesiredAccess)
         {
             DPRINT1("Handle %p only has access %X; requested %X\n",
-                Request->Data.DuplicateHandleRequest.Handle, Entry->Access, DesiredAccess);
+                ApiMessage->Data.DuplicateHandleRequest.Handle, Entry->Access, DesiredAccess);
             RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
             return STATUS_INVALID_PARAMETER;
         }
     }
 
-    Request->Status = Win32CsrInsertObject(ProcessData,
-                                           &Request->Data.DuplicateHandleRequest.Handle,
+    ApiMessage->Status = Win32CsrInsertObject(ProcessData,
+                                           &ApiMessage->Data.DuplicateHandleRequest.Handle,
                                            Entry->Object,
                                            DesiredAccess,
-                                           Request->Data.DuplicateHandleRequest.Inheritable,
+                                           ApiMessage->Data.DuplicateHandleRequest.Inheritable,
                                            Entry->ShareMode);
-    if (NT_SUCCESS(Request->Status)
-        && Request->Data.DuplicateHandleRequest.Options & DUPLICATE_CLOSE_SOURCE)
+    if (NT_SUCCESS(ApiMessage->Status)
+        && ApiMessage->Data.DuplicateHandleRequest.Options & DUPLICATE_CLOSE_SOURCE)
     {
         Win32CsrCloseHandleEntry(Entry);
     }
 
     RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
-    return Request->Status;
+    return ApiMessage->Status;
 }
 
 CSR_API(CsrGetInputWaitHandle)
 {
-    Request->Data.GetConsoleInputWaitHandle.InputWaitHandle = ProcessData->ConsoleEvent;
+    ApiMessage->Data.GetConsoleInputWaitHandle.InputWaitHandle = CsrGetClientThread()->Process->ConsoleEvent;
     return STATUS_SUCCESS;
 }
 
index 78cbe27..1d55fb5 100644 (file)
@@ -149,6 +149,7 @@ HistoryDeleteBuffer(PHISTORY_BUFFER Hist)
 
 CSR_API(CsrGetCommandHistoryLength)
 {
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCSRSS_CONSOLE Console;
     NTSTATUS Status;
     PHISTORY_BUFFER Hist;
@@ -156,8 +157,8 @@ CSR_API(CsrGetCommandHistoryLength)
     INT i;
 
     if (!Win32CsrValidateBuffer(ProcessData,
-                                Request->Data.GetCommandHistoryLength.ExeName.Buffer,
-                                Request->Data.GetCommandHistoryLength.ExeName.Length, 1))
+                                ApiMessage->Data.GetCommandHistoryLength.ExeName.Buffer,
+                                ApiMessage->Data.GetCommandHistoryLength.ExeName.Length, 1))
     {
         return STATUS_ACCESS_VIOLATION;
     }
@@ -165,13 +166,13 @@ CSR_API(CsrGetCommandHistoryLength)
     Status = ConioConsoleFromProcessData(ProcessData, &Console);
     if (NT_SUCCESS(Status))
     {
-        Hist = HistoryFindBuffer(Console, &Request->Data.GetCommandHistory.ExeName);
+        Hist = HistoryFindBuffer(Console, &ApiMessage->Data.GetCommandHistory.ExeName);
         if (Hist)
         {
             for (i = 0; i < Hist->NumEntries; i++)
                 Length += Hist->Entries[i].Length + sizeof(WCHAR);
         }
-        Request->Data.GetCommandHistoryLength.Length = Length;
+        ApiMessage->Data.GetCommandHistoryLength.Length = Length;
         ConioUnlockConsole(Console);
     }
     return Status;
@@ -179,17 +180,18 @@ CSR_API(CsrGetCommandHistoryLength)
 
 CSR_API(CsrGetCommandHistory)
 {
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCSRSS_CONSOLE Console;
     NTSTATUS Status;
     PHISTORY_BUFFER Hist;
-    PBYTE Buffer = (PBYTE)Request->Data.GetCommandHistory.History;
-    ULONG BufferSize = Request->Data.GetCommandHistory.Length;
+    PBYTE Buffer = (PBYTE)ApiMessage->Data.GetCommandHistory.History;
+    ULONG BufferSize = ApiMessage->Data.GetCommandHistory.Length;
     INT i;
 
     if (!Win32CsrValidateBuffer(ProcessData, Buffer, BufferSize, 1) ||
         !Win32CsrValidateBuffer(ProcessData,
-                                Request->Data.GetCommandHistory.ExeName.Buffer,
-                                Request->Data.GetCommandHistory.ExeName.Length, 1))
+                                ApiMessage->Data.GetCommandHistory.ExeName.Buffer,
+                                ApiMessage->Data.GetCommandHistory.ExeName.Length, 1))
     {
         return STATUS_ACCESS_VIOLATION;
     }
@@ -197,7 +199,7 @@ CSR_API(CsrGetCommandHistory)
     Status = ConioConsoleFromProcessData(ProcessData, &Console);
     if (NT_SUCCESS(Status))
     {
-        Hist = HistoryFindBuffer(Console, &Request->Data.GetCommandHistory.ExeName);
+        Hist = HistoryFindBuffer(Console, &ApiMessage->Data.GetCommandHistory.ExeName);
         if (Hist)
         {
             for (i = 0; i < Hist->NumEntries; i++)
@@ -213,7 +215,7 @@ CSR_API(CsrGetCommandHistory)
                 Buffer += sizeof(WCHAR);
             }
         }
-        Request->Data.GetCommandHistory.Length = Buffer - (PBYTE)Request->Data.GetCommandHistory.History;
+        ApiMessage->Data.GetCommandHistory.Length = Buffer - (PBYTE)ApiMessage->Data.GetCommandHistory.History;
         ConioUnlockConsole(Console);
     }
     return Status;
@@ -221,13 +223,14 @@ CSR_API(CsrGetCommandHistory)
 
 CSR_API(CsrExpungeCommandHistory)
 {
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCSRSS_CONSOLE Console;
     PHISTORY_BUFFER Hist;
     NTSTATUS Status;
 
     if (!Win32CsrValidateBuffer(ProcessData,
-                                Request->Data.ExpungeCommandHistory.ExeName.Buffer,
-                                Request->Data.ExpungeCommandHistory.ExeName.Length, 1))
+                                ApiMessage->Data.ExpungeCommandHistory.ExeName.Buffer,
+                                ApiMessage->Data.ExpungeCommandHistory.ExeName.Length, 1))
     {
         return STATUS_ACCESS_VIOLATION;
     }
@@ -235,7 +238,7 @@ CSR_API(CsrExpungeCommandHistory)
     Status = ConioConsoleFromProcessData(ProcessData, &Console);
     if (NT_SUCCESS(Status))
     {
-        Hist = HistoryFindBuffer(Console, &Request->Data.ExpungeCommandHistory.ExeName);
+        Hist = HistoryFindBuffer(Console, &ApiMessage->Data.ExpungeCommandHistory.ExeName);
         HistoryDeleteBuffer(Hist);
         ConioUnlockConsole(Console);
     }
@@ -244,15 +247,16 @@ CSR_API(CsrExpungeCommandHistory)
 
 CSR_API(CsrSetHistoryNumberCommands)
 {
+    PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
     PCSRSS_CONSOLE Console;
     PHISTORY_BUFFER Hist;
     NTSTATUS Status;
-    WORD MaxEntries = Request->Data.SetHistoryNumberCommands.NumCommands;
+    WORD MaxEntries = ApiMessage->Data.SetHistoryNumberCommands.NumCommands;
     PUNICODE_STRING OldEntryList, NewEntryList;
 
     if (!Win32CsrValidateBuffer(ProcessData,
-                                Request->Data.SetHistoryNumberCommands.ExeName.Buffer,
-                                Request->Data.SetHistoryNumberCommands.ExeName.Length, 1))
+                                ApiMessage->Data.SetHistoryNumberCommands.ExeName.Buffer,
+                                ApiMessage->Data.SetHistoryNumberCommands.ExeName.Length, 1))
     {
         return STATUS_ACCESS_VIOLATION;
     }
@@ -260,7 +264,7 @@ CSR_API(CsrSetHistoryNumberCommands)
     Status = ConioConsoleFromProcessData(ProcessData, &Console);
     if (NT_SUCCESS(Status))
     {
-        Hist = HistoryFindBuffer(Console, &Request->Data.SetHistoryNumberCommands.ExeName);
+        Hist = HistoryFindBuffer(Console, &ApiMessage->Data.SetHistoryNumberCommands.ExeName);
         if (Hist)
         {
             OldEntryList = Hist->Entries;
@@ -293,12 +297,12 @@ CSR_API(CsrSetHistoryNumberCommands)
 CSR_API(CsrGetHistoryInfo)
 {
     PCSRSS_CONSOLE Console;
-    NTSTATUS Status = ConioConsoleFromProcessData(ProcessData, &Console);
+    NTSTATUS Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
     if (NT_SUCCESS(Status))
     {
-        Request->Data.SetHistoryInfo.HistoryBufferSize      = Console->HistoryBufferSize;
-        Request->Data.SetHistoryInfo.NumberOfHistoryBuffers = Console->NumberOfHistoryBuffers;
-        Request->Data.SetHistoryInfo.dwFlags                = Console->HistoryNoDup;
+        ApiMessage->Data.SetHistoryInfo.HistoryBufferSize      = Console->HistoryBufferSize;
+        ApiMessage->Data.SetHistoryInfo.NumberOfHistoryBuffers = Console->NumberOfHistoryBuffers;
+        ApiMessage->Data.SetHistoryInfo.dwFlags                = Console->HistoryNoDup;
         ConioUnlockConsole(Console);
     }
     return Status;
@@ -307,12 +311,12 @@ CSR_API(CsrGetHistoryInfo)
 CSR_API(CsrSetHistoryInfo)
 {
     PCSRSS_CONSOLE Console;
-    NTSTATUS Status = ConioConsoleFromProcessData(ProcessData, &Console);
+    NTSTATUS Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
     if (NT_SUCCESS(Status))
     {
-        Console->HistoryBufferSize      = (WORD)Request->Data.SetHistoryInfo.HistoryBufferSize;
-        Console->NumberOfHistoryBuffers = (WORD)Request->Data.SetHistoryInfo.NumberOfHistoryBuffers;
-        Console->HistoryNoDup           = Request->Data.SetHistoryInfo.dwFlags & HISTORY_NO_DUP_FLAG;
+        Console->HistoryBufferSize      = (WORD)ApiMessage->Data.SetHistoryInfo.HistoryBufferSize;
+        Console->NumberOfHistoryBuffers = (WORD)ApiMessage->Data.SetHistoryInfo.NumberOfHistoryBuffers;
+        Console->HistoryNoDup           = ApiMessage->Data.SetHistoryInfo.dwFlags & HISTORY_NO_DUP_FLAG;
         ConioUnlockConsole(Console);
     }
     return Status;