Thanks for the review. I have attached the updated patch file.
From 8a591f3fc09b2290dd8282932fee398fd3f20885 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath <[email protected]> Date: Thu, 2 Jun 2022 18:51:33 +0530 Subject: [PATCH] headers: Add missing APIs and symbols in winbase.h
Signed-off-by: Biswapriyo Nath <[email protected]> --- mingw-w64-headers/include/winbase.h | 158 ++++++++++++++++++++++++++-- 1 file changed, 151 insertions(+), 7 deletions(-) diff --git a/mingw-w64-headers/include/winbase.h b/mingw-w64-headers/include/winbase.h index cc29351..9a09a9d 100644 --- a/mingw-w64-headers/include/winbase.h +++ b/mingw-w64-headers/include/winbase.h @@ -93,9 +93,23 @@ extern "C" { #define FILE_FLAG_OPEN_REPARSE_POINT 0x200000 #define FILE_FLAG_OPEN_NO_RECALL 0x100000 #define FILE_FLAG_FIRST_PIPE_INSTANCE 0x80000 -#if _WIN32_WINNT >= 0x0602 +#if _WIN32_WINNT >= _WIN32_WINNT_WIN8 #define FILE_FLAG_OPEN_REQUIRING_OPLOCK 0x40000 #endif +#if NTDDI_VERSION >= NTDDI_WIN10_NI + typedef enum FILE_WRITE_FLAGS { + FILE_WRITE_FLAGS_NONE = 0, + FILE_WRITE_FLAGS_WRITE_THROUGH = 0x000000001 + } FILE_WRITE_FLAGS; +DEFINE_ENUM_FLAG_OPERATORS(FILE_WRITE_FLAGS) + +typedef enum FILE_FLUSH_MODE { + FILE_FLUSH_DEFAULT = 0, + FILE_FLUSH_DATA, + FILE_FLUSH_MIN_METADATA, + FILE_FLUSH_NO_SYNC + } FILE_FLUSH_MODE; +#endif #define PROGRESS_CONTINUE 0 #define PROGRESS_CANCEL 1 @@ -131,6 +145,9 @@ extern "C" { #define COPY_FILE_DISABLE_PRE_ALLOCATION 0x04000000 #define COPY_FILE_ENABLE_LOW_FREE_SPACE_MODE 0x08000000 #endif +#if NTDDI_VERSION >= NTDDI_WIN10_NI +#define COPY_FILE_ENABLE_SPARSE_COPY 0x20000000 +#endif #define REPLACEFILE_WRITE_THROUGH 0x1 #define REPLACEFILE_IGNORE_MERGE_ERRORS 0x2 @@ -1211,7 +1228,46 @@ extern "C" { WINBASEAPI LPVOID WINAPI CreateFiber (SIZE_T dwStackSize, LPFIBER_START_ROUTINE lpStartAddress, LPVOID lpParameter); WINBASEAPI LPVOID WINAPI ConvertThreadToFiber (LPVOID lpParameter); - /* TODO: Add RTL_UMS... to winnt.h header and add UMS-base API. */ +#define UMS_VERSION RTL_UMS_VERSION + + typedef void *PUMS_CONTEXT; + typedef void *PUMS_COMPLETION_LIST; + typedef RTL_UMS_THREAD_INFO_CLASS UMS_THREAD_INFO_CLASS, *PUMS_THREAD_INFO_CLASS; + typedef RTL_UMS_SCHEDULER_REASON UMS_SCHEDULER_REASON; + typedef PRTL_UMS_SCHEDULER_ENTRY_POINT PUMS_SCHEDULER_ENTRY_POINT; + + typedef struct _UMS_SCHEDULER_STARTUP_INFO { + ULONG UmsVersion; + PUMS_COMPLETION_LIST CompletionList; + PUMS_SCHEDULER_ENTRY_POINT SchedulerProc; + PVOID SchedulerParam; + } UMS_SCHEDULER_STARTUP_INFO, *PUMS_SCHEDULER_STARTUP_INFO; + + typedef struct _UMS_SYSTEM_THREAD_INFORMATION { + ULONG UmsVersion; + __C89_NAMELESS union { + __C89_NAMELESS struct { + ULONG IsUmsSchedulerThread : 1; + ULONG IsUmsWorkerThread : 1; + }; + ULONG ThreadUmsFlags; + }; + } UMS_SYSTEM_THREAD_INFORMATION, *PUMS_SYSTEM_THREAD_INFORMATION; + + WINBASEAPI WINBOOL WINAPI CreateUmsCompletionList(PUMS_COMPLETION_LIST *UmsCompletionList); + WINBASEAPI WINBOOL WINAPI DequeueUmsCompletionListItems(PUMS_COMPLETION_LIST UmsCompletionList, DWORD WaitTimeOut, PUMS_CONTEXT *UmsThreadList); + WINBASEAPI WINBOOL WINAPI GetUmsCompletionListEvent(PUMS_COMPLETION_LIST UmsCompletionList, PHANDLE UmsCompletionEvent); + WINBASEAPI WINBOOL WINAPI ExecuteUmsThread(PUMS_CONTEXT UmsThread); + WINBASEAPI WINBOOL WINAPI UmsThreadYield(PVOID SchedulerParam); + WINBASEAPI WINBOOL WINAPI DeleteUmsCompletionList(PUMS_COMPLETION_LIST UmsCompletionList); + WINBASEAPI PUMS_CONTEXT WINAPI GetCurrentUmsThread(VOID); + WINBASEAPI PUMS_CONTEXT WINAPI GetNextUmsListItem(PUMS_CONTEXT UmsContext); + WINBASEAPI WINBOOL WINAPI QueryUmsThreadInformation(PUMS_CONTEXT UmsThread, UMS_THREAD_INFO_CLASS UmsThreadInfoClass, PVOID UmsThreadInformation, ULONG UmsThreadInformationLength, PULONG ReturnLength); + WINBASEAPI WINBOOL WINAPI SetUmsThreadInformation(PUMS_CONTEXT UmsThread, UMS_THREAD_INFO_CLASS UmsThreadInfoClass, PVOID UmsThreadInformation, ULONG UmsThreadInformationLength); + WINBASEAPI WINBOOL WINAPI DeleteUmsThreadContext(PUMS_CONTEXT UmsThread); + WINBASEAPI WINBOOL WINAPI CreateUmsThreadContext(PUMS_CONTEXT *lpUmsThread); + WINBASEAPI WINBOOL WINAPI EnterUmsSchedulingMode(PUMS_SCHEDULER_STARTUP_INFO SchedulerStartupInfo); + WINBASEAPI WINBOOL WINAPI GetUmsSystemThreadInformation(HANDLE ThreadHandle, PUMS_SYSTEM_THREAD_INFORMATION SystemThreadInfo); #if _WIN32_WINNT >= 0x0602 WINBASEAPI WINBOOL WINAPI GetThreadInformation (HANDLE hThread, THREAD_INFORMATION_CLASS ThreadInformationClass, LPVOID ThreadInformation, DWORD ThreadInformationSize); @@ -1521,6 +1577,9 @@ extern "C" { #if WINVER >= 0x0600 #define STARTF_UNTRUSTEDSOURCE 0x00008000 #endif +#if NTDDI_VERSION >= NTDDI_WIN10_FE +#define STARTF_HOLOGRAPHIC 0x00040000 +#endif #if _WIN32_WINNT >= 0x0600 typedef struct _STARTUPINFOEXA { @@ -1663,6 +1722,14 @@ extern "C" { #endif #if NTDDI_VERSION >= NTDDI_WIN10_MN ,ProcThreadAttributeMitigationAuditPolicy = 24 + ,ProcThreadAttributeMachineType = 25 + ,ProcThreadAttributeComponentFilter = 26 +#endif +#if NTDDI_VERSION >= NTDDI_WIN10_FE + ,ProcThreadAttributeEnableOptionalXStateFeatures = 27 +#endif +#if NTDDI_VERSION >= NTDDI_WIN10_NI + ,ProcThreadAttributeTrustedApp = 29 #endif } PROC_THREAD_ATTRIBUTE_NUM; #endif @@ -1694,6 +1761,14 @@ extern "C" { #define PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE ProcThreadAttributeValue (ProcThreadAttributePseudoConsole, FALSE, TRUE, FALSE) #endif +#if NTDDI_VERSION >= NTDDI_WIN10_MN +#define PROC_THREAD_ATTRIBUTE_MACHINE_TYPE ProcThreadAttributeValue (ProcThreadAttributeMachineType, FALSE, TRUE, FALSE) +#endif + +#if NTDDI_VERSION >= NTDDI_WIN10_FE +#define PROC_THREAD_ATTRIBUTE_ENABLE_OPTIONAL_XSTATE_FEATURES ProcThreadAttributeValue (ProcThreadAttributeEnableOptionalXStateFeatures, TRUE, TRUE, FALSE) +#endif + #if _WIN32_WINNT >= _WIN32_WINNT_WIN7 #define PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE 0x01 #define PROCESS_CREATION_MITIGATION_POLICY_DEP_ATL_THUNK_ENABLE 0x02 @@ -1701,8 +1776,6 @@ extern "C" { #endif #if _WIN32_WINNT >= _WIN32_WINNT_WIN8 -#define PROC_THREAD_ATTRIBUTE_SECURITY_CAPABILITIES ProcThreadAttributeValue (ProcThreadAttributeSecurityCapabilities, FALSE, TRUE, FALSE) - #define PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_MASK (0x00000003 << 8) #define PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_DEFER (0x00000000 << 8) #define PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON (0x00000001 << 8) @@ -1845,12 +1918,30 @@ extern "C" { #define PROCESS_CREATION_MITIGATION_POLICY2_BLOCK_NON_CET_BINARIES_ALWAYS_OFF (0x00000002ULL << 36) #define PROCESS_CREATION_MITIGATION_POLICY2_BLOCK_NON_CET_BINARIES_NON_EHCONT (0x00000003ULL << 36) +#define PROCESS_CREATION_MITIGATION_POLICY2_XTENDED_CONTROL_FLOW_GUARD_MASK (0x00000003ULL << 40) +#define PROCESS_CREATION_MITIGATION_POLICY2_XTENDED_CONTROL_FLOW_GUARD_DEFER (0x00000000ULL << 40) +#define PROCESS_CREATION_MITIGATION_POLICY2_XTENDED_CONTROL_FLOW_GUARD_ALWAYS_ON (0x00000001ULL << 40) +#define PROCESS_CREATION_MITIGATION_POLICY2_XTENDED_CONTROL_FLOW_GUARD_ALWAYS_OFF (0x00000002ULL << 40) +#define PROCESS_CREATION_MITIGATION_POLICY2_XTENDED_CONTROL_FLOW_GUARD_RESERVED (0x00000003ULL << 40) + +#define PROCESS_CREATION_MITIGATION_POLICY2_POINTER_AUTH_USER_IP_MASK (0x00000003ULL << 44) +#define PROCESS_CREATION_MITIGATION_POLICY2_POINTER_AUTH_USER_IP_DEFER (0x00000000ULL << 44) +#define PROCESS_CREATION_MITIGATION_POLICY2_POINTER_AUTH_USER_IP_ALWAYS_ON (0x00000001ULL << 44) +#define PROCESS_CREATION_MITIGATION_POLICY2_POINTER_AUTH_USER_IP_ALWAYS_OFF (0x00000002ULL << 44) +#define PROCESS_CREATION_MITIGATION_POLICY2_POINTER_AUTH_USER_IP_RESERVED (0x00000003ULL << 44) + #define PROCESS_CREATION_MITIGATION_POLICY2_CET_DYNAMIC_APIS_OUT_OF_PROC_ONLY_MASK (0x00000003ULL << 48) #define PROCESS_CREATION_MITIGATION_POLICY2_CET_DYNAMIC_APIS_OUT_OF_PROC_ONLY_DEFER (0x00000000ULL << 48) #define PROCESS_CREATION_MITIGATION_POLICY2_CET_DYNAMIC_APIS_OUT_OF_PROC_ONLY_ALWAYS_ON (0x00000001ULL << 48) #define PROCESS_CREATION_MITIGATION_POLICY2_CET_DYNAMIC_APIS_OUT_OF_PROC_ONLY_ALWAYS_OFF (0x00000002ULL << 48) #define PROCESS_CREATION_MITIGATION_POLICY2_CET_DYNAMIC_APIS_OUT_OF_PROC_ONLY_RESERVED (0x00000003ULL << 48) +#define PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_CORE_SHARING_MASK (0x00000003ULL << 52) +#define PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_CORE_SHARING_DEFER (0x00000000ULL << 52) +#define PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_CORE_SHARING_ALWAYS_ON (0x00000001ULL << 52) +#define PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_CORE_SHARING_ALWAYS_OFF (0x00000002ULL << 52) +#define PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_CORE_SHARING_RESERVED (0x00000003ULL << 52) + #endif /* _WIN32_WINNT_WINTHRESHOLD */ #endif /* _WIN32_WINNT_WINBLUE */ #endif /* _WIN32_WINNT_WIN8 */ @@ -1886,6 +1977,7 @@ extern "C" { #if (NTDDI_VERSION >= NTDDI_WIN10_MN) #define PROC_THREAD_ATTRIBUTE_MITIGATION_AUDIT_POLICY ProcThreadAttributeValue (ProcThreadAttributeMitigationAuditPolicy, FALSE, TRUE, FALSE) +#define PROC_THREAD_ATTRIBUTE_COMPONENT_FILTER ProcThreadAttributeValue (ProcThreadAttributeComponentFilter, FALSE, TRUE, FALSE) #define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_CET_USER_SHADOW_STACKS_MASK (0x00000003ULL << 28) #define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_CET_USER_SHADOW_STACKS_DEFER (0x00000000ULL << 28) @@ -1904,8 +1996,19 @@ extern "C" { #define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_BLOCK_NON_CET_BINARIES_ALWAYS_ON (0x00000001ULL << 36) #define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_BLOCK_NON_CET_BINARIES_ALWAYS_OFF (0x00000002ULL << 36) #define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_BLOCK_NON_CET_BINARIES_RESERVED (0x00000003ULL << 36) + +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_XTENDED_CONTROL_FLOW_GUARD_MASK (0x00000003ULL << 40) +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_XTENDED_CONTROL_FLOW_GUARD_DEFER (0x00000000ULL << 40) +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_XTENDED_CONTROL_FLOW_GUARD_ALWAYS_ON (0x00000001ULL << 40) +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_XTENDED_CONTROL_FLOW_GUARD_ALWAYS_OFF (0x00000002ULL << 40) +#define PROCESS_CREATION_MITIGATION_AUDIT_POLICY2_XTENDED_CONTROL_FLOW_GUARD_RESERVED (0x00000003ULL << 40) + #endif /* NTDDI_WIN10_MN */ +#if NTDDI_VERSION >= NTDDI_WIN10_NI +#define PROC_THREAD_ATTRIBUTE_TRUSTED_APP ProcThreadAttributeValue (ProcThreadAttributeTrustedApp, FALSE, TRUE, FALSE) +#endif + #define ATOM_FLAG_GLOBAL 0x2 WINBASEAPI WINBOOL WINAPI GetProcessShutdownParameters (LPDWORD lpdwLevel, LPDWORD lpdwFlags); @@ -2273,6 +2376,31 @@ extern "C" { PVOID pvCallbackContext; } COPYFILE2_EXTENDED_PARAMETERS; +#if NTDDI_VERSION >= NTDDI_WIN10_FE + +#define COPYFILE2_IO_CYCLE_SIZE_MIN 4096 +#define COPYFILE2_IO_CYCLE_SIZE_MAX 0x40000000 +#define COPYFILE2_IO_RATE_MIN 512 + + typedef struct COPYFILE2_EXTENDED_PARAMETERS_V2 { + DWORD dwSize; + DWORD dwCopyFlags; + WINBOOL *pfCancel; + PCOPYFILE2_PROGRESS_ROUTINE pProgressRoutine; + PVOID pvCallbackContext; + DWORD dwCopyFlagsV2; + ULONG ioDesiredSize; + ULONG ioDesiredRate; + PVOID reserved[8]; + } COPYFILE2_EXTENDED_PARAMETERS_V2; + +#if NTDDI_VERSION >= NTDDI_WIN10_NI +#define COPY_FILE2_V2_DONT_COPY_JUNCTIONS 0x00000001 +#define COPY_FILE2_V2_VALID_FLAGS COPY_FILE2_V2_DONT_COPY_JUNCTIONS +#endif + +#endif /* NTDDI_VERSION >= NTDDI_WIN10_FE */ + WINBASEAPI HRESULT WINAPI CopyFile2 (PCWSTR pwszExistingFileName, PCWSTR pwszNewFileName, COPYFILE2_EXTENDED_PARAMETERS *pExtendedParameters); #endif #endif @@ -2458,6 +2586,10 @@ extern "C" { WINBASEAPI WINBOOL WINAPI ReadDirectoryChangesW (HANDLE hDirectory, LPVOID lpBuffer, DWORD nBufferLength, WINBOOL bWatchSubtree, DWORD dwNotifyFilter, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped, LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); #endif +#if NTDDI_VERSION >= NTDDI_WIN10_RS3 +WINBASEAPI WINBOOL WINAPI ReadDirectoryChangesExW (HANDLE hDirectory, LPVOID lpBuffer, DWORD nBufferLength, WINBOOL bWatchSubtree, DWORD dwNotifyFilter, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped, LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, READ_DIRECTORY_NOTIFY_INFORMATION_CLASS ReadDirectoryNotifyInformationClass); +#endif + #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) WINADVAPI WINBOOL WINAPI AccessCheckAndAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, LPSTR ObjectTypeName, LPSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, DWORD DesiredAccess, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccess, LPBOOL AccessStatus, LPBOOL pfGenerateOnClose); @@ -2597,10 +2729,7 @@ extern "C" { WINBASEAPI WINBOOL WINAPI DeleteTimerQueue (HANDLE TimerQueue); #ifndef __WIDL__ - /* Add Tp... API to winnt.h header and Threadpool-base-API. */ - WINBASEAPI WINBOOL WINAPI AddIntegrityLabelToBoundaryDescriptor (HANDLE *BoundaryDescriptor, PSID IntegrityLabel); - #endif #define HW_PROFILE_GUIDLEN 39 @@ -3163,6 +3292,9 @@ extern "C" { #define RPI_SMB2_FLAG_SERVERCAP_DIRECTORY_LEASING 0x00000020 #endif +#define RPI_SMB2_SHAREFLAG_ENCRYPT_DATA 0x00000001 +#define RPI_SMB2_SHAREFLAG_COMPRESS_DATA 0x00000002 + typedef struct _FILE_REMOTE_PROTOCOL_INFO { USHORT StructureVersion; USHORT StructureSize; @@ -3187,7 +3319,11 @@ extern "C" { } Server; struct { ULONG Capabilities; +#if NTDDI_VERSION >= NTDDI_WIN10_NI + ULONG ShareFlags; +#else ULONG CachingFlags; +#endif } Share; } Smb2; ULONG Reserved[16]; @@ -3265,6 +3401,10 @@ extern "C" { #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) #if defined (__x86_64__) || defined (__i386__) WINBASEAPI WINBOOL WINAPI SetXStateFeaturesMask (PCONTEXT Context, DWORD64 FeatureMask); +#if NTDDI_VERSION >= NTDDI_WIN10_FE + WINBASEAPI DWORD64 WINAPI GetThreadEnabledXStateFeatures(VOID); + WINBASEAPI WINBOOL WINAPI EnableProcessOptionalXStateFeatures(DWORD64 Features); +#endif /* NTDDI_VERSION >= NTDDI_WIN10_FE */ #endif #if _WIN32_WINNT >= 0x0601 WINBASEAPI DWORD APIENTRY EnableThreadProfiling (HANDLE ThreadHandle, DWORD Flags, DWORD64 HardwareCounters, HANDLE *PerformanceDataHandle); @@ -3309,6 +3449,10 @@ FORCEINLINE VOID DestroyThreadpoolEnvironment(PTP_CALLBACK_ENVIRON cbe) { TpDestroyCallbackEnviron(cbe); } +FORCEINLINE VOID SetThreadpoolCallbackPersistent(PTP_CALLBACK_ENVIRON pcbe) { + TpSetCallbackPersistent(pcbe); +} + #endif /* !__WIDL__ */ #endif /* _WIN32_WINNT >= 0x0600 */ #endif /* WINAPI_PARTITION_APP */ -- 2.36.1
_______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
