mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 21:53:06 +00:00
[KERNEL32]
- Make some functions compliant with the new structures and server apis indices names. [KERNEL32/CONSRV] - Merge CSRSS_SET_CONSOLE_MODE and CSRSS_GET_CONSOLE_MODE into CSRSS_CONSOLE_MODE. - Rename CSRSS_SETGET_CONSOLE_HW_STATE into CSRSS_CONSOLE_HW_STATE. svn path=/branches/ros-csrss/; revision=57724
This commit is contained in:
parent
dab294603f
commit
56190eec33
3 changed files with 93 additions and 126 deletions
|
@ -202,33 +202,34 @@ DuplicateConsoleHandle(HANDLE hConsole,
|
||||||
BOOL bInheritHandle,
|
BOOL bInheritHandle,
|
||||||
DWORD dwOptions)
|
DWORD dwOptions)
|
||||||
{
|
{
|
||||||
CSR_API_MESSAGE Request;
|
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
PCSRSS_DUPLICATE_HANDLE DuplicateHandleRequest = &ApiMessage.Data.DuplicateHandleRequest;
|
||||||
|
|
||||||
if (dwOptions & ~(DUPLICATE_CLOSE_SOURCE | DUPLICATE_SAME_ACCESS)
|
if ( (dwOptions & ~(DUPLICATE_CLOSE_SOURCE | DUPLICATE_SAME_ACCESS)) ||
|
||||||
|| (!(dwOptions & DUPLICATE_SAME_ACCESS)
|
(!(dwOptions & DUPLICATE_SAME_ACCESS) &&
|
||||||
&& dwDesiredAccess & ~(GENERIC_READ | GENERIC_WRITE)))
|
(dwDesiredAccess & ~(GENERIC_READ | GENERIC_WRITE))) )
|
||||||
{
|
{
|
||||||
SetLastError (ERROR_INVALID_PARAMETER);
|
SetLastError (ERROR_INVALID_PARAMETER);
|
||||||
return INVALID_HANDLE_VALUE;
|
return INVALID_HANDLE_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Request.Data.DuplicateHandleRequest.Handle = hConsole;
|
DuplicateHandleRequest->Handle = hConsole;
|
||||||
Request.Data.DuplicateHandleRequest.Access = dwDesiredAccess;
|
DuplicateHandleRequest->Access = dwDesiredAccess;
|
||||||
Request.Data.DuplicateHandleRequest.Inheritable = bInheritHandle;
|
DuplicateHandleRequest->Inheritable = bInheritHandle;
|
||||||
Request.Data.DuplicateHandleRequest.Options = dwOptions;
|
DuplicateHandleRequest->Options = dwOptions;
|
||||||
|
|
||||||
Status = CsrClientCallServer(&Request,
|
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||||
NULL,
|
NULL,
|
||||||
CSR_CREATE_API_NUMBER(CSR_NATIVE, DUPLICATE_HANDLE),
|
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepDuplicateHandle),
|
||||||
sizeof(CSR_API_MESSAGE));
|
sizeof(CSRSS_DUPLICATE_HANDLE));
|
||||||
if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status=Request.Status))
|
if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = ApiMessage.Status))
|
||||||
{
|
{
|
||||||
BaseSetLastNTError(Status);
|
BaseSetLastNTError(Status);
|
||||||
return INVALID_HANDLE_VALUE;
|
return INVALID_HANDLE_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Request.Data.DuplicateHandleRequest.Handle;
|
return DuplicateHandleRequest->Handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -292,23 +293,23 @@ GetConsoleHardwareState(HANDLE hConsole,
|
||||||
DWORD Flags,
|
DWORD Flags,
|
||||||
PDWORD State)
|
PDWORD State)
|
||||||
{
|
{
|
||||||
CSR_API_MESSAGE Request;
|
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
PCSRSS_CONSOLE_HW_STATE ConsoleHardwareStateRequest = &ApiMessage.Data.ConsoleHardwareStateRequest;
|
||||||
|
|
||||||
Request.Data.ConsoleHardwareStateRequest.ConsoleHandle = hConsole;
|
ConsoleHardwareStateRequest->ConsoleHandle = hConsole;
|
||||||
Request.Data.ConsoleHardwareStateRequest.SetGet = CONSOLE_HARDWARE_STATE_GET;
|
|
||||||
|
|
||||||
Status = CsrClientCallServer(&Request,
|
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||||
NULL,
|
NULL,
|
||||||
CSR_CREATE_API_NUMBER(CSR_CONSOLE, SETGET_CONSOLE_HW_STATE),
|
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepGetHardwareState),
|
||||||
sizeof(CSR_API_MESSAGE));
|
sizeof(CSRSS_CONSOLE_HW_STATE));
|
||||||
if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
|
if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = ApiMessage.Status))
|
||||||
{
|
{
|
||||||
BaseSetLastNTError(Status);
|
BaseSetLastNTError(Status);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
*State = Request.Data.ConsoleHardwareStateRequest.State;
|
*State = ConsoleHardwareStateRequest->State;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -498,18 +499,18 @@ SetConsoleHardwareState(HANDLE hConsole,
|
||||||
DWORD Flags,
|
DWORD Flags,
|
||||||
DWORD State)
|
DWORD State)
|
||||||
{
|
{
|
||||||
CSR_API_MESSAGE Request;
|
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
PCSRSS_CONSOLE_HW_STATE ConsoleHardwareStateRequest = &ApiMessage.Data.ConsoleHardwareStateRequest;
|
||||||
|
|
||||||
Request.Data.ConsoleHardwareStateRequest.ConsoleHandle = hConsole;
|
ConsoleHardwareStateRequest->ConsoleHandle = hConsole;
|
||||||
Request.Data.ConsoleHardwareStateRequest.SetGet = CONSOLE_HARDWARE_STATE_SET;
|
ConsoleHardwareStateRequest->State = State;
|
||||||
Request.Data.ConsoleHardwareStateRequest.State = State;
|
|
||||||
|
|
||||||
Status = CsrClientCallServer(&Request,
|
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||||
NULL,
|
NULL,
|
||||||
CSR_CREATE_API_NUMBER(CSR_CONSOLE, SETGET_CONSOLE_HW_STATE),
|
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepSetHardwareState),
|
||||||
sizeof(CSR_API_MESSAGE));
|
sizeof(CSRSS_CONSOLE_HW_STATE));
|
||||||
if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
|
if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = ApiMessage.Status))
|
||||||
{
|
{
|
||||||
BaseSetLastNTError(Status);
|
BaseSetLastNTError(Status);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -910,22 +911,23 @@ WINAPI
|
||||||
GetConsoleMode(HANDLE hConsoleHandle,
|
GetConsoleMode(HANDLE hConsoleHandle,
|
||||||
LPDWORD lpMode)
|
LPDWORD lpMode)
|
||||||
{
|
{
|
||||||
CSR_API_MESSAGE Request;
|
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
PCSRSS_CONSOLE_MODE ConsoleModeRequest = &ApiMessage.Data.ConsoleModeRequest;
|
||||||
|
|
||||||
Request.Data.GetConsoleModeRequest.ConsoleHandle = hConsoleHandle;
|
ConsoleModeRequest->ConsoleHandle = hConsoleHandle;
|
||||||
|
|
||||||
Status = CsrClientCallServer(&Request,
|
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||||
NULL,
|
NULL,
|
||||||
CSR_CREATE_API_NUMBER(CSR_CONSOLE, GET_CONSOLE_MODE),
|
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepGetMode),
|
||||||
sizeof(CSR_API_MESSAGE));
|
sizeof(CSRSS_CONSOLE_MODE));
|
||||||
if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
|
if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = ApiMessage.Status))
|
||||||
{
|
{
|
||||||
BaseSetLastNTError(Status);
|
BaseSetLastNTError(Status);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
*lpMode = Request.Data.GetConsoleModeRequest.ConsoleMode;
|
*lpMode = ConsoleModeRequest->ConsoleMode;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1050,17 +1052,18 @@ WINAPI
|
||||||
SetConsoleMode(HANDLE hConsoleHandle,
|
SetConsoleMode(HANDLE hConsoleHandle,
|
||||||
DWORD dwMode)
|
DWORD dwMode)
|
||||||
{
|
{
|
||||||
CSR_API_MESSAGE Request;
|
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
|
PCSRSS_CONSOLE_MODE ConsoleModeRequest = &ApiMessage.Data.ConsoleModeRequest;
|
||||||
|
|
||||||
Request.Data.SetConsoleModeRequest.ConsoleHandle = hConsoleHandle;
|
ConsoleModeRequest->ConsoleHandle = hConsoleHandle;
|
||||||
Request.Data.SetConsoleModeRequest.Mode = dwMode;
|
ConsoleModeRequest->ConsoleMode = dwMode;
|
||||||
|
|
||||||
Status = CsrClientCallServer(&Request,
|
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||||
NULL,
|
NULL,
|
||||||
CSR_CREATE_API_NUMBER(CSR_CONSOLE, SET_CONSOLE_MODE),
|
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepSetMode),
|
||||||
sizeof(CSR_API_MESSAGE));
|
sizeof(CSRSS_CONSOLE_MODE));
|
||||||
if(!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status))
|
if(!NT_SUCCESS(Status) || !NT_SUCCESS(Status = ApiMessage.Status))
|
||||||
{
|
{
|
||||||
BaseSetLastNTError(Status);
|
BaseSetLastNTError(Status);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
|
@ -52,7 +52,7 @@ typedef enum _CONSRV_API_NUMBER
|
||||||
ConsolepReadConsole,
|
ConsolepReadConsole,
|
||||||
ConsolepWriteConsole,
|
ConsolepWriteConsole,
|
||||||
ConsolepDuplicateHandle,
|
ConsolepDuplicateHandle,
|
||||||
/**/ ConsolepGetHandleInformation /**/,
|
// ConsolepGetHandleInformation,
|
||||||
// ConsolepSetHandleInformation,
|
// ConsolepSetHandleInformation,
|
||||||
ConsolepCloseHandle,
|
ConsolepCloseHandle,
|
||||||
ConsolepVerifyIoHandle,
|
ConsolepVerifyIoHandle,
|
||||||
|
@ -243,17 +243,11 @@ typedef struct
|
||||||
WORD Attrib;
|
WORD Attrib;
|
||||||
} CSRSS_SET_ATTRIB, *PCSRSS_SET_ATTRIB;
|
} CSRSS_SET_ATTRIB, *PCSRSS_SET_ATTRIB;
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
HANDLE ConsoleHandle;
|
|
||||||
DWORD Mode;
|
|
||||||
} CSRSS_SET_CONSOLE_MODE, *PCSRSS_SET_CONSOLE_MODE;
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
HANDLE ConsoleHandle;
|
HANDLE ConsoleHandle;
|
||||||
DWORD ConsoleMode;
|
DWORD ConsoleMode;
|
||||||
} CSRSS_GET_CONSOLE_MODE, *PCSRSS_GET_CONSOLE_MODE;
|
} CSRSS_CONSOLE_MODE, *PCSRSS_CONSOLE_MODE;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
@ -415,18 +409,18 @@ typedef struct
|
||||||
HANDLE InputWaitHandle;
|
HANDLE InputWaitHandle;
|
||||||
} CSRSS_GET_INPUT_WAIT_HANDLE, *PCSRSS_GET_INPUT_WAIT_HANDLE;
|
} CSRSS_GET_INPUT_WAIT_HANDLE, *PCSRSS_GET_INPUT_WAIT_HANDLE;
|
||||||
|
|
||||||
#define CONSOLE_HARDWARE_STATE_GET 0
|
|
||||||
#define CONSOLE_HARDWARE_STATE_SET 1
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Console hardware states.
|
||||||
|
*/
|
||||||
#define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
|
#define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
|
||||||
#define CONSOLE_HARDWARE_STATE_DIRECT 1
|
#define CONSOLE_HARDWARE_STATE_DIRECT 1
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
HANDLE ConsoleHandle;
|
HANDLE ConsoleHandle;
|
||||||
DWORD SetGet; /* 0=get; 1=set */
|
|
||||||
DWORD State;
|
DWORD State;
|
||||||
} CSRSS_SETGET_CONSOLE_HW_STATE, *PCSRSS_SETGET_CONSOLE_HW_STATE;
|
} CSRSS_CONSOLE_HW_STATE, *PCSRSS_CONSOLE_HW_STATE;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
@ -607,9 +601,8 @@ typedef struct _CONSOLE_API_MESSAGE
|
||||||
CSRSS_GET_CONSOLE_SELECTION_INFO GetConsoleSelectionInfo;
|
CSRSS_GET_CONSOLE_SELECTION_INFO GetConsoleSelectionInfo;
|
||||||
|
|
||||||
/* Console mode */
|
/* Console mode */
|
||||||
CSRSS_SET_CONSOLE_MODE SetConsoleModeRequest;
|
CSRSS_CONSOLE_MODE ConsoleModeRequest;
|
||||||
CSRSS_GET_CONSOLE_MODE GetConsoleModeRequest;
|
CSRSS_CONSOLE_HW_STATE ConsoleHardwareStateRequest;
|
||||||
CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest;
|
|
||||||
|
|
||||||
/* Console window */
|
/* Console window */
|
||||||
CSRSS_SET_TITLE SetTitleRequest;
|
CSRSS_SET_TITLE SetTitleRequest;
|
||||||
|
|
|
@ -463,28 +463,26 @@ ConioUnpause(PCSRSS_CONSOLE Console, UINT Flags)
|
||||||
CSR_API(SrvSetConsoleMode)
|
CSR_API(SrvSetConsoleMode)
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PCSRSS_SET_CONSOLE_MODE SetConsoleModeRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.SetConsoleModeRequest;
|
PCSRSS_CONSOLE_MODE ConsoleModeRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.ConsoleModeRequest;
|
||||||
PCSRSS_CONSOLE Console;
|
PCSRSS_CONSOLE Console;
|
||||||
PCSRSS_SCREEN_BUFFER Buff;
|
PCSRSS_SCREEN_BUFFER Buff;
|
||||||
|
|
||||||
DPRINT("SrvSetConsoleMode\n");
|
DPRINT("SrvSetConsoleMode\n");
|
||||||
|
|
||||||
Status = Win32CsrLockObject(CsrGetClientThread()->Process,
|
Status = Win32CsrLockObject(ConsoleGetPerProcessData(CsrGetClientThread()->Process),
|
||||||
SetConsoleModeRequest->ConsoleHandle,
|
ConsoleModeRequest->ConsoleHandle,
|
||||||
(Object_t **) &Console, GENERIC_WRITE, 0);
|
(Object_t **) &Console, GENERIC_WRITE, 0);
|
||||||
if (! NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status)) return Status;
|
||||||
{
|
|
||||||
return Status;
|
|
||||||
}
|
|
||||||
|
|
||||||
Buff = (PCSRSS_SCREEN_BUFFER)Console;
|
Buff = (PCSRSS_SCREEN_BUFFER)Console;
|
||||||
|
|
||||||
if (CONIO_CONSOLE_MAGIC == Console->Header.Type)
|
if (CONIO_CONSOLE_MAGIC == Console->Header.Type)
|
||||||
{
|
{
|
||||||
Console->Mode = SetConsoleModeRequest->Mode & CONSOLE_INPUT_MODE_VALID;
|
Console->Mode = ConsoleModeRequest->ConsoleMode & CONSOLE_INPUT_MODE_VALID;
|
||||||
}
|
}
|
||||||
else if (CONIO_SCREEN_BUFFER_MAGIC == Console->Header.Type)
|
else if (CONIO_SCREEN_BUFFER_MAGIC == Console->Header.Type)
|
||||||
{
|
{
|
||||||
Buff->Mode = SetConsoleModeRequest->Mode & CONSOLE_OUTPUT_MODE_VALID;
|
Buff->Mode = ConsoleModeRequest->ConsoleMode & CONSOLE_OUTPUT_MODE_VALID;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -499,27 +497,27 @@ CSR_API(SrvSetConsoleMode)
|
||||||
CSR_API(SrvGetConsoleMode)
|
CSR_API(SrvGetConsoleMode)
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PCSRSS_GET_CONSOLE_MODE GetConsoleModeRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetConsoleModeRequest;
|
PCSRSS_CONSOLE_MODE ConsoleModeRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.ConsoleModeRequest;
|
||||||
PCSRSS_CONSOLE Console;
|
PCSRSS_CONSOLE Console;
|
||||||
PCSRSS_SCREEN_BUFFER Buff;
|
PCSRSS_SCREEN_BUFFER Buff;
|
||||||
|
|
||||||
DPRINT("SrvGetConsoleMode\n");
|
DPRINT("SrvGetConsoleMode\n");
|
||||||
|
|
||||||
Status = Win32CsrLockObject(CsrGetClientThread()->Process, GetConsoleModeRequest->ConsoleHandle,
|
Status = Win32CsrLockObject(ConsoleGetPerProcessData(CsrGetClientThread()->Process),
|
||||||
|
ConsoleModeRequest->ConsoleHandle,
|
||||||
(Object_t **) &Console, GENERIC_READ, 0);
|
(Object_t **) &Console, GENERIC_READ, 0);
|
||||||
if (! NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status)) return Status;
|
||||||
{
|
|
||||||
return Status;
|
|
||||||
}
|
|
||||||
Status = STATUS_SUCCESS;
|
Status = STATUS_SUCCESS;
|
||||||
Buff = (PCSRSS_SCREEN_BUFFER) Console;
|
Buff = (PCSRSS_SCREEN_BUFFER) Console;
|
||||||
|
|
||||||
if (CONIO_CONSOLE_MAGIC == Console->Header.Type)
|
if (CONIO_CONSOLE_MAGIC == Console->Header.Type)
|
||||||
{
|
{
|
||||||
GetConsoleModeRequest->ConsoleMode = Console->Mode;
|
ConsoleModeRequest->ConsoleMode = Console->Mode;
|
||||||
}
|
}
|
||||||
else if (CONIO_SCREEN_BUFFER_MAGIC == Buff->Header.Type)
|
else if (CONIO_SCREEN_BUFFER_MAGIC == Buff->Header.Type)
|
||||||
{
|
{
|
||||||
GetConsoleModeRequest->ConsoleMode = Buff->Mode;
|
ConsoleModeRequest->ConsoleMode = Buff->Mode;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -614,18 +612,18 @@ CSR_API(SrvGetConsoleTitle)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* HardwareStateProperty
|
* HardwareStateProperty
|
||||||
*
|
*
|
||||||
* DESCRIPTION
|
* DESCRIPTION
|
||||||
* Set/Get the value of the HardwareState and switch
|
* Set/Get the value of the HardwareState and switch
|
||||||
* between direct video buffer ouput and GDI windowed
|
* between direct video buffer ouput and GDI windowed
|
||||||
* output.
|
* output.
|
||||||
* ARGUMENTS
|
* ARGUMENTS
|
||||||
* Client hands us a CSRSS_CONSOLE_HARDWARE_STATE
|
* Client hands us a CSRSS_CONSOLE_HARDWARE_STATE
|
||||||
* object. We use the same object to Request.
|
* object. We use the same object to Request.
|
||||||
* NOTE
|
* NOTE
|
||||||
* ConsoleHwState has the correct size to be compatible
|
* ConsoleHwState has the correct size to be compatible
|
||||||
* with NT's, but values are not.
|
* with NT's, but values are not.
|
||||||
*/
|
*/
|
||||||
static NTSTATUS FASTCALL
|
static NTSTATUS FASTCALL
|
||||||
SetConsoleHardwareState(PCSRSS_CONSOLE Console, DWORD ConsoleHwState)
|
SetConsoleHardwareState(PCSRSS_CONSOLE Console, DWORD ConsoleHwState)
|
||||||
|
@ -650,37 +648,23 @@ SetConsoleHardwareState(PCSRSS_CONSOLE Console, DWORD ConsoleHwState)
|
||||||
|
|
||||||
CSR_API(SrvGetConsoleHardwareState)
|
CSR_API(SrvGetConsoleHardwareState)
|
||||||
{
|
{
|
||||||
PCSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.ConsoleHardwareStateRequest;
|
|
||||||
PCSRSS_CONSOLE Console;
|
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
PCSRSS_CONSOLE_HW_STATE ConsoleHardwareStateRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.ConsoleHardwareStateRequest;
|
||||||
|
PCSRSS_CONSOLE Console;
|
||||||
|
|
||||||
DPRINT("SrvGetConsoleHardwareState\n");
|
DPRINT("SrvGetConsoleHardwareState\n");
|
||||||
|
|
||||||
Status = ConioLockConsole(CsrGetClientThread()->Process,
|
Status = ConioLockConsole(ConsoleGetPerProcessData(CsrGetClientThread()->Process),
|
||||||
ConsoleHardwareStateRequest->ConsoleHandle,
|
ConsoleHardwareStateRequest->ConsoleHandle,
|
||||||
&Console,
|
&Console,
|
||||||
GENERIC_READ);
|
GENERIC_READ);
|
||||||
if (! NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1("Failed to get console handle in SetConsoleHardwareState\n");
|
DPRINT1("Failed to get console handle in SrvGetConsoleHardwareState\n");
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (ConsoleHardwareStateRequest->SetGet)
|
ConsoleHardwareStateRequest->State = Console->HardwareState;
|
||||||
{
|
|
||||||
case CONSOLE_HARDWARE_STATE_GET:
|
|
||||||
ConsoleHardwareStateRequest->State = Console->HardwareState;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CONSOLE_HARDWARE_STATE_SET:
|
|
||||||
DPRINT("Setting console hardware state.\n");
|
|
||||||
Status = SetConsoleHardwareState(Console, ConsoleHardwareStateRequest->State);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
Status = STATUS_INVALID_PARAMETER_2; /* Client: (handle, [set_get], mode) */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
ConioUnlockConsole(Console);
|
ConioUnlockConsole(Console);
|
||||||
|
|
||||||
|
@ -689,37 +673,24 @@ CSR_API(SrvGetConsoleHardwareState)
|
||||||
|
|
||||||
CSR_API(SrvSetConsoleHardwareState)
|
CSR_API(SrvSetConsoleHardwareState)
|
||||||
{
|
{
|
||||||
PCSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.ConsoleHardwareStateRequest;
|
|
||||||
PCSRSS_CONSOLE Console;
|
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
PCSRSS_CONSOLE_HW_STATE ConsoleHardwareStateRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.ConsoleHardwareStateRequest;
|
||||||
|
PCSRSS_CONSOLE Console;
|
||||||
|
|
||||||
DPRINT("SrvSetConsoleHardwareState\n");
|
DPRINT("SrvSetConsoleHardwareState\n");
|
||||||
|
|
||||||
Status = ConioLockConsole(CsrGetClientThread()->Process,
|
Status = ConioLockConsole(ConsoleGetPerProcessData(CsrGetClientThread()->Process),
|
||||||
ConsoleHardwareStateRequest->ConsoleHandle,
|
ConsoleHardwareStateRequest->ConsoleHandle,
|
||||||
&Console,
|
&Console,
|
||||||
GENERIC_READ);
|
GENERIC_READ);
|
||||||
if (! NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1("Failed to get console handle in SetConsoleHardwareState\n");
|
DPRINT1("Failed to get console handle in SrvSetConsoleHardwareState\n");
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (ConsoleHardwareStateRequest->SetGet)
|
DPRINT("Setting console hardware state.\n");
|
||||||
{
|
Status = SetConsoleHardwareState(Console, ConsoleHardwareStateRequest->State);
|
||||||
case CONSOLE_HARDWARE_STATE_GET:
|
|
||||||
ConsoleHardwareStateRequest->State = Console->HardwareState;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CONSOLE_HARDWARE_STATE_SET:
|
|
||||||
DPRINT("Setting console hardware state.\n");
|
|
||||||
Status = SetConsoleHardwareState(Console, ConsoleHardwareStateRequest->State);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
Status = STATUS_INVALID_PARAMETER_2; /* Client: (handle, [set_get], mode) */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
ConioUnlockConsole(Console);
|
ConioUnlockConsole(Console);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue