https://git.reactos.org/?p=reactos.git;a=commitdiff;h=9716814879dc19643663f…
commit 9716814879dc19643663f8951d8ad1d681fd1cae
Author: Amine Khaldi <amine.khaldi(a)reactos.org>
AuthorDate: Sat Dec 23 23:56:04 2017 +0100
[NTVDM] Deduplicate IsConsoleHandle() using the correct version pointed by Hermès.
#179
---
subsystems/mvdm/ntvdm/console/console.c | 24 ++++++++++++++++++++++++
subsystems/mvdm/ntvdm/console/video.c | 24 ------------------------
subsystems/mvdm/ntvdm/ntvdm.h | 1 +
3 files changed, 25 insertions(+), 24 deletions(-)
diff --git a/subsystems/mvdm/ntvdm/console/console.c
b/subsystems/mvdm/ntvdm/console/console.c
index 72200a103a..db2a468273 100644
--- a/subsystems/mvdm/ntvdm/console/console.c
+++ b/subsystems/mvdm/ntvdm/console/console.c
@@ -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)
diff --git a/subsystems/mvdm/ntvdm/console/video.c
b/subsystems/mvdm/ntvdm/console/video.c
index de2910c90d..d19841b7f2 100644
--- a/subsystems/mvdm/ntvdm/console/video.c
+++ b/subsystems/mvdm/ntvdm/console/video.c
@@ -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);
diff --git a/subsystems/mvdm/ntvdm/ntvdm.h b/subsystems/mvdm/ntvdm/ntvdm.h
index 616cc70aac..60a763fd15 100644
--- a/subsystems/mvdm/ntvdm/ntvdm.h
+++ b/subsystems/mvdm/ntvdm/ntvdm.h
@@ -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);