40#define EXENAME_LENGTH (255 + 1)
63 DPRINT(
"Ctrl-Break Event\n");
67 DPRINT(
"Ctrl Close Event\n");
71 DPRINT(
"Ctrl Last Close Event\n");
75 DPRINT(
"Ctrl Logoff Event\n");
79 DPRINT(
"Ctrl Shutdown Event\n");
97 DPRINT1(
"Console Dispatcher Active: %lx %lx\n", CodeAndFlag, nCode);
177 DPRINT(
"Skipping system/service apps\n");
189 nExitCode = CodeAndFlag;
349 ULONG DeviceNameInfo;
358 if (DeviceNameInfo != 0)
360 ConsoleName = (
LPCWSTR)((
ULONG_PTR)ConsoleName + ((DeviceNameInfo >> 16) & 0xFFFF));
405 MenuControlRequest->
CmdIdLow = dwCmdIdLow;
406 MenuControlRequest->
CmdIdHigh = dwCmdIdHigh;
412 sizeof(*MenuControlRequest));
425 DWORD dwDesiredAccess,
449 sizeof(*DuplicateHandleRequest));
472 GetHandleInfoRequest->
Handle = hHandle;
477 sizeof(*GetHandleInfoRequest));
484 *lpdwFlags = GetHandleInfoRequest->
Flags;
503 SetHandleInfoRequest->
Handle = hHandle;
504 SetHandleInfoRequest->
Mask = dwMask;
510 sizeof(*SetHandleInfoRequest));
531 if (lpModeFlags ==
NULL)
542 sizeof(*GetDisplayModeRequest));
573 GetFontInfoRequest->
NumFonts = nFontCount;
576 if (CaptureBuffer ==
NULL)
578 DPRINT1(
"CsrAllocateCaptureBuffer failed!\n");
590 sizeof(*GetFontInfoRequest));
603 return GetFontInfoRequest->
NumFonts;
627 sizeof(*GetFontSizeRequest));
634 return GetFontSizeRequest->
FontSize;
664 sizeof(*HardwareStateRequest));
708 sizeof(*GetCurrentFontRequest));
715 lpConsoleCurrentFont->dwFontSize = GetCurrentFontRequest->
FontSize;
716 lpConsoleCurrentFont->nFont = GetCurrentFontRequest->
FontIndex;
739 sizeof(*GetNumFontsRequest));
746 return GetNumFontsRequest->
NumFonts;
770 InvalidateDIBitsRequest->
Region = *lpRect;
775 sizeof(*InvalidateDIBitsRequest));
792 DWORD dwDesiredAccess,
825 OpenConsoleRequest->
ShareMode = dwShareMode;
830 sizeof(*OpenConsoleRequest));
837 return OpenConsoleRequest->
Handle;
861 sizeof(*SetCursorRequest));
879 PCOORD lpNewScreenBufferDimensions)
894 sizeof(*SetDisplayModeRequest));
901 if (lpNewScreenBufferDimensions)
902 *lpNewScreenBufferDimensions = SetDisplayModeRequest->
NewSBDim;
928 sizeof(*SetFontRequest));
961 sizeof(*HardwareStateRequest));
984 DPRINT1(
"SetConsoleKeyShortcuts(%lu, 0x%x, 0x%p, 0x%x) UNIMPLEMENTED!\n",
985 bSet, bReserveKeys, lpAppKeys, dwNumAppKeys);
1001 DPRINT1(
"SetConsoleMaximumWindowSize(0x%p, {%d, %d}) does nothing\n",
1002 hConsoleOutput, dwMaximumSize.
X, dwMaximumSize.
Y);
1024 sizeof(*SetMenuCloseRequest));
1053 SetPaletteRequest->
Usage = dwUsage;
1058 sizeof(*SetPaletteRequest));
1083 ShowCursorRequest->
Show = bShow;
1089 sizeof(*ShowCursorRequest));
1091 return ShowCursorRequest->
RefCount;
1118 VerifyHandleRequest->
Handle = hIoHandle;
1127 sizeof(*VerifyHandleRequest));
1134 return VerifyHandleRequest->
IsValid;
1150 CloseHandleRequest->
Handle = hHandle;
1155 sizeof(*CloseHandleRequest));
1260 DWORD DesktopLength,
1264 DWORD AppNameLength,
1284 if (CaptureBuffer ==
NULL)
1323 sizeof(*AllocConsoleRequest));
1384 DPRINT1(
"AllocConsole: Allocating a console to a process already having one\n");
1397 DPRINT(
"ConsoleTitle = '%S' - Desktop = '%S'\n",
1407 DPRINT(
"CurDir = '%S' - AppName = '%S'\n",
1456 if (ConsoleHandle ==
NULL)
1470 sizeof(*FreeConsoleRequest));
1504 if (lpConsoleScreenBufferInfo ==
NULL)
1511 ScreenBufferInfoRequest->
OutputHandle = hConsoleOutput;
1516 sizeof(*ScreenBufferInfoRequest));
1543 COORD dwCursorPosition)
1549 SetCursorPositionRequest->
OutputHandle = hConsoleOutput;
1550 SetCursorPositionRequest->
Position = dwCursorPosition;
1555 sizeof(*SetCursorPositionRequest));
1584 ConsoleModeRequest->
Handle = hConsoleHandle;
1589 sizeof(*ConsoleModeRequest));
1596 *lpMode = ConsoleModeRequest->
Mode;
1615 ConsoleModeRequest->
Handle = hConsoleHandle;
1616 ConsoleModeRequest->
Mode = dwMode;
1621 sizeof(*ConsoleModeRequest));
1644 GetNumInputEventsRequest->
InputHandle = hConsoleInput;
1650 sizeof(*GetNumInputEventsRequest));
1657 if (lpNumberOfEvents ==
NULL)
1681 GetLargestWindowSizeRequest->
OutputHandle = hConsoleOutput;
1682 GetLargestWindowSizeRequest->
Size.
X = 0;
1683 GetLargestWindowSizeRequest->
Size.
Y = 0;
1688 sizeof(*GetLargestWindowSizeRequest));
1694 DPRINT(
"GetLargestConsoleWindowSize, X = %d, Y = %d\n", GetLargestWindowSizeRequest->
Size.
X, GetLargestWindowSizeRequest->
Size.
Y);
1695 return GetLargestWindowSizeRequest->
Size;
1710 if (!lpConsoleCursorInfo)
1712 if (!hConsoleOutput)
1726 sizeof(*CursorInfoRequest));
1733 *lpConsoleCursorInfo = CursorInfoRequest->
Info;
1752 CursorInfoRequest->
Info = *lpConsoleCursorInfo;
1757 sizeof(*CursorInfoRequest));
1783 sizeof(*GetMouseInfoRequest));
1790 *lpNumberOfMouseButtons = GetMouseInfoRequest->
NumButtons;
1812 sizeof(*SetScreenBufferRequest));
1835 FlushInputBufferRequest->
InputHandle = hConsoleInput;
1840 sizeof(*FlushInputBufferRequest));
1864 SetScreenBufferSizeRequest->
OutputHandle = hConsoleOutput;
1870 sizeof(*SetScreenBufferSizeRequest));
1886 COORD dwDestinationOrigin,
1894 ScrollScreenBufferRequest->
OutputHandle = hConsoleOutput;
1897 if (lpClipRectangle !=
NULL)
1900 ScrollScreenBufferRequest->
ClipRectangle = *lpClipRectangle;
1908 ScrollScreenBufferRequest->
Fill = *lpFill;
1909 ScrollScreenBufferRequest->
Unicode = bUnicode;
1914 sizeof(*ScrollScreenBufferRequest));
1934 COORD dwDestinationOrigin,
1940 dwDestinationOrigin,
1955 COORD dwDestinationOrigin,
1961 dwDestinationOrigin,
1979 if (lpConsoleWindow ==
NULL)
1987 SetWindowInfoRequest->
Absolute = bAbsolute;
1988 SetWindowInfoRequest->
WindowRect = *lpConsoleWindow;
1993 sizeof(*SetWindowInfoRequest));
2018 SetTextAttribRequest->
Attributes = wAttributes;
2023 sizeof(*SetTextAttribRequest));
2051 if (NewCtrlHandlers ==
NULL)
2135 DWORD dwProcessGroupId)
2147 GenerateCtrlEventRequest->
CtrlEvent = dwCtrlEvent;
2153 sizeof(*GenerateCtrlEventRequest));
2171 if (dwNumChars == 0)
return 0;
2174 TitleRequest->
Length = dwNumChars * (bUnicode ?
sizeof(
WCHAR) :
sizeof(
CHAR));
2175 TitleRequest->
Unicode = bUnicode;
2178 if (CaptureBuffer ==
NULL)
2180 DPRINT1(
"CsrAllocateCaptureBuffer failed!\n");
2192 sizeof(*TitleRequest));
2200 dwNumChars = TitleRequest->
Length / (bUnicode ?
sizeof(
WCHAR) :
sizeof(
CHAR));
2251 ULONG NumChars = (
ULONG)(lpConsoleTitle ? (bUnicode ?
wcslen(lpConsoleTitle) :
strlen(lpConsoleTitle)) : 0);
2254 TitleRequest->
Length = NumChars * (bUnicode ?
sizeof(
WCHAR) :
sizeof(
CHAR));
2255 TitleRequest->
Unicode = bUnicode;
2258 if (CaptureBuffer ==
NULL)
2260 DPRINT1(
"CsrAllocateCaptureBuffer failed!\n");
2266 (
PVOID)lpConsoleTitle,
2273 sizeof(*TitleRequest));
2319 LPVOID lpScreenBufferData)
2324 PCONSOLE_GRAPHICS_BUFFER_INFO GraphicsBufferInfo = lpScreenBufferData;
2337 (lpSecurityAttributes ? lpSecurityAttributes->bInheritHandle :
FALSE);
2338 CreateScreenBufferRequest->
ShareMode = dwShareMode;
2352 if (CaptureBuffer ==
NULL)
2359 (
PVOID)GraphicsBufferInfo->lpBitMapInfo,
2360 GraphicsBufferInfo->dwBitMapInfoLength,
2367 sizeof(*CreateScreenBufferRequest));
2379 GraphicsBufferInfo->hMutex = CreateScreenBufferRequest->
hMutex ;
2380 GraphicsBufferInfo->lpBitMap = CreateScreenBufferRequest->
lpBitMap;
2405 sizeof(*GetConsoleCPRequest));
2412 return GetConsoleCPRequest->
CodePage;
2429 SetConsoleCPRequest->
CodePage = wCodePageID;
2436 sizeof(*SetConsoleCPRequest));
2465 sizeof(*GetConsoleCPRequest));
2472 return GetConsoleCPRequest->
CodePage;
2489 SetConsoleCPRequest->
CodePage = wCodePageID;
2496 sizeof(*SetConsoleCPRequest));
2516 DWORD dwProcessCount)
2521 ULONG nProcesses = 0;
2523 if (lpdwProcessList ==
NULL || dwProcessCount == 0)
2530 if (CaptureBuffer ==
NULL)
2532 DPRINT1(
"CsrAllocateCaptureBuffer failed!\n");
2541 dwProcessCount *
sizeof(
DWORD),
2547 sizeof(*GetProcessListRequest));
2555 if (dwProcessCount >= nProcesses)
2576 if (lpConsoleSelectionInfo ==
NULL)
2587 sizeof(*GetSelectionInfoRequest));
2594 *lpConsoleSelectionInfo = GetSelectionInfoRequest->
Info;
2622 if (CaptureBuffer ==
NULL)
2637 sizeof(*AttachConsoleRequest));
2688 DPRINT1(
"AttachConsole: Attaching a console to a process already having one\n");
2741 sizeof(*GetWindowRequest));
2769 sizeof(*SetIconRequest));
2834#ifdef USE_TEB_STATIC_USTR
2840#ifndef USE_TEB_STATIC_USTR
2844#ifdef USE_TEB_STATIC_USTR
2863#ifndef USE_TEB_STATIC_USTR
2869#ifdef USE_TEB_STATIC_USTR
2885#ifdef USE_TEB_STATIC_USTR
2974 return ExeLength + 1;
3051 if (!cbDesktop || !pDesktop)
3053 pDesktop =
NtCurrentPeb()->ProcessParameters->DesktopInfo.Buffer;
3054 cbDesktop =
NtCurrentPeb()->ProcessParameters->DesktopInfo.Length;
3089 if (pdwAttachToThreadId)
3141 pdwAttachToThreadId);
3189 sizeof(*LangIdRequest));
3209 DPRINT1(
"SetTEBLangID: Could not set thread locale to console lang ID %lu\n",
3224 GetKbdLayoutNameRequest->
Ansi = bAnsi;
3230 sizeof(*GetKbdLayoutNameRequest));
3300 sizeof(*NotifyLastCloseRequest));
BOOL WINAPI HandlerRoutine(DWORD dwCtrlType)
ACPI_SIZE strlen(const char *String)
BOOL WINAPI SetConsoleOutputCP(IN UINT wCodepage)
BOOL WINAPI FlushConsoleInputBuffer(IN HANDLE hConsoleInput)
BOOL WINAPI SetConsoleCursorPosition(IN HANDLE hConsoleOutput, IN COORD dwCursorPosition)
HANDLE WINAPI GetStdHandle(IN DWORD nStdHandle)
BOOL WINAPI SetConsoleTextAttribute(IN HANDLE hConsoleOutput, IN WORD wAttributes)
BOOL WINAPI SetConsoleCursorInfo(IN HANDLE hConsoleOutput, IN const CONSOLE_CURSOR_INFO *lpConsoleCursorInfo)
BOOL WINAPI AttachConsole(IN DWORD dwProcessId)
BOOL WINAPI GetConsoleScreenBufferInfo(IN HANDLE hConsoleOutput, OUT PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo)
WCHAR CurrentDirectory[1024]
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
@ ConsolepSetCursorPosition
@ ConsolepGetHardwareState
@ ConsolepSetActiveScreenBuffer
@ ConsolepDuplicateHandle
@ ConsolepUnregisterConsoleIME
@ ConsolepGetHandleInformation
@ ConsolepInvalidateBitMapRect
@ ConsolepCreateScreenBuffer
@ ConsolepGenerateCtrlEvent
@ ConsolepGetSelectionInfo
@ ConsolepRegisterConsoleIME
@ ConsolepFlushInputBuffer
@ ConsolepGetNumberOfFonts
@ ConsolepNotifyLastClose
@ ConsolepGetNumberOfInputEvents
@ ConsolepGetKeyboardLayoutName
@ ConsolepSetHardwareState
@ ConsolepScrollScreenBuffer
@ ConsolepGetLargestWindowSize
@ ConsolepGetConsoleWindow
@ ConsolepSetTextAttribute
@ ConsolepSetScreenBufferSize
@ ConsolepSetHandleInformation
@ ConsolepGetScreenBufferInfo
#define CONSRV_SERVERDLL_INDEX
enum _CONSOLE_HANDLE_TYPE CONSOLE_HANDLE_TYPE
#define CSR_CREATE_API_NUMBER(ServerId, ApiId)
#define ERROR_NOT_ENOUGH_MEMORY
static CHAR AppName[MAX_PATH]
#define NT_SUCCESS(StatCode)
static const WCHAR Title[]
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define INVALID_HANDLE_VALUE
#define ERROR_INVALID_HANDLE
#define ERROR_ACCESS_DENIED
BOOL WINAPI DECLSPEC_HOTPATCH GetConsoleKeyboardLayoutNameA(OUT LPSTR pszLayoutName)
BOOL WINAPI SetConsoleWindowInfo(HANDLE hConsoleOutput, BOOL bAbsolute, CONST SMALL_RECT *lpConsoleWindow)
BOOL WINAPI GetConsoleSelectionInfo(PCONSOLE_SELECTION_INFO lpConsoleSelectionInfo)
BOOL WINAPI DECLSPEC_HOTPATCH GetConsoleCursorMode(HANDLE hConsole, PBOOL pUnknown1, PBOOL pUnknown2)
BOOL WINAPI DECLSPEC_HOTPATCH CloseConsoleHandle(HANDLE hHandle)
static BOOL IntUnregisterConsoleIME(_In_ DWORD dwThreadId)
static BOOL AddConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine)
static WCHAR StartDirBuffer[MAX_PATH+1]
static WCHAR ExeNameBuffer[EXENAME_LENGTH]
LPCWSTR IntCheckForConsoleFileName(IN LPCWSTR pszName, IN DWORD dwDesiredAccess)
HMENU WINAPI DECLSPEC_HOTPATCH ConsoleMenuControl(HANDLE hConsoleOutput, DWORD dwCmdIdLow, DWORD dwCmdIdHigh)
static ULONG NrCtrlHandlers
DWORD WINAPI DECLSPEC_HOTPATCH GetNumberOfConsoleFonts(VOID)
static PHANDLER_ROUTINE * CtrlHandlers
DWORD WINAPI DECLSPEC_HOTPATCH GetConsoleTitleA(LPSTR lpConsoleTitle, DWORD nSize)
static ULONG NrAllocatedHandlers
BOOL WINAPI InvalidateConsoleDIBits(IN HANDLE hConsoleOutput, IN PSMALL_RECT lpRect)
BOOL WINAPI DECLSPEC_HOTPATCH GetConsoleNlsMode(HANDLE hConsole, LPDWORD lpMode)
static LPCWSTR BaseConInputFileName
DWORD WINAPI ConsoleControlDispatcher(IN LPVOID lpThreadParameter)
RTL_CRITICAL_SECTION ConsoleLock
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleCursorMode(HANDLE hConsole, BOOL Unknown1, BOOL Unknown2)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleOS2OemFormat(BOOL bUnknown)
BOOL WINAPI GetConsoleHandleInformation(IN HANDLE hHandle, OUT LPDWORD lpdwFlags)
BOOL WINAPI DECLSPEC_HOTPATCH ScrollConsoleScreenBufferA(HANDLE hConsoleOutput, CONST SMALL_RECT *lpScrollRectangle, CONST SMALL_RECT *lpClipRectangle, COORD dwDestinationOrigin, CONST CHAR_INFO *lpFill)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleScreenBufferSize(HANDLE hConsoleOutput, COORD dwSize)
static BOOL IntRegisterConsoleIME(_In_ HWND hWnd, _In_ DWORD dwThreadId, _In_opt_ SIZE_T cbDesktop, _In_opt_ PWSTR pDesktop, _Out_opt_ PDWORD pdwAttachToThreadId)
BOOL WINAPI DECLSPEC_HOTPATCH RegisterConsoleOS2(BOOL bUnknown)
VOID SetTEBLangID(VOID)
Internal helper function used to synchronize the current thread's language ID with the one from the c...
BOOL WINAPI SetConsoleHardwareState(HANDLE hConsoleOutput, DWORD Flags, DWORD State)
COORD WINAPI DECLSPEC_HOTPATCH GetLargestConsoleWindowSize(HANDLE hConsoleOutput)
BOOL WINAPI DECLSPEC_HOTPATCH VerifyConsoleIoHandle(HANDLE hIoHandle)
static BOOLEAN ExeNameInitialized
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleIcon(HICON hIcon)
BOOL WINAPI GetNumberOfConsoleMouseButtons(LPDWORD lpNumberOfMouseButtons)
HANDLE WINAPI CreateConsoleScreenBuffer(DWORD dwDesiredAccess, DWORD dwShareMode, CONST SECURITY_ATTRIBUTES *lpSecurityAttributes, DWORD dwFlags, LPVOID lpScreenBufferData)
static LPCWSTR BaseConFileName
BOOL WINAPI GetConsoleMode(HANDLE hConsoleHandle, LPDWORD lpMode)
BOOL WINAPI GetCurrentConsoleFont(IN HANDLE hConsoleOutput, IN BOOL bMaximumWindow, OUT PCONSOLE_FONT_INFO lpConsoleCurrentFont)
static BOOL RemoveConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine)
BOOL WINAPI GetConsoleHardwareState(HANDLE hConsoleOutput, PDWORD Flags, PDWORD State)
BOOL WINAPI SetConsoleMaximumWindowSize(HANDLE hConsoleOutput, COORD dwMaximumSize)
static BOOL IntAttachConsole(DWORD ProcessId, LPTHREAD_START_ROUTINE CtrlRoutine, LPTHREAD_START_ROUTINE PropRoutine, PCONSOLE_START_INFO ConsoleStartInfo)
BOOL WINAPI GetConsoleDisplayMode(LPDWORD lpModeFlags)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleTitleA(LPCSTR lpConsoleTitle)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsolePalette(HANDLE hConsoleOutput, HPALETTE hPalette, UINT dwUsage)
INT WINAPI DECLSPEC_HOTPATCH ShowConsoleCursor(HANDLE hConsoleOutput, BOOL bShow)
COORD WINAPI DECLSPEC_HOTPATCH GetConsoleFontSize(IN HANDLE hConsoleOutput, IN DWORD nFont)
static RTL_CRITICAL_SECTION ExeNameLock
DWORD WINAPI SetLastConsoleEventActive(VOID)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleCP(UINT wCodePageID)
BOOL WINAPI DECLSPEC_HOTPATCH GetConsoleKeyboardLayoutNameW(OUT LPWSTR pszLayoutName)
BOOL WINAPI SetConsoleHandleInformation(IN HANDLE hHandle, IN DWORD dwMask, IN DWORD dwFlags)
USHORT GetCurrentExeName(OUT PWCHAR ExeName, IN USHORT BufferSize)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleCursor(HANDLE hConsoleOutput, HCURSOR hCursor)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleTitleW(LPCWSTR lpConsoleTitle)
static DWORD IntGetConsoleTitle(LPVOID lpConsoleTitle, DWORD dwNumChars, BOOLEAN bUnicode)
BOOL WINAPI GetConsoleCharType(HANDLE hConsole, COORD Coord, PDWORD Type)
static PHANDLER_ROUTINE InitialHandler[1]
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleMode(HANDLE hConsoleHandle, DWORD dwMode)
BOOL WINAPI SetConsoleDisplayMode(HANDLE hConsoleOutput, DWORD dwFlags, PCOORD lpNewScreenBufferDimensions)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine, BOOL Add)
HANDLE WINAPI DECLSPEC_HOTPATCH DuplicateConsoleHandle(HANDLE hSourceHandle, DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwOptions)
static BOOL IntSetConsoleTitle(CONST VOID *lpConsoleTitle, BOOLEAN bUnicode)
BOOL WINAPI DECLSPEC_HOTPATCH SetStdHandle(DWORD nStdHandle, HANDLE hHandle)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleActiveScreenBuffer(HANDLE hConsoleOutput)
BOOL WINAPI DECLSPEC_HOTPATCH RegisterConsoleIME(_In_ HWND hWnd, _Out_opt_ LPDWORD pdwAttachToThreadId)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleNlsMode(HANDLE hConsole, DWORD dwMode)
BOOL WINAPI GetNumberOfConsoleInputEvents(HANDLE hConsoleInput, LPDWORD lpNumberOfEvents)
DWORD WINAPI GetConsoleFontInfo(IN HANDLE hConsoleOutput, IN BOOL bMaximumWindow, IN DWORD nFontCount, OUT PCONSOLE_FONT_INFO lpConsoleFontInfo)
static BOOL WINAPI DefaultConsoleCtrlHandler(DWORD Event)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleLocalEUDC(_In_ HANDLE hConsoleHandle, _In_ WORD wCodePoint, _In_ COORD cFontSize, _In_ PCHAR lpSB)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleMenuClose(BOOL bEnable)
BOOL WINAPI DECLSPEC_HOTPATCH UnregisterConsoleIME(VOID)
HANDLE WINAPI GetConsoleInputWaitHandle(VOID)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleKeyShortcuts(_In_ BOOL bSet, _In_ BYTE bReserveKeys, _In_reads_(dwNumAppKeys) LPAPPKEY lpAppKeys, _In_ DWORD dwNumAppKeys)
static BOOL IntGetConsoleKeyboardLayoutName(OUT PVOID pszLayoutName, IN BOOL bAnsi)
BOOL WINAPI GetConsoleCursorInfo(HANDLE hConsoleOutput, PCONSOLE_CURSOR_INFO lpConsoleCursorInfo)
static USHORT ExeNameLength
DWORD WINAPI DECLSPEC_HOTPATCH GetConsoleInputExeNameW(IN DWORD nBufferLength, OUT LPWSTR lpExeName)
DWORD WINAPI DECLSPEC_HOTPATCH GetConsoleTitleW(LPWSTR lpConsoleTitle, DWORD nSize)
VOID InitializeCtrlHandling(VOID)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleInputExeNameW(IN LPCWSTR lpExeName)
HANDLE WINAPI OpenConsoleW(LPCWSTR wsName, DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwShareMode)
static LPCWSTR BaseConOutputFileName
static BOOLEAN LastCloseNotify
DWORD WINAPI GetConsoleProcessList(LPDWORD lpdwProcessList, DWORD dwProcessCount)
DWORD WINAPI DECLSPEC_HOTPATCH GetConsoleInputExeNameA(IN DWORD nBufferLength, OUT LPSTR lpExeName)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleInputExeNameA(IN LPCSTR lpExeName)
VOID SetUpAppName(IN BOOLEAN CaptureStrings, IN OUT LPDWORD CurDirLength, IN OUT LPWSTR *CurDir, IN OUT LPDWORD AppNameLength, IN OUT LPWSTR *AppName)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleFont(IN HANDLE hConsoleOutput, IN DWORD nFont)
static USHORT StartDirLength
BOOLEAN ConsoleInitialized
static BOOL IntAllocConsole(LPWSTR Title, DWORD TitleLength, LPWSTR Desktop, DWORD DesktopLength, LPWSTR CurDir, DWORD CurDirLength, LPWSTR AppName, DWORD AppNameLength, LPTHREAD_START_ROUTINE CtrlRoutine, LPTHREAD_START_ROUTINE PropRoutine, PCONSOLE_START_INFO ConsoleStartInfo)
BOOL WINAPI DECLSPEC_HOTPATCH GenerateConsoleCtrlEvent(DWORD dwCtrlEvent, DWORD dwProcessGroupId)
BOOL WINAPI DECLSPEC_HOTPATCH ScrollConsoleScreenBufferW(HANDLE hConsoleOutput, CONST SMALL_RECT *lpScrollRectangle, CONST SMALL_RECT *lpClipRectangle, COORD dwDestinationOrigin, CONST CHAR_INFO *lpFill)
static BOOL IntScrollConsoleScreenBuffer(HANDLE hConsoleOutput, CONST SMALL_RECT *lpScrollRectangle, CONST SMALL_RECT *lpClipRectangle, COORD dwDestinationOrigin, CONST CHAR_INFO *lpFill, BOOL bUnicode)
DWORD WINAPI PropDialogHandler(IN LPVOID lpThreadParameter)
VOID SetUpConsoleInfo(IN BOOLEAN CaptureTitle, IN OUT LPDWORD pTitleLength, IN OUT LPWSTR *lpTitle OPTIONAL, IN OUT LPDWORD pDesktopLength, IN OUT LPWSTR *lpDesktop OPTIONAL, IN OUT PCONSOLE_START_INFO ConsoleStartInfo)
VOID SetUpHandles(IN PCONSOLE_START_INFO ConsoleStartInfo)
VOID WINAPI ExitProcess(IN UINT uExitCode)
BOOL WINAPI SetThreadPriority(IN HANDLE hThread, IN int nPriority)
VOID WINAPI ExitThread(IN DWORD uExitCode)
BOOL WINAPI SetThreadLocale(LCID lcid)
BOOL WINAPI DECLSPEC_HOTPATCH FreeConsole(void)
UINT WINAPI DECLSPEC_HOTPATCH GetConsoleCP(void)
UINT WINAPI DECLSPEC_HOTPATCH GetConsoleOutputCP(void)
DWORD WINAPI CtrlRoutine(void *arg)
BOOL WINAPI AllocConsole(void)
HWND WINAPI GetConsoleWindow(void)
BOOL WINAPI IsDebuggerPresent(void)
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ProcessId
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define EXCEPTION_EXECUTE_HANDLER
#define memmove(s1, s2, n)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static DWORD LPSTR lpExeName
static BOOL bInheritHandle
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
NTSYSAPI ULONG NTAPI RtlIsDosDeviceName_U(_In_ PCWSTR Name)
NTSYSAPI NTSTATUS NTAPI RtlEnterCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
NTSYSAPI NTSTATUS NTAPI RtlLeaveCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
NTSYSAPI NTSTATUS NTAPI RtlInitializeCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
NTSYSAPI VOID NTAPI RtlRaiseException(_In_ PEXCEPTION_RECORD ExceptionRecord)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
#define MAKELCID(lgid, srtid)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define DBG_CONTROL_BREAK
#define STATUS_ACCESS_VIOLATION
NTSTATUS NTAPI NtWaitForMultipleObjects(IN ULONG ObjectCount, IN PHANDLE HandleArray, IN WAIT_TYPE WaitType, IN BOOLEAN Alertable, IN PLARGE_INTEGER TimeOut OPTIONAL)
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
DWORD BaseSetLastNTError(IN NTSTATUS Status)
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
PCSR_CAPTURE_BUFFER NTAPI CsrAllocateCaptureBuffer(_In_ ULONG ArgumentCount, _In_ ULONG BufferSize)
ULONG NTAPI CsrAllocateMessagePointer(_Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer, _In_ ULONG MessageLength, _Out_ PVOID *CapturedData)
VOID NTAPI CsrFreeCaptureBuffer(_In_ _Frees_ptr_ PCSR_CAPTURE_BUFFER CaptureBuffer)
VOID NTAPI CsrCaptureMessageBuffer(_Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer, _In_opt_ PVOID MessageBuffer, _In_ ULONG MessageLength, _Out_ PVOID *CapturedData)
NTSTATUS NTAPI CsrClientCallServer(_Inout_ PCSR_API_MESSAGE ApiMessage, _Inout_opt_ PCSR_CAPTURE_BUFFER CaptureBuffer, _In_ CSR_API_NUMBER ApiNumber, _In_ ULONG DataLength)
#define CONSOLE_FILE_NAME
#define CONSOLE_INPUT_FILE_NAME
#define CONSOLE_OUTPUT_FILE_NAME
#define DECLSPEC_HOTPATCH
#define STATUS_BUFFER_OVERFLOW
LPTHREAD_START_ROUTINE PropRoutine
PCONSOLE_START_INFO ConsoleStartInfo
LPTHREAD_START_ROUTINE CtrlRoutine
CONSOLE_GETMOUSEINFO GetMouseInfoRequest
CONSOLE_SETCURSORPOSITION SetCursorPositionRequest
CONSOLE_OPENCONSOLE OpenConsoleRequest
CONSOLE_SETTEXTATTRIB SetTextAttribRequest
CONSOLE_GETSETHWSTATE HardwareStateRequest
CONSOLE_CLOSEHANDLE CloseHandleRequest
CONSOLE_GETFONTINFO GetFontInfoRequest
CONSOLE_ALLOCCONSOLE AllocConsoleRequest
CONSOLE_SETPALETTE SetPaletteRequest
CONSOLE_SETDISPLAYMODE SetDisplayModeRequest
CONSOLE_REGISTERCONSOLEIME RegisterConsoleIME
CONSOLE_GETNUMINPUTEVENTS GetNumInputEventsRequest
CONSOLE_GETINPUTOUTPUTCP GetConsoleCPRequest
CONSOLE_MENUCONTROL MenuControlRequest
CONSOLE_GETSETCONSOLEMODE ConsoleModeRequest
CONSOLE_GETSELECTIONINFO GetSelectionInfoRequest
CONSOLE_GETNUMFONTS GetNumFontsRequest
CONSOLE_GETSCREENBUFFERINFO ScreenBufferInfoRequest
CONSOLE_GETLANGID LangIdRequest
CONSOLE_VERIFYHANDLE VerifyHandleRequest
CONSOLE_SETACTIVESCREENBUFFER SetScreenBufferRequest
CONSOLE_SETCURSOR SetCursorRequest
CONSOLE_FLUSHINPUTBUFFER FlushInputBufferRequest
CONSOLE_DUPLICATEHANDLE DuplicateHandleRequest
CONSOLE_GETKBDLAYOUTNAME GetKbdLayoutNameRequest
CONSOLE_GETPROCESSLIST GetProcessListRequest
CONSOLE_SETSCREENBUFFERSIZE SetScreenBufferSizeRequest
CONSOLE_SETMENUCLOSE SetMenuCloseRequest
CONSOLE_FREECONSOLE FreeConsoleRequest
CONSOLE_GETWINDOW GetWindowRequest
CONSOLE_SETHANDLEINFO SetHandleInfoRequest
CONSOLE_GETSETCONSOLETITLE TitleRequest
CONSOLE_GETCURRENTFONT GetCurrentFontRequest
CONSOLE_NOTIFYLASTCLOSE NotifyLastCloseRequest
union _CONSOLE_API_MESSAGE::@3666 Data
CONSOLE_GETDISPLAYMODE GetDisplayModeRequest
CONSOLE_SCROLLSCREENBUFFER ScrollScreenBufferRequest
CONSOLE_GETFONTSIZE GetFontSizeRequest
CONSOLE_ATTACHCONSOLE AttachConsoleRequest
CONSOLE_CREATESCREENBUFFER CreateScreenBufferRequest
CONSOLE_UNREGISTERCONSOLEIME UnregisterConsoleIME
CONSOLE_GETSETCURSORINFO CursorInfoRequest
CONSOLE_SETFONT SetFontRequest
CONSOLE_GETHANDLEINFO GetHandleInfoRequest
CONSOLE_SETWINDOWINFO SetWindowInfoRequest
CONSOLE_INVALIDATEDIBITS InvalidateDIBitsRequest
CONSOLE_GETLARGESTWINDOWSIZE GetLargestWindowSizeRequest
CONSOLE_SHOWCURSOR ShowCursorRequest
CONSOLE_SETINPUTOUTPUTCP SetConsoleCPRequest
CONSOLE_SETICON SetIconRequest
CONSOLE_GENERATECTRLEVENT GenerateCtrlEventRequest
LPTHREAD_START_ROUTINE CtrlRoutine
LPTHREAD_START_ROUTINE PropRoutine
PCONSOLE_START_INFO ConsoleStartInfo
CONSOLE_GRAPHICS_BUFFER_INFO GraphicsBufferInfo
PCONSOLE_FONT_INFO FontInfo
CHAR LayoutBuffer[KL_NAMELENGTH *sizeof(WCHAR)]
CONSOLE_SELECTION_INFO Info
CONSOLE_HANDLE_TYPE HandleType
HANDLE InitEvents[MAX_INIT_EVENTS]
struct _EXCEPTION_RECORD * ExceptionRecord
UNICODE_STRING BaseDllName
struct _LIST_ENTRY * Flink
LIST_ENTRY InLoadOrderModuleList
PRTL_USER_PROCESS_PARAMETERS ProcessParameters
COORD dwMaximumWindowSize
#define RtlCopyMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
#define STD_OUTPUT_HANDLE
HANDLE WINAPI GetCurrentThread(void)
DWORD WINAPI GetCurrentThreadId(void)
#define THREAD_PRIORITY_HIGHEST
DWORD(WINAPI * LPTHREAD_START_ROUTINE)(LPVOID)
*nSize LPSTR _Inout_ LPDWORD nSize
_In_ LPCSTR _In_opt_ LPCSTR _In_ DWORD nBufferLength
#define CTRL_SHUTDOWN_EVENT
#define CTRL_LOGOFF_EVENT
#define CONSOLE_TEXTMODE_BUFFER
BOOL(WINAPI * PHANDLER_ROUTINE)(_In_ DWORD CtrlType)
#define CONSOLE_GRAPHICS_BUFFER
#define CTRL_LAST_CLOSE_EVENT
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define ERROR_BUFFER_OVERFLOW
#define ERROR_FILENAME_EXCED_RANGE
#define ERROR_INVALID_ACCESS
_Must_inspect_result_ _In_ ULONG Flags
#define DUPLICATE_SAME_ACCESS
#define DUPLICATE_CLOSE_SOURCE