[KERNEL32]
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Fri, 2 Nov 2012 18:00:47 +0000 (18:00 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Fri, 2 Nov 2012 18:00:47 +0000 (18:00 +0000)
This is the first of a series of commits aiming at making kernel32 using the new CSR messaging structures for communicating with Server Dlls.

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

dll/win32/kernel32/client/dosdev.c
dll/win32/kernel32/client/proc.c
dll/win32/kernel32/client/vdm.c
dll/win32/kernel32/client/vista.c

index 2882de5..8843ed2 100644 (file)
@@ -90,8 +90,9 @@ DefineDosDeviceW(
 {
     ULONG ArgumentCount;
     ULONG BufferSize;
+    BASE_API_MESSAGE ApiMessage;
+    PBASE_DEFINE_DOS_DEVICE DefineDosDeviceRequest = &ApiMessage.Data.DefineDosDeviceRequest;
     PCSR_CAPTURE_BUFFER CaptureBuffer;
-    CSR_API_MESSAGE Request;
     NTSTATUS Status;
     UNICODE_STRING NtTargetPathU;
     UNICODE_STRING DeviceNameU;
@@ -157,16 +158,16 @@ DefineDosDeviceW(
     }
     else
     {
-        Request.Data.DefineDosDeviceRequest.dwFlags = dwFlags;
+        DefineDosDeviceRequest->dwFlags = dwFlags;
 
         CsrCaptureMessageBuffer(CaptureBuffer,
                                 (PVOID)DeviceUpcaseNameU.Buffer,
                                 DeviceUpcaseNameU.Length,
-                                (PVOID*)&Request.Data.DefineDosDeviceRequest.DeviceName.Buffer);
+                                (PVOID*)&DefineDosDeviceRequest->DeviceName.Buffer);
 
-        Request.Data.DefineDosDeviceRequest.DeviceName.Length =
+        DefineDosDeviceRequest->DeviceName.Length =
             DeviceUpcaseNameU.Length;
-        Request.Data.DefineDosDeviceRequest.DeviceName.MaximumLength =
+        DefineDosDeviceRequest->DeviceName.MaximumLength =
             DeviceUpcaseNameU.Length;
 
         if (NtTargetPathU.Buffer)
@@ -174,21 +175,20 @@ DefineDosDeviceW(
             CsrCaptureMessageBuffer(CaptureBuffer,
                                     (PVOID)NtTargetPathU.Buffer,
                                     NtTargetPathU.Length,
-                                    (PVOID*)&Request.Data.DefineDosDeviceRequest.TargetName.Buffer);
+                                    (PVOID*)&DefineDosDeviceRequest->TargetName.Buffer);
         }
-        Request.Data.DefineDosDeviceRequest.TargetName.Length =
+        DefineDosDeviceRequest->TargetName.Length =
             NtTargetPathU.Length;
-        Request.Data.DefineDosDeviceRequest.TargetName.MaximumLength =
+        DefineDosDeviceRequest->TargetName.MaximumLength =
             NtTargetPathU.Length;
 
-        Status = CsrClientCallServer(&Request,
+        Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
                                      CaptureBuffer,
                                      CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepDefineDosDevice),
-                                     sizeof(CSR_API_MESSAGE));
+                                     sizeof(BASE_DEFINE_DOS_DEVICE));
         CsrFreeCaptureBuffer(CaptureBuffer);
 
