mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
[NTVDM] Deduplicate IsConsoleHandle() using the correct version pointed by Hermès. #179
This commit is contained in:
parent
3d93998d6e
commit
9716814879
3 changed files with 25 additions and 24 deletions
|
@ -500,6 +500,30 @@ ConsoleCleanup(VOID)
|
||||||
if (ConsoleInput != INVALID_HANDLE_VALUE) CloseHandle(ConsoleInput);
|
if (ConsoleInput != INVALID_HANDLE_VALUE) CloseHandle(ConsoleInput);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL IsConsoleHandle(HANDLE hHandle)
|
||||||
|
{
|
||||||
|
DWORD dwMode;
|
||||||
|
|
||||||
|
/* Check whether the handle may be that of a console... */
|
||||||
|
if ((GetFileType(hHandle) & ~FILE_TYPE_REMOTE) != FILE_TYPE_CHAR)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* It may be. Perform another test... The idea comes from the
|
||||||
|
* MSDN description of the WriteConsole API:
|
||||||
|
*
|
||||||
|
* "WriteConsole fails if it is used with a standard handle
|
||||||
|
* that is redirected to a file. If an application processes
|
||||||
|
* multilingual output that can be redirected, determine whether
|
||||||
|
* the output handle is a console handle (one method is to call
|
||||||
|
* the GetConsoleMode function and check whether it succeeds).
|
||||||
|
* If the handle is a console handle, call WriteConsole. If the
|
||||||
|
* handle is not a console handle, the output is redirected and
|
||||||
|
* you should call WriteFile to perform the I/O."
|
||||||
|
*/
|
||||||
|
return GetConsoleMode(hHandle, &dwMode);
|
||||||
|
}
|
||||||
|
|
||||||
VOID MenuEventHandler(PMENU_EVENT_RECORD MenuEvent)
|
VOID MenuEventHandler(PMENU_EVENT_RECORD MenuEvent)
|
||||||
{
|
{
|
||||||
switch (MenuEvent->dwCommandId)
|
switch (MenuEvent->dwCommandId)
|
||||||
|
|
|
@ -436,30 +436,6 @@ static VOID DetachFromConsoleInternal(VOID)
|
||||||
TextFramebuffer = NULL;
|
TextFramebuffer = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL IsConsoleHandle(HANDLE hHandle)
|
|
||||||
{
|
|
||||||
DWORD dwMode;
|
|
||||||
|
|
||||||
/* Check whether the handle may be that of a console... */
|
|
||||||
if ((GetFileType(hHandle) & ~FILE_TYPE_REMOTE) != FILE_TYPE_CHAR)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* It may be. Perform another test... The idea comes from the
|
|
||||||
* MSDN description of the WriteConsole API:
|
|
||||||
*
|
|
||||||
* "WriteConsole fails if it is used with a standard handle
|
|
||||||
* that is redirected to a file. If an application processes
|
|
||||||
* multilingual output that can be redirected, determine whether
|
|
||||||
* the output handle is a console handle (one method is to call
|
|
||||||
* the GetConsoleMode function and check whether it succeeds).
|
|
||||||
* If the handle is a console handle, call WriteConsole. If the
|
|
||||||
* handle is not a console handle, the output is redirected and
|
|
||||||
* you should call WriteFile to perform the I/O."
|
|
||||||
*/
|
|
||||||
return GetConsoleMode(hHandle, &dwMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
static VOID SetActiveScreenBuffer(HANDLE ScreenBuffer)
|
static VOID SetActiveScreenBuffer(HANDLE ScreenBuffer)
|
||||||
{
|
{
|
||||||
ASSERT(ScreenBuffer);
|
ASSERT(ScreenBuffer);
|
||||||
|
|
|
@ -103,6 +103,7 @@ UpdateVdmMenuDisks(VOID);
|
||||||
BOOL ConsoleAttach(VOID);
|
BOOL ConsoleAttach(VOID);
|
||||||
VOID ConsoleDetach(VOID);
|
VOID ConsoleDetach(VOID);
|
||||||
VOID ConsoleReattach(HANDLE ConOutHandle);
|
VOID ConsoleReattach(HANDLE ConOutHandle);
|
||||||
|
BOOL IsConsoleHandle(HANDLE hHandle);
|
||||||
VOID MenuEventHandler(PMENU_EVENT_RECORD MenuEvent);
|
VOID MenuEventHandler(PMENU_EVENT_RECORD MenuEvent);
|
||||||
VOID FocusEventHandler(PFOCUS_EVENT_RECORD FocusEvent);
|
VOID FocusEventHandler(PFOCUS_EVENT_RECORD FocusEvent);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue