master
  1/**
  2 * This file has no copyright assigned and is placed in the Public Domain.
  3 * This file is part of the mingw-w64 runtime package.
  4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5 */
  6
  7#ifndef _APISETCONSOLE_
  8#define _APISETCONSOLE_
  9
 10#include <_mingw_unicode.h>
 11
 12#include <apiset.h>
 13#include <apisetcconv.h>
 14#include <minwinbase.h>
 15#include <minwindef.h>
 16
 17#include <wincontypes.h>
 18
 19#ifdef __cplusplus
 20extern "C" {
 21#endif
 22
 23#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
 24
 25WINBASEAPI WINBOOL WINAPI AllocConsole(void);
 26
 27#if (NTDDI_VERSION >= NTDDI_WIN11_GE)
 28
 29typedef enum ALLOC_CONSOLE_MODE {
 30  ALLOC_CONSOLE_MODE_DEFAULT = 0,
 31  ALLOC_CONSOLE_MODE_NEW_WINDOW = 1,
 32  ALLOC_CONSOLE_MODE_NO_WINDOW = 2
 33} ALLOC_CONSOLE_MODE;
 34
 35typedef struct ALLOC_CONSOLE_OPTIONS {
 36  ALLOC_CONSOLE_MODE mode;
 37  WINBOOL useShowWindow;
 38  WORD showWindow;
 39} ALLOC_CONSOLE_OPTIONS, *PALLOC_CONSOLE_OPTIONS;
 40
 41typedef enum ALLOC_CONSOLE_RESULT {
 42  ALLOC_CONSOLE_RESULT_NO_CONSOLE = 0,
 43  ALLOC_CONSOLE_RESULT_NEW_CONSOLE = 1,
 44  ALLOC_CONSOLE_RESULT_EXISTING_CONSOLE = 2
 45} ALLOC_CONSOLE_RESULT, *PALLOC_CONSOLE_RESULT;
 46
 47WINBASEAPI HRESULT WINAPI AllocConsoleWithOptions(PALLOC_CONSOLE_OPTIONS options, PALLOC_CONSOLE_RESULT result);
 48
 49#endif /* NTDDI_VERSION >= NTDDI_WIN11_GE */
 50
 51WINBASEAPI WINBOOL WINAPI FreeConsole(void);
 52
 53#if (_WIN32_WINNT >= 0x0500)
 54
 55WINBASEAPI WINBOOL WINAPI AttachConsole(DWORD process_id);
 56
 57#define ATTACH_PARENT_PROCESS ((DWORD)-1)
 58
 59#endif /* _WIN32_WINNT >= 0x0500 */
 60
 61WINBASEAPI UINT WINAPI GetConsoleCP(void);
 62WINBASEAPI UINT WINAPI GetConsoleOutputCP(void);
 63
 64#define ENABLE_PROCESSED_INPUT 0x0001
 65#define ENABLE_LINE_INPUT 0x0002
 66#define ENABLE_ECHO_INPUT 0x0004
 67#define ENABLE_WINDOW_INPUT 0x0008
 68#define ENABLE_MOUSE_INPUT 0x0010
 69#define ENABLE_INSERT_MODE 0x0020
 70#define ENABLE_QUICK_EDIT_MODE 0x0040
 71#define ENABLE_EXTENDED_FLAGS 0x0080
 72#define ENABLE_AUTO_POSITION 0x0100
 73#define ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200
 74
 75#define ENABLE_PROCESSED_OUTPUT 0x0001
 76#define ENABLE_WRAP_AT_EOL_OUTPUT 0x0002
 77#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
 78#define DISABLE_NEWLINE_AUTO_RETURN 0x0008
 79#define ENABLE_LVB_GRID_WORLDWIDE 0x0010
 80
 81WINBASEAPI WINBOOL WINAPI GetConsoleMode(HANDLE console_handle, LPDWORD mode);
 82WINBASEAPI WINBOOL WINAPI SetConsoleMode(HANDLE console_handle, DWORD mode);
 83WINBASEAPI WINBOOL WINAPI GetNumberOfConsoleInputEvents(HANDLE console_input, LPDWORD number_of_events);
 84
 85WINBASEAPI WINBOOL WINAPI ReadConsoleInputA(HANDLE console_input, PINPUT_RECORD buffer, DWORD length, LPDWORD number_of_events_read);
 86WINBASEAPI WINBOOL WINAPI ReadConsoleInputW(HANDLE console_input, PINPUT_RECORD buffer, DWORD length, LPDWORD number_of_events_read);
 87#define ReadConsoleInput __MINGW_NAME_AW(ReadConsoleInput)
 88
 89WINBASEAPI WINBOOL WINAPI PeekConsoleInputA(HANDLE console_input, PINPUT_RECORD buffer, DWORD length, LPDWORD number_of_events_read);
 90WINBASEAPI WINBOOL WINAPI PeekConsoleInputW(HANDLE console_input, PINPUT_RECORD buffer, DWORD length, LPDWORD number_of_events_read);
 91#define PeekConsoleInput __MINGW_NAME_AW(PeekConsoleInput)
 92
 93typedef struct _CONSOLE_READCONSOLE_CONTROL {
 94  ULONG nLength;
 95  ULONG nInitialChars;
 96  ULONG dwCtrlWakeupMask;
 97  ULONG dwControlKeyState;
 98} CONSOLE_READCONSOLE_CONTROL, *PCONSOLE_READCONSOLE_CONTROL;
 99
100WINBASEAPI WINBOOL WINAPI ReadConsoleA(HANDLE console_input, LPVOID buffer, DWORD number_of_chars_to_read, LPDWORD number_of_chars_read, PCONSOLE_READCONSOLE_CONTROL input_control);
101WINBASEAPI WINBOOL WINAPI ReadConsoleW(HANDLE console_input, LPVOID buffer, DWORD number_of_chars_to_read, LPDWORD number_of_chars_read, PCONSOLE_READCONSOLE_CONTROL input_control);
102#define ReadConsole __MINGW_NAME_AW(ReadConsole)
103
104WINBASEAPI WINBOOL WINAPI WriteConsoleA(HANDLE console_output, const void *buffer, DWORD number_of_chars_to_write, LPDWORD number_of_chars_written, LPVOID reserved);
105WINBASEAPI WINBOOL WINAPI WriteConsoleW(HANDLE console_output, const void *buffer, DWORD number_of_chars_to_write, LPDWORD number_of_chars_written, LPVOID reserved);
106#define WriteConsole __MINGW_NAME_AW(WriteConsole)
107
108#define CTRL_C_EVENT 0
109#define CTRL_BREAK_EVENT 1
110#define CTRL_CLOSE_EVENT 2
111#define CTRL_LOGOFF_EVENT 5
112#define CTRL_SHUTDOWN_EVENT 6
113
114typedef WINBOOL (WINAPI *PHANDLER_ROUTINE)(DWORD ctrl_type);
115WINBASEAPI WINBOOL WINAPI SetConsoleCtrlHandler(PHANDLER_ROUTINE handler_routine, WINBOOL add);
116
117#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
118
119#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
120
121#if (NTDDI_VERSION >= NTDDI_WIN10_RS5)
122#define PSEUDOCONSOLE_INHERIT_CURSOR (0x1)
123
124WINBASEAPI HRESULT WINAPI CreatePseudoConsole(COORD size, HANDLE input, HANDLE output, DWORD flags, HPCON *pc);
125WINBASEAPI HRESULT WINAPI ResizePseudoConsole(HPCON pc, COORD size);
126WINBASEAPI void WINAPI ClosePseudoConsole(HPCON pc);
127#endif
128
129#if (NTDDI_VERSION >= NTDDI_WIN11_GE)
130WINBASEAPI HRESULT WINAPI ReleasePseudoConsole(HPCON pc);
131#endif
132
133#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
134
135#ifdef __cplusplus
136}
137#endif
138
139#endif /* _APISETCONSOLE_ */