-        if (! NT_SUCCESS(Status) ||
-            ! NT_SUCCESS(Status = Request.Status))
+        if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = ApiMessage.Status))
         {
             WARN("CsrClientCallServer() failed (Status %lx)\n",
                 Status);
index 921c669..0c4f36b 100644 (file)
@@ -1,10 +1,9 @@
-/* $Id: proc.c 57086 2012-08-16 15:39:40Z akhaldi $
- *
+/*
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS system libraries
  * FILE:            lib/kernel32/proc/proc.c
  * PURPOSE:         Process functions
- * PROGRAMMER:      Ariadne ( ariadne@xs4all.nl)
+ * PROGRAMMERS:     Ariadne (ariadne@xs4all.nl)
  * UPDATE HISTORY:
  *                  Created 01/11/98
  */
@@ -13,7 +12,7 @@
 
 #include <k32.h>
 
-#define NDEBUG
+// #define NDEBUG
 #include <debug.h>
 
 /* GLOBALS *******************************************************************/
@@ -494,25 +493,26 @@ WINAPI
 BasepNotifyCsrOfThread(IN HANDLE ThreadHandle,
                        IN PCLIENT_ID ClientId)
 {
-    CSR_API_MESSAGE CsrRequest;
     NTSTATUS Status;
+    BASE_API_MESSAGE ApiMessage;
+    PBASE_CREATE_THREAD CreateThreadRequest = &ApiMessage.Data.CreateThreadRequest;
 
     DPRINT("BasepNotifyCsrOfThread: Thread: %lx, Handle %lx\n",
             ClientId->UniqueThread, ThreadHandle);
 
     /* Fill out the request */
-    CsrRequest.Data.CreateThreadRequest.ClientId = *ClientId;
-    CsrRequest.Data.CreateThreadRequest.ThreadHandle = ThreadHandle;
+    CreateThreadRequest->ClientId = *ClientId;
+    CreateThreadRequest->ThreadHandle = ThreadHandle;
 
     /* Call CSR */
-    Status = CsrClientCallServer(&CsrRequest,
+    Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
                                  NULL,
                                  CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepCreateThread),
-                                 sizeof(CSR_API_MESSAGE));
-    if (!NT_SUCCESS(Status) || !NT_SUCCESS(CsrRequest.Status))
+                                 sizeof(BASE_CREATE_THREAD));
+    if (!NT_SUCCESS(Status) || !NT_SUCCESS(ApiMessage.Status))
     {
-        DPRINT1("Failed to tell csrss about new thread: %lx %lx\n", Status, CsrRequest.Status);
-        return CsrRequest.Status;
+        DPRINT1("Failed to tell csrss about new thread: %lx %lx\n", Status, ApiMessage.Status);
+        return ApiMessage.Status;
     }
 
     /* Return Success */
@@ -531,13 +531,15 @@ BasepCreateFirstThread(HANDLE ProcessHandle,
                        BOOLEAN InheritHandles,
                        DWORD dwCreationFlags)
 {
+    NTSTATUS Status;
     OBJECT_ATTRIBUTES LocalObjectAttributes;
     POBJECT_ATTRIBUTES ObjectAttributes;
     CONTEXT Context;
     INITIAL_TEB InitialTeb;
-    NTSTATUS Status;
     HANDLE hThread;
-    CSR_API_MESSAGE CsrRequest;
+    BASE_API_MESSAGE ApiMessage;
+    PBASE_CREATE_PROCESS CreateProcessRequest = &ApiMessage.Data.CreateProcessRequest;
+
     DPRINT("BasepCreateFirstThread. hProcess: %lx\n", ProcessHandle);
 
     /* Create the Thread's Stack */
@@ -573,20 +575,21 @@ BasepCreateFirstThread(HANDLE ProcessHandle,
     }
 
     /* Fill out the request to notify CSRSS */
-    CsrRequest.Data.CreateProcessRequest.ClientId = *ClientId;
-    CsrRequest.Data.CreateProcessRequest.ProcessHandle = ProcessHandle;
-    CsrRequest.Data.CreateProcessRequest.ThreadHandle = hThread;
-    CsrRequest.Data.CreateProcessRequest.CreationFlags = dwCreationFlags;
-    CsrRequest.Data.CreateProcessRequest.bInheritHandles = InheritHandles;
+    CreateProcessRequest->ClientId = *ClientId;
+    CreateProcessRequest->ProcessHandle = ProcessHandle;
+    CreateProcessRequest->ThreadHandle = hThread;
+    CreateProcessRequest->CreationFlags = dwCreationFlags;
+    CreateProcessRequest->bInheritHandles = InheritHandles;
 
     /* Call CSR */
-    Status = CsrClientCallServer(&CsrRequest,
+    DPRINT1("Calling CsrClientCallServer from BasepCreateFirstThread...\n");
+    Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
                                  NULL,
                                  CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepCreateProcess),
-                                 sizeof(CSR_API_MESSAGE));
-    if (!NT_SUCCESS(Status) || !NT_SUCCESS(CsrRequest.Status))
+                                 sizeof(BASE_CREATE_PROCESS));
+    if (!NT_SUCCESS(Status) || !NT_SUCCESS(ApiMessage.Status))
     {
-        DPRINT1("Failed to tell csrss about new process: %lx %lx\n", Status, CsrRequest.Status);
+        DPRINT1("Failed to tell csrss about new process: %lx %lx\n", Status, ApiMessage.Status);
         return NULL;
     }
 
@@ -1174,24 +1177,25 @@ WINAPI
 GetProcessShutdownParameters(OUT LPDWORD lpdwLevel,
                              OUT LPDWORD lpdwFlags)
 {
-    CSR_API_MESSAGE CsrRequest;
     NTSTATUS Status;
+    BASE_API_MESSAGE ApiMessage;
+    PBASE_GET_PROCESS_SHUTDOWN_PARAMS GetShutdownParametersRequest = &ApiMessage.Data.GetShutdownParametersRequest;
 
     /* Ask CSRSS for shutdown information */
-    Status = CsrClientCallServer(&CsrRequest,
+    Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
                                  NULL,
                                  CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepGetProcessShutdownParam),
-                                 sizeof(CSR_API_MESSAGE));
-    if (!(NT_SUCCESS(Status)) || !(NT_SUCCESS(CsrRequest.Status)))
+                                 sizeof(BASE_GET_PROCESS_SHUTDOWN_PARAMS));
+    if (!(NT_SUCCESS(Status)) || !(NT_SUCCESS(ApiMessage.Status)))
     {
         /* Return the failure from CSRSS */
-        BaseSetLastNTError(CsrRequest.Status);
+        BaseSetLastNTError(ApiMessage.Status);
         return FALSE;
     }
 
     /* Get the data out of the LCP reply */
-    *lpdwLevel = CsrRequest.Data.GetShutdownParametersRequest.Level;
-    *lpdwFlags = CsrRequest.Data.GetShutdownParametersRequest.Flags;
+    *lpdwLevel = GetShutdownParametersRequest->Level;
+    *lpdwFlags = GetShutdownParametersRequest->Flags;
     return TRUE;
 }
 
@@ -1203,20 +1207,21 @@ WINAPI
 SetProcessShutdownParameters(IN DWORD dwLevel,
                              IN DWORD dwFlags)
 {
-    CSR_API_MESSAGE CsrRequest;
     NTSTATUS Status;
+    BASE_API_MESSAGE ApiMessage;
+    PBASE_SET_PROCESS_SHUTDOWN_PARAMS SetShutdownParametersRequest = &ApiMessage.Data.SetShutdownParametersRequest;
 
     /* Write the data into the CSRSS request and send it */
-    CsrRequest.Data.SetShutdownParametersRequest.Level = dwLevel;
-    CsrRequest.Data.SetShutdownParametersRequest.Flags = dwFlags;
-    Status = CsrClientCallServer(&CsrRequest,
+    SetShutdownParametersRequest->Level = dwLevel;
+    SetShutdownParametersRequest->Flags = dwFlags;
+    Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
                                  NULL,
                                  CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepSetProcessShutdownParam),
-                                 sizeof(CSR_API_MESSAGE));
-    if (!NT_SUCCESS(Status) || !NT_SUCCESS(CsrRequest.Status))
+                                 sizeof(BASE_SET_PROCESS_SHUTDOWN_PARAMS));
+    if (!NT_SUCCESS(Status) || !NT_SUCCESS(ApiMessage.Status))
     {
         /* Return the failure from CSRSS */
-        BaseSetLastNTError(CsrRequest.Status);
+        BaseSetLastNTError(ApiMessage.Status);
         return FALSE;
     }
 
