mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +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);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
switch (MenuEvent->dwCommandId)
|
||||
|
|
|
@ -436,30 +436,6 @@ static VOID DetachFromConsoleInternal(VOID)
|
|||
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)
|
||||
{
|
||||
ASSERT(ScreenBuffer);
|
||||
|
|
|
@ -103,6 +103,7 @@ UpdateVdmMenuDisks(VOID);
|
|||
BOOL ConsoleAttach(VOID);
|
||||
VOID ConsoleDetach(VOID);
|
||||
VOID ConsoleReattach(HANDLE ConOutHandle);
|
||||
BOOL IsConsoleHandle(HANDLE hHandle);
|
||||
VOID MenuEventHandler(PMENU_EVENT_RECORD MenuEvent);
|
||||
VOID FocusEventHandler(PFOCUS_EVENT_RECORD FocusEvent);
|
||||
|
||||
|
|
Loading…
Reference in a new issue