Blame include/ntcon/ntcon.h

52d60d
#ifndef NTCON_H
52d60d
#define NTCON_H
52d60d
52d60d
#include "ntcon_api.h"
52d60d
52d60d
#ifdef __cplusplus
52d60d
extern "C" {
52d60d
#endif
52d60d
52d60d
/* console standard handles */
52d60d
#define NT_STD_INPUT_HANDLE		(uint32_t)-10
52d60d
#define NT_STD_OUTPUT_HANDLE		(uint32_t)-11
52d60d
#define NT_STD_ERROR_HANDLE		(uint32_t)-12
52d60d
52d60d
/* console attachment */
52d60d
#define NT_ATTACH_PARENT_PROCESS	(uint32_t)-1
52d60d
52d60d
/* console screen buffer flags */
52d60d
#define NT_CONSOLE_TEXTMODE_BUFFER	(0x01)
52d60d
52d60d
/* console control signals */
52d60d
#define NT_CTRL_C_EVENT			(0x00)
52d60d
#define NT_CTRL_BREAK_EVENT		(0x01)
52d60d
#define NT_CTRL_CLOSE_EVENT		(0x02)
52d60d
#define NT_CTRL_LOGOFF_EVENT		(0x05)
52d60d
#define NT_CTRL_SHUTDOWN_EVENT		(0x06)
52d60d
52d60d
/* console history flags */
52d60d
#define NT_HISTORY_NO_DUP_FLAG		(0x0001)
52d60d
52d60d
/* console event types */
52d60d
#define NT_KEY_EVENT			(0x0001)
52d60d
#define NT_MOUSE_EVENT			(0x0002)
52d60d
#define NT_WINDOW_BUFFER_SIZE_EVENT	(0x0004)
52d60d
#define NT_MENU_EVENT			(0x0008)
52d60d
#define NT_FOCUS_EVENT			(0x0010)
52d60d
52d60d
/* control key states */
52d60d
#define NT_RIGHT_ALT_PRESSED		(0x0001)
52d60d
#define NT_LEFT_ALT_PRESSED		(0x0002)
52d60d
#define NT_RIGHT_CTRL_PRESSED		(0x0004)
52d60d
#define NT_LEFT_CTRL_PRESSED		(0x0008)
52d60d
#define NT_SHIFT_PRESSED		(0x0010)
52d60d
#define NT_NUMLOCK_ON			(0x0020)
52d60d
#define NT_SCROLLLOCK_ON		(0x0040)
52d60d
#define NT_CAPSLOCK_ON			(0x0080)
52d60d
#define NT_ENHANCED_KEY			(0x0100)
52d60d
52d60d
/* console foreground color attributes */
52d60d
#define NT_FOREGROUND_BLACK		(0x0000)
52d60d
#define NT_FOREGROUND_BLUE		(0x0001)
52d60d
#define NT_FOREGROUND_GREEN		(0x0002)
52d60d
#define NT_FOREGROUND_CYAN		(0x0003)
52d60d
#define NT_FOREGROUND_RED		(0x0004)
52d60d
#define NT_FOREGROUND_MAGENTA		(0x0005)
52d60d
#define NT_FOREGROUND_YELLOW		(0x0006)
52d60d
#define NT_FOREGROUND_WHITE		(0x0007)
52d60d
#define NT_FOREGROUND_INTENSITY		(0x0008)
52d60d
52d60d
/* console background color attributes */
52d60d
#define NT_BACKGROUND_BLACK		(0x0000)
52d60d
#define NT_BACKGROUND_BLUE		(0x0010)
52d60d
#define NT_BACKGROUND_GREEN		(0x0020)
52d60d
#define NT_BACKGROUND_CYAN		(0x0030)
52d60d
#define NT_BACKGROUND_RED		(0x0040)
52d60d
#define NT_BACKGROUND_MAGENTA		(0x0050)
52d60d
#define NT_BACKGROUND_YELLOW		(0x0060)
52d60d
#define NT_BACKGROUND_WHITE		(0x0070)
52d60d
#define NT_BACKGROUND_INTENSITY		(0x0080)
52d60d
52d60d
/* console common lvb attributes */
52d60d
#define NT_COMMON_LVB_LEADING_BYTE	(0x0100)
52d60d
#define NT_COMMON_LVB_TRAILING_BYTE	(0x0200)
52d60d
#define NT_COMMON_LVB_GRID_HORIZONTAL	(0x0400)
52d60d
#define NT_COMMON_LVB_GRID_LVERTICAL	(0x0800)
52d60d
#define NT_COMMON_LVB_GRID_RVERTICAL	(0x1000)
52d60d
#define NT_COMMON_LVB_REVERSE_VIDEO	(0x4000)
52d60d
#define NT_COMMON_LVB_UNDERSCORE	(0x8000)
52d60d
52d60d
/* console font name length limit */
52d60d
#define NT_LF_FACESIZE			(0x20)
52d60d
52d60d
/* console font families */
52d60d
#define NT_FF_DONTCARE		(0x0 << 4)
52d60d
#define NT_FF_ROMAN		(0x1 << 4)
52d60d
#define NT_FF_SWISS		(0x2 << 4)
52d60d
#define NT_FF_MODERN		(0x3 << 4)
52d60d
#define NT_FF_SCRIPT		(0x4 << 4)
52d60d
#define NT_FF_DECORATIVE	(0x5 << 4)
52d60d
52d60d
/* console font weight */
52d60d
#define NT_FW_DONTCARE		0
52d60d
#define NT_FW_THIN		100
52d60d
#define NT_FW_EXTRALIGHT	200
52d60d
#define NT_FW_ULTRALIGHT	200
52d60d
#define NT_FW_LIGHT		300
52d60d
#define NT_FW_NORMAL		400
52d60d
#define NT_FW_REGULAR		400
52d60d
#define NT_FW_MEDIUM		500
52d60d
#define NT_FW_SEMIBOLD		600
52d60d
#define NT_FW_DEMIBOLD		600
52d60d
#define NT_FW_BOLD		700
52d60d
#define NT_FW_EXTRABOLD		800
52d60d
#define NT_FW_ULTRABOLD		800
52d60d
#define NT_FW_HEAVY		900
52d60d
#define NT_FW_BLACK		900
52d60d
52d60d
/* console selection bits */
52d60d
#define NT_CONSOLE_NO_SELECTION			(0x0000)
52d60d
#define NT_CONSOLE_SELECTION_IN_PROGRESS	(0x0001)
52d60d
#define NT_CONSOLE_SELECTION_NOT_EMPTY		(0x0002)
52d60d
#define NT_CONSOLE_MOUSE_SELECTION		(0x0004)
52d60d
#define NT_CONSOLE_MOUSE_DOWN			(0x0008)
52d60d
52d60d
/* console mode bits */
52d60d
#define NT_ENABLE_PROCESSED_INPUT	(0x0001)
52d60d
#define NT_ENABLE_LINE_INPUT		(0x0002)
52d60d
#define NT_ENABLE_ECHO_INPUT		(0x0004)
52d60d
#define NT_ENABLE_WINDOW_INPUT		(0x0008)
52d60d
#define NT_ENABLE_MOUSE_INPUT		(0x0010)
52d60d
#define NT_ENABLE_INSERT_MODE		(0x0020)
52d60d
#define NT_ENABLE_QUICK_EDIT_MODE	(0x0040)
52d60d
52d60d
/* console display modes */
52d60d
#define NT_CONSOLE_FULLSCREEN		(0x0001)
52d60d
#define NT_CONSOLE_FULLSCREEN_HARDWARE	(0x0002)
52d60d
52d60d
52d60d
/* console structures */
52d60d
typedef struct _nt_coord {
52d60d
	int16_t	x;
52d60d
	int16_t	y;
52d60d
} nt_coord;
52d60d
52d60d
52d60d
typedef struct _nt_small_rect {
52d60d
	int16_t		left;
52d60d
	int16_t		top;
52d60d
	int16_t		right;
52d60d
	int16_t		bottom;
52d60d
} nt_small_rect;
52d60d
52d60d
52d60d
typedef struct _nt_char_info {
52d60d
	union {
52d60d
		wchar16_t	unicode_char;
52d60d
		char		ascii_char;
52d60d
	} uchar;
52d60d
52d60d
	uint16_t	attributes;
52d60d
} nt_char_info;
52d60d
52d60d
52d60d
typedef struct _nt_console_cursor_info {
52d60d
	uint32_t	size;
52d60d
	int32_t		visible;
52d60d
} nt_console_cursor_info;
52d60d
52d60d
52d60d
typedef struct _nt_console_font_info {
52d60d
	uint32_t	font;
52d60d
	nt_coord	font_size;
52d60d
} nt_console_font_info;
52d60d
52d60d
52d60d
typedef struct _nt_console_font_info_ex {
52d60d
	uint32_t	info_size;
52d60d
	uint32_t	font;
52d60d
	nt_coord	font_size;
52d60d
	uint32_t	font_family;
52d60d
	uint32_t	font_weight;
52d60d
	wchar16_t	face_name[NT_LF_FACESIZE];
52d60d
} nt_console_font_info_ex;
52d60d
52d60d
52d60d
typedef struct _nt_console_history_info {
52d60d
	uint32_t	info_size;
52d60d
	uint32_t	history_buffer_size;
52d60d
	uint32_t	history_buffer_count;
52d60d
	uint32_t	flags;
52d60d
} nt_console_history_info;
52d60d
52d60d
52d60d
typedef struct _nt_key_event_record {
52d60d
	int32_t		key_down;
52d60d
	uint16_t	repeat_count;
52d60d
	uint16_t	virtual_key_code;
52d60d
	uint16_t	virtual_scan_code;
52d60d
52d60d
	union {
52d60d
		wchar16_t	unicode_char;
52d60d
		char		ascii_char;
52d60d
	} uchar;
52d60d
52d60d
	uint32_t	control_key_state;
52d60d
} nt_key_event_record;
52d60d
52d60d
52d60d
typedef struct _nt_mouse_event_record {
52d60d
	nt_coord	mouse_position;
52d60d
	uint32_t	button_state;
52d60d
	uint32_t	control_key_state;
52d60d
	uint32_t	event_flags;
52d60d
} nt_mouse_event_record;
52d60d
52d60d
52d60d
typedef struct _nt_window_buffer_size_record {
52d60d
	nt_coord	size;
52d60d
} nt_window_buffer_size_record;
52d60d
52d60d
52d60d
typedef struct _nt_menu_event_record {
52d60d
	uint32_t	command_id;
52d60d
} nt_menu_event_record;
52d60d
52d60d
52d60d
typedef struct _nt_focus_event_record {
52d60d
	int32_t		set_focus;
52d60d
} nt_focus_event_record;
52d60d
52d60d
52d60d
typedef struct _nt_input_record {
52d60d
	uint16_t	event_type;
52d60d
52d60d
	union {
52d60d
		nt_key_event_record		key_event;
52d60d
		nt_mouse_event_record		mouse_event;
52d60d
		nt_window_buffer_size_record	window_buffer_size_event;
52d60d
		nt_menu_event_record		menu_event;
52d60d
		nt_focus_event_record		focus_event;
52d60d
	} event;
52d60d
} nt_input_record;
52d60d
52d60d
52d60d
typedef struct _nt_console_screen_buffer_info {
52d60d
	nt_coord	size;
52d60d
	nt_coord	cursor_position;
52d60d
	uint16_t	attributes;
52d60d
	nt_small_rect	window;
52d60d
	nt_coord	max_windows_size;
52d60d
} nt_console_screen_buffer_info;
52d60d
52d60d
52d60d
typedef struct _nt_console_screen_buffer_info_ex {
52d60d
	uint16_t	info_size;
52d60d
	nt_coord	size;
52d60d
	nt_coord	cursor_position;
52d60d
	uint16_t	attributes;
52d60d
	nt_small_rect	window;
52d60d
	nt_coord	max_windows_size;
52d60d
	uint16_t	popup_attributes;
52d60d
	int32_t		full_screen_supported;
52d60d
	uint32_t	color_table[0x10];
52d60d
} nt_console_screen_buffer_info_ex;
52d60d
52d60d
52d60d
typedef struct _nt_console_read_console_control {
52d60d
	uint32_t	length;
52d60d
	uint32_t	initial_chars;
52d60d
	uint32_t	crtl_wakeup_mask;
52d60d
	uint32_t	ctrl_key_state;
52d60d
} nt_console_read_console_control;
52d60d
52d60d
52d60d
typedef struct _nt_console_selection_info {
52d60d
	uint32_t	flags;
52d60d
	nt_coord	selection_anchor;
52d60d
	nt_small_rect	selection;
52d60d
} nt_console_selection_info;
52d60d
52d60d
52d60d
/* console api: console handles */
52d60d
typedef int32_t __stdcall	ntcon_alloc_console(void);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_attach_console(uint32_t pid);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_free_console(void);
52d60d
52d60d
52d60d
typedef void *	__stdcall	ntcon_get_std_handle(uint32_t ntcon_std_type);
52d60d
52d60d
52d60d
/* console api: read/write using std handles */
52d60d
typedef int32_t __stdcall	ntcon_get_number_of_console_input_events(
52d60d
	__in	void *		hconin,
52d60d
	__out	uint32_t *	number_of_events);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_flush_console_input_buffer(
52d60d
	__in	void *	hconin);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_peek_console_input_ansi(
52d60d
	__in	void *			hconin,
52d60d
	__out	nt_input_record *	buffer,
52d60d
	__in	uint32_t		length,
52d60d
	__out	uint32_t *		events_read);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_peek_console_input_utf16(
52d60d
	__in	void *			hconin,
52d60d
	__out	nt_input_record *	buffer,
52d60d
	__in	uint32_t		length,
52d60d
	__out	uint32_t *		events_read);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_read_console_ansi(
52d60d
	__in	void *		hconsole,
52d60d
	__out	char *		buffer,
52d60d
	__in	uint32_t	chars_to_read,
52d60d
	__out	uint32_t *	chars_read,
52d60d
	__in	void *		input_control	__optional);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_read_console_utf16(
52d60d
	__in	void *		hconsole,
52d60d
	__out	wchar16_t *	buffer,
52d60d
	__in	uint32_t	chars_to_read,
52d60d
	__out	uint32_t *	chars_read,
52d60d
	__in	void *		input_control	__optional);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_read_console_input_ansi(
52d60d
	__in	void *			hconin,
52d60d
	__out	nt_input_record *	buffer,
52d60d
	__in	uint32_t		length,
52d60d
	__out	uint32_t *		events_read);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_read_console_input_utf16(
52d60d
	__in	void *			hconin,
52d60d
	__out	nt_input_record *	buffer,
52d60d
	__in	uint32_t		length,
52d60d
	__out	uint32_t *		events_read);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_read_console_output_ansi(
52d60d
	__in		void *		hconout,
52d60d
	__out		nt_char_info *	buffer,
52d60d
	__in		nt_coord	buffer_size,
52d60d
	__in		nt_coord	buffer_coord,
52d60d
	__in_out	nt_small_rect *	read_region);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_read_console_output_utf16(
52d60d
	__in		void *		hconout,
52d60d
	__out		nt_char_info *	buffer,
52d60d
	__in		nt_coord	buffer_size,
52d60d
	__in		nt_coord	buffer_coord,
52d60d
	__in_out	nt_small_rect *	read_region);
52d60d
52d60d
52d60d
typedef int32_t	__stdcall	ntcon_write_console_ansi(
52d60d
	__in		void *		hconsole,
52d60d
	__in		const void *	buffer,
52d60d
	__in		uint32_t	bytes_sent,
52d60d
	__out		uint32_t *	bytes_written,
52d60d
	__in_out	void *		overlapped	__optional);
52d60d
52d60d
typedef int32_t	__stdcall	ntcon_write_console_utf16(
52d60d
	__in		void *		hconsole,
52d60d
	__in		const void *	buffer,
52d60d
	__in		uint32_t	bytes_sent,
52d60d
	__out		uint32_t *	bytes_written,
52d60d
	__in_out	void *		overlapped	__optional);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_write_console_input_ansi(
52d60d
	__in	void *			hconin,
52d60d
	__in	const nt_input_record *	buffer,
52d60d
	__in	uint32_t		length,
52d60d
	__out	uint32_t *		events_written);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_write_console_input_utf16(
52d60d
	__in	void *			hconin,
52d60d
	__in	const nt_input_record *	buffer,
52d60d
	__in	uint32_t		length,
52d60d
	__out	uint32_t *		events_written);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_write_console_output_ansi(
52d60d
	__in		void *			hconout,
52d60d
	__in		const nt_char_info *	buffer,
52d60d
	__in		nt_coord		buffer_size,
52d60d
	__in		nt_coord		buffer_coord,
52d60d
	__in_out	nt_small_rect *		write_region);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_write_console_output_utf16(
52d60d
	__in		void *			hconout,
52d60d
	__in		const nt_char_info *	buffer,
52d60d
	__in		nt_coord		buffer_size,
52d60d
	__in		nt_coord		buffer_coord,
52d60d
	__in_out	nt_small_rect *		write_region);
52d60d
52d60d
52d60d
/* console api: screen buffers */
52d60d
typedef struct _nt_security_attributes nt_security_attributes;
52d60d
52d60d
typedef void * __stdcall	ntcon_create_console_screen_buffer(
52d60d
	__in	uint32_t			desired_access,
52d60d
	__in	uint32_t			share_mode,
52d60d
	__in	nt_security_attributes *	sec_attr	__optional,
52d60d
	__in	uint32_t			flags,
52d60d
	__in	void *				reserved);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_get_console_screen_buffer_info(
52d60d
	__in	void *					hconout,
52d60d
	__out	nt_console_screen_buffer_info *		con_screen_buffer_info);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_get_console_screen_buffer_info_ex(
52d60d
	__in	void *					hconout,
52d60d
	__out	nt_console_screen_buffer_info_ex *	con_screen_buffer_info_ex);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_set_console_screen_buffer_info_ex(
52d60d
	__in	void *					hconout,
52d60d
	__out	nt_console_screen_buffer_info_ex *	con_screen_buffer_info_ex);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_set_console_screen_buffer_size(
52d60d
	__in	void *		hconout,
52d60d
	__in	nt_coord	size);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_set_console_active_screen_buffer(
52d60d
	__in	void *	hconout);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_set_console_window_info(
52d60d
	__in	void *			hconout,
52d60d
	__in	int32_t			absolute,
52d60d
	__in	const nt_small_rect *	console_window);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_scroll_console_screen_buffer_ansi(
52d60d
	__in	void *			hconout,
52d60d
	__in	const nt_small_rect *	scroll_rect,
52d60d
	__in	const nt_small_rect *	clip_rect	__optional,
52d60d
	__in	nt_coord		dest_origin,
52d60d
	__in	const nt_char_info *	fill);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_scroll_console_screen_buffer_utf16(
52d60d
	__in	void *			hconout,
52d60d
	__in	const nt_small_rect *	scroll_rect,
52d60d
	__in	const nt_small_rect *	clip_rect	__optional,
52d60d
	__in	nt_coord		dest_origin,
52d60d
	__in	const nt_char_info *	fill);
52d60d
52d60d
52d60d
/* console api: code page */
52d60d
typedef uint32_t __stdcall	ntcon_get_console_code_page(void);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_set_console_code_page(uint32_t code_page);
52d60d
52d60d
52d60d
/* console api: console control */
52d60d
typedef int32_t __stdcall	nt_console_handler_routine(
52d60d
	__in	uint32_t	console_ctrl_type);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_generate_console_ctrl_event(
52d60d
	__in	uint32_t	ctrl_event,
52d60d
	__in	uint32_t	process_group_id);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_set_console_ctrl_handler(
52d60d
	__in	nt_console_handler_routine *	handler_routine	__optional,
52d60d
	__in	int32_t				add_or_remove);
52d60d
52d60d
52d60d
/* console api: interface mode */
52d60d
typedef int32_t __stdcall	ntcon_get_console_mode(
52d60d
	__in	void *		hconsole,
52d60d
	__out	uint32_t *	mode);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_set_console_mode(
52d60d
	__in	void *		hconsole,
52d60d
	__in	uint32_t	mode);
52d60d
52d60d
52d60d
/* console api: console process list */
52d60d
typedef uint32_t __stdcall	ntcon_get_console_process_list(
52d60d
	__out	uint32_t *	process_list,
52d60d
	__in	uint32_t	process_count);
52d60d
52d60d
52d60d
/* console api: aliases */
52d60d
typedef int32_t __stdcall	ntcon_add_console_alias_ansi(
52d60d
	__in	char *		source,
52d60d
	__in	char *		target,
52d60d
	__in	char *		exe_name);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_add_console_alias_utf16(
52d60d
	__in	wchar16_t *	source,
52d60d
	__in	wchar16_t *	target,
52d60d
	__in	wchar16_t *	exe_name);
52d60d
52d60d
52d60d
typedef uint32_t __stdcall	ntcon_get_console_alias_ansi(
52d60d
	__in	char *		source,
52d60d
	__out	char *		target_buffer,
52d60d
	__in	uint32_t	target_buffer_length,
52d60d
	__in	char *		exe_name);
52d60d
52d60d
52d60d
typedef uint32_t __stdcall	ntcon_get_console_alias_utf16(
52d60d
	__in	wchar16_t *	source,
52d60d
	__out	wchar16_t *	target_buffer,
52d60d
	__in	uint32_t	target_buffer_length,
52d60d
	__in	wchar16_t *	exe_name);
52d60d
52d60d
52d60d
typedef uint32_t __stdcall	ntcon_get_console_aliases_ansi(
52d60d
	__out	char *		alias_buffer,
52d60d
	__in	uint32_t	alias_buffer_length,
52d60d
	__in	char *		exe_name);
52d60d
52d60d
52d60d
typedef uint32_t __stdcall	ntcon_get_console_aliases_utf16(
52d60d
	__out	wchar16_t *	alias_buffer,
52d60d
	__in	uint32_t	alias_buffer_length,
52d60d
	__in	wchar16_t *	exe_name);
52d60d
52d60d
52d60d
typedef uint32_t __stdcall	ntcon_get_console_aliases_length_ansi(
52d60d
	__in	char *		exe_name);
52d60d
52d60d
52d60d
typedef uint32_t __stdcall	ntcon_get_console_aliases_length_utf16(
52d60d
	__in	wchar16_t *	exe_name);
52d60d
52d60d
52d60d
typedef uint32_t __stdcall	ntcon_get_console_alias_exes_ansi(
52d60d
	__out	char *		exe_name_buffer,
52d60d
	__in	uint32_t	exe_name_buffer_length);
52d60d
52d60d
52d60d
typedef uint32_t __stdcall	ntcon_get_console_alias_exes_utf16(
52d60d
	__out	wchar16_t *	exe_name_buffer,
52d60d
	__in	uint32_t	exe_name_buffer_length);
52d60d
52d60d
52d60d
typedef uint32_t __stdcall	ntcon_get_console_alias_exes_length_ansi(void);
52d60d
52d60d
52d60d
typedef uint32_t __stdcall	ntcon_get_console_alias_exes_length_utf16(void);
52d60d
52d60d
52d60d
/* console api: output attributes */
52d60d
typedef int32_t __stdcall	ntcon_fill_console_output_attribute(
52d60d
	__in	void *		hconout,
52d60d
	__in	uint16_t	attribute,
52d60d
	__in	uint32_t	length,
52d60d
	__in	nt_coord	write_coord,
52d60d
	__out	uint32_t *	attrs_written);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_read_console_output_attribute(
52d60d
	__in	void *		hconout,
52d60d
	__in	uint16_t *	attribute,
52d60d
	__in	uint32_t	length,
52d60d
	__in	nt_coord	read_coord,
52d60d
	__out	uint32_t *	attrs_read);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_write_console_output_attribute(
52d60d
	__in	void *		hconout,
52d60d
	__in	uint16_t *	attribute,
52d60d
	__in	uint32_t	length,
52d60d
	__in	nt_coord	write_coord,
52d60d
	__out	uint32_t *	attrs_written);
52d60d
52d60d
52d60d
/* console api: output characters */
52d60d
typedef int32_t __stdcall	ntcon_fill_console_output_character_ansi(
52d60d
	__in	void *		hconout,
52d60d
	__in	char		character,
52d60d
	__in	uint32_t	length,
52d60d
	__in	nt_coord	write_coord,
52d60d
	__out	uint32_t *	chars_written);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_fill_console_output_character_utf16(
52d60d
	__in	void *		hconout,
52d60d
	__in	wchar16_t	character,
52d60d
	__in	uint32_t	length,
52d60d
	__in	nt_coord	write_coord,
52d60d
	__out	uint32_t *	chars_written);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_read_console_output_character_ansi(
52d60d
	__in	void *		hconout,
52d60d
	__in	char *		character,
52d60d
	__in	uint32_t	length,
52d60d
	__in	nt_coord	read_coord,
52d60d
	__out	uint32_t *	chars_read);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_read_console_output_character_utf16(
52d60d
	__in	void *		hconout,
52d60d
	__in	wchar16_t *	character,
52d60d
	__in	uint32_t	length,
52d60d
	__in	nt_coord	read_coord,
52d60d
	__out	uint32_t *	chars_read);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_write_console_output_character_ansi(
52d60d
	__in	void *		hconout,
52d60d
	__in	char *		character,
52d60d
	__in	uint32_t	length,
52d60d
	__in	nt_coord	write_coord,
52d60d
	__out	uint32_t *	chars_written);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_write_console_output_character_utf16(
52d60d
	__in	void *		hconout,
52d60d
	__in	wchar16_t *	character,
52d60d
	__in	uint32_t	length,
52d60d
	__in	nt_coord	write_coord,
52d60d
	__out	uint32_t *	chars_written);
52d60d
52d60d
52d60d
/* console api: output code page */
52d60d
typedef uint32_t __stdcall	ntcon_get_console_output_code_page(void);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_set_console_output_code_page(
52d60d
	__in	uint32_t	code_page_id);
52d60d
52d60d
52d60d
/* console api: text attributes */
52d60d
typedef int32_t __stdcall	ntcon_set_console_text_attribute(
52d60d
	__in	void *		hconout,
52d60d
	__in	uint16_t	attributes);
52d60d
52d60d
52d60d
/* console api: cursor info */
52d60d
typedef int32_t __stdcall	ntcon_get_console_cursor_info(
52d60d
	__in	void *				hconout,
52d60d
	__out	nt_console_cursor_info *	console_cursor_info);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_set_console_cursor_info(
52d60d
	__in	void *				hconout,
52d60d
	__in	const nt_console_cursor_info *	console_cursor_info);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_set_console_cursor_position(
52d60d
	__in	void *		hconout,
52d60d
	__out	nt_coord	cursor_position);
52d60d
52d60d
52d60d
/* console api: selection info */
52d60d
typedef int32_t __stdcall	ntcon_get_console_selection_info(
52d60d
	__out	nt_console_selection_info *	console_selection_info);
52d60d
52d60d
52d60d
/* console api: history info */
52d60d
typedef int32_t __stdcall	ntcon_get_console_history_info(
52d60d
	__out	nt_console_history_info *	console_history_info);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_set_console_history_info(
52d60d
	__in	nt_console_history_info *	console_history_info);
52d60d
52d60d
52d60d
/* console api: font info */
52d60d
typedef nt_coord __stdcall	ntcon_get_console_font_size(
52d60d
	__in	void *			hconout,
52d60d
	__in	uint32_t		font);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_get_current_console_font(
52d60d
	__in	void *			hconout,
52d60d
	__in	int32_t			maximum_window,
52d60d
	__out	nt_console_font_info *	console_current_font);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_get_current_console_font_ex(
52d60d
	__in	void *				hconout,
52d60d
	__in	int32_t				maximum_window,
52d60d
	__out	nt_console_font_info_ex *	console_current_font_ex);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_set_current_console_font_ex(
52d60d
	__in	void *				hconout,
52d60d
	__in	int32_t				maximum_window,
52d60d
	__in	nt_console_font_info_ex *	console_current_font_ex);
52d60d
52d60d
52d60d
/* console api: mouse capabilities */
52d60d
typedef int32_t __stdcall	ntcon_get_number_of_console_mouse_buttons(
52d60d
	__out	uint32_t *	number_of_mouse_buttons);
52d60d
52d60d
52d60d
/* console api: window information */
52d60d
typedef void *  __stdcall	ntcon_get_console_window(void);
52d60d
52d60d
52d60d
typedef nt_coord __stdcall	ntcon_get_largest_console_window_size(
52d60d
	__in	void *		hconout);
52d60d
52d60d
52d60d
/* console api: display mode */
52d60d
typedef int32_t __stdcall	ntcon_get_console_display_mode(
52d60d
	__out	uint32_t *	mode_flags);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_set_console_display_mode(
52d60d
	__in	void *		hconsole,
52d60d
	__in	uint32_t	mode_flags,
52d60d
	__out	nt_coord *	new_screen_buffer_dimensions	__optional);
52d60d
52d60d
52d60d
/* console api: console title */
52d60d
typedef uint32_t __stdcall	ntcon_get_console_title_ansi(
52d60d
	__out	char *		console_title,
52d60d
	__in	uint32_t	size);
52d60d
52d60d
52d60d
typedef uint32_t __stdcall	ntcon_get_console_title_utf16(
52d60d
	__out	wchar16_t *	console_title,
52d60d
	__in	uint32_t	size);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_set_console_title_ansi(
52d60d
	__in	char *		console_title);
52d60d
52d60d
52d60d
typedef int32_t __stdcall	ntcon_set_console_title_utf16(
52d60d
	__in	wchar16_t *	console_title);
52d60d
52d60d
52d60d
typedef uint32_t __stdcall	ntcon_get_console_original_title_ansi(
52d60d
	__out	char *		console_title,
52d60d
	__in	uint32_t	size);
52d60d
52d60d
52d60d
typedef uint32_t __stdcall	ntcon_get_console_original_title_utf16(
52d60d
	__out	wchar16_t *	console_title,
52d60d
	__in	uint32_t	size);
52d60d
52d60d
52d60d
/* ntcon function vtbl */
52d60d
typedef struct _ntcon_vtbl {
52d60d
	/* console handles */
52d60d
	ntcon_alloc_console * 				alloc_console;
52d60d
	ntcon_attach_console * 				attach_console;
52d60d
	ntcon_free_console * 				free_console;
52d60d
	ntcon_get_std_handle * 				get_std_handle;
52d60d
52d60d
	/* read/write using std handles */
52d60d
	ntcon_get_number_of_console_input_events *	get_number_of_console_input_events;
52d60d
	ntcon_flush_console_input_buffer *		flush_console_input_buffer;
52d60d
	ntcon_peek_console_input_ansi *			peek_console_input_ansi;
52d60d
	ntcon_peek_console_input_utf16 *		peek_console_input_utf16;
52d60d
	ntcon_read_console_ansi *			read_console_ansi;
52d60d
	ntcon_read_console_utf16 *			read_console_utf16;
52d60d
	ntcon_read_console_input_ansi *			read_console_input_ansi;
52d60d
	ntcon_read_console_input_utf16 *		read_console_input_utf16;
52d60d
	ntcon_read_console_output_ansi *		read_console_output_ansi;
52d60d
	ntcon_read_console_output_utf16 *		read_console_output_utf16;
52d60d
	ntcon_write_console_ansi * 			write_console_ansi;
52d60d
	ntcon_write_console_utf16 *			write_console_utf16;
52d60d
	ntcon_write_console_input_ansi *		write_console_input_ansi;
52d60d
	ntcon_write_console_input_utf16 *		write_console_input_utf16;
52d60d
	ntcon_write_console_output_ansi *		write_console_output_ansi;
52d60d
	ntcon_write_console_output_utf16 *		write_console_output_utf16;
52d60d
52d60d
	/* screen buffers */
52d60d
	ntcon_create_console_screen_buffer *		create_console_screen_buffer;
52d60d
	ntcon_get_console_screen_buffer_info *		get_console_screen_buffer_info;
52d60d
	ntcon_get_console_screen_buffer_info_ex *	get_console_screen_buffer_info_ex;
52d60d
	ntcon_set_console_screen_buffer_info_ex *	set_console_screen_buffer_info_ex;
52d60d
	ntcon_set_console_screen_buffer_size *		set_console_screen_buffer_size;
52d60d
	ntcon_set_console_active_screen_buffer *	set_console_active_screen_buffer;
52d60d
	ntcon_set_console_window_info *			set_console_window_info;
52d60d
	ntcon_scroll_console_screen_buffer_ansi *	scroll_console_screen_buffer_ansi;
52d60d
	ntcon_scroll_console_screen_buffer_utf16 *	scroll_console_screen_buffer_utf16;
52d60d
52d60d
	/* code page */
52d60d
	ntcon_get_console_code_page *			get_console_code_page;
52d60d
	ntcon_set_console_code_page *			set_console_code_page;
52d60d
52d60d
	/* console control */
52d60d
	ntcon_generate_console_ctrl_event *		generate_console_ctrl_event;
52d60d
	ntcon_set_console_ctrl_handler *		set_console_ctrl_handler;
52d60d
52d60d
	/* interface mode */
52d60d
	ntcon_get_console_mode *			get_console_mode;
52d60d
	ntcon_set_console_mode *			set_console_mode;
52d60d
52d60d
	/* console process list */
52d60d
	ntcon_get_console_process_list *		get_console_process_list;
52d60d
52d60d
	/* aliases */
52d60d
	ntcon_add_console_alias_ansi *			add_console_alias_ansi;
52d60d
	ntcon_add_console_alias_utf16 *			add_console_alias_utf16;
52d60d
	ntcon_get_console_alias_ansi *			get_console_alias_ansi;
52d60d
	ntcon_get_console_alias_utf16 *			get_console_alias_utf16;
52d60d
	ntcon_get_console_aliases_ansi *		get_console_aliases_ansi;
52d60d
	ntcon_get_console_aliases_utf16 *		get_console_aliases_utf16;
52d60d
	ntcon_get_console_aliases_length_ansi *		get_console_aliases_length_ansi;
52d60d
	ntcon_get_console_aliases_length_utf16 *	get_console_aliases_length_utf16;
52d60d
	ntcon_get_console_alias_exes_ansi *		get_console_alias_exes_ansi;
52d60d
	ntcon_get_console_alias_exes_utf16 *		get_console_alias_exes_utf16;
52d60d
	ntcon_get_console_alias_exes_length_ansi *	get_console_alias_exes_length_ansi;
52d60d
	ntcon_get_console_alias_exes_length_utf16 *	get_console_alias_exes_length_utf16;
52d60d
52d60d
	/* output attributes */
52d60d
	ntcon_fill_console_output_attribute *		fill_console_output_attribute;
52d60d
	ntcon_read_console_output_attribute *		read_console_output_attribute;
52d60d
	ntcon_write_console_output_attribute *		write_console_output_attribute;
52d60d
52d60d
	/* output characters */
52d60d
	ntcon_fill_console_output_character_ansi *	fill_console_output_character_ansi;
52d60d
	ntcon_fill_console_output_character_utf16 *	fill_console_output_character_utf16;
52d60d
	ntcon_read_console_output_character_ansi *	read_console_output_character_ansi;
52d60d
	ntcon_read_console_output_character_utf16 *	read_console_output_character_utf16;
52d60d
	ntcon_write_console_output_character_ansi *	write_console_output_character_ansi;
52d60d
	ntcon_write_console_output_character_utf16 *	write_console_output_character_utf16;
52d60d
52d60d
	/* output code page */
52d60d
	ntcon_get_console_output_code_page *		get_console_output_code_page;
52d60d
	ntcon_set_console_output_code_page *		set_console_output_code_page;
52d60d
52d60d
	/* text attributes */
52d60d
	ntcon_set_console_text_attribute *		set_console_text_attribute;
52d60d
52d60d
	/* cursor info */
52d60d
	ntcon_get_console_cursor_info *			get_console_cursor_info;
52d60d
	ntcon_set_console_cursor_info *			set_console_cursor_info;
52d60d
	ntcon_set_console_cursor_position *		set_console_cursor_position;
52d60d
52d60d
	/* selection info */
52d60d
	ntcon_get_console_selection_info *		get_console_selection_info;
52d60d
52d60d
	/* history info */
52d60d
	ntcon_get_console_history_info *		get_console_history_info;
52d60d
	ntcon_set_console_history_info *		set_console_history_info;
52d60d
52d60d
	/* font info */
52d60d
	ntcon_get_console_font_size *			get_console_font_size;
52d60d
	ntcon_get_current_console_font *		get_current_console_font;
52d60d
	ntcon_get_current_console_font_ex *		get_current_console_font_ex;
52d60d
	ntcon_set_current_console_font_ex *		set_current_console_font_ex;
52d60d
52d60d
	/* mouse capabilities */
52d60d
	ntcon_get_number_of_console_mouse_buttons *	get_number_of_console_mouse_buttons;
52d60d
52d60d
	/* window information */
52d60d
	ntcon_get_console_window *			get_console_window;
52d60d
	ntcon_get_largest_console_window_size *		get_largest_console_window_size;
52d60d
52d60d
	/* display mode */
52d60d
	ntcon_get_console_display_mode *		get_console_display_mode;
52d60d
	ntcon_set_console_display_mode *		set_console_display_mode;
52d60d
52d60d
	/* console title */
52d60d
	ntcon_get_console_title_ansi *			get_console_title_ansi;
52d60d
	ntcon_get_console_title_utf16 *			get_console_title_utf16;
52d60d
	ntcon_set_console_title_ansi *			set_console_title_ansi;
52d60d
	ntcon_set_console_title_utf16 *			set_console_title_utf16;
52d60d
	ntcon_get_console_original_title_ansi *		get_console_original_title_ansi;
52d60d
	ntcon_get_console_original_title_utf16 *	get_console_original_title_utf16;
52d60d
} ntcon_vtbl;
52d60d
52d60d
ntcon_api
52d60d
int32_t __fastcall ntcon_vtbl_init(ntcon_vtbl * pvtbl);
52d60d
52d60d
#ifdef __cplusplus
52d60d
}
52d60d
#endif
52d60d
#endif