@@ -1740,7 +1745,9 @@ VOID
 WINAPI
 ExitProcess(IN UINT uExitCode)
 {
-    CSR_API_MESSAGE CsrRequest;
+    BASE_API_MESSAGE ApiMessage;
+    PBASE_EXIT_PROCESS ExitProcessRequest = &ApiMessage.Data.ExitProcessRequest;
+
     ASSERT(!BaseRunningInServerProcess);
 
     _SEH2_TRY
@@ -1755,11 +1762,11 @@ ExitProcess(IN UINT uExitCode)
         LdrShutdownProcess();
 
         /* Notify Base Server of process termination */
-        CsrRequest.Data.TerminateProcessRequest.uExitCode = uExitCode;
-        CsrClientCallServer(&CsrRequest,
+        ExitProcessRequest->uExitCode = uExitCode;
+        CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
                             NULL,
                             CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepExitProcess),
-                            sizeof(CSR_API_MESSAGE));
+                            sizeof(BASE_EXIT_PROCESS));
 
         /* Now do it again */
         NtTerminateProcess(NtCurrentProcess(), uExitCode);
index 8035587..051c9e4 100644 (file)
@@ -70,7 +70,7 @@ BaseCheckVDM(IN ULONG BinaryType,
              IN PCWCH CommandLine,
              IN PCWCH CurrentDirectory,
              IN PANSI_STRING AnsiEnvironment,
-             IN PCSR_API_MESSAGE Msg,
+             IN PCSR_API_MESSAGE ApiMessage,
              IN OUT PULONG iTask,
              IN DWORD CreationFlags,
              IN LPSTARTUPINFOW StartupInfo)
@@ -87,8 +87,10 @@ BaseUpdateVDMEntry(IN ULONG UpdateIndex,
                    IN ULONG IndexInfo,
                    IN ULONG BinaryType)
 {
+#if 0 // Unimplemented in BASESRV
     NTSTATUS Status;
-    CSR_API_MESSAGE Msg;
+    BASE_API_MESSAGE ApiMessage;
+    PBASE_UPDATE_VDM_ENTRY UpdateVdmEntry = &ApiMessage.Data.UpdateVdmEntry;
 
     /* Check what update is being sent */
     switch (UpdateIndex)
@@ -97,16 +99,16 @@ BaseUpdateVDMEntry(IN ULONG UpdateIndex,
         case VdmEntryUndo:
 
             /* Tell the server how far we had gotten along */
-            Msg.Data.UpdateVdmEntry.iTask = (ULONG)*WaitHandle;
-            Msg.Data.UpdateVdmEntry.VDMCreationState = IndexInfo;
+            UpdateVdmEntry->iTask = (ULONG)*WaitHandle;
+            UpdateVdmEntry->VDMCreationState = IndexInfo;
             break;
 
         /* VDM is ready with a new process handle */
         case VdmEntryUpdateProcess:
 
             /* Send it the process handle */
-            Msg.Data.UpdateVdmEntry.VDMProcessHandle = *WaitHandle;
-            Msg.Data.UpdateVdmEntry.iTask = IndexInfo;
+            UpdateVdmEntry->VDMProcessHandle = *WaitHandle;
+            UpdateVdmEntry->iTask = IndexInfo;
             break;
     }
 
@@ -114,32 +116,32 @@ BaseUpdateVDMEntry(IN ULONG UpdateIndex,
     if (BinaryType == BINARY_TYPE_WOW)
     {
         /* Magic value for 16-bit apps */
-        Msg.Data.UpdateVdmEntry.ConsoleHandle = (HANDLE)-1;
+        UpdateVdmEntry->ConsoleHandle = (HANDLE)-1;
     }
-    else if (Msg.Data.UpdateVdmEntry.iTask)
+    else if (UpdateVdmEntry->iTask)
     {
         /* No handle for true VDM */
-        Msg.Data.UpdateVdmEntry.ConsoleHandle = 0;
+        UpdateVdmEntry->ConsoleHandle = 0;
     }
     else
     {
         /* Otherwise, send the regular consoel handle */
-        Msg.Data.UpdateVdmEntry.ConsoleHandle = NtCurrentPeb()->ProcessParameters->ConsoleHandle;
+        UpdateVdmEntry->ConsoleHandle = NtCurrentPeb()->ProcessParameters->ConsoleHandle;
     }
 
     /* Finally write the index and binary type */
-    Msg.Data.UpdateVdmEntry.EntryIndex = UpdateIndex;
-    Msg.Data.UpdateVdmEntry.BinaryType = BinaryType;
+    UpdateVdmEntry->EntryIndex = UpdateIndex;
+    UpdateVdmEntry->BinaryType = BinaryType;
 
     /* Send the message to CSRSS */
-    Status = CsrClientCallServer(&Msg,
+    Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
                                  NULL,
                                  CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepUpdateVDMEntry),
-                                 sizeof(Msg));
-    if (!(NT_SUCCESS(Status)) || !(NT_SUCCESS(Msg.Status)))
+                                 sizeof(BASE_UPDATE_VDM_ENTRY));
+    if (!(NT_SUCCESS(Status)) || !(NT_SUCCESS(ApiMessage.Status)))
     {
         /* Handle failure */
-        BaseSetLastNTError(Msg.Status);
+        BaseSetLastNTError(ApiMessage.Status);
         return FALSE;
     }
 
