[CONSRV]: Still some code refactoring....

svn path=/branches/condrv_restructure/; revision=63874
This commit is contained in:
Hermès Bélusca-Maïto 2014-08-12 14:59:13 +00:00
parent d9e86f8a78
commit 73cdd53b1d
4 changed files with 40 additions and 38 deletions

View file

@ -26,7 +26,7 @@ NTSTATUS NTAPI RtlGetLastNtStatus(VOID);
/* GLOBALS ********************************************************************/ /* GLOBALS ********************************************************************/
static ULONG ConsoleListSize; static ULONG ConsoleListSize;
static PCONSOLE* ConsoleList; /* The list of the ConSrv consoles */ static PCONSRV_CONSOLE* ConsoleList; /* The list of the ConSrv consoles */
static RTL_RESOURCE ListLock; static RTL_RESOURCE ListLock;
#define ConSrvLockConsoleListExclusive() \ #define ConSrvLockConsoleListExclusive() \
@ -41,13 +41,13 @@ static RTL_RESOURCE ListLock;
static NTSTATUS static NTSTATUS
InsertConsole(OUT PHANDLE Handle, InsertConsole(OUT PHANDLE Handle,
IN PCONSOLE Console) IN PCONSRV_CONSOLE Console)
{ {
#define CONSOLE_HANDLES_INCREMENT 2 * 3 #define CONSOLE_HANDLES_INCREMENT 2 * 3
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
ULONG i = 0; ULONG i = 0;
PCONSOLE* Block; PCONSRV_CONSOLE* Block;
ASSERT( (ConsoleList == NULL && ConsoleListSize == 0) || ASSERT( (ConsoleList == NULL && ConsoleListSize == 0) ||
(ConsoleList != NULL && ConsoleListSize != 0) ); (ConsoleList != NULL && ConsoleListSize != 0) );
@ -70,7 +70,7 @@ InsertConsole(OUT PHANDLE Handle,
/* Allocate a new handles table */ /* Allocate a new handles table */
Block = ConsoleAllocHeap(HEAP_ZERO_MEMORY, Block = ConsoleAllocHeap(HEAP_ZERO_MEMORY,
(ConsoleListSize + (ConsoleListSize +
CONSOLE_HANDLES_INCREMENT) * sizeof(PCONSOLE)); CONSOLE_HANDLES_INCREMENT) * sizeof(PCONSRV_CONSOLE));
if (Block == NULL) if (Block == NULL)
{ {
Status = STATUS_UNSUCCESSFUL; Status = STATUS_UNSUCCESSFUL;
@ -83,7 +83,7 @@ InsertConsole(OUT PHANDLE Handle,
/* Copy the handles from the old table to the new one */ /* Copy the handles from the old table to the new one */
RtlCopyMemory(Block, RtlCopyMemory(Block,
ConsoleList, ConsoleList,
ConsoleListSize * sizeof(PCONSOLE)); ConsoleListSize * sizeof(PCONSRV_CONSOLE));
ConsoleFreeHeap(ConsoleList); ConsoleFreeHeap(ConsoleList);
} }
ConsoleList = Block; ConsoleList = Block;
@ -105,7 +105,7 @@ static NTSTATUS
RemoveConsoleByHandle(IN HANDLE Handle) RemoveConsoleByHandle(IN HANDLE Handle)
{ {
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
PCONSOLE Console; PCONSRV_CONSOLE Console;
BOOLEAN ValidHandle = ((HandleToULong(Handle) & 0x3) == 0x3); BOOLEAN ValidHandle = ((HandleToULong(Handle) & 0x3) == 0x3);
ULONG Index = HandleToULong(Handle) >> 2; ULONG Index = HandleToULong(Handle) >> 2;
@ -135,7 +135,7 @@ Quit:
#endif #endif
static NTSTATUS static NTSTATUS
RemoveConsoleByPointer(IN PCONSOLE Console) RemoveConsoleByPointer(IN PCONSRV_CONSOLE Console)
{ {
ULONG i = 0; ULONG i = 0;
@ -162,13 +162,13 @@ RemoveConsoleByPointer(IN PCONSOLE Console)
} }
BOOLEAN NTAPI BOOLEAN NTAPI
ConSrvValidateConsole(OUT PCONSOLE* Console, ConSrvValidateConsole(OUT PCONSRV_CONSOLE* Console,
IN HANDLE ConsoleHandle, IN HANDLE ConsoleHandle,
IN CONSOLE_STATE ExpectedState, IN CONSOLE_STATE ExpectedState,
IN BOOLEAN LockConsole) IN BOOLEAN LockConsole)
{ {
BOOLEAN RetVal = FALSE; BOOLEAN RetVal = FALSE;
PCONSOLE ValidatedConsole; PCONSRV_CONSOLE ValidatedConsole;
BOOLEAN ValidHandle = ((HandleToULong(ConsoleHandle) & 0x3) == 0x3); BOOLEAN ValidHandle = ((HandleToULong(ConsoleHandle) & 0x3) == 0x3);
ULONG Index = HandleToULong(ConsoleHandle) >> 2; ULONG Index = HandleToULong(ConsoleHandle) >> 2;
@ -239,11 +239,11 @@ ConioUnpause(PCONSRV_CONSOLE Console, UINT Flags)
NTSTATUS NTSTATUS
ConSrvGetConsole(IN PCONSOLE_PROCESS_DATA ProcessData, ConSrvGetConsole(IN PCONSOLE_PROCESS_DATA ProcessData,
OUT PCONSOLE* Console, OUT PCONSRV_CONSOLE* Console,
IN BOOLEAN LockConsole) IN BOOLEAN LockConsole)
{ {
NTSTATUS Status = STATUS_INVALID_HANDLE; NTSTATUS Status = STATUS_INVALID_HANDLE;
PCONSOLE GrabConsole; PCONSRV_CONSOLE GrabConsole;
// if (Console == NULL) return STATUS_INVALID_PARAMETER; // if (Console == NULL) return STATUS_INVALID_PARAMETER;
ASSERT(Console); ASSERT(Console);
@ -266,7 +266,7 @@ ConSrvGetConsole(IN PCONSOLE_PROCESS_DATA ProcessData,
} }
VOID VOID
ConSrvReleaseConsole(IN PCONSOLE Console, ConSrvReleaseConsole(IN PCONSRV_CONSOLE Console,
IN BOOLEAN WasConsoleLocked) IN BOOLEAN WasConsoleLocked)
{ {
LONG RefCount = 0; LONG RefCount = 0;
@ -319,13 +319,13 @@ ConSrvDeinitTerminal(IN OUT PTERMINAL Terminal);
NTSTATUS NTAPI NTSTATUS NTAPI
ConSrvInitConsole(OUT PHANDLE NewConsoleHandle, ConSrvInitConsole(OUT PHANDLE NewConsoleHandle,
OUT PCONSOLE* NewConsole, OUT PCONSRV_CONSOLE* NewConsole,
IN OUT PCONSOLE_START_INFO ConsoleStartInfo, IN OUT PCONSOLE_START_INFO ConsoleStartInfo,
IN ULONG ConsoleLeaderProcessId) IN ULONG ConsoleLeaderProcessId)
{ {
NTSTATUS Status; NTSTATUS Status;
HANDLE ConsoleHandle; HANDLE ConsoleHandle;
PCONSOLE Console; PCONSRV_CONSOLE Console;
CONSOLE_INFO ConsoleInfo; CONSOLE_INFO ConsoleInfo;
SIZE_T Length = 0; SIZE_T Length = 0;
@ -453,7 +453,7 @@ ConSrvInitConsole(OUT PHANDLE NewConsoleHandle,
} }
VOID NTAPI VOID NTAPI
ConSrvDeleteConsole(PCONSOLE Console) ConSrvDeleteConsole(PCONSRV_CONSOLE Console)
{ {
DPRINT("ConSrvDeleteConsole\n"); DPRINT("ConSrvDeleteConsole\n");
@ -541,7 +541,7 @@ ConSrvGetConsoleLeaderProcess(IN PCONSRV_CONSOLE Console)
} }
NTSTATUS NTAPI NTSTATUS NTAPI
ConSrvGetConsoleProcessList(IN PCONSOLE Console, ConSrvGetConsoleProcessList(IN PCONSRV_CONSOLE Console,
IN OUT PULONG ProcessIdsList, IN OUT PULONG ProcessIdsList,
IN ULONG MaxIdListItems, IN ULONG MaxIdListItems,
OUT PULONG ProcessIdsTotal) OUT PULONG ProcessIdsTotal)
@ -798,7 +798,7 @@ CSR_API(SrvGetConsoleTitle)
{ {
NTSTATUS Status; NTSTATUS Status;
PCONSOLE_GETSETCONSOLETITLE TitleRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.TitleRequest; PCONSOLE_GETSETCONSOLETITLE TitleRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.TitleRequest;
PCONSOLE Console; PCONSRV_CONSOLE Console;
if (!CsrValidateMessageBuffer(ApiMessage, if (!CsrValidateMessageBuffer(ApiMessage,
(PVOID)&TitleRequest->Title, (PVOID)&TitleRequest->Title,
@ -833,7 +833,7 @@ CSR_API(SrvSetConsoleTitle)
{ {
NTSTATUS Status; NTSTATUS Status;
PCONSOLE_GETSETCONSOLETITLE TitleRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.TitleRequest; PCONSOLE_GETSETCONSOLETITLE TitleRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.TitleRequest;
PCONSOLE Console; PCONSRV_CONSOLE Console;
if (!CsrValidateMessageBuffer(ApiMessage, if (!CsrValidateMessageBuffer(ApiMessage,
(PVOID)&TitleRequest->Title, (PVOID)&TitleRequest->Title,
@ -868,7 +868,7 @@ CSR_API(SrvGetConsoleCP)
{ {
NTSTATUS Status; NTSTATUS Status;
PCONSOLE_GETINPUTOUTPUTCP GetConsoleCPRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetConsoleCPRequest; PCONSOLE_GETINPUTOUTPUTCP GetConsoleCPRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetConsoleCPRequest;
PCONSOLE Console; PCONSRV_CONSOLE Console;
DPRINT("SrvGetConsoleCP, getting %s Code Page\n", DPRINT("SrvGetConsoleCP, getting %s Code Page\n",
GetConsoleCPRequest->OutputCP ? "Output" : "Input"); GetConsoleCPRequest->OutputCP ? "Output" : "Input");
@ -892,7 +892,7 @@ CSR_API(SrvSetConsoleCP)
{ {
NTSTATUS Status = STATUS_INVALID_PARAMETER; NTSTATUS Status = STATUS_INVALID_PARAMETER;
PCONSOLE_SETINPUTOUTPUTCP SetConsoleCPRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.SetConsoleCPRequest; PCONSOLE_SETINPUTOUTPUTCP SetConsoleCPRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.SetConsoleCPRequest;
PCONSOLE Console; PCONSRV_CONSOLE Console;
DPRINT("SrvSetConsoleCP, setting %s Code Page\n", DPRINT("SrvSetConsoleCP, setting %s Code Page\n",
SetConsoleCPRequest->OutputCP ? "Output" : "Input"); SetConsoleCPRequest->OutputCP ? "Output" : "Input");
@ -912,7 +912,7 @@ CSR_API(SrvGetConsoleProcessList)
{ {
NTSTATUS Status; NTSTATUS Status;
PCONSOLE_GETPROCESSLIST GetProcessListRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetProcessListRequest; PCONSOLE_GETPROCESSLIST GetProcessListRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetProcessListRequest;
PCONSOLE Console; PCONSRV_CONSOLE Console;
if (!CsrValidateMessageBuffer(ApiMessage, if (!CsrValidateMessageBuffer(ApiMessage,
(PVOID)&GetProcessListRequest->ProcessIdsList, (PVOID)&GetProcessListRequest->ProcessIdsList,
@ -938,7 +938,7 @@ CSR_API(SrvGenerateConsoleCtrlEvent)
{ {
NTSTATUS Status; NTSTATUS Status;
PCONSOLE_GENERATECTRLEVENT GenerateCtrlEventRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GenerateCtrlEventRequest; PCONSOLE_GENERATECTRLEVENT GenerateCtrlEventRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GenerateCtrlEventRequest;
PCONSOLE Console; PCONSRV_CONSOLE Console;
Status = ConSrvGetConsole(ConsoleGetPerProcessData(CsrGetClientThread()->Process), &Console, TRUE); Status = ConSrvGetConsole(ConsoleGetPerProcessData(CsrGetClientThread()->Process), &Console, TRUE);
if (!NT_SUCCESS(Status)) return Status; if (!NT_SUCCESS(Status)) return Status;
@ -955,7 +955,7 @@ CSR_API(SrvConsoleNotifyLastClose)
{ {
NTSTATUS Status; NTSTATUS Status;
PCONSOLE_PROCESS_DATA ProcessData = ConsoleGetPerProcessData(CsrGetClientThread()->Process); PCONSOLE_PROCESS_DATA ProcessData = ConsoleGetPerProcessData(CsrGetClientThread()->Process);
PCONSOLE Console; PCONSRV_CONSOLE Console;
Status = ConSrvGetConsole(ProcessData, &Console, TRUE); Status = ConSrvGetConsole(ProcessData, &Console, TRUE);
if (!NT_SUCCESS(Status)) return Status; if (!NT_SUCCESS(Status)) return Status;
@ -982,7 +982,7 @@ CSR_API(SrvGetConsoleMouseInfo)
{ {
NTSTATUS Status; NTSTATUS Status;
PCONSOLE_GETMOUSEINFO GetMouseInfoRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetMouseInfoRequest; PCONSOLE_GETMOUSEINFO GetMouseInfoRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetMouseInfoRequest;
PCONSOLE Console; PCONSRV_CONSOLE Console;
Status = ConSrvGetConsole(ConsoleGetPerProcessData(CsrGetClientThread()->Process), &Console, TRUE); Status = ConSrvGetConsole(ConsoleGetPerProcessData(CsrGetClientThread()->Process), &Console, TRUE);
if (!NT_SUCCESS(Status)) return Status; if (!NT_SUCCESS(Status)) return Status;
@ -1004,7 +1004,7 @@ CSR_API(SrvGetConsoleKeyboardLayoutName)
{ {
NTSTATUS Status; NTSTATUS Status;
PCONSOLE_GETKBDLAYOUTNAME GetKbdLayoutNameRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetKbdLayoutNameRequest; PCONSOLE_GETKBDLAYOUTNAME GetKbdLayoutNameRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetKbdLayoutNameRequest;
PCONSOLE Console; PCONSRV_CONSOLE Console;
Status = ConSrvGetConsole(ConsoleGetPerProcessData(CsrGetClientThread()->Process), &Console, TRUE); Status = ConSrvGetConsole(ConsoleGetPerProcessData(CsrGetClientThread()->Process), &Console, TRUE);
if (!NT_SUCCESS(Status)) return Status; if (!NT_SUCCESS(Status)) return Status;

View file

@ -482,7 +482,7 @@ ConSrvAllocateConsole(PCONSOLE_PROCESS_DATA ProcessData,
{ {
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
HANDLE ConsoleHandle; HANDLE ConsoleHandle;
PCONSOLE Console; PCONSRV_CONSOLE Console;
/* /*
* We are about to create a new console. However when ConSrvNewProcess * We are about to create a new console. However when ConSrvNewProcess

View file

@ -12,21 +12,11 @@
#include "rect.h" #include "rect.h"
#define CSR_DEFAULT_CURSOR_SIZE 25
/* Default attributes */ /* Default attributes */
#define DEFAULT_SCREEN_ATTRIB (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED) #define DEFAULT_SCREEN_ATTRIB (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED)
#define DEFAULT_POPUP_ATTRIB (FOREGROUND_BLUE | FOREGROUND_RED | \ #define DEFAULT_POPUP_ATTRIB (FOREGROUND_BLUE | FOREGROUND_RED | \
BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED | BACKGROUND_INTENSITY) BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED | BACKGROUND_INTENSITY)
/* VGA character cell */
typedef struct _CHAR_CELL
{
CHAR Char;
BYTE Attributes;
} CHAR_CELL, *PCHAR_CELL;
C_ASSERT(sizeof(CHAR_CELL) == 2);
/* Object type magic numbers */ /* Object type magic numbers */
typedef enum _CONSOLE_IO_OBJECT_TYPE typedef enum _CONSOLE_IO_OBJECT_TYPE
@ -323,8 +313,6 @@ typedef struct _CONSOLE
} CONSOLE; // , *PCONSOLE; } CONSOLE; // , *PCONSOLE;
// #include "conio_winsrv.h"
/* console.c */ /* console.c */
VOID NTAPI VOID NTAPI
ConDrvPause(PCONSOLE Console); ConDrvPause(PCONSOLE Console);

View file

@ -18,9 +18,22 @@
#define CONSRV_CONSOLE CONSOLE #define CONSRV_CONSOLE CONSOLE
#define PCONSRV_CONSOLE PCONSOLE #define PCONSRV_CONSOLE PCONSOLE
// #define _CONSRV_CONSOLE _WINSRV_CONSOLE
// #define CONSRV_CONSOLE WINSRV_CONSOLE
// #define PCONSRV_CONSOLE PWINSRV_CONSOLE
#define CSR_DEFAULT_CURSOR_SIZE 25 #define CSR_DEFAULT_CURSOR_SIZE 25
/* VGA character cell */
typedef struct _CHAR_CELL
{
CHAR Char;
BYTE Attributes;
} CHAR_CELL, *PCHAR_CELL;
C_ASSERT(sizeof(CHAR_CELL) == 2);
typedef struct _FRONTEND FRONTEND, *PFRONTEND; typedef struct _FRONTEND FRONTEND, *PFRONTEND;
/* HACK: */ typedef struct _CONSOLE_INFO *PCONSOLE_INFO; /* HACK: */ typedef struct _CONSOLE_INFO *PCONSOLE_INFO;
typedef struct _FRONTEND_VTBL typedef struct _FRONTEND_VTBL
@ -105,6 +118,7 @@ typedef struct _WINSRV_CONSOLE
/******************************* Console Set-up *******************************/ /******************************* Console Set-up *******************************/
/* This **MUST** be FIRST!! */ /* This **MUST** be FIRST!! */
// CONSOLE; // CONSOLE;
// PCONSOLE Console;
// LONG ReferenceCount; /* Is incremented each time a handle to something in the console (a screen-buffer or the input buffer of this console) gets referenced */ // LONG ReferenceCount; /* Is incremented each time a handle to something in the console (a screen-buffer or the input buffer of this console) gets referenced */
// CRITICAL_SECTION Lock; // CRITICAL_SECTION Lock;