mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-26 19:33:31 +00:00
[NTVDM] Deduplicate IsConsoleHandle() using the correct version pointed by Hermès. #179
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user