@@ -147,9 +149,9 @@ BaseUpdateVDMEntry(IN ULONG UpdateIndex,
     if (UpdateIndex == VdmEntryUpdateProcess)
     {
         /* Return it to the caller */
-        *WaitHandle = Msg.Data.UpdateVdmEntry.WaitObjectForParent;
+        *WaitHandle = UpdateVdmEntry->WaitObjectForParent;
     }
-
+#endif
     /* We made it */
     return TRUE;
 }
@@ -159,9 +161,11 @@ WINAPI
 BaseCheckForVDM(IN HANDLE ProcessHandle,
                 OUT LPDWORD ExitCode)
 {
+#if 0 // Unimplemented in BASESRV
     NTSTATUS Status;
     EVENT_BASIC_INFORMATION EventBasicInfo;
-    CSR_API_MESSAGE Msg;
+    BASE_API_MESSAGE ApiMessage;
+    PBASE_GET_VDM_EXIT_CODE GetVdmExitCode = &ApiMessage.Data.GetVdmExitCode;
 
     /* It's VDM if the process is actually a wait handle (an event) */
     Status = NtQueryEvent(ProcessHandle,
@@ -172,18 +176,19 @@ BaseCheckForVDM(IN HANDLE ProcessHandle,
     if (!NT_SUCCESS(Status)) return FALSE;
 
     /* Setup the input parameters */
-    Msg.Data.GetVdmExitCode.ConsoleHandle = NtCurrentPeb()->ProcessParameters->ConsoleHandle;
-    Msg.Data.GetVdmExitCode.hParent = ProcessHandle;
+    GetVdmExitCode->ConsoleHandle = NtCurrentPeb()->ProcessParameters->ConsoleHandle;
+    GetVdmExitCode->hParent = ProcessHandle;
 
     /* Call CSRSS */
-    Status = CsrClientCallServer(&Msg,
+    Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
                                  NULL,
-                                 CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepCheckVDM /* BasepGetVDMExitCode */),
-                                 sizeof(Msg));
+                                 CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX, BasepGetVDMExitCode /* BasepCheckVDM */),
+                                 sizeof(BASE_GET_VDM_EXIT_CODE));
     if (!NT_SUCCESS(Status)) return FALSE;
 
     /* Get the exit code from the reply */
-    *ExitCode = Msg.Data.GetVdmExitCode.ExitCode;
+    *ExitCode = GetVdmExitCode->ExitCode;
+#endif
     return TRUE;
 }
 
index 697207d..71a9038 100644 (file)
@@ -318,8 +318,9 @@ BOOL
 WINAPI
 GetConsoleHistoryInfo(PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
 {
-    CSR_API_MESSAGE Request;
     NTSTATUS Status;
+    CONSOLE_API_MESSAGE ApiMessage;
+    PCSRSS_GET_HISTORY_INFO GetHistoryInfo = &ApiMessage.Data.GetHistoryInfo;
 
     if (lpConsoleHistoryInfo->cbSize != sizeof(CONSOLE_HISTORY_INFO))
     {
@@ -327,19 +328,19 @@ GetConsoleHistoryInfo(PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
         return FALSE;
     }
 
-    Status = CsrClientCallServer(&Request,
+    Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
                                  NULL,
-                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_HISTORY_INFO),
-                                 sizeof(CSR_API_MESSAGE));
-    if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
+                                 CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepGetHistory),
+                                 sizeof(CSRSS_GET_HISTORY_INFO));
+    if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = ApiMessage.Status))
     {
         BaseSetLastNTError(Status);
         return FALSE;
     }
 
-    lpConsoleHistoryInfo->HistoryBufferSize      = Request.Data.GetHistoryInfo.HistoryBufferSize;
-    lpConsoleHistoryInfo->NumberOfHistoryBuffers = Request.Data.GetHistoryInfo.NumberOfHistoryBuffers;
-    lpConsoleHistoryInfo->dwFlags                = Request.Data.GetHistoryInfo.dwFlags;
+    lpConsoleHistoryInfo->HistoryBufferSize      = GetHistoryInfo->HistoryBufferSize;
+    lpConsoleHistoryInfo->NumberOfHistoryBuffers = GetHistoryInfo->NumberOfHistoryBuffers;
+    lpConsoleHistoryInfo->dwFlags                = GetHistoryInfo->dwFlags;
 
     return TRUE;
 }
@@ -354,8 +355,9 @@ BOOL
 WINAPI
 SetConsoleHistoryInfo(IN PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
 {
-    CSR_API_MESSAGE Request;
     NTSTATUS Status;
+    CONSOLE_API_MESSAGE ApiMessage;
+    PCSRSS_SET_HISTORY_INFO SetHistoryInfo = &ApiMessage.Data.SetHistoryInfo;
 
     if (lpConsoleHistoryInfo->cbSize != sizeof(CONSOLE_HISTORY_INFO))
     {
@@ -363,15 +365,15 @@ SetConsoleHistoryInfo(IN PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo)
         return FALSE;
     }
 
-    Request.Data.SetHistoryInfo.HistoryBufferSize      = lpConsoleHistoryInfo->HistoryBufferSize;
-    Request.Data.SetHistoryInfo.NumberOfHistoryBuffers = lpConsoleHistoryInfo->NumberOfHistoryBuffers;
-    Request.Data.SetHistoryInfo.dwFlags                = lpConsoleHistoryInfo->dwFlags;
+    SetHistoryInfo->HistoryBufferSize      = lpConsoleHistoryInfo->HistoryBufferSize;
+    SetHistoryInfo->NumberOfHistoryBuffers = lpConsoleHistoryInfo->NumberOfHistoryBuffers;
+    SetHistoryInfo->dwFlags                = lpConsoleHistoryInfo->dwFlags;
 
-    Status = CsrClientCallServer(&Request,
+    Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
                                  NULL,
-                                 CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_HISTORY_INFO),
-                                 sizeof(CSR_API_MESSAGE));
-    if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
+                                 CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepSetHistory),
+                                 sizeof(CSRSS_SET_HISTORY_INFO));
+    if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = ApiMessage.Status))
     {
         BaseSetLastNTError(Status);
         return FALSE;