33#define WIN32_NO_STATUS
40#include "wine/condrv.h"
53 0, 0, { (
DWORD_PTR)(__FILE__
": console_section") }
60#define CONSOLE_INPUT_HANDLE 0x01
61#define CONSOLE_OUTPUT_HANDLE 0x02
62#define CONSOLE_ERROR_HANDLE 0x04
91 if (
handle == CONSOLE_HANDLE_SHELL_NO_WINDOW)
93 WARN(
"Incorrect access to Shell-no-window console (ioctl=%lx)\n",
code);
125 buffer[
i].Event.KeyEvent.uChar.AsciiChar = ch;
140 buffer[
i].Event.KeyEvent.uChar.UnicodeChar = ch;
152 buffer->Char.AsciiChar = ch;
166 buffer->Char.UnicodeChar = ch;
174 struct condrv_output_info
info;
180 c.X =
info.max_width;
181 c.Y =
info.max_height;
189 struct condrv_output_info
info;
200 c.X =
info.font_width;
201 c.Y =
info.font_height;
210 struct condrv_title_params *
params;
222 size -=
sizeof(*params);
307 if (std_out && std_err)
return TRUE;
371 WARN(
"console already attached\n" );
399 STARTUPINFOEXW console_si;
420 memset( &console_si, 0,
sizeof(console_si) );
421 console_si.StartupInfo.cb =
sizeof(console_si);
445 console_si.StartupInfo.wShowWindow = app_si.
wShowWindow;
448 console_si.StartupInfo.lpTitle = app_si.
lpTitle;
452 console_si.StartupInfo.lpTitle =
buffer;
470 TRACE(
"Started conhost pid=%08lx tid=%08lx\n",
pi.dwProcessId,
pi.dwThreadId );
479 ERR(
"Can't allocate console\n");
520 attr.SecurityDescriptor =
sa ?
sa->lpSecurityDescriptor :
NULL;
549 caught_by_dbg =
FALSE;
552 if (caught_by_dbg)
return 0;
593 struct condrv_fill_output_params
params;
595 TRACE(
"(%p,%d,%ld,(%dx%d),%p)\n",
handle,
attr,
length,
coord.X,
coord.Y, written );
605 params.mode = CHAR_INFO_MODE_ATTR;
613 written,
sizeof(*written),
NULL );
636 struct condrv_fill_output_params
params;
638 TRACE(
"(%p,%s,%ld,(%dx%d),%p)\n",
handle,
debugstr_wn(&ch, 1),
length,
coord.X,
coord.Y, written );
648 params.mode = CHAR_INFO_MODE_TEXT;
656 written,
sizeof(*written),
NULL );
667 if (
RtlGetCurrentPeb()->ProcessParameters->ConsoleHandle != CONSOLE_HANDLE_SHELL_NO_WINDOW)
691 struct condrv_ctrl_event ctrl_event;
701 ctrl_event.event =
event;
702 ctrl_event.group_id =
group;
704 IOCTL_CONDRV_CTRL_EVENT, &ctrl_event,
sizeof(ctrl_event),
NULL, 0,
NULL );
823 struct condrv_input_info
info;
828 return info.input_cp;
837 struct condrv_output_info condrv_info;
848 info->dwSize = condrv_info.cursor_size;
849 info->bVisible = condrv_info.cursor_visible;
870#if defined(__i386__) && !defined(__MINGW32__) && !defined(_MSC_VER)
871#undef GetConsoleFontSize
959 struct condrv_input_info
info;
964 return info.output_cp;
1009 struct condrv_output_info condrv_info;
1012 &condrv_info,
sizeof(condrv_info),
NULL ))
1015 info->dwSize.X = condrv_info.width;
1016 info->dwSize.Y = condrv_info.height;
1017 info->dwCursorPosition.X = condrv_info.cursor_x;
1018 info->dwCursorPosition.Y = condrv_info.cursor_y;
1019 info->wAttributes = condrv_info.attr;
1020 info->srWindow.Left = condrv_info.win_left;
1021 info->srWindow.Right = condrv_info.win_right;
1022 info->srWindow.Top = condrv_info.win_top;
1023 info->srWindow.Bottom = condrv_info.win_bottom;
1024 info->dwMaximumWindowSize.X =
min(condrv_info.width, condrv_info.max_width);
1025 info->dwMaximumWindowSize.Y =
min(condrv_info.height, condrv_info.max_height);
1027 TRACE(
"(%p,(%d,%d) (%d,%d) %d (%d,%d-%d,%d) (%d,%d)\n",
handle,
1028 info->dwSize.X,
info->dwSize.Y,
info->dwCursorPosition.X,
info->dwCursorPosition.Y,
1029 info->wAttributes,
info->srWindow.Left,
info->srWindow.Top,
info->srWindow.Right,
1030 info->srWindow.Bottom,
info->dwMaximumWindowSize.X,
info->dwMaximumWindowSize.Y );
1041 struct condrv_output_info condrv_info;
1050 sizeof(condrv_info),
NULL ))
1053 info->dwSize.X = condrv_info.width;
1054 info->dwSize.Y = condrv_info.height;
1055 info->dwCursorPosition.X = condrv_info.cursor_x;
1056 info->dwCursorPosition.Y = condrv_info.cursor_y;
1057 info->wAttributes = condrv_info.attr;
1058 info->srWindow.Left = condrv_info.win_left;
1059 info->srWindow.Top = condrv_info.win_top;
1060 info->srWindow.Right = condrv_info.win_right;
1061 info->srWindow.Bottom = condrv_info.win_bottom;
1062 info->dwMaximumWindowSize.X =
min( condrv_info.width, condrv_info.max_width );
1063 info->dwMaximumWindowSize.Y =
min( condrv_info.height, condrv_info.max_height );
1064 info->wPopupAttributes = condrv_info.popup_attr;
1066 memcpy(
info->ColorTable, condrv_info.color_map,
sizeof(
info->ColorTable) );
1104 condrv_handle_t
win;
1121 struct condrv_output_info
info;
1146 info->dwFontSize.X =
data.info.font_width;
1147 info->dwFontSize.Y =
data.info.font_height;
1152 info->FontFamily =
data.info.font_pitch_family;
1153 info->FontWeight =
data.info.font_weight;
1172 info->dwFontSize.X =
res.dwFontSize.X;
1173 info->dwFontSize.Y =
res.dwFontSize.Y;
1182#if defined(__i386__) && !defined(__MINGW32__) && !defined(_MSC_VER)
1183#undef GetLargestConsoleWindowSize
1260 struct condrv_output_params
params;
1263 TRACE(
"(%p,%p,%ld,%dx%d,%p)\n",
handle,
attr,
length,
coord.X,
coord.Y,
count );
1271 params.mode = CHAR_INFO_MODE_ATTR;
1277 *
count /=
sizeof(*attr);
1320 struct condrv_output_params
params;
1323 TRACE(
"(%p,%p,%ld,%dx%d,%p)\n",
handle,
buffer,
length,
coord.X,
coord.Y,
count );
1331 params.mode = CHAR_INFO_MODE_TEXT;
1337 *
count /=
sizeof(*buffer);
1368 struct condrv_output_params
params;
1398 params.mode = CHAR_INFO_MODE_TEXTATTR;
1438 struct condrv_scroll_params
params;
1441 TRACE(
"(%p,(%d,%d-%d,%d),(%d,%d-%d,%d),%d-%d,%p)\n",
handle,
1446 TRACE(
"(%p,(%d,%d-%d,%d),(nil),%d-%d,%p)\n",
handle,
1459 else params.clip = *clip_rect;
1479 struct condrv_input_info_params
params = { SET_CONSOLE_INPUT_INFO_INPUT_CODEPAGE };
1501 if (add)
NtCurrentTeb()->Peb->ProcessParameters->ConsoleFlags |= 1;
1502 else NtCurrentTeb()->Peb->ProcessParameters->ConsoleFlags &= ~1;
1521 if ((*p_handler)->func ==
func)
break;
1543 struct condrv_output_info_params
params = { SET_CONSOLE_OUTPUT_INFO_CURSOR_GEOM };
1559 struct condrv_output_info_params
params = { SET_CONSOLE_OUTPUT_INFO_CURSOR_POS };
1633 struct condrv_input_info_params
params = { SET_CONSOLE_INPUT_INFO_OUTPUT_CODEPAGE };
1647 struct condrv_output_info_params
params =
1648 { SET_CONSOLE_OUTPUT_INFO_CURSOR_POS | SET_CONSOLE_OUTPUT_INFO_SIZE |
1649 SET_CONSOLE_OUTPUT_INFO_ATTR | SET_CONSOLE_OUTPUT_INFO_POPUP_ATTR |
1650 SET_CONSOLE_OUTPUT_INFO_DISPLAY_WINDOW | SET_CONSOLE_OUTPUT_INFO_MAX_SIZE };
1662 params.info.cursor_x =
info->dwCursorPosition.X;
1663 params.info.cursor_y =
info->dwCursorPosition.Y;
1667 params.info.win_right =
info->srWindow.Right;
1668 params.info.win_bottom =
info->srWindow.Bottom;
1669 params.info.popup_attr =
info->wPopupAttributes;
1681 struct condrv_output_info_params
params = { SET_CONSOLE_OUTPUT_INFO_SIZE };
1696 struct condrv_output_info_params
params = { SET_CONSOLE_OUTPUT_INFO_ATTR };
1738 struct condrv_output_info_params
params = { SET_CONSOLE_OUTPUT_INFO_DISPLAY_WINDOW };
1741 TRACE(
"(%p,%d,(%d,%d-%d,%d))\n",
handle, absolute,
rect.Left,
rect.Top,
rect.Right,
rect.Bottom );
1751 rect.Bottom +=
info.srWindow.Bottom;
1769 struct condrv_output_info_params
params;
1783 data.params.mask = SET_CONSOLE_OUTPUT_INFO_FONT;
1785 data.params.info.font_width =
info->dwFontSize.X;
1786 data.params.info.font_height =
info->dwFontSize.Y;
1787 data.params.info.font_pitch_family =
info->FontFamily;
1788 data.params.info.font_weight =
info->FontWeight;
1793 size +=
sizeof(
struct condrv_output_info_params);
1820 *
count /=
sizeof(*buffer);
1910 new_coord.
X = new_coord.
Y = 0;
1923 struct condrv_output_params *
params;
1928 TRACE(
"(%p,%p,(%d,%d),(%d,%d),(%d,%dx%d,%d)\n",
1943 params_size =
sizeof(*params) +
width *
height *
sizeof(*buffer);
1950 params->mode = CHAR_INFO_MODE_TEXTATTR;
1970 struct condrv_output_params *
params;
1974 TRACE(
"(%p,%p,%ld,%dx%d,%p)\n",
handle,
attr,
length,
coord.X,
coord.Y, written );
1985 params->mode = CHAR_INFO_MODE_ATTR;
2006 TRACE(
"(%p,%s,%ld,%dx%d,%p)\n",
handle,
debugstr_an(
str,
length),
length,
coord.X,
coord.Y, written );
2037 struct condrv_output_params *
params;
2041 TRACE(
"(%p,%s,%ld,%dx%d,%p)\n",
handle,
debugstr_wn(
str,
length),
length,
coord.X,
coord.Y, written );
2052 params->mode = CHAR_INFO_MODE_TEXT;
2116 memcpy( &crc->dwConsoleKeyState, tmp,
sizeof(
DWORD) );
2140 TRACE(
"(%p,%s,%ld,%p,%p)\n",
handle,
debugstr_an(
buffer,
length),
length, written,
reserved );
2143 if (written) *written =
ret ?
length : 0;
2156 TRACE(
"(%p,%s,%ld,%p,%p)\n",
handle,
debugstr_wn(
buffer,
length),
length, written,
reserved );
2160 if (written) *written =
ret ?
length : 0;
2190 unsigned int inherit_count;
2208 memset( &si, 0,
sizeof(si) );
2209 si.StartupInfo.cb =
sizeof(STARTUPINFOEXW);
2210 si.StartupInfo.hStdInput =
input;
2211 si.StartupInfo.hStdOutput = output;
2212 si.StartupInfo.hStdError = output;
2217 inherit_count =
signal ? 2 : 1;
2227 inherit,
sizeof(*inherit) * inherit_count,
NULL,
NULL );
2233 L"\"%s\" --headless %s--width %u --height %u --signal 0x%x --server 0x%x",
2234 conhost_path, (
flags & PSEUDOCONSOLE_INHERIT_CURSOR) ?
L"--inheritcursor " :
L"",
2268 WCHAR pipe_name[64];
2343 if (
params->ConsoleHandle == CONSOLE_HANDLE_SHELL)
2350 tty_in =
params->hStdInput;
2355 tty_out =
params->hStdOutput;
2361 else tty_out =
params->hStdError;
2367 TRACE(
"creating unix console (size %u %u)\n",
size.X,
size.Y );
2378 else if (
params->ConsoleHandle == CONSOLE_HANDLE_ALLOC ||
2379 params->ConsoleHandle == CONSOLE_HANDLE_ALLOC_NO_WINDOW)
2381 BOOL no_window =
params->ConsoleHandle == CONSOLE_HANDLE_ALLOC_NO_WINDOW;
2387 else if (
params->ConsoleHandle &&
params->ConsoleHandle != CONSOLE_HANDLE_SHELL_NO_WINDOW)
std::map< E_MODULE, HMODULE > mod
_STLP_MOVE_TO_STD_NAMESPACE void fill(_ForwardIter __first, _ForwardIter __last, const _Tp &__val)
static struct sockaddr_in sa
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define FILE_NON_DIRECTORY_FILE
BOOL WINAPI SetConsoleOutputCP(IN UINT wCodepage)
BOOL WINAPI WriteConsoleOutputCharacterA(HANDLE hConsoleOutput, IN LPCSTR lpCharacter, IN DWORD nLength, IN COORD dwWriteCoord, OUT LPDWORD lpNumberOfCharsWritten)
BOOL WINAPI FlushConsoleInputBuffer(IN HANDLE hConsoleInput)
BOOL WINAPI FillConsoleOutputCharacterA(IN HANDLE hConsoleOutput, IN CHAR cCharacter, IN DWORD nLength, IN COORD dwWriteCoord, OUT LPDWORD lpNumberOfCharsWritten)
BOOL WINAPI SetConsoleCursorPosition(IN HANDLE hConsoleOutput, IN COORD dwCursorPosition)
BOOL WINAPI WriteConsoleOutputCharacterW(HANDLE hConsoleOutput, IN LPCWSTR lpCharacter, IN DWORD nLength, IN COORD dwWriteCoord, OUT LPDWORD lpNumberOfCharsWritten)
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 FillConsoleOutputAttribute(IN HANDLE hConsoleOutput, IN WORD wAttribute, IN DWORD nLength, IN COORD dwWriteCoord, OUT LPDWORD lpNumberOfAttrsWritten)
BOOL WINAPI GetConsoleScreenBufferInfo(IN HANDLE hConsoleOutput, OUT PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo)
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)
#define STATUS_INVALID_HANDLE
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INVALID_FUNCTION
BOOL WINAPI Beep(IN DWORD dwFreq, IN DWORD dwDuration)
BOOL WINAPI DeviceIoControl(IN HANDLE hDevice, IN DWORD dwIoControlCode, IN LPVOID lpInBuffer OPTIONAL, IN DWORD nInBufferSize OPTIONAL, OUT LPVOID lpOutBuffer OPTIONAL, IN DWORD nOutBufferSize OPTIONAL, OUT LPDWORD lpBytesReturned OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
static __inline BOOL set_ntstatus(NTSTATUS status)
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define INVALID_HANDLE_VALUE
static __inline const char * debugstr_an(const char *s, int n)
#define GetCurrentProcess()
#define HeapFree(x, y, z)
#define ERROR_INVALID_HANDLE
#define FILE_ATTRIBUTE_NORMAL
#define WideCharToMultiByte
#define MultiByteToWideChar
#define ERROR_ACCESS_DENIED
BOOL WINAPI SetConsoleWindowInfo(HANDLE hConsoleOutput, BOOL bAbsolute, CONST SMALL_RECT *lpConsoleWindow)
DWORD WINAPI DECLSPEC_HOTPATCH GetConsoleTitleA(LPSTR lpConsoleTitle, DWORD nSize)
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)
COORD WINAPI DECLSPEC_HOTPATCH GetLargestConsoleWindowSize(HANDLE hConsoleOutput)
BOOL WINAPI GetNumberOfConsoleMouseButtons(LPDWORD lpNumberOfMouseButtons)
HANDLE WINAPI CreateConsoleScreenBuffer(DWORD dwDesiredAccess, DWORD dwShareMode, CONST SECURITY_ATTRIBUTES *lpSecurityAttributes, DWORD dwFlags, LPVOID lpScreenBufferData)
BOOL WINAPI GetConsoleMode(HANDLE hConsoleHandle, LPDWORD lpMode)
BOOL WINAPI GetCurrentConsoleFont(IN HANDLE hConsoleOutput, IN BOOL bMaximumWindow, OUT PCONSOLE_FONT_INFO lpConsoleCurrentFont)
BOOL WINAPI GetConsoleDisplayMode(LPDWORD lpModeFlags)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleTitleA(LPCSTR lpConsoleTitle)
COORD WINAPI DECLSPEC_HOTPATCH GetConsoleFontSize(IN HANDLE hConsoleOutput, IN DWORD nFont)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleCP(UINT wCodePageID)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleTitleW(LPCWSTR lpConsoleTitle)
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)
BOOL WINAPI DECLSPEC_HOTPATCH SetStdHandle(DWORD nStdHandle, HANDLE hHandle)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleActiveScreenBuffer(HANDLE hConsoleOutput)
BOOL WINAPI GetNumberOfConsoleInputEvents(HANDLE hConsoleInput, LPDWORD lpNumberOfEvents)
BOOL WINAPI GetConsoleCursorInfo(HANDLE hConsoleOutput, PCONSOLE_CURSOR_INFO lpConsoleCursorInfo)
DWORD WINAPI DECLSPEC_HOTPATCH GetConsoleInputExeNameW(IN DWORD nBufferLength, OUT LPWSTR lpExeName)
DWORD WINAPI DECLSPEC_HOTPATCH GetConsoleTitleW(LPWSTR lpConsoleTitle, DWORD nSize)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleInputExeNameW(IN LPCWSTR lpExeName)
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)
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)
VOID WINAPI RaiseException(_In_ DWORD dwExceptionCode, _In_ DWORD dwExceptionFlags, _In_ DWORD nNumberOfArguments, _In_opt_ const ULONG_PTR *lpArguments)
BOOL WINAPI DuplicateHandle(IN HANDLE hSourceProcessHandle, IN HANDLE hSourceHandle, IN HANDLE hTargetProcessHandle, OUT LPHANDLE lpTargetHandle, IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwOptions)
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
VOID WINAPI GetStartupInfoW(IN LPSTARTUPINFOW lpStartupInfo)
BOOL WINAPI Wow64RevertWow64FsRedirection(IN PVOID OldValue)
BOOL WINAPI Wow64DisableWow64FsRedirection(IN PVOID *OldValue)
BOOL WINAPI DECLSPEC_HOTPATCH WriteConsoleInputA(HANDLE handle, const INPUT_RECORD *buffer, DWORD count, DWORD *written)
BOOL WINAPI DECLSPEC_HOTPATCH WriteConsoleOutputA(HANDLE handle, const CHAR_INFO *buffer, COORD size, COORD coord, SMALL_RECT *region)
DWORD WINAPI GetConsoleCommandHistoryW(LPWSTR buffer, DWORD len, LPCWSTR exename)
BOOL WINAPI DECLSPEC_HOTPATCH FreeConsole(void)
void WINAPI ClosePseudoConsole(HPCON handle)
DWORD WINAPI GetConsoleCommandHistoryA(LPSTR buffer, DWORD len, LPCSTR exename)
static void char_info_WtoA(UINT cp, CHAR_INFO *buffer, int count)
BOOL WINAPI DECLSPEC_HOTPATCH PeekConsoleInputA(HANDLE handle, INPUT_RECORD *buffer, DWORD length, DWORD *count)
BOOL WINAPI AddConsoleAliasW(LPWSTR source, LPWSTR target, LPWSTR exename)
static BOOL alloc_console(BOOL headless)
void WINAPI ExpungeConsoleCommandHistoryA(LPCSTR exename)
static HANDLE create_console_server(void)
UINT WINAPI DECLSPEC_HOTPATCH GetConsoleCP(void)
static BOOL WINAPI default_ctrl_handler(DWORD type)
static HANDLE create_pseudo_console(COORD size, HANDLE input, HANDLE output, HANDLE signal, DWORD flags, HANDLE *process)
static BOOL create_console_connection(HANDLE root)
BOOL WINAPI ReadConsoleInputA(HANDLE handle, INPUT_RECORD *buffer, DWORD length, DWORD *count)
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleScreenBufferInfoEx(HANDLE handle, CONSOLE_SCREEN_BUFFER_INFOEX *info)
BOOL WINAPI GetCurrentConsoleFontEx(HANDLE handle, BOOL maxwindow, CONSOLE_FONT_INFOEX *info)
static COORD get_largest_console_window_size(HANDLE handle)
BOOL WINAPI ReadConsoleA(HANDLE handle, void *buffer, DWORD length, DWORD *count, void *reserved)
static struct ctrl_handler * ctrl_handlers
#define CONSOLE_INPUT_HANDLE
DWORD WINAPI GetConsoleAliasW(LPWSTR source, LPWSTR buffer, DWORD len, LPWSTR exename)
BOOL WINAPI DECLSPEC_HOTPATCH PeekConsoleInputW(HANDLE handle, INPUT_RECORD *buffer, DWORD length, DWORD *count)
static WCHAR input_exe[MAX_PATH+1]
DWORD WINAPI GetConsoleAliasExesLengthW(void)
DWORD WINAPI DECLSPEC_HOTPATCH GetConsoleOriginalTitleA(LPSTR title, DWORD size)
static struct ctrl_handler default_handler
static CRITICAL_SECTION_DEBUG critsect_debug
BOOL WINAPI AddConsoleAliasA(LPSTR source, LPSTR target, LPSTR exename)
HRESULT WINAPI CreatePseudoConsole(COORD size, HANDLE input, HANDLE output, DWORD flags, HPCON *ret)
static void char_info_AtoW(CHAR_INFO *buffer, int count)
BOOL WINAPI ReadConsoleInputW(HANDLE handle, INPUT_RECORD *buffer, DWORD length, DWORD *count)
DWORD WINAPI DECLSPEC_HOTPATCH GetConsoleOriginalTitleW(LPWSTR title, DWORD size)
BOOL WINAPI DECLSPEC_HOTPATCH GetConsoleScreenBufferInfoEx(HANDLE handle, CONSOLE_SCREEN_BUFFER_INFOEX *info)
UINT WINAPI DECLSPEC_HOTPATCH GetConsoleOutputCP(void)
DWORD WINAPI GetConsoleCommandHistoryLengthA(LPCSTR exename)
BOOL WINAPI SetCurrentConsoleFontEx(HANDLE handle, BOOL maxwindow, CONSOLE_FONT_INFOEX *info)
BOOL WINAPI DECLSPEC_HOTPATCH WriteConsoleInputW(HANDLE handle, const INPUT_RECORD *buffer, DWORD count, DWORD *written)
BOOL WINAPI DECLSPEC_HOTPATCH ReadConsoleOutputW(HANDLE handle, CHAR_INFO *buffer, COORD size, COORD coord, SMALL_RECT *region)
#define CONSOLE_OUTPUT_HANDLE
DWORD WINAPI GetConsoleAliasesLengthA(LPSTR unknown)
void WINAPI ExpungeConsoleCommandHistoryW(LPCWSTR exename)
DWORD WINAPI CtrlRoutine(void *arg)
DWORD WINAPI GetConsoleCommandHistoryLengthW(LPCWSTR exename)
static void input_records_WtoA(INPUT_RECORD *buffer, int count)
BOOL WINAPI DECLSPEC_HOTPATCH ReadConsoleOutputCharacterW(HANDLE handle, LPWSTR buffer, DWORD length, COORD coord, DWORD *count)
#define CONSOLE_ERROR_HANDLE
BOOL WINAPI AllocConsole(void)
BOOL WINAPI DECLSPEC_HOTPATCH ReadConsoleOutputCharacterA(HANDLE handle, LPSTR buffer, DWORD length, COORD coord, DWORD *count)
BOOL WINAPI DECLSPEC_HOTPATCH WriteConsoleW(HANDLE handle, const void *buffer, DWORD length, DWORD *written, void *reserved)
static COORD get_console_font_size(HANDLE handle, DWORD index)
HRESULT WINAPI ResizePseudoConsole(HPCON handle, COORD size)
static CRITICAL_SECTION console_section
BOOL WINAPI DECLSPEC_HOTPATCH FillConsoleOutputCharacterW(HANDLE handle, WCHAR ch, DWORD length, COORD coord, DWORD *written)
static BOOL console_ioctl(HANDLE handle, DWORD code, void *in_buff, DWORD in_count, void *out_buff, DWORD out_count, DWORD *read)
static HANDLE console_connection
DWORD WINAPI GetConsoleAliasesLengthW(LPWSTR unknown)
static DWORD get_console_title(WCHAR *title, DWORD size, BOOL current_title)
HWND WINAPI GetConsoleWindow(void)
static HANDLE create_console_reference(HANDLE root)
static BOOL init_console_std_handles(BOOL override_all)
static BOOL is_tty_handle(HANDLE handle)
BOOL WINAPI DECLSPEC_HOTPATCH WriteConsoleA(HANDLE handle, const void *buffer, DWORD length, DWORD *written, void *reserved)
DWORD WINAPI GetConsoleAliasA(LPSTR source, LPSTR buffer, DWORD len, LPSTR exename)
BOOL WINAPI DECLSPEC_HOTPATCH ReadConsoleOutputAttribute(HANDLE handle, WORD *attr, DWORD length, COORD coord, DWORD *count)
static unsigned int console_flags
BOOL WINAPI ReadConsoleW(HANDLE handle, void *buffer, DWORD length, DWORD *count, void *reserved)
BOOL WINAPI DECLSPEC_HOTPATCH ReadConsoleOutputA(HANDLE handle, CHAR_INFO *buffer, COORD size, COORD coord, SMALL_RECT *region)
static void input_records_AtoW(INPUT_RECORD *buffer, int count)
BOOL WINAPI DECLSPEC_HOTPATCH WriteConsoleOutputW(HANDLE handle, const CHAR_INFO *buffer, COORD size, COORD coord, SMALL_RECT *region)
DWORD WINAPI GetConsoleAliasExesLengthA(void)
BOOL WINAPI DECLSPEC_HOTPATCH WriteConsoleOutputAttribute(HANDLE handle, const WORD *attr, DWORD length, COORD coord, DWORD *written)
BOOL WINAPI DECLSPEC_HOTPATCH UpdateProcThreadAttribute(struct _PROC_THREAD_ATTRIBUTE_LIST *list, DWORD flags, DWORD_PTR attr, void *value, SIZE_T size, void *prev_ret, SIZE_T *size_ret)
BOOL WINAPI DECLSPEC_HOTPATCH InitializeProcThreadAttributeList(struct _PROC_THREAD_ATTRIBUTE_LIST *list, DWORD count, DWORD flags, SIZE_T *size)
UINT(* handler)(MSIPACKAGE *)
#define FILE_SYNCHRONOUS_IO_NONALERT
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLenum const GLfloat * params
GLuint GLsizei GLsizei * length
GLuint GLint GLboolean GLint GLenum access
GLenum GLenum GLenum input
GLubyte GLubyte GLubyte GLubyte w
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
static const WCHAR titleW[]
NTSYSAPI PEB *WINAPI RtlGetCurrentPeb(void)
NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserProcess(ULONG)
#define memcpy(s1, s2, n)
#define FILE_FLAG_OVERLAPPED
static IHTMLWindow2 * window
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK io
static PIO_STATUS_BLOCK iosb
static LARGE_INTEGER * frequency
static UINT UINT * out_count
unsigned __int3264 UINT_PTR
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ EVENT_TYPE EventType
NTSYSAPI NTSTATUS NTAPI RtlEnterCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
NTSYSAPI NTSTATUS NTAPI RtlLeaveCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
HANDLE WINAPI CreateNamedPipeW(LPCWSTR lpName, DWORD dwOpenMode, DWORD dwPipeMode, DWORD nMaxInstances, DWORD nOutBufferSize, DWORD nInBufferSize, DWORD nDefaultTimeOut, LPSECURITY_ATTRIBUTES lpSecurityAttributes)
#define FILE_READ_ATTRIBUTES
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI NTSTATUS NTAPI NtDeviceIoControlFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG DeviceIoControlCode, IN PVOID InBuffer OPTIONAL, IN ULONG InBufferLength, OUT PVOID OutBuffer OPTIONAL, IN ULONG OutBufferLength)
#define FILE_SHARE_DELETE
#define FILE_WRITE_ATTRIBUTES
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
NTSTATUS NTAPI NtCreateFile(OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PLARGE_INTEGER AllocationSize OPTIONAL, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG CreateDisposition, IN ULONG CreateOptions, IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength)
#define IMAGE_SUBSYSTEM_WINDOWS_CUI
#define STATUS_CONTROL_C_EXIT
#define DECLSPEC_HOTPATCH
#define STATUS_BUFFER_TOO_SMALL
size_t __cdecl wcsnlen(wchar_t const *const string, size_t const maximum_count)
union _CHAR_INFO::@3472 Char
LIST_ENTRY ProcessLocksList
PRTL_USER_PROCESS_PARAMETERS ProcessParameters
struct ctrl_handler * next
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
#define RTL_CONSTANT_STRING(s)
#define STATUS_INVALID_PARAMETER
static rfbScreenInfoPtr server
#define PIPE_ACCESS_INBOUND
#define STD_OUTPUT_HANDLE
DWORD WINAPI GetLastError(void)
#define STARTF_USESHOWWINDOW
#define STARTF_USECOUNTCHARS
#define NMPWAIT_USE_DEFAULT_WAIT
DWORD WINAPI GetCurrentThreadId(void)
DWORD WINAPI GetCurrentProcessId(void)
#define STARTF_USEFILLATTRIBUTE
#define EXTENDED_STARTUPINFO_PRESENT
#define PROC_THREAD_ATTRIBUTE_HANDLE_LIST
#define STARTF_USESTDHANDLES
#define PIPE_UNLIMITED_INSTANCES
struct _CONSOLE_FONT_INFOEX CONSOLE_FONT_INFOEX
#define CONSOLE_TEXTMODE_BUFFER
BOOL(WINAPI * PHANDLER_ROUTINE)(_In_ DWORD CtrlType)
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid
#define ERROR_BUFFER_OVERFLOW
#define HRESULT_FROM_WIN32(x)
#define ERROR_INVALID_ACCESS
#define FILE_READ_PROPERTIES
#define FILE_WRITE_PROPERTIES
#define DUPLICATE_SAME_ACCESS