From 91da6687c3ad48f3dba16d1e1e935c9d57a33bb8 Mon Sep 17 00:00:00 2001 From: Keith Marshall Date: Sun, 13 Jun 2021 19:31:36 +0100 Subject: [PATCH] Update to add Win10 pseudo-console support. --- w32api/ChangeLog | 100 +++++++++++++++++++++++++++++++++ w32api/include/winbase.h | 141 +++++++++++++++++++++++++++++++++++++++++++++++ w32api/include/wincon.h | 13 ++++- w32api/lib/kernel32.def | 3 + 4 files changed, 256 insertions(+), 1 deletion(-) diff --git a/w32api/ChangeLog b/w32api/ChangeLog index 82b3d57..3813005 100644 --- a/w32api/ChangeLog +++ b/w32api/ChangeLog @@ -1,3 +1,103 @@ +2021-06-13 Keith Marshall + + Update to add Win10 pseudo-console support. + + * include/winbase.h [_WIN32_WINNT >= _WIN32_WINNT_VISTA] + (PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL, PROTECTION_LEVEL_SAME) + (EXTENDED_STARTUPINFO_PRESENT, PROC_THREAD_ATTRIBUTE_PARENT_PROCESS) + (PROC_THREAD_ATTRIBUTE_HANDLE_LIST): Define them. + (LPPROC_THREAD_ATTRIBUTE_LIST): Typedef as pointer to opaque struct. + (STARTUPINFOEXA, STARTUPINFOEXW): Typedef as struct... + (LPSTARTUPINFOEXA, LPSTARTUPINFOEXW): ...and pointers thereto. + (STARTUPINFOEX, LPSTARTUPINFOEX) [UNICODE vs. !UNICODE]: Alias to + STARTUPINFOEXW or STARTUPINFOEXA, respectively. + (InitializeProcThreadAttributeList, UpdateProcThreadAttribute) + (DeleteProcThreadAttributeList): Declare function prototypes. + + [_WIN32_WINNT >= _WIN32_WINNT_WIN7] + (PROC_THREAD_ATTRIBUTE_PREFERRED_NODE) + (PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY) + (PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE) + (PROCESS_CREATION_MITIGATION_POLICY_DEP_ATL_THUNK_ENABLE) + (PROCESS_CREATION_MITIGATION_POLICY_SEHOP_ENABLE) + (PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY) + (PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR) + (PROC_THREAD_ATTRIBUTE_UMS_THREAD): Define them. + + [_WIN32_WINNT >= _WIN32_WINNT_WIN8] + (PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON) + (PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_OFF) + (PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON_REQ_RELOCS) + (PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_ON) + (PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_OFF) + (PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_ON) + (PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_OFF) + (PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_ON) + (PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_OFF) + (PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_ON) + (PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_OFF) + (PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_ON) + (PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_OFF) + (PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_ON) + (PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_OFF) + (PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON) + (PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_OFF) + (PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON_ALLOW_OPT_OUT) + (PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_DEFER) + (PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_MASK) + (PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_DEFER) + (PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_ON) + (PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_OFF) + (PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_EXPORT_SUPPRESSION) + (PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_MASK) + (PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_DEFER) + (PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_ALWAYS_ON) + (PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_ALWAYS_OFF) + (PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_RESERVED) + (PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_MASK) + (PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_DEFER) + (PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_ON) + (PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_OFF) + (PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALLOW_STORE) + (PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_MASK) + (PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_DEFER) + (PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_ALWAYS_ON) + (PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_ALWAYS_OFF) + (PROCESS_CREATION_MITIGATION_POLICY_AUDIT_NONSYSTEM_FONTS) + (PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_MASK) + (PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_DEFER) + (PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_ON) + (PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_OFF) + (PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_RESERVED) + (PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_MASK) + (PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_DEFER) + (PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_ALWAYS_ON) + (PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_ALWAYS_OFF) + (PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_RESERVED) + (PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_MASK) + (PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_PREFER_SYSTEM32_DEFER) + (PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_PREFER_SYSTEM32_ALWAYS_ON) + (PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_PREFER_SYSTEM32_ALWAYS_OFF) + (PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_PREFER_SYSTEM32_RESERVED) + (PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_PREFER_SYSTEM32_MASK): + Define them. + + [_WIN32_WINNT >= _WIN32_WINNT_WIN10 && NTDDI_VERSION >= NTDDI_WIN10_RS3] + (PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_INDIRECT_BRANCH_PREDICTION_ALWAYS_ON) + + [_WIN32_WINNT >= _WIN32_WINNT_WIN10 && NTDDI_VERSION >= NTDDI_WIN10_RS5] + (PROCESS_CREATION_MITIGATION_POLICY2_SPECULATIVE_STORE_BYPASS_DISABLE_ALWAYS_ON) + (PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE): Define them. + + * include/wincon.h [NTDDI_VERSION >= NTDDI_WIN10_RS5] + (HPCON): Typedef as Windows handle type. + (PSEUDOCONSOLE_INHERIT_CURSOR): Define it. + (CreatePseudoConsole, ResizePseudoConsole, ClosePseudoConsole): + Declare function prototypes. + + * lib/kernel32.def (CreatePseudoConsole, ResizePseudoConsole) + (ClosePseudoConsole): Add references. + 2021-05-25 Keith Marshall Add "legacy-safe" emulation of Microsoft's version helpers API. diff --git a/w32api/include/winbase.h b/w32api/include/winbase.h index 542138a..ffd584a 100644 --- a/w32api/include/winbase.h +++ b/w32api/include/winbase.h @@ -730,6 +730,14 @@ _BEGIN_C_DECLS #define THREAD_MODE_BACKGROUND_BEGIN 0x00010000 #define THREAD_MODE_BACKGROUND_END 0x00020000 +#define EXTENDED_STARTUPINFO_PRESENT 0x00080000 + +#define PROC_THREAD_ATTRIBUTE_PARENT_PROCESS 0x00020000 +#define PROC_THREAD_ATTRIBUTE_HANDLE_LIST 0x00020002 +#define PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL 0x0002000B + +#define PROTECTION_LEVEL_SAME 0xFFFFFFFF + /* http://msdn.microsoft.com/en-us/library/aa363866%28VS.85%29.aspx */ #define SYMBOLIC_LINK_FLAG_DIRECTORY 0x1 @@ -748,6 +756,111 @@ _BEGIN_C_DECLS #define PROCESS_DEP_ENABLE 1 #define PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION 2 +#define PROC_THREAD_ATTRIBUTE_PREFERRED_NODE 0x00020004 +#define PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY 0x00020007 + +#define PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE 1 +#define PROCESS_CREATION_MITIGATION_POLICY_DEP_ATL_THUNK_ENABLE 2 +#define PROCESS_CREATION_MITIGATION_POLICY_SEHOP_ENABLE 4 + +#define PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY 0x00030003 +#define PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR 0x00030005 +#define PROC_THREAD_ATTRIBUTE_UMS_THREAD 0x00030006 + +#if _WIN32_WINNT >= _WIN32_WINNT_WIN8 +/* Constants associated with features supported only on Win8 and later. + */ +#define PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON 0x00000100 +#define PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_OFF 0x00000200 +#define PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON_REQ_RELOCS 0x00000300 + +#define PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_ON 0x00001000 +#define PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_OFF 0x00002000 + +#define PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_ON 0x00010000 +#define PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_OFF 0x00020000 + +#define PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_ON 0x00100000 +#define PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_OFF 0x00200000 + +#define PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_ON 0x01000000 +#define PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_OFF 0x02000000 + +#define PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_ON 0x10000000 +#define PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_OFF 0x20000000 + +#define PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_ON (1ULL << 32) +#define PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_OFF (2ULL << 32) + +#define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON (1ULL << 36) +#define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_OFF (2ULL << 36) + +#define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON_ALLOW_OPT_OUT (3ULL << 36) + +#define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_DEFER (0ULL << 36) +#define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_MASK (3ULL << 36) + +#define PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_DEFER (0ULL << 40) +#define PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_ON (1ULL << 40) +#define PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_OFF (2ULL << 40) +#define PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_EXPORT_SUPPRESSION (3ULL << 40) +#define PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_MASK (3ULL << 40) + +#define PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_DEFER (0ULL << 8) +#define PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_ALWAYS_ON (1ULL << 8) +#define PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_ALWAYS_OFF (2ULL << 8) +#define PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_RESERVED (3ULL << 8) +#define PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_MASK (3ULL << 8) + +#define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_DEFER (0ULL << 44) +#define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_ON (1ULL << 44) +#define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_OFF (2ULL << 44) +#define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALLOW_STORE (3ULL << 44) +#define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_MASK (3ULL << 44) + +#define PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_DEFER (0ULL << 48) +#define PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_ALWAYS_ON (1ULL << 48) +#define PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_ALWAYS_OFF (2ULL << 48) +#define PROCESS_CREATION_MITIGATION_POLICY_AUDIT_NONSYSTEM_FONTS (3ULL << 48) +#define PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_MASK (3ULL << 48) + +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_DEFER (0ULL << 52) +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_ON (1ULL << 52) +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_OFF (2ULL << 52) +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_RESERVED (3ULL << 52) +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_MASK (3ULL << 52) + +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_DEFER (0ULL << 56) +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_ALWAYS_ON (1ULL << 56) +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_ALWAYS_OFF (2ULL << 56) +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_RESERVED (3ULL << 56) +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_MASK (3ULL << 56) + +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_PREFER_SYSTEM32_DEFER (0ULL << 60) +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_PREFER_SYSTEM32_ALWAYS_ON (1ULL << 60) +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_PREFER_SYSTEM32_ALWAYS_OFF (2ULL << 60) +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_PREFER_SYSTEM32_RESERVED (3ULL << 60) +#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_PREFER_SYSTEM32_MASK (3ULL << 60) + +#if _WIN32_WINNT >= _WIN32_WINNT_WIN10 +#if NTDDI_VERSION >= NTDDI_WIN10_RS3 +/* Additional policy attributes introduced by Win10-1709 (Redstone 3) + */ +#define PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_INDIRECT_BRANCH_PREDICTION_ALWAYS_ON (1ULL << 16) + +#if NTDDI_VERSION >= NTDDI_WIN10_RS5 +/* Additional policy attributes introduced by Win10-1809 (Redstone 5) + */ +#define PROCESS_CREATION_MITIGATION_POLICY2_SPECULATIVE_STORE_BYPASS_DISABLE_ALWAYS_ON (1ULL << 24) + +/* Redstone 5 also introduced support for pseudo-consoles + */ +#define PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE 0x00020016 + +#endif /* Win10-1809 (Redstone 5) and later */ +#endif /* Win10-1709 (Redstone 3) and later */ +#endif /* Win10 and later */ +#endif /* Win8 and later */ #endif /* Win7 and later */ #endif /* WinVista and later */ #endif /* WinXP and later */ @@ -2877,7 +2990,35 @@ WINBASEAPI BOOL WINAPI SetFirmwareEnvironmentVariableW #if _WIN32_WINNT >= _WIN32_WINNT_VISTA /* Additional features, available only on the WinNT series platforms, from * the release of Windows-Vista onwards. + * + * Note that, to support STARTUPINFOEX, we need a type definintion for + * references to a PROC_THREAD_ATTRIBUTE_LIST data type, but Microsoft's + * online documentation doesn't specify what that represents; define it + * as an opaque struct type, which will always be accessed indirectly. */ +typedef struct _PROC_THREAD_ATTRIBUTE_LIST *LPPROC_THREAD_ATTRIBUTE_LIST; + +typedef struct _STARTUPINFOEXA +{ STARTUPINFOA StartupInfo; + LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList; +} STARTUPINFOEXA, *LPSTARTUPINFOEXA; + +typedef struct _STARTUPINFOEXW +{ STARTUPINFOW StartupInfo; + LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList; +} STARTUPINFOEXW, *LPSTARTUPINFOEXW; + +typedef __AW_ALIAS__(STARTUPINFOEX), *LPSTARTUPINFOEX; + +BOOL WINAPI InitializeProcThreadAttributeList +(LPPROC_THREAD_ATTRIBUTE_LIST, DWORD, DWORD, PSIZE_T); + +BOOL WINAPI UpdateProcThreadAttribute +(LPPROC_THREAD_ATTRIBUTE_LIST, DWORD, DWORD_PTR, PVOID, SIZE_T, PVOID, PSIZE_T); + +void WINAPI DeleteProcThreadAttributeList +(LPPROC_THREAD_ATTRIBUTE_LIST); + typedef struct _FILE_BASIC_INFO /* http://msdn.microsoft.com/en-us/library/aa364217%28VS.85%29.aspx */ { LARGE_INTEGER CreationTime; diff --git a/w32api/include/wincon.h b/w32api/include/wincon.h index 3903aae..1073c08 100644 --- a/w32api/include/wincon.h +++ b/w32api/include/wincon.h @@ -6,7 +6,7 @@ * $Id$ * * Written by Anders Norlander - * Copyright (C) 1998, 1999, 2002-2006, 2009, 2011, 2016, 2018, + * Copyright (C) 1998, 1999, 2002-2006, 2009, 2011, 2016, 2018, 2021, * MinGW.org Project. * * @@ -415,6 +415,17 @@ WINAPI BOOL SetConsoleHistoryInfo (PCONSOLE_HISTORY_INFO); WINAPI BOOL SetConsoleScreenBufferInfoEx (HANDLE, PCONSOLE_SCREEN_BUFFER_INFOEX); WINAPI BOOL SetCurrentConsoleFontEx (HANDLE, BOOL, PCONSOLE_FONT_INFOEX); +#if NTDDI_VERSION >= NTDDI_WIN10_RS5 +/* Windows-10 Version 1809 (Redstone 5) introduced the pseudo-console API. + */ +typedef HANDLE HPCON; +WINAPI HRESULT CreatePseudoConsole (COORD, HANDLE, HANDLE, DWORD, HPCON *); +WINAPI HRESULT ResizePseudoConsole (HPCON, COORD); +WINAPI void ClosePseudoConsole (HPCON); + +#define PSEUDOCONSOLE_INHERIT_CURSOR (DWORD)(1) + +#endif /* Win10 Redstone 5 and later */ #endif /* Vista and later */ #endif /* WinXP and later */ #endif /* Win2K and later */ diff --git a/w32api/lib/kernel32.def b/w32api/lib/kernel32.def index f8a7715..90bc35a 100644 --- a/w32api/lib/kernel32.def +++ b/w32api/lib/kernel32.def @@ -91,6 +91,7 @@ CloseConsoleHandle@4 CloseHandle@4 ClosePrivateNamespace@8 CloseProfileUserMapping@0 +ClosePseudoConsole@4 CloseThreadpool@4 CloseThreadpoolCleanupGroup@4 CloseThreadpoolCleanupGroupMembers@12 @@ -173,6 +174,7 @@ CreateProcessA@40 CreateProcessInternalA@48 CreateProcessInternalW@48 CreateProcessW@40 +CreatePseudoConsole@20 CreateRemoteThread@28 CreateRemoteThreadEx@32 CreateSemaphoreA@16 @@ -993,6 +995,7 @@ RequestDeviceWakeup@4 RequestWakeupLatency@4 ResetEvent@4 ResetWriteWatch@8 +ResizePseudoConsole@8 ResolveLocaleName@12 RestoreLastError@4 ResumeThread@4 -- 2.11.0