...
From 811619f2d0e4179afbd66fcedaabb3f52f0664a7 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath <[email protected]> Date: Thu, 2 Apr 2020 21:32:23 +0530 Subject: [PATCH] headers: memoryapi add Windows 10 functions
replace _WIN32_WINNT constant values with its defined names Signed-off-by: Biswapriyo Nath <[email protected]> --- mingw-w64-headers/include/memoryapi.h | 94 +++++++++++++++++++++++---- 1 file changed, 83 insertions(+), 11 deletions(-) diff --git a/mingw-w64-headers/include/memoryapi.h b/mingw-w64-headers/include/memoryapi.h index 04d1d31..b5b7326 100644 --- a/mingw-w64-headers/include/memoryapi.h +++ b/mingw-w64-headers/include/memoryapi.h @@ -20,14 +20,14 @@ extern "C" { HighMemoryResourceNotification } MEMORY_RESOURCE_NOTIFICATION_TYPE; -#if _WIN32_WINNT >= 0x0602 +#if _WIN32_WINNT >= _WIN32_WINNT_WIN8 typedef struct _WIN32_MEMORY_RANGE_ENTRY { PVOID VirtualAddress; SIZE_T NumberOfBytes; } WIN32_MEMORY_RANGE_ENTRY, *PWIN32_MEMORY_RANGE_ENTRY; #endif -#if _WIN32_WINNT >= 0x0603 +#if _WIN32_WINNT >= _WIN32_WINNT_WINBLUE typedef enum _OFFER_PRIORITY { VmOfferPriorityVeryLow = 1, VmOfferPriorityLow, @@ -37,33 +37,47 @@ extern "C" { #endif #endif -#if (WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) && _WIN32_WINNT >= 0x0A00) || WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) +#if (WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) && _WIN32_WINNT >= _WIN32_WINNT_WIN10) || WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) WINBASEAPI WINBOOL WINAPI VirtualFree (LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType); #endif #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) + #define FILE_MAP_WRITE SECTION_MAP_WRITE #define FILE_MAP_READ SECTION_MAP_READ #define FILE_MAP_ALL_ACCESS SECTION_ALL_ACCESS #define FILE_MAP_COPY 0x1 #define FILE_MAP_RESERVE 0x80000000 +#define FILE_MAP_TARGETS_INVALID 0x40000000 +#define FILE_MAP_LARGE_PAGES 0x20000000 WINBASEAPI SIZE_T WINAPI VirtualQuery (LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength); WINBASEAPI WINBOOL WINAPI FlushViewOfFile (LPCVOID lpBaseAddress, SIZE_T dwNumberOfBytesToFlush); WINBASEAPI WINBOOL WINAPI UnmapViewOfFile (LPCVOID lpBaseAddress); + WINBASEAPI WINBOOL WINAPI UnmapViewOfFile2(HANDLE Process, PVOID BaseAddress, ULONG UnmapFlags); WINBASEAPI HANDLE WINAPI CreateFileMappingFromApp (HANDLE hFile, PSECURITY_ATTRIBUTES SecurityAttributes, ULONG PageProtection, ULONG64 MaximumSize, PCWSTR Name); WINBASEAPI PVOID WINAPI MapViewOfFileFromApp (HANDLE hFileMappingObject, ULONG DesiredAccess, ULONG64 FileOffset, SIZE_T NumberOfBytesToMap); -#if _WIN32_WINNT >= 0x0A00 + WINBASEAPI WINBOOL WINAPI VirtualUnlockEx(HANDLE Process, LPVOID Address, SIZE_T Size); + +#if _WIN32_WINNT >= _WIN32_WINNT_WIN10 + WINBASEAPI WINBOOL WINAPI SetProcessValidCallTargets(HANDLE hProcess, PVOID VirtualAddress, SIZE_T RegionSize, ULONG NumberOfOffsets, PCFG_CALL_TARGET_INFO OffsetInformation); + WINBASEAPI WINBOOL WINAPI SetProcessValidCallTargetsForMappedView(HANDLE Process, PVOID VirtualAddress, SIZE_T RegionSize, ULONG NumberOfOffsets, PCFG_CALL_TARGET_INFO OffsetInformation, HANDLE Section, ULONG64 ExpectedFileOffset); WINBASEAPI PVOID WINAPI VirtualAllocFromApp(PVOID BaseAddress, SIZE_T Size, ULONG AllocationType, ULONG Protection); + WINBASEAPI WINBOOL WINAPI VirtualProtectFromApp (PVOID lpAddress, SIZE_T dwSize, ULONG flNewProtect, PULONG lpflOldProtect); + WINBASEAPI HANDLE WINAPI OpenFileMappingFromApp(ULONG DesiredAccess, BOOL InheritHandle, PCWSTR Name); #endif + +#if NTDDI_VERSION >= NTDDI_WIN10_RS4 + WINBASEAPI PVOID WINAPI VirtualAlloc2FromApp(HANDLE Process, PVOID BaseAddress, SIZE_T Size, ULONG AllocationType, ULONG PageProtection, MEM_EXTENDED_PARAMETER* ExtendedParameters, ULONG ParameterCount); + WINBASEAPI PVOID WINAPI MapViewOfFile3FromApp(HANDLE FileMapping, HANDLE Process, PVOID BaseAddress, ULONG64 Offset, SIZE_T ViewSize, ULONG AllocationType, ULONG PageProtection, MEM_EXTENDED_PARAMETER* ExtendedParameters, ULONG ParameterCount); #endif +#endif /* WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) */ + #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || defined(WINSTORECOMPAT) WINBASEAPI WINBOOL WINAPI VirtualProtect (LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); #endif -#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) && _WIN32_WINNT >= 0x0A00 - WINBASEAPI WINBOOL WINAPI VirtualProtectFromApp (PVOID lpAddress, SIZE_T dwSize, ULONG flNewProtect, PULONG lpflOldProtect); -#endif + #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) #define FILE_MAP_EXECUTE SECTION_MAP_EXECUTE_EXPLICIT @@ -101,24 +115,82 @@ extern "C" { #define OpenFileMapping OpenFileMappingW #endif -#if _WIN32_WINNT >= 0x0600 - WINBASEAPI HANDLE WINAPI CreateFileMappingNumaW (HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCWSTR lpName, DWORD nndPreferred); +#if _WIN32_WINNT >= _WIN32_WINNT_WINXP + WINBASEAPI WINBOOL WINAPI AllocateUserPhysicalPages(HANDLE hProcess, PULONG_PTR NumberOfPages, PULONG_PTR PageArray); + WINBASEAPI WINBOOL WINAPI FreeUserPhysicalPages(HANDLE hProcess, PULONG_PTR NumberOfPages, PULONG_PTR PageArray); + WINBASEAPI WINBOOL WINAPI MapUserPhysicalPages(PVOID VirtualAddress, ULONG_PTR NumberOfPages, PULONG_PTR PageArray); +#endif +#if _WIN32_WINNT >= _WIN32_WINNT_VISTA + WINBASEAPI WINBOOL WINAPI AllocateUserPhysicalPagesNuma(HANDLE hProcess, PULONG_PTR NumberOfPages, PULONG_PTR PageArray, DWORD nndPreferred); + WINBASEAPI HANDLE WINAPI CreateFileMappingNumaW (HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCWSTR lpName, DWORD nndPreferred); + WINBASEAPI LPVOID WINAPI VirtualAllocExNuma(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect, DWORD nndPreferred); #ifdef UNICODE #define CreateFileMappingNuma CreateFileMappingNumaW #endif #endif -#if _WIN32_WINNT >= 0x0602 + +#if _WIN32_WINNT >= _WIN32_WINNT_WIN8 +#define MEHC_PATROL_SCRUBBER_PRESENT 0x1 + WINBASEAPI WINBOOL WINAPI GetMemoryErrorHandlingCapabilities(PULONG Capabilities); WINBASEAPI WINBOOL WINAPI PrefetchVirtualMemory (HANDLE hProcess, ULONG_PTR NumberOfEntries, PWIN32_MEMORY_RANGE_ENTRY VirtualAddresses, ULONG Flags); + typedef VOID WINAPI BAD_MEMORY_CALLBACK_ROUTINE(VOID); + typedef BAD_MEMORY_CALLBACK_ROUTINE *PBAD_MEMORY_CALLBACK_ROUTINE; + WINBASEAPI PVOID WINAPI RegisterBadMemoryNotification(PBAD_MEMORY_CALLBACK_ROUTINE Callback); + WINBASEAPI WINBOOL WINAPI UnregisterBadMemoryNotification(PVOID RegistrationHandle); WINBASEAPI WINBOOL WINAPI UnmapViewOfFileEx (PVOID BaseAddress, ULONG UnmapFlags); #endif -#if _WIN32_WINNT >= 0x0603 + +#if _WIN32_WINNT >= _WIN32_WINNT_WINBLUE WINBASEAPI DWORD WINAPI DiscardVirtualMemory (PVOID VirtualAddress, SIZE_T Size); WINBASEAPI DWORD WINAPI OfferVirtualMemory (PVOID VirtualAddress, SIZE_T Size, OFFER_PRIORITY Priority); WINBASEAPI DWORD WINAPI ReclaimVirtualMemory (PVOID VirtualAddress, SIZE_T Size); #endif + +#if NTDDI_VERSION >= NTDDI_WIN10_RS1 + typedef enum WIN32_MEMORY_INFORMATION_CLASS { + MemoryRegionInfo + } WIN32_MEMORY_INFORMATION_CLASS; + + typedef struct WIN32_MEMORY_REGION_INFORMATION { + PVOID AllocationBase; + ULONG AllocationProtect; + __C89_NAMELESS union { + ULONG Flags; + __C89_NAMELESS struct { + ULONG Private : 1; + ULONG MappedDataFile : 1; + ULONG MappedImage : 1; + ULONG MappedPageFile : 1; + ULONG MappedPhysical : 1; + ULONG DirectMapped : 1; + ULONG Reserved : 26; + }; + }; + SIZE_T RegionSize; + SIZE_T CommitSize; + } WIN32_MEMORY_REGION_INFORMATION; + + WINBASEAPI WINBOOL WINAPI QueryVirtualMemoryInformation(HANDLE Process, const VOID* VirtualAddress, WIN32_MEMORY_INFORMATION_CLASS MemoryInformationClass, PVOID MemoryInformation, SIZE_T MemoryInformationSize, PSIZE_T ReturnSize); + +#endif /* NTDDI_VERSION >= NTDDI_WIN10_RS1 */ + +#if NTDDI_VERSION >= NTDDI_WIN10_RS2 + WINBASEAPI PVOID WINAPI MapViewOfFileNuma2(HANDLE FileMappingHandle, HANDLE ProcessHandle, ULONG64 Offset, PVOID BaseAddress, SIZE_T ViewSize, ULONG AllocationType, ULONG PageProtection, ULONG PreferredNode); + WINBASEAPI PVOID MapViewOfFile2(HANDLE FileMappingHandle, HANDLE ProcessHandle, ULONG64 Offset, PVOID BaseAddress, SIZE_T ViewSize, ULONG AllocationType, ULONG PageProtection); #endif +#if NTDDI_VERSION >= NTDDI_WIN10_RS4 + WINBASEAPI PVOID WINAPI VirtualAlloc2(HANDLE Process, PVOID BaseAddress, SIZE_T Size, ULONG AllocationType, ULONG PageProtection, MEM_EXTENDED_PARAMETER* ExtendedParameters, ULONG ParameterCount); + WINBASEAPI PVOID WINAPI MapViewOfFile3(HANDLE FileMapping, HANDLE Process, PVOID BaseAddress, ULONG64 Offset, SIZE_T ViewSize, ULONG AllocationType, ULONG PageProtection, MEM_EXTENDED_PARAMETER* ExtendedParameters, ULONG ParameterCount); +#endif + +#if NTDDI_VERSION >= NTDDI_WIN10_RS5 + WINBASEAPI HANDLE WINAPI CreateFileMapping2(HANDLE File, SECURITY_ATTRIBUTES* SecurityAttributes, ULONG DesiredAccess, ULONG PageProtection, ULONG AllocationAttributes, ULONG64 MaximumSize, PCWSTR Name, MEM_EXTENDED_PARAMETER* ExtendedParameters, ULONG ParameterCount); +#endif + +#endif /* WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) */ + #ifdef __cplusplus } #endif -- 2.26.0
_______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
