[RXCE]
[reactos.git] / reactos / sdk / include / psdk / wincon.h
1 #ifndef _WINCON_H
2 #define _WINCON_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 #if (_WIN32_WINNT >= 0x0600) && !defined(NOGDI)
9 # include "wingdi.h"
10 #endif
11
12 #ifdef _MSC_VER
13 #pragma warning(push)
14 #pragma warning(disable:4820)
15 #endif
16
17 /*
18 * Special PID for parent process for AttachConsole API
19 */
20 #if (_WIN32_WINNT >= 0x0501)
21 #define ATTACH_PARENT_PROCESS ((DWORD)-1)
22 #endif
23
24 /*
25 * Console display modes
26 */
27 // These codes are answered by GetConsoleDisplayMode
28 #define CONSOLE_WINDOWED 0
29 #define CONSOLE_FULLSCREEN 1
30 #define CONSOLE_FULLSCREEN_HARDWARE 2
31
32 // These codes should be given to SetConsoleDisplayMode
33 #define CONSOLE_FULLSCREEN_MODE 1
34 #define CONSOLE_WINDOWED_MODE 2
35
36 /*
37 * Color attributes for text and screen background
38 */
39 #define FOREGROUND_BLUE 0x0001
40 #define FOREGROUND_GREEN 0x0002
41 #define FOREGROUND_RED 0x0004
42 #define FOREGROUND_INTENSITY 0x0008
43 #define BACKGROUND_BLUE 0x0010
44 #define BACKGROUND_GREEN 0x0020
45 #define BACKGROUND_RED 0x0040
46 #define BACKGROUND_INTENSITY 0x0080
47
48 #define COMMON_LVB_LEADING_BYTE 0x0100
49 #define COMMON_LVB_TRAILING_BYTE 0x0200
50 #define COMMON_LVB_GRID_HORIZONTAL 0x0400
51 #define COMMON_LVB_GRID_LVERTICAL 0x0800
52 #define COMMON_LVB_GRID_RVERTICAL 0x1000
53 #define COMMON_LVB_REVERSE_VIDEO 0x4000
54 #define COMMON_LVB_UNDERSCORE 0x8000
55
56 /*
57 * Screen buffer types
58 */
59 #define CONSOLE_TEXTMODE_BUFFER 1
60 #define CONSOLE_GRAPHICS_BUFFER 2 /* Undocumented, see http://blog.airesoft.co.uk/2012/10/things-ms-can-do-that-they-dont-tell-you-about-console-graphics/ */
61
62 /*
63 * Control handler codes
64 */
65 #define CTRL_C_EVENT 0
66 #define CTRL_BREAK_EVENT 1
67 #define CTRL_CLOSE_EVENT 2
68 #define CTRL_LAST_CLOSE_EVENT 3 /* Undocumented */
69 #define CTRL_LOGOFF_EVENT 5
70 #define CTRL_SHUTDOWN_EVENT 6
71
72 /*
73 * Input mode flags
74 */
75 #define ENABLE_PROCESSED_INPUT 0x0001
76 #define ENABLE_LINE_INPUT 0x0002
77 #define ENABLE_ECHO_INPUT 0x0004
78 #define ENABLE_WINDOW_INPUT 0x0008
79 #define ENABLE_MOUSE_INPUT 0x0010
80 #define ENABLE_INSERT_MODE 0x0020
81 #define ENABLE_QUICK_EDIT_MODE 0x0040
82 #define ENABLE_EXTENDED_FLAGS 0x0080
83 #if (_WIN32_WINNT >= 0x0600)
84 #define ENABLE_AUTO_POSITION 0x0100
85 #endif
86
87 /*
88 * Output mode flags
89 */
90 #define ENABLE_PROCESSED_OUTPUT 0x0001
91 #define ENABLE_WRAP_AT_EOL_OUTPUT 0x0002
92
93 /*
94 * Console selection flags
95 */
96 #define CONSOLE_NO_SELECTION 0x0000
97 #define CONSOLE_SELECTION_IN_PROGRESS 0x0001
98 #define CONSOLE_SELECTION_NOT_EMPTY 0x0002
99 #define CONSOLE_MOUSE_SELECTION 0x0004
100 #define CONSOLE_MOUSE_DOWN 0x0008
101
102 /*
103 * History information and mode flags
104 */
105 #if (_WIN32_WINNT >= 0x0600)
106 // For Get/SetConsoleHistoryInfo
107 #define HISTORY_NO_DUP_FLAG 0x0001
108 // For SetConsoleCommandHistoryMode
109 #define CONSOLE_OVERSTRIKE 0x0001
110 #endif
111
112
113 /*
114 * Read input flags
115 */
116 #define CONSOLE_READ_KEEPEVENT 0x0001
117 #define CONSOLE_READ_CONTINUE 0x0002
118
119 /*
120 * Event types
121 */
122 #define KEY_EVENT 0x0001
123 #define MOUSE_EVENT 0x0002
124 #define WINDOW_BUFFER_SIZE_EVENT 0x0004
125 #define MENU_EVENT 0x0008
126 #define FOCUS_EVENT 0x0010
127
128 /*
129 * ControlKeyState flags
130 */
131 #define RIGHT_ALT_PRESSED 0x0001
132 #define LEFT_ALT_PRESSED 0x0002
133 #define RIGHT_CTRL_PRESSED 0x0004
134 #define LEFT_CTRL_PRESSED 0x0008
135 #define SHIFT_PRESSED 0x0010
136 #define NUMLOCK_ON 0x0020
137 #define SCROLLLOCK_ON 0x0040
138 #define CAPSLOCK_ON 0x0080
139 #define ENHANCED_KEY 0x0100
140
141 /*
142 * ButtonState flags
143 */
144 #define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001
145 #define RIGHTMOST_BUTTON_PRESSED 0x0002
146 #define FROM_LEFT_2ND_BUTTON_PRESSED 0x0004
147 #define FROM_LEFT_3RD_BUTTON_PRESSED 0x0008
148 #define FROM_LEFT_4TH_BUTTON_PRESSED 0x0010
149
150 /*
151 * Mouse event flags
152 */
153 #define MOUSE_MOVED 0x0001
154 #define DOUBLE_CLICK 0x0002
155 #define MOUSE_WHEELED 0x0004
156 #if (_WIN32_WINNT >= 0x0600)
157 #define MOUSE_HWHEELED 0x0008
158 #endif
159
160 typedef struct _CONSOLE_READCONSOLE_CONTROL {
161 ULONG nLength;
162 ULONG nInitialChars;
163 ULONG dwCtrlWakeupMask;
164 ULONG dwControlKeyState;
165 } CONSOLE_READCONSOLE_CONTROL, *PCONSOLE_READCONSOLE_CONTROL;
166
167 typedef struct _CHAR_INFO {
168 union {
169 WCHAR UnicodeChar;
170 CHAR AsciiChar;
171 } Char;
172 WORD Attributes;
173 } CHAR_INFO,*PCHAR_INFO;
174
175 typedef struct _SMALL_RECT {
176 SHORT Left;
177 SHORT Top;
178 SHORT Right;
179 SHORT Bottom;
180 } SMALL_RECT,*PSMALL_RECT;
181
182 typedef struct _CONSOLE_CURSOR_INFO {
183 DWORD dwSize;
184 BOOL bVisible;
185 } CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;
186
187 typedef struct _COORD {
188 SHORT X;
189 SHORT Y;
190 } COORD, *PCOORD;
191
192 typedef struct _CONSOLE_SELECTION_INFO {
193 DWORD dwFlags;
194 COORD dwSelectionAnchor;
195 SMALL_RECT srSelection;
196 } CONSOLE_SELECTION_INFO, *PCONSOLE_SELECTION_INFO;
197
198 typedef struct _CONSOLE_FONT_INFO {
199 DWORD nFont;
200 COORD dwFontSize;
201 } CONSOLE_FONT_INFO, *PCONSOLE_FONT_INFO;
202
203 typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
204 COORD dwSize;
205 COORD dwCursorPosition;
206 WORD wAttributes;
207 SMALL_RECT srWindow;
208 COORD dwMaximumWindowSize;
209 } CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO;
210
211 /* Undocumented, see http://blog.airesoft.co.uk/2012/10/things-ms-can-do-that-they-dont-tell-you-about-console-graphics/ */
212 #if defined(_WINGDI_) && !defined(NOGDI)
213 typedef struct _CONSOLE_GRAPHICS_BUFFER_INFO {
214 DWORD dwBitMapInfoLength;
215 LPBITMAPINFO lpBitMapInfo;
216 DWORD dwUsage; // DIB_PAL_COLORS or DIB_RGB_COLORS
217 HANDLE hMutex;
218 PVOID lpBitMap;
219 } CONSOLE_GRAPHICS_BUFFER_INFO, *PCONSOLE_GRAPHICS_BUFFER_INFO;
220 #endif
221
222 typedef BOOL(CALLBACK *PHANDLER_ROUTINE)(_In_ DWORD);
223
224 typedef struct _KEY_EVENT_RECORD {
225 BOOL bKeyDown;
226 WORD wRepeatCount;
227 WORD wVirtualKeyCode;
228 WORD wVirtualScanCode;
229 union {
230 WCHAR UnicodeChar;
231 CHAR AsciiChar;
232 } uChar;
233 DWORD dwControlKeyState;
234 }
235 #ifdef __GNUC__
236 /* gcc's alignment is not what win32 expects */
237 PACKED
238 #endif
239 KEY_EVENT_RECORD, *PKEY_EVENT_RECORD;
240
241 typedef struct _MOUSE_EVENT_RECORD {
242 COORD dwMousePosition;
243 DWORD dwButtonState;
244 DWORD dwControlKeyState;
245 DWORD dwEventFlags;
246 } MOUSE_EVENT_RECORD, *PMOUSE_EVENT_RECORD;
247
248 typedef struct _WINDOW_BUFFER_SIZE_RECORD {
249 COORD dwSize;
250 } WINDOW_BUFFER_SIZE_RECORD, *PWINDOW_BUFFER_SIZE_RECORD;
251
252 typedef struct _MENU_EVENT_RECORD {
253 UINT dwCommandId;
254 } MENU_EVENT_RECORD, *PMENU_EVENT_RECORD;
255
256 typedef struct _FOCUS_EVENT_RECORD {
257 BOOL bSetFocus;
258 } FOCUS_EVENT_RECORD, *PFOCUS_EVENT_RECORD;
259
260 typedef struct _INPUT_RECORD {
261 WORD EventType;
262 union {
263 KEY_EVENT_RECORD KeyEvent;
264 MOUSE_EVENT_RECORD MouseEvent;
265 WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
266 MENU_EVENT_RECORD MenuEvent;
267 FOCUS_EVENT_RECORD FocusEvent;
268 } Event;
269 } INPUT_RECORD, *PINPUT_RECORD;
270
271 #if (_WIN32_WINNT >= 0x0600)
272 typedef struct _CONSOLE_HISTORY_INFO {
273 UINT cbSize;
274 UINT HistoryBufferSize;
275 UINT NumberOfHistoryBuffers;
276 DWORD dwFlags;
277 } CONSOLE_HISTORY_INFO, *PCONSOLE_HISTORY_INFO;
278
279 typedef struct _CONSOLE_SCREEN_BUFFER_INFOEX {
280 ULONG cbSize;
281 COORD dwSize;
282 COORD dwCursorPosition;
283 WORD wAttributes;
284 SMALL_RECT srWindow;
285 COORD dwMaximumWindowSize;
286 WORD wPopupAttributes;
287 BOOL bFullscreenSupported;
288 COLORREF ColorTable[16];
289 } CONSOLE_SCREEN_BUFFER_INFOEX, *PCONSOLE_SCREEN_BUFFER_INFOEX;
290
291 #ifndef NOGDI
292 typedef struct _CONSOLE_FONT_INFOEX {
293 ULONG cbSize;
294 DWORD nFont;
295 COORD dwFontSize;
296 UINT FontFamily;
297 UINT FontWeight;
298 WCHAR FaceName[LF_FACESIZE];
299 } CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX;
300 #endif
301 #endif
302
303 BOOL WINAPI AllocConsole(VOID);
304
305 #if (_WIN32_WINNT >= 0x0501)
306 BOOL WINAPI AttachConsole(_In_ DWORD);
307
308 BOOL WINAPI AddConsoleAliasA(_In_ LPCSTR, _In_ LPCSTR, _In_ LPCSTR);
309 BOOL WINAPI AddConsoleAliasW(_In_ LPCWSTR, _In_ LPCWSTR, _In_ LPCWSTR);
310
311 DWORD
312 WINAPI
313 GetConsoleAliasA(
314 _In_ LPSTR Source,
315 _Out_writes_(TargetBufferLength) LPSTR TargetBuffer,
316 _In_ DWORD TargetBufferLength,
317 _In_ LPSTR ExeName);
318
319 DWORD
320 WINAPI
321 GetConsoleAliasW(
322 _In_ LPWSTR Source,
323 _Out_writes_(TargetBufferLength) LPWSTR TargetBuffer,
324 _In_ DWORD TargetBufferLength,
325 _In_ LPWSTR ExeName);
326
327 DWORD
328 WINAPI
329 GetConsoleAliasesA(
330 _Out_writes_(AliasBufferLength) LPSTR AliasBuffer,
331 _In_ DWORD AliasBufferLength,
332 _In_ LPSTR ExeName);
333
334 DWORD
335 WINAPI
336 GetConsoleAliasesW(
337 _Out_writes_(AliasBufferLength) LPWSTR AliasBuffer,
338 _In_ DWORD AliasBufferLength,
339 _In_ LPWSTR ExeName);
340
341 DWORD WINAPI GetConsoleAliasesLengthA(_In_ LPSTR ExeName);
342 DWORD WINAPI GetConsoleAliasesLengthW(_In_ LPWSTR ExeName);
343
344 DWORD
345 WINAPI
346 GetConsoleAliasExesA(
347 _Out_writes_(ExeNameBufferLength) LPSTR ExeNameBuffer,
348 _In_ DWORD ExeNameBufferLength);
349
350 DWORD
351 WINAPI
352 GetConsoleAliasExesW(
353 _Out_writes_(ExeNameBufferLength) LPWSTR ExeNameBuffer,
354 _In_ DWORD ExeNameBufferLength);
355
356 DWORD WINAPI GetConsoleAliasExesLengthA(VOID);
357 DWORD WINAPI GetConsoleAliasExesLengthW(VOID);
358 #endif
359
360 HANDLE
361 WINAPI
362 CreateConsoleScreenBuffer(
363 _In_ DWORD,
364 _In_ DWORD,
365 _In_opt_ CONST SECURITY_ATTRIBUTES*,
366 _In_ DWORD,
367 _Reserved_ LPVOID);
368
369 BOOL
370 WINAPI
371 FillConsoleOutputAttribute(
372 _In_ HANDLE,
373 _In_ WORD,
374 _In_ DWORD,
375 _In_ COORD,
376 _Out_ PDWORD);
377
378 BOOL
379 WINAPI
380 FillConsoleOutputCharacterA(
381 _In_ HANDLE,
382 _In_ CHAR,
383 _In_ DWORD,
384 _In_ COORD,
385 _Out_ PDWORD);
386
387 BOOL
388 WINAPI
389 FillConsoleOutputCharacterW(
390 _In_ HANDLE,
391 _In_ WCHAR,
392 _In_ DWORD,
393 _In_ COORD,
394 _Out_ PDWORD);
395
396 BOOL WINAPI FlushConsoleInputBuffer(_In_ HANDLE);
397 BOOL WINAPI FreeConsole(VOID);
398 BOOL WINAPI GenerateConsoleCtrlEvent(_In_ DWORD, _In_ DWORD);
399 UINT WINAPI GetConsoleCP(VOID);
400 BOOL WINAPI GetConsoleCursorInfo(_In_ HANDLE, _Out_ PCONSOLE_CURSOR_INFO);
401 BOOL WINAPI GetConsoleMode(_In_ HANDLE, _Out_ PDWORD);
402 UINT WINAPI GetConsoleOutputCP(VOID);
403
404 BOOL
405 WINAPI
406 GetConsoleScreenBufferInfo(
407 _In_ HANDLE,
408 _Out_ PCONSOLE_SCREEN_BUFFER_INFO);
409
410 /* Undocumented, see http://blog.airesoft.co.uk/2012/10/things-ms-can-do-that-they-dont-tell-you-about-console-graphics/ */
411 BOOL WINAPI InvalidateConsoleDIBits(_In_ HANDLE, _In_ PSMALL_RECT);
412
413 DWORD
414 WINAPI
415 GetConsoleTitleA(
416 _Out_writes_(nSize) LPSTR lpConsoleTitle,
417 _In_ DWORD nSize);
418
419 DWORD
420 WINAPI
421 GetConsoleTitleW(
422 _Out_writes_(nSize) LPWSTR lpConsoleTitle,
423 _In_ DWORD nSize);
424
425 COORD
426 WINAPI
427 GetConsoleFontSize(
428 _In_ HANDLE hConsoleOutput,
429 _In_ DWORD nFont);
430
431 BOOL
432 WINAPI
433 GetCurrentConsoleFont(
434 _In_ HANDLE hConsoleOutput,
435 _In_ BOOL bMaximumWindow,
436 _Out_ PCONSOLE_FONT_INFO lpConsoleCurrentFont);
437
438 #if (_WIN32_WINNT >= 0x0500)
439
440 HWND WINAPI GetConsoleWindow(VOID);
441 BOOL WINAPI GetConsoleDisplayMode(_Out_ LPDWORD lpModeFlags);
442
443 BOOL
444 WINAPI
445 SetConsoleDisplayMode(
446 _In_ HANDLE hConsoleOutput,
447 _In_ DWORD dwFlags,
448 _Out_opt_ PCOORD lpNewScreenBufferDimensions);
449
450 #endif
451
452 COORD WINAPI GetLargestConsoleWindowSize(_In_ HANDLE);
453 BOOL WINAPI GetNumberOfConsoleInputEvents(_In_ HANDLE, _Out_ PDWORD);
454 BOOL WINAPI GetNumberOfConsoleMouseButtons(_Out_ PDWORD);
455
456 _Success_(return != 0)
457 BOOL
458 WINAPI PeekConsoleInputA(
459 _In_ HANDLE hConsoleInput,
460 _Out_writes_(nLength) PINPUT_RECORD lpBuffer,
461 _In_ DWORD nLength,
462 _Out_ LPDWORD lpNumberOfEventsRead);
463
464 _Success_(return != 0)
465 BOOL
466 WINAPI
467 PeekConsoleInputW(
468 _In_ HANDLE hConsoleInput,
469 _Out_writes_(nLength) PINPUT_RECORD lpBuffer,
470 _In_ DWORD nLength,
471 _Out_ LPDWORD lpNumberOfEventsRead);
472
473 _Success_(return != 0)
474 BOOL
475 WINAPI
476 ReadConsoleA(
477 _In_ HANDLE hConsoleInput,
478 _Out_writes_bytes_to_(nNumberOfCharsToRead * sizeof(CHAR), *lpNumberOfCharsRead * sizeof(CHAR)) LPVOID lpBuffer,
479 _In_ DWORD nNumberOfCharsToRead,
480 _Out_ _Deref_out_range_(<= , nNumberOfCharsToRead) LPDWORD lpNumberOfCharsRead,
481 _In_opt_ PCONSOLE_READCONSOLE_CONTROL pInputControl);
482
483 _Success_(return != 0)
484 BOOL
485 WINAPI
486 ReadConsoleW(
487 _In_ HANDLE hConsoleInput,
488 _Out_writes_bytes_to_(nNumberOfCharsToRead * sizeof(WCHAR), *lpNumberOfCharsRead * sizeof(WCHAR)) LPVOID lpBuffer,
489 _In_ DWORD nNumberOfCharsToRead,
490 _Out_ _Deref_out_range_(<= , nNumberOfCharsToRead) LPDWORD lpNumberOfCharsRead,
491 _In_opt_ PCONSOLE_READCONSOLE_CONTROL pInputControl);
492
493 _Success_(return != 0)
494 BOOL
495 WINAPI
496 ReadConsoleInputA(
497 _In_ HANDLE hConsoleInput,
498 _Out_writes_to_(nLength, *lpNumberOfEventsRead) PINPUT_RECORD lpBuffer,
499 _In_ DWORD nLength,
500 _Out_ _Deref_out_range_(<= , nLength) LPDWORD lpNumberOfEventsRead);
501
502 _Success_(return != 0)
503 BOOL
504 WINAPI
505 ReadConsoleInputW(
506 _In_ HANDLE hConsoleInput,
507 _Out_writes_to_(nLength, *lpNumberOfEventsRead) PINPUT_RECORD lpBuffer,
508 _In_ DWORD nLength,
509 _Out_ _Deref_out_range_(<= , nLength) LPDWORD lpNumberOfEventsRead);
510
511 _Success_(return != 0)
512 BOOL
513 WINAPI
514 ReadConsoleInputExA(
515 _In_ HANDLE hConsoleInput,
516 _Out_writes_to_(nLength, *lpNumberOfEventsRead) PINPUT_RECORD lpBuffer,
517 _In_ DWORD nLength,
518 _Out_ _Deref_out_range_(<= , nLength) LPDWORD lpNumberOfEventsRead,
519 _In_ WORD wFlags);
520
521 _Success_(return != 0)
522 BOOL
523 WINAPI
524 ReadConsoleInputExW(
525 _In_ HANDLE hConsoleInput,
526 _Out_writes_to_(nLength, *lpNumberOfEventsRead) PINPUT_RECORD lpBuffer,
527 _In_ DWORD nLength,
528 _Out_ _Deref_out_range_(<= , nLength) LPDWORD lpNumberOfEventsRead,
529 _In_ WORD wFlags);
530
531 BOOL
532 WINAPI
533 ReadConsoleOutputAttribute(
534 _In_ HANDLE hConsoleOutput,
535 _Out_writes_(nLength) LPWORD lpAttribute,
536 _In_ DWORD nLength,
537 _In_ COORD dwReadCoord,
538 _Out_ LPDWORD lpNumberOfAttrsRead);
539
540 BOOL
541 WINAPI
542 ReadConsoleOutputCharacterA(
543 _In_ HANDLE hConsoleOutput,
544 _Out_writes_(nLength) LPSTR lpCharacter,
545 _In_ DWORD nLength,
546 _In_ COORD dwReadCoord,
547 _Out_ LPDWORD lpNumberOfCharsRead);
548
549 BOOL
550 WINAPI
551 ReadConsoleOutputCharacterW(
552 _In_ HANDLE hConsoleOutput,
553 _Out_writes_(nLength) LPWSTR lpCharacter,
554 _In_ DWORD nLength,
555 _In_ COORD dwReadCoord,
556 _Out_ LPDWORD lpNumberOfCharsRead);
557
558 BOOL
559 WINAPI
560 ReadConsoleOutputA(
561 _In_ HANDLE hConsoleOutput,
562 _Out_writes_(dwBufferSize.X * dwBufferSize.Y) PCHAR_INFO lpBuffer,
563 _In_ COORD dwBufferSize,
564 _In_ COORD dwBufferCoord,
565 _Inout_ PSMALL_RECT lpReadRegion);
566
567 BOOL
568 WINAPI
569 ReadConsoleOutputW(
570 _In_ HANDLE hConsoleOutput,
571 _Out_writes_(dwBufferSize.X * dwBufferSize.Y) PCHAR_INFO lpBuffer,
572 _In_ COORD dwBufferSize,
573 _In_ COORD dwBufferCoord,
574 _Inout_ PSMALL_RECT lpReadRegion);
575
576 BOOL
577 WINAPI
578 ScrollConsoleScreenBufferA(
579 _In_ HANDLE,
580 _In_ const SMALL_RECT*,
581 _In_opt_ const SMALL_RECT*,
582 _In_ COORD,
583 _In_ const CHAR_INFO*);
584
585 BOOL
586 WINAPI
587 ScrollConsoleScreenBufferW(
588 _In_ HANDLE,
589 _In_ const SMALL_RECT*,
590 _In_opt_ const SMALL_RECT*,
591 _In_ COORD,
592 _In_ const CHAR_INFO*);
593
594 BOOL WINAPI SetConsoleActiveScreenBuffer(_In_ HANDLE);
595 BOOL WINAPI SetConsoleCP(_In_ UINT);
596 BOOL WINAPI SetConsoleCtrlHandler(_In_opt_ PHANDLER_ROUTINE, _In_ BOOL);
597 BOOL WINAPI SetConsoleCursorInfo(_In_ HANDLE, _In_ const CONSOLE_CURSOR_INFO*);
598 BOOL WINAPI SetConsoleCursorPosition(_In_ HANDLE, _In_ COORD);
599 BOOL WINAPI SetConsoleMode(_In_ HANDLE, _In_ DWORD);
600 BOOL WINAPI SetConsoleOutputCP(_In_ UINT);
601 BOOL WINAPI SetConsoleScreenBufferSize(_In_ HANDLE, _In_ COORD);
602 BOOL WINAPI SetConsoleTextAttribute(_In_ HANDLE, _In_ WORD);
603 BOOL WINAPI SetConsoleTitleA(_In_ LPCSTR);
604 BOOL WINAPI SetConsoleTitleW(_In_ LPCWSTR);
605
606 BOOL
607 WINAPI
608 SetConsoleWindowInfo(
609 _In_ HANDLE,
610 _In_ BOOL,
611 _In_ const SMALL_RECT*);
612
613 /* Undocumented, see http://undoc.airesoft.co.uk/kernel32.dll/ConsoleMenuControl.php */
614 HMENU WINAPI ConsoleMenuControl(_In_ HANDLE, _In_ DWORD, _In_ DWORD);
615 /* Undocumented */
616 BOOL WINAPI SetConsoleMenuClose(_In_ BOOL);
617 /* Undocumented, see http://undoc.airesoft.co.uk/kernel32.dll/SetConsoleCursor.php */
618 BOOL WINAPI SetConsoleCursor(_In_ HANDLE, _In_ HCURSOR);
619 /* Undocumented, see http://undoc.airesoft.co.uk/kernel32.dll/ShowConsoleCursor.php */
620 INT WINAPI ShowConsoleCursor(_In_ HANDLE, _In_ BOOL);
621 /* Undocumented */
622 BOOL WINAPI SetConsoleIcon(_In_ HICON);
623 /* Undocumented, see http://comments.gmane.org/gmane.comp.lang.harbour.devel/27844 */
624 BOOL WINAPI SetConsolePalette(_In_ HANDLE, _In_ HPALETTE, _In_ UINT);
625 /* Undocumented */
626 BOOL WINAPI CloseConsoleHandle(_In_ HANDLE);
627 /* Undocumented */
628 HANDLE WINAPI GetConsoleInputWaitHandle(VOID);
629 /* Undocumented */
630 BOOL WINAPI VerifyConsoleIoHandle(_In_ HANDLE);
631 /* Undocumented */
632 BOOL
633 WINAPI
634 RegisterConsoleVDM(_In_ DWORD, _In_ HANDLE, _In_ HANDLE, _In_ HANDLE, _In_ DWORD,
635 _Out_ LPDWORD, _Out_ PVOID*, _In_ PVOID, _In_ DWORD, _In_ COORD,
636 _Out_ PVOID*);
637
638 BOOL
639 WINAPI
640 WriteConsoleA(
641 _In_ HANDLE hConsoleOutput,
642 _In_reads_(nNumberOfCharsToWrite) CONST VOID *lpBuffer,
643 _In_ DWORD nNumberOfCharsToWrite,
644 _Out_opt_ LPDWORD lpNumberOfCharsWritten,
645 _Reserved_ LPVOID lpReserved);
646
647 BOOL
648 WINAPI
649 WriteConsoleW(
650 _In_ HANDLE hConsoleOutput,
651 _In_reads_(nNumberOfCharsToWrite) CONST VOID *lpBuffer,
652 _In_ DWORD nNumberOfCharsToWrite,
653 _Out_opt_ LPDWORD lpNumberOfCharsWritten,
654 _Reserved_ LPVOID lpReserved);
655
656 BOOL
657 WINAPI
658 WriteConsoleInputA(
659 _In_ HANDLE hConsoleInput,
660 _In_reads_(nLength) CONST INPUT_RECORD *lpBuffer,
661 _In_ DWORD nLength,
662 _Out_ LPDWORD lpNumberOfEventsWritten);
663
664 BOOL
665 WINAPI
666 WriteConsoleInputW(
667 _In_ HANDLE hConsoleInput,
668 _In_reads_(nLength) CONST INPUT_RECORD *lpBuffer,
669 _In_ DWORD nLength,
670 _Out_ LPDWORD lpNumberOfEventsWritten);
671
672 BOOL
673 WINAPI
674 WriteConsoleInputVDMA(
675 _In_ HANDLE hConsoleInput,
676 _In_reads_(nLength) CONST INPUT_RECORD *lpBuffer,
677 _In_ DWORD nLength,
678 _Out_ LPDWORD lpNumberOfEventsWritten);
679
680 BOOL
681 WINAPI
682 WriteConsoleInputVDMW(
683 _In_ HANDLE hConsoleInput,
684 _In_reads_(nLength) CONST INPUT_RECORD *lpBuffer,
685 _In_ DWORD nLength,
686 _Out_ LPDWORD lpNumberOfEventsWritten);
687
688 BOOL
689 WINAPI
690 WriteConsoleOutputA(
691 _In_ HANDLE hConsoleOutput,
692 _In_reads_(dwBufferSize.X * dwBufferSize.Y) CONST CHAR_INFO *lpBuffer,
693 _In_ COORD dwBufferSize,
694 _In_ COORD dwBufferCoord,
695 _Inout_ PSMALL_RECT lpWriteRegion);
696
697 BOOL
698 WINAPI
699 WriteConsoleOutputW(
700 _In_ HANDLE hConsoleOutput,
701 _In_reads_(dwBufferSize.X * dwBufferSize.Y) CONST CHAR_INFO *lpBuffer,
702 _In_ COORD dwBufferSize,
703 _In_ COORD dwBufferCoord,
704 _Inout_ PSMALL_RECT lpWriteRegion);
705
706 BOOL
707 WINAPI
708 WriteConsoleOutputAttribute(
709 _In_ HANDLE hConsoleOutput,
710 _In_reads_(nLength) CONST WORD *lpAttribute,
711 _In_ DWORD nLength,
712 _In_ COORD dwWriteCoord,
713 _Out_ LPDWORD lpNumberOfAttrsWritten);
714
715 BOOL
716 WINAPI
717 WriteConsoleOutputCharacterA(
718 _In_ HANDLE hConsoleOutput,
719 _In_reads_(nLength) LPCSTR lpCharacter,
720 _In_ DWORD nLength,
721 _In_ COORD dwWriteCoord,
722 _Out_ LPDWORD lpNumberOfCharsWritten);
723
724 BOOL
725 WINAPI
726 WriteConsoleOutputCharacterW(
727 _In_ HANDLE hConsoleOutput,
728 _In_reads_(nLength) LPCWSTR lpCharacter,
729 _In_ DWORD nLength,
730 _In_ COORD dwWriteCoord,
731 _Out_ LPDWORD lpNumberOfCharsWritten);
732
733
734 #ifdef UNICODE
735 #define AddConsoleAlias AddConsoleAliasW
736 #define GetConsoleAlias GetConsoleAliasW
737 #define GetConsoleAliases GetConsoleAliasesW
738 #define GetConsoleAliasesLength GetConsoleAliasesLengthW
739 #define GetConsoleAliasExes GetConsoleAliasExesW
740 #define GetConsoleAliasExesLength GetConsoleAliasExesLengthW
741 #define GetConsoleTitle GetConsoleTitleW
742 #define PeekConsoleInput PeekConsoleInputW
743 #define ReadConsole ReadConsoleW
744 #define ReadConsoleInput ReadConsoleInputW
745 #define ReadConsoleInputEx ReadConsoleInputExW
746 #define ReadConsoleOutput ReadConsoleOutputW
747 #define ReadConsoleOutputCharacter ReadConsoleOutputCharacterW
748 #define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferW
749 #define SetConsoleTitle SetConsoleTitleW
750 #define WriteConsole WriteConsoleW
751 #define WriteConsoleInput WriteConsoleInputW
752 #define WriteConsoleInputVDM WriteConsoleInputVDMW
753 #define WriteConsoleOutput WriteConsoleOutputW
754 #define FillConsoleOutputCharacter FillConsoleOutputCharacterW
755 #define WriteConsoleOutputCharacter WriteConsoleOutputCharacterW
756 #else
757 #define AddConsoleAlias AddConsoleAliasA
758 #define GetConsoleAlias GetConsoleAliasA
759 #define GetConsoleAliases GetConsoleAliasesA
760 #define GetConsoleAliasesLength GetConsoleAliasesLengthA
761 #define GetConsoleAliasExes GetConsoleAliasExesA
762 #define GetConsoleAliasExesLength GetConsoleAliasExesLengthA
763 #define GetConsoleTitle GetConsoleTitleA
764 #define PeekConsoleInput PeekConsoleInputA
765 #define ReadConsole ReadConsoleA
766 #define ReadConsoleInput ReadConsoleInputA
767 #define ReadConsoleInputEx ReadConsoleInputExA
768 #define ReadConsoleOutput ReadConsoleOutputA
769 #define ReadConsoleOutputCharacter ReadConsoleOutputCharacterA
770 #define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferA
771 #define SetConsoleTitle SetConsoleTitleA
772 #define WriteConsole WriteConsoleA
773 #define WriteConsoleInput WriteConsoleInputA
774 #define WriteConsoleInputVDM WriteConsoleInputVDMA
775 #define WriteConsoleOutput WriteConsoleOutputA
776 #define FillConsoleOutputCharacter FillConsoleOutputCharacterA
777 #define WriteConsoleOutputCharacter WriteConsoleOutputCharacterA
778 #endif
779
780 #ifdef _MSC_VER
781 #pragma warning(pop)
782 #endif
783
784 #ifdef __cplusplus
785 }
786 #endif
787
788 #endif /* _WINCON_H */