mirror of
https://github.com/reactos/reactos.git
synced 2024-07-12 07:35:10 +00:00
[KERNEL32]
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
This commit is contained in:
parent
bd4d83d88f
commit
1e4253f2c0
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue