#include "consrv.h"
#include "include/conio.h"
-#include "include/conio2.h"
+#include "include/term.h"
#include "handle.h"
#include "lineinput.h"
WaitBeforeReading(IN PGET_INPUT_INFO InputInfo,
IN PCSR_API_MESSAGE ApiMessage,
IN CSR_WAIT_FUNCTION WaitFunction OPTIONAL,
- IN BOOL CreateWaitBlock OPTIONAL)
+ IN BOOLEAN CreateWaitBlock OPTIONAL)
{
if (CreateWaitBlock)
{
static NTSTATUS
ReadChars(IN PGET_INPUT_INFO InputInfo,
IN PCSR_API_MESSAGE ApiMessage,
- IN BOOL CreateWaitBlock OPTIONAL);
+ IN BOOLEAN CreateWaitBlock OPTIONAL);
// Wait function CSR_WAIT_FUNCTION
static BOOLEAN
* If we go there, that means we are notified for some new input.
* The console is therefore already locked.
*/
- Status = ReadChars(InputInfo,
- WaitApiMessage,
- FALSE);
+ Status = ReadChars(InputInfo, WaitApiMessage, FALSE);
Quit:
if (Status != STATUS_PENDING)
static NTSTATUS
ReadChars(IN PGET_INPUT_INFO InputInfo,
IN PCSR_API_MESSAGE ApiMessage,
- IN BOOL CreateWaitBlock OPTIONAL)
+ IN BOOLEAN CreateWaitBlock OPTIONAL)
{
NTSTATUS Status;
PCONSOLE_READCONSOLE ReadConsoleRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.ReadConsoleRequest;
static NTSTATUS
ReadInputBuffer(IN PGET_INPUT_INFO InputInfo,
- IN BOOL Wait,
IN PCSR_API_MESSAGE ApiMessage,
- IN BOOL CreateWaitBlock OPTIONAL);
+ IN BOOLEAN CreateWaitBlock OPTIONAL);
// Wait function CSR_WAIT_FUNCTION
static BOOLEAN
IN ULONG WaitFlags)
{
NTSTATUS Status;
- PCONSOLE_GETINPUT GetInputRequest = &((PCONSOLE_API_MESSAGE)WaitApiMessage)->Data.GetInputRequest;
PGET_INPUT_INFO InputInfo = (PGET_INPUT_INFO)WaitContext;
PVOID InputHandle = WaitArgument2;
* If we go there, that means we are notified for some new input.
* The console is therefore already locked.
*/
- Status = ReadInputBuffer(InputInfo,
- GetInputRequest->bRead,
- WaitApiMessage,
- FALSE);
+ Status = ReadInputBuffer(InputInfo, WaitApiMessage, FALSE);
Quit:
if (Status != STATUS_PENDING)
NTSTATUS NTAPI
ConDrvGetConsoleInput(IN PCONSOLE Console,
IN PCONSOLE_INPUT_BUFFER InputBuffer,
+ IN BOOLEAN KeepEvents,
IN BOOLEAN WaitForMoreEvents,
IN BOOLEAN Unicode,
OUT PINPUT_RECORD InputRecord,
IN ULONG NumEventsToRead,
- OUT PULONG NumEventsRead);
+ OUT PULONG NumEventsRead OPTIONAL);
static NTSTATUS
ReadInputBuffer(IN PGET_INPUT_INFO InputInfo,
- IN BOOL Wait, // TRUE --> Read ; FALSE --> Peek
IN PCSR_API_MESSAGE ApiMessage,
- IN BOOL CreateWaitBlock OPTIONAL)
+ IN BOOLEAN CreateWaitBlock OPTIONAL)
{
NTSTATUS Status;
PCONSOLE_GETINPUT GetInputRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetInputRequest;
Status = ConDrvGetConsoleInput(InputBuffer->Header.Console,
InputBuffer,
- Wait,
+ (GetInputRequest->wFlags & CONSOLE_READ_KEEPEVENT) != 0,
+ (GetInputRequest->wFlags & CONSOLE_READ_CONTINUE ) == 0,
GetInputRequest->Unicode,
GetInputRequest->InputRecord,
GetInputRequest->Length,
InputInfo.HandleEntry = HandleEntry;
InputInfo.InputBuffer = InputBuffer;
- Status = ReadChars(&InputInfo,
- ApiMessage,
- TRUE);
+ Status = ReadChars(&InputInfo, ApiMessage, TRUE);
ConSrvReleaseInputBuffer(InputBuffer, TRUE);
DPRINT("SrvGetConsoleInput\n");
+ if (GetInputRequest->wFlags & ~(CONSOLE_READ_KEEPEVENT | CONSOLE_READ_CONTINUE))
+ return STATUS_INVALID_PARAMETER;
+
if (!CsrValidateMessageBuffer(ApiMessage,
(PVOID*)&GetInputRequest->InputRecord,
GetInputRequest->Length,
InputInfo.HandleEntry = HandleEntry;
InputInfo.InputBuffer = InputBuffer;
- Status = ReadInputBuffer(&InputInfo,
- GetInputRequest->bRead,
- ApiMessage,
- TRUE);
+ Status = ReadInputBuffer(&InputInfo, ApiMessage, TRUE);
ConSrvReleaseInputBuffer(InputBuffer, TRUE);
ConDrvWriteConsoleInput(IN PCONSOLE Console,
IN PCONSOLE_INPUT_BUFFER InputBuffer,
IN BOOLEAN Unicode,
+ IN BOOLEAN AppendToEnd,
IN PINPUT_RECORD InputRecord,
IN ULONG NumEventsToWrite,
OUT PULONG NumEventsWritten OPTIONAL);
Status = ConDrvWriteConsoleInput(InputBuffer->Header.Console,
InputBuffer,
WriteInputRequest->Unicode,
+ WriteInputRequest->AppendToEnd,
WriteInputRequest->InputRecord,
WriteInputRequest->Length,
&NumEventsWritten);