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)
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 */
&& 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);
}
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);
&& 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);
}
}
done:
- Request->Data.ReadConsoleRequest.NrCharactersRead = i;
+ ApiMessage->Data.ReadConsoleRequest.NrCharactersRead = i;
ConioUnlockConsole(Console);
return Status;
CSR_API(CsrReadInputEvent)
{
PLIST_ENTRY CurrentEntry;
+ PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
PCSRSS_CONSOLE Console;
NTSTATUS Status;
BOOLEAN Done = FALSE;
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;
if (Done)
{
- Request->Data.ReadInputRequest.MoreEvents = TRUE;
+ ApiMessage->Data.ReadInputRequest.MoreEvents = TRUE;
break;
}
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;
}
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))
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;
ConioUnlockConsole(Console);
- Request->Data.GetNumInputEventsRequest.NumInputEvents = NumEvents;
+ ApiMessage->Data.GetNumInputEventsRequest.NumInputEvents = NumEvents;
return STATUS_SUCCESS;
}
CSR_API(CsrPeekConsoleInput)
{
NTSTATUS Status;
+ PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
PCSRSS_CONSOLE Console;
DWORD Length;
PLIST_ENTRY CurrentItem;
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)))
{
++NumItems;
*InputRecord = Item->InputEvent;
- if (Request->Data.PeekConsoleInputRequest.Unicode == FALSE)
+ if (ApiMessage->Data.PeekConsoleInputRequest.Unicode == FALSE)
{
ConioInputEventToAnsi(Console, InputRecord);
}
ConioUnlockConsole(Console);
- Request->Data.PeekConsoleInputRequest.Length = NumItems;
+ ApiMessage->Data.PeekConsoleInputRequest.Length = NumItems;
return STATUS_SUCCESS;
}
CSR_API(CsrWriteConsoleInput)
{
PINPUT_RECORD InputRecord;
+ PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
PCSRSS_CONSOLE Console;
NTSTATUS Status;
DWORD Length;
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)))
{
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;
ConioUnlockConsole(Console);
- Request->Data.WriteConsoleInputRequest.Length = i;
+ ApiMessage->Data.WriteConsoleInputRequest.Length = i;
return Status;
}