/* INCLUDES *******************************************************************/
#include "consrv.h"
+#include "console.h"
+#include "include/conio.h"
#include "conio.h"
#define NDEBUG
return NULL;
}
-VOID FASTCALL
+static VOID
HistoryDeleteBuffer(PHISTORY_BUFFER Hist)
{
if (!Hist) return;
RtlFreeHeap(ConSrvHeap, 0, Hist);
}
+VOID FASTCALL
+HistoryDeleteBuffers(PCONSOLE Console)
+{
+ PLIST_ENTRY CurrentEntry;
+ PHISTORY_BUFFER HistoryBuffer;
+
+ while (!IsListEmpty(&Console->HistoryBuffers))
+ {
+ CurrentEntry = RemoveHeadList(&Console->HistoryBuffers);
+ HistoryBuffer = CONTAINING_RECORD(CurrentEntry, HISTORY_BUFFER, ListEntry);
+ HistoryDeleteBuffer(HistoryBuffer);
+ }
+}
+
static VOID
LineInputSetPos(PCONSOLE Console, UINT Pos)
{
/* PUBLIC SERVER APIS *********************************************************/
-CSR_API(SrvGetConsoleCommandHistoryLength)
-{
- PCONSOLE_GETCOMMANDHISTORYLENGTH GetCommandHistoryLengthRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetCommandHistoryLengthRequest;
- PCONSOLE_PROCESS_DATA ProcessData = ConsoleGetPerProcessData(CsrGetClientThread()->Process);
- PCONSOLE Console;
- NTSTATUS Status;
- PHISTORY_BUFFER Hist;
- ULONG Length = 0;
- INT i;
-
- if (!CsrValidateMessageBuffer(ApiMessage,
- (PVOID*)&GetCommandHistoryLengthRequest->ExeName.Buffer,
- GetCommandHistoryLengthRequest->ExeName.Length,
- sizeof(BYTE)))
- {
- return STATUS_INVALID_PARAMETER;
- }
-
- Status = ConSrvGetConsole(ProcessData, &Console, TRUE);
- if (NT_SUCCESS(Status))
- {
- Hist = HistoryFindBuffer(Console, &GetCommandHistoryLengthRequest->ExeName);
- if (Hist)
- {
- for (i = 0; i < Hist->NumEntries; i++)
- Length += Hist->Entries[i].Length + sizeof(WCHAR);
- }
- GetCommandHistoryLengthRequest->Length = Length;
- ConSrvReleaseConsole(Console, TRUE);
- }
- return Status;
-}
-
CSR_API(SrvGetConsoleCommandHistory)
{
PCONSOLE_GETCOMMANDHISTORY GetCommandHistoryRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetCommandHistoryRequest;
return Status;
}
+CSR_API(SrvGetConsoleCommandHistoryLength)
+{
+ PCONSOLE_GETCOMMANDHISTORYLENGTH GetCommandHistoryLengthRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetCommandHistoryLengthRequest;
+ PCONSOLE_PROCESS_DATA ProcessData = ConsoleGetPerProcessData(CsrGetClientThread()->Process);
+ PCONSOLE Console;
+ NTSTATUS Status;
+ PHISTORY_BUFFER Hist;
+ ULONG Length = 0;
+ INT i;
+
+ if (!CsrValidateMessageBuffer(ApiMessage,
+ (PVOID*)&GetCommandHistoryLengthRequest->ExeName.Buffer,
+ GetCommandHistoryLengthRequest->ExeName.Length,
+ sizeof(BYTE)))
+ {
+ return STATUS_INVALID_PARAMETER;
+ }
+
+ Status = ConSrvGetConsole(ProcessData, &Console, TRUE);
+ if (NT_SUCCESS(Status))
+ {
+ Hist = HistoryFindBuffer(Console, &GetCommandHistoryLengthRequest->ExeName);
+ if (Hist)
+ {
+ for (i = 0; i < Hist->NumEntries; i++)
+ Length += Hist->Entries[i].Length + sizeof(WCHAR);
+ }
+ GetCommandHistoryLengthRequest->Length = Length;
+ ConSrvReleaseConsole(Console, TRUE);
+ }
+ return Status;
+}
+
CSR_API(SrvExpungeConsoleCommandHistory)
{
PCONSOLE_EXPUNGECOMMANDHISTORY ExpungeCommandHistoryRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.ExpungeCommandHistoryRequest;