OSDN Git Service

Update to add Win10 pseudo-console support.
authorKeith Marshall <keith@users.osdn.me>
Sun, 13 Jun 2021 18:31:36 +0000 (19:31 +0100)
committerKeith Marshall <keith@users.osdn.me>
Sun, 13 Jun 2021 18:31:36 +0000 (19:31 +0100)
w32api/ChangeLog
w32api/include/winbase.h
w32api/include/wincon.h
w32api/lib/kernel32.def

index 82b3d57..3813005 100644 (file)
@@ -1,3 +1,103 @@
+2021-06-13  Keith Marshall  <keith@users.osdn.me>
+
+       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  <keith@users.osdn.me>
 
        Add "legacy-safe" emulation of Microsoft's version helpers API.
index 542138a..ffd584a 100644 (file)
@@ -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;
index 3903aae..1073c08 100644 (file)
@@ -6,7 +6,7 @@
  * $Id$
  *
  * Written by Anders Norlander  <anorland@hem2.passagen.se>
- * 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 */
index f8a7715..90bc35a 100644 (file)
@@ -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