Home | History | Annotate | Download | only in include
      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 #ifndef _WINCON_
      7 #define _WINCON_
      8 
      9 #include <_mingw_unicode.h>
     10 
     11 #include <winapifamily.h>
     12 
     13 #ifdef __cplusplus
     14 extern "C" {
     15 #endif
     16 
     17   typedef struct _COORD {
     18     SHORT X;
     19     SHORT Y;
     20   } COORD,*PCOORD;
     21 
     22   typedef struct _SMALL_RECT {
     23     SHORT Left;
     24     SHORT Top;
     25     SHORT Right;
     26     SHORT Bottom;
     27   } SMALL_RECT,*PSMALL_RECT;
     28 
     29   typedef struct _KEY_EVENT_RECORD {
     30     WINBOOL bKeyDown;
     31     WORD wRepeatCount;
     32     WORD wVirtualKeyCode;
     33     WORD wVirtualScanCode;
     34     union {
     35       WCHAR UnicodeChar;
     36       CHAR AsciiChar;
     37     } uChar;
     38     DWORD dwControlKeyState;
     39   } KEY_EVENT_RECORD,*PKEY_EVENT_RECORD;
     40 
     41 #define RIGHT_ALT_PRESSED 0x1
     42 #define LEFT_ALT_PRESSED 0x2
     43 #define RIGHT_CTRL_PRESSED 0x4
     44 #define LEFT_CTRL_PRESSED 0x8
     45 #define SHIFT_PRESSED 0x10
     46 #define NUMLOCK_ON 0x20
     47 #define SCROLLLOCK_ON 0x40
     48 #define CAPSLOCK_ON 0x80
     49 #define ENHANCED_KEY 0x100
     50 #define NLS_DBCSCHAR 0x10000
     51 #define NLS_ALPHANUMERIC 0x0
     52 #define NLS_KATAKANA 0x20000
     53 #define NLS_HIRAGANA 0x40000
     54 #define NLS_ROMAN 0x400000
     55 #define NLS_IME_CONVERSION 0x800000
     56 #define NLS_IME_DISABLE 0x20000000
     57 
     58   typedef struct _MOUSE_EVENT_RECORD {
     59     COORD dwMousePosition;
     60     DWORD dwButtonState;
     61     DWORD dwControlKeyState;
     62     DWORD dwEventFlags;
     63   } MOUSE_EVENT_RECORD,*PMOUSE_EVENT_RECORD;
     64 
     65 #define FROM_LEFT_1ST_BUTTON_PRESSED 0x1
     66 #define RIGHTMOST_BUTTON_PRESSED 0x2
     67 #define FROM_LEFT_2ND_BUTTON_PRESSED 0x4
     68 #define FROM_LEFT_3RD_BUTTON_PRESSED 0x8
     69 #define FROM_LEFT_4TH_BUTTON_PRESSED 0x10
     70 
     71 #define MOUSE_MOVED 0x1
     72 #define DOUBLE_CLICK 0x2
     73 #define MOUSE_WHEELED 0x4
     74 #if (_WIN32_WINNT >= 0x0600)
     75 #define MOUSE_HWHEELED 0x8
     76 #endif
     77 
     78   typedef struct _WINDOW_BUFFER_SIZE_RECORD {
     79     COORD dwSize;
     80   } WINDOW_BUFFER_SIZE_RECORD,*PWINDOW_BUFFER_SIZE_RECORD;
     81 
     82   typedef struct _MENU_EVENT_RECORD {
     83     UINT dwCommandId;
     84   } MENU_EVENT_RECORD,*PMENU_EVENT_RECORD;
     85 
     86   typedef struct _FOCUS_EVENT_RECORD {
     87     WINBOOL bSetFocus;
     88   } FOCUS_EVENT_RECORD,*PFOCUS_EVENT_RECORD;
     89 
     90   typedef struct _INPUT_RECORD {
     91     WORD EventType;
     92     union {
     93       KEY_EVENT_RECORD KeyEvent;
     94       MOUSE_EVENT_RECORD MouseEvent;
     95       WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
     96       MENU_EVENT_RECORD MenuEvent;
     97       FOCUS_EVENT_RECORD FocusEvent;
     98     } Event;
     99   } INPUT_RECORD,*PINPUT_RECORD;
    100 
    101 #define KEY_EVENT 0x1
    102 #define MOUSE_EVENT 0x2
    103 #define WINDOW_BUFFER_SIZE_EVENT 0x4
    104 #define MENU_EVENT 0x8
    105 #define FOCUS_EVENT 0x10
    106 
    107   typedef struct _CHAR_INFO {
    108     union {
    109       WCHAR UnicodeChar;
    110       CHAR AsciiChar;
    111     } Char;
    112     WORD Attributes;
    113   } CHAR_INFO,*PCHAR_INFO;
    114 
    115 #define FOREGROUND_BLUE 0x1
    116 #define FOREGROUND_GREEN 0x2
    117 #define FOREGROUND_RED 0x4
    118 #define FOREGROUND_INTENSITY 0x8
    119 #define BACKGROUND_BLUE 0x10
    120 #define BACKGROUND_GREEN 0x20
    121 #define BACKGROUND_RED 0x40
    122 #define BACKGROUND_INTENSITY 0x80
    123 #define COMMON_LVB_LEADING_BYTE 0x100
    124 #define COMMON_LVB_TRAILING_BYTE 0x200
    125 #define COMMON_LVB_GRID_HORIZONTAL 0x400
    126 #define COMMON_LVB_GRID_LVERTICAL 0x800
    127 #define COMMON_LVB_GRID_RVERTICAL 0x1000
    128 #define COMMON_LVB_REVERSE_VIDEO 0x4000
    129 #define COMMON_LVB_UNDERSCORE 0x8000
    130 
    131 #define COMMON_LVB_SBCSDBCS 0x300
    132 
    133   typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
    134     COORD dwSize;
    135     COORD dwCursorPosition;
    136     WORD wAttributes;
    137     SMALL_RECT srWindow;
    138     COORD dwMaximumWindowSize;
    139   } CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO;
    140 
    141   typedef struct _CONSOLE_CURSOR_INFO {
    142     DWORD dwSize;
    143     WINBOOL bVisible;
    144   } CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;
    145 
    146   typedef struct _CONSOLE_FONT_INFO {
    147     DWORD nFont;
    148     COORD dwFontSize;
    149   } CONSOLE_FONT_INFO,*PCONSOLE_FONT_INFO;
    150 
    151   typedef struct _CONSOLE_SELECTION_INFO {
    152     DWORD dwFlags;
    153     COORD dwSelectionAnchor;
    154     SMALL_RECT srSelection;
    155   } CONSOLE_SELECTION_INFO,*PCONSOLE_SELECTION_INFO;
    156 
    157 #define CONSOLE_NO_SELECTION 0x0
    158 #define CONSOLE_SELECTION_IN_PROGRESS 0x1
    159 #define CONSOLE_SELECTION_NOT_EMPTY 0x2
    160 #define CONSOLE_MOUSE_SELECTION 0x4
    161 #define CONSOLE_MOUSE_DOWN 0x8
    162 
    163   typedef WINBOOL (WINAPI *PHANDLER_ROUTINE)(DWORD CtrlType);
    164 
    165 #define CTRL_C_EVENT 0
    166 #define CTRL_BREAK_EVENT 1
    167 #define CTRL_CLOSE_EVENT 2
    168 
    169 #define CTRL_LOGOFF_EVENT 5
    170 #define CTRL_SHUTDOWN_EVENT 6
    171 
    172 #define ENABLE_PROCESSED_INPUT 0x1
    173 #define ENABLE_LINE_INPUT 0x2
    174 #define ENABLE_ECHO_INPUT 0x4
    175 #define ENABLE_WINDOW_INPUT 0x8
    176 #define ENABLE_MOUSE_INPUT 0x10
    177 #define ENABLE_INSERT_MODE 0x20
    178 #define ENABLE_QUICK_EDIT_MODE 0x40
    179 #define ENABLE_EXTENDED_FLAGS 0x80
    180 #define ENABLE_AUTO_POSITION 0x100
    181 
    182 #define ENABLE_PROCESSED_OUTPUT 0x1
    183 #define ENABLE_WRAP_AT_EOL_OUTPUT 0x2
    184 
    185 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    186 
    187 #define PeekConsoleInput __MINGW_NAME_AW(PeekConsoleInput)
    188 #define ReadConsoleInput __MINGW_NAME_AW(ReadConsoleInput)
    189 #define WriteConsoleInput __MINGW_NAME_AW(WriteConsoleInput)
    190 #define ReadConsoleOutput __MINGW_NAME_AW(ReadConsoleOutput)
    191 #define WriteConsoleOutput __MINGW_NAME_AW(WriteConsoleOutput)
    192 #define ReadConsoleOutputCharacter __MINGW_NAME_AW(ReadConsoleOutputCharacter)
    193 #define WriteConsoleOutputCharacter __MINGW_NAME_AW(WriteConsoleOutputCharacter)
    194 #define FillConsoleOutputCharacter __MINGW_NAME_AW(FillConsoleOutputCharacter)
    195 #define ScrollConsoleScreenBuffer __MINGW_NAME_AW(ScrollConsoleScreenBuffer)
    196 #define GetConsoleTitle __MINGW_NAME_AW(GetConsoleTitle)
    197 #define SetConsoleTitle __MINGW_NAME_AW(SetConsoleTitle)
    198 #define ReadConsole __MINGW_NAME_AW(ReadConsole)
    199 #define WriteConsole __MINGW_NAME_AW(WriteConsole)
    200 #define AddConsoleAlias __MINGW_NAME_AW(AddConsoleAlias)
    201 #define GetConsoleAlias __MINGW_NAME_AW(GetConsoleAlias)
    202 #define GetConsoleAliasesLength __MINGW_NAME_AW(GetConsoleAliasesLength)
    203 #define GetConsoleAliasExesLength __MINGW_NAME_AW(GetConsoleAliasExesLength)
    204 #define GetConsoleAliases __MINGW_NAME_AW(GetConsoleAliases)
    205 #define GetConsoleAliasExes __MINGW_NAME_AW(GetConsoleAliasExes)
    206 
    207   WINBASEAPI WINBOOL WINAPI PeekConsoleInputA(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsRead);
    208   WINBASEAPI WINBOOL WINAPI PeekConsoleInputW(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsRead);
    209   WINBASEAPI WINBOOL WINAPI ReadConsoleInputA(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsRead);
    210   WINBASEAPI WINBOOL WINAPI ReadConsoleInputW(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsRead);
    211   WINBASEAPI WINBOOL WINAPI WriteConsoleInputA(HANDLE hConsoleInput,CONST INPUT_RECORD *lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsWritten);
    212   WINBASEAPI WINBOOL WINAPI WriteConsoleInputW(HANDLE hConsoleInput,CONST INPUT_RECORD *lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsWritten);
    213   WINBASEAPI WINBOOL WINAPI ReadConsoleOutputA(HANDLE hConsoleOutput,PCHAR_INFO lpBuffer,COORD dwBufferSize,COORD dwBufferCoord,PSMALL_RECT lpReadRegion);
    214   WINBASEAPI WINBOOL WINAPI ReadConsoleOutputW(HANDLE hConsoleOutput,PCHAR_INFO lpBuffer,COORD dwBufferSize,COORD dwBufferCoord,PSMALL_RECT lpReadRegion);
    215   WINBASEAPI WINBOOL WINAPI WriteConsoleOutputA(HANDLE hConsoleOutput,CONST CHAR_INFO *lpBuffer,COORD dwBufferSize,COORD dwBufferCoord,PSMALL_RECT lpWriteRegion);
    216   WINBASEAPI WINBOOL WINAPI WriteConsoleOutputW(HANDLE hConsoleOutput,CONST CHAR_INFO *lpBuffer,COORD dwBufferSize,COORD dwBufferCoord,PSMALL_RECT lpWriteRegion);
    217   WINBASEAPI WINBOOL WINAPI ReadConsoleOutputCharacterA(HANDLE hConsoleOutput,LPSTR lpCharacter,DWORD nLength,COORD dwReadCoord,LPDWORD lpNumberOfCharsRead);
    218   WINBASEAPI WINBOOL WINAPI ReadConsoleOutputCharacterW(HANDLE hConsoleOutput,LPWSTR lpCharacter,DWORD nLength,COORD dwReadCoord,LPDWORD lpNumberOfCharsRead);
    219   WINBASEAPI WINBOOL WINAPI ReadConsoleOutputAttribute(HANDLE hConsoleOutput,LPWORD lpAttribute,DWORD nLength,COORD dwReadCoord,LPDWORD lpNumberOfAttrsRead);
    220   WINBASEAPI WINBOOL WINAPI WriteConsoleOutputCharacterA(HANDLE hConsoleOutput,LPCSTR lpCharacter,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfCharsWritten);
    221   WINBASEAPI WINBOOL WINAPI WriteConsoleOutputCharacterW(HANDLE hConsoleOutput,LPCWSTR lpCharacter,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfCharsWritten);
    222   WINBASEAPI WINBOOL WINAPI WriteConsoleOutputAttribute(HANDLE hConsoleOutput,CONST WORD *lpAttribute,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfAttrsWritten);
    223   WINBASEAPI WINBOOL WINAPI FillConsoleOutputCharacterA(HANDLE hConsoleOutput,CHAR cCharacter,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfCharsWritten);
    224   WINBASEAPI WINBOOL WINAPI FillConsoleOutputCharacterW(HANDLE hConsoleOutput,WCHAR cCharacter,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfCharsWritten);
    225   WINBASEAPI WINBOOL WINAPI FillConsoleOutputAttribute(HANDLE hConsoleOutput,WORD wAttribute,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfAttrsWritten);
    226   WINBASEAPI WINBOOL WINAPI GetConsoleMode(HANDLE hConsoleHandle,LPDWORD lpMode);
    227   WINBASEAPI WINBOOL WINAPI GetNumberOfConsoleInputEvents(HANDLE hConsoleInput,LPDWORD lpNumberOfEvents);
    228   WINBASEAPI WINBOOL WINAPI GetConsoleScreenBufferInfo(HANDLE hConsoleOutput,PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo);
    229   WINBASEAPI COORD WINAPI GetLargestConsoleWindowSize(HANDLE hConsoleOutput);
    230   WINBASEAPI WINBOOL WINAPI GetConsoleCursorInfo(HANDLE hConsoleOutput,PCONSOLE_CURSOR_INFO lpConsoleCursorInfo);
    231   WINBASEAPI WINBOOL WINAPI GetCurrentConsoleFont(HANDLE hConsoleOutput,WINBOOL bMaximumWindow,PCONSOLE_FONT_INFO lpConsoleCurrentFont);
    232   WINBASEAPI COORD WINAPI GetConsoleFontSize(HANDLE hConsoleOutput,DWORD nFont);
    233   WINBASEAPI WINBOOL WINAPI GetConsoleSelectionInfo(PCONSOLE_SELECTION_INFO lpConsoleSelectionInfo);
    234   WINBASEAPI WINBOOL WINAPI GetNumberOfConsoleMouseButtons(LPDWORD lpNumberOfMouseButtons);
    235   WINBASEAPI WINBOOL WINAPI SetConsoleMode(HANDLE hConsoleHandle,DWORD dwMode);
    236   WINBASEAPI WINBOOL WINAPI SetConsoleActiveScreenBuffer(HANDLE hConsoleOutput);
    237   WINBASEAPI WINBOOL WINAPI FlushConsoleInputBuffer(HANDLE hConsoleInput);
    238   WINBASEAPI WINBOOL WINAPI SetConsoleScreenBufferSize(HANDLE hConsoleOutput,COORD dwSize);
    239   WINBASEAPI WINBOOL WINAPI SetConsoleCursorPosition(HANDLE hConsoleOutput,COORD dwCursorPosition);
    240   WINBASEAPI WINBOOL WINAPI SetConsoleCursorInfo(HANDLE hConsoleOutput,CONST CONSOLE_CURSOR_INFO *lpConsoleCursorInfo);
    241   WINBASEAPI WINBOOL WINAPI ScrollConsoleScreenBufferA(HANDLE hConsoleOutput,CONST SMALL_RECT *lpScrollRectangle,CONST SMALL_RECT *lpClipRectangle,COORD dwDestinationOrigin,CONST CHAR_INFO *lpFill);
    242   WINBASEAPI WINBOOL WINAPI ScrollConsoleScreenBufferW(HANDLE hConsoleOutput,CONST SMALL_RECT *lpScrollRectangle,CONST SMALL_RECT *lpClipRectangle,COORD dwDestinationOrigin,CONST CHAR_INFO *lpFill);
    243   WINBASEAPI WINBOOL WINAPI SetConsoleWindowInfo(HANDLE hConsoleOutput,WINBOOL bAbsolute,CONST SMALL_RECT *lpConsoleWindow);
    244   WINBASEAPI WINBOOL WINAPI SetConsoleTextAttribute(HANDLE hConsoleOutput,WORD wAttributes);
    245   WINBASEAPI WINBOOL WINAPI SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine,WINBOOL Add);
    246   WINBASEAPI WINBOOL WINAPI GenerateConsoleCtrlEvent(DWORD dwCtrlEvent,DWORD dwProcessGroupId);
    247   WINBASEAPI WINBOOL WINAPI AllocConsole(VOID);
    248   WINBASEAPI WINBOOL WINAPI FreeConsole(VOID);
    249   WINBASEAPI WINBOOL WINAPI AttachConsole(DWORD dwProcessId);
    250 
    251 #define ATTACH_PARENT_PROCESS ((DWORD)-1)
    252 
    253   WINBASEAPI DWORD WINAPI GetConsoleTitleA(LPSTR lpConsoleTitle,DWORD nSize);
    254   WINBASEAPI DWORD WINAPI GetConsoleTitleW(LPWSTR lpConsoleTitle,DWORD nSize);
    255   WINBASEAPI WINBOOL WINAPI SetConsoleTitleA(LPCSTR lpConsoleTitle);
    256   WINBASEAPI WINBOOL WINAPI SetConsoleTitleW(LPCWSTR lpConsoleTitle);
    257   WINBASEAPI WINBOOL WINAPI ReadConsoleA(HANDLE hConsoleInput,LPVOID lpBuffer,DWORD nNumberOfCharsToRead,LPDWORD lpNumberOfCharsRead,LPVOID lpReserved);
    258   WINBASEAPI WINBOOL WINAPI ReadConsoleW(HANDLE hConsoleInput,LPVOID lpBuffer,DWORD nNumberOfCharsToRead,LPDWORD lpNumberOfCharsRead,LPVOID lpReserved);
    259   WINBASEAPI WINBOOL WINAPI WriteConsoleA(HANDLE hConsoleOutput,CONST VOID *lpBuffer,DWORD nNumberOfCharsToWrite,LPDWORD lpNumberOfCharsWritten,LPVOID lpReserved);
    260   WINBASEAPI WINBOOL WINAPI WriteConsoleW(HANDLE hConsoleOutput,CONST VOID *lpBuffer,DWORD nNumberOfCharsToWrite,LPDWORD lpNumberOfCharsWritten,LPVOID lpReserved);
    261 
    262 #define CONSOLE_TEXTMODE_BUFFER 1
    263 
    264   WINBASEAPI HANDLE WINAPI CreateConsoleScreenBuffer(DWORD dwDesiredAccess,DWORD dwShareMode,CONST SECURITY_ATTRIBUTES *lpSecurityAttributes,DWORD dwFlags,LPVOID lpScreenBufferData);
    265   WINBASEAPI UINT WINAPI GetConsoleCP(VOID);
    266   WINBASEAPI WINBOOL WINAPI SetConsoleCP(UINT wCodePageID);
    267   WINBASEAPI UINT WINAPI GetConsoleOutputCP(VOID);
    268   WINBASEAPI WINBOOL WINAPI SetConsoleOutputCP(UINT wCodePageID);
    269 
    270 #define CONSOLE_FULLSCREEN 1
    271 #define CONSOLE_FULLSCREEN_HARDWARE 2
    272   WINBASEAPI WINBOOL WINAPI GetConsoleDisplayMode(LPDWORD lpModeFlags);
    273 
    274 #define CONSOLE_FULLSCREEN_MODE 1
    275 #define CONSOLE_WINDOWED_MODE 2
    276   WINBASEAPI WINBOOL WINAPI SetConsoleDisplayMode(HANDLE hConsoleOutput, DWORD dwFlags, PCOORD lpNewScreenBufferDimensions);
    277 
    278   WINBASEAPI HWND WINAPI GetConsoleWindow(VOID);
    279   WINBASEAPI DWORD WINAPI GetConsoleProcessList(LPDWORD lpdwProcessList,DWORD dwProcessCount);
    280   WINBASEAPI WINBOOL WINAPI AddConsoleAliasA(LPSTR Source,LPSTR Target,LPSTR ExeName);
    281   WINBASEAPI WINBOOL WINAPI AddConsoleAliasW(LPWSTR Source,LPWSTR Target,LPWSTR ExeName);
    282   WINBASEAPI DWORD WINAPI GetConsoleAliasA(LPSTR Source,LPSTR TargetBuffer,DWORD TargetBufferLength,LPSTR ExeName);
    283   WINBASEAPI DWORD WINAPI GetConsoleAliasW(LPWSTR Source,LPWSTR TargetBuffer,DWORD TargetBufferLength,LPWSTR ExeName);
    284   WINBASEAPI DWORD WINAPI GetConsoleAliasesLengthA(LPSTR ExeName);
    285   WINBASEAPI DWORD WINAPI GetConsoleAliasesLengthW(LPWSTR ExeName);
    286   WINBASEAPI DWORD WINAPI GetConsoleAliasExesLengthA(VOID);
    287   WINBASEAPI DWORD WINAPI GetConsoleAliasExesLengthW(VOID);
    288   WINBASEAPI DWORD WINAPI GetConsoleAliasesA(LPSTR AliasBuffer,DWORD AliasBufferLength,LPSTR ExeName);
    289   WINBASEAPI DWORD WINAPI GetConsoleAliasesW(LPWSTR AliasBuffer,DWORD AliasBufferLength,LPWSTR ExeName);
    290   WINBASEAPI DWORD WINAPI GetConsoleAliasExesA(LPSTR ExeNameBuffer,DWORD ExeNameBufferLength);
    291   WINBASEAPI DWORD WINAPI GetConsoleAliasExesW(LPWSTR ExeNameBuffer,DWORD ExeNameBufferLength);
    292 
    293 #ifndef LF_FACESIZE
    294 #define LF_FACESIZE 32
    295 #endif
    296 
    297 typedef struct _CONSOLE_FONT_INFOEX {
    298   ULONG cbSize;
    299   DWORD nFont;
    300   COORD dwFontSize;
    301   UINT  FontFamily;
    302   UINT  FontWeight;
    303   WCHAR FaceName[LF_FACESIZE];
    304 } CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX;
    305 
    306 typedef struct _CONSOLE_HISTORY_INFO {
    307   UINT  cbSize;
    308   UINT  HistoryBufferSize;
    309   UINT  NumberOfHistoryBuffers;
    310   DWORD dwFlags;
    311 } CONSOLE_HISTORY_INFO, *PCONSOLE_HISTORY_INFO;
    312 
    313 typedef struct _CONSOLE_READCONSOLE_CONTROL {
    314   ULONG nLength;
    315   ULONG nInitialChars;
    316   ULONG dwCtrlWakeupMask;
    317   ULONG dwControlKeyState;
    318 } CONSOLE_READCONSOLE_CONTROL, *PCONSOLE_READCONSOLE_CONTROL;
    319 
    320 typedef struct _CONSOLE_SCREEN_BUFFER_INFOEX {
    321   ULONG      cbSize;
    322   COORD      dwSize;
    323   COORD      dwCursorPosition;
    324   WORD       wAttributes;
    325   SMALL_RECT srWindow;
    326   COORD      dwMaximumWindowSize;
    327   WORD       wPopupAttributes;
    328   WINBOOL    bFullscreenSupported;
    329   COLORREF   ColorTable[16];
    330 } CONSOLE_SCREEN_BUFFER_INFOEX, *PCONSOLE_SCREEN_BUFFER_INFOEX;
    331 
    332 WINBOOL WINAPI GetConsoleHistoryInfo(
    333   PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo
    334 );
    335 
    336 #if (_WIN32_WINNT >= 0x0600)
    337 #define GetConsoleOriginalTitle __MINGW_NAME_AW(GetConsoleOriginalTitle)
    338 
    339 WINBASEAPI DWORD WINAPI GetConsoleOriginalTitleA(
    340   LPSTR lpConsoleTitle,
    341   DWORD nSize
    342 );
    343 
    344 WINBASEAPI DWORD WINAPI GetConsoleOriginalTitleW(
    345   LPWSTR lpConsoleTitle,
    346   DWORD nSize
    347 );
    348 #endif /* (_WIN32_WINNT >= 0x0600) */
    349 
    350 WINBASEAPI WINBOOL WINAPI GetConsoleScreenBufferInfoEx(
    351   HANDLE hConsoleOutput,
    352   PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx
    353 );
    354 
    355 WINBASEAPI WINBOOL WINAPI GetCurrentConsoleFontEx(
    356   HANDLE hConsoleOutput,
    357   WINBOOL bMaximumWindow,
    358   PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx
    359 );
    360 
    361 WINBASEAPI WINBOOL WINAPI SetConsoleHistoryInfo(
    362   PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo
    363 );
    364 
    365 WINBASEAPI WINBOOL WINAPI SetConsoleScreenBufferInfoEx(
    366   HANDLE hConsoleOutput,
    367   PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx
    368 );
    369 
    370 WINBASEAPI WINBOOL WINAPI SetCurrentConsoleFontEx(
    371   HANDLE hConsoleOutput,
    372   WINBOOL bMaximumWindow,
    373   PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx
    374 );
    375 
    376 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
    377 
    378 #ifdef __cplusplus
    379 }
    380 #endif
    381 #endif
    382