@@ -2823,7 +2823,7 @@ inline bool mmap::open(const char *path) {
2823
2823
wpath += path[i];
2824
2824
}
2825
2825
2826
- #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
2826
+ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES ) && (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
2827
2827
hFile_ = ::CreateFile2 (wpath.c_str (), GENERIC_READ, FILE_SHARE_READ,
2828
2828
OPEN_EXISTING, NULL );
2829
2829
#else
@@ -2833,11 +2833,19 @@ inline bool mmap::open(const char *path) {
2833
2833
2834
2834
if (hFile_ == INVALID_HANDLE_VALUE) { return false ; }
2835
2835
2836
+ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)
2836
2837
LARGE_INTEGER size{};
2837
2838
if (!::GetFileSizeEx (hFile_, &size)) { return false ; }
2838
2839
size_ = static_cast <size_t >(size.QuadPart );
2840
+ #else
2841
+ DWORD sizeHigh;
2842
+ DWORD sizeLow;
2843
+ sizeLow = ::GetFileSize (hFile_, &sizeHigh);
2844
+ if (sizeLow == INVALID_FILE_SIZE) { return false ; }
2845
+ size_ = (static_cast <size_t >(sizeHigh) << (sizeof (DWORD) * 8 )) | sizeLow;
2846
+ #endif
2839
2847
2840
- #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
2848
+ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) && (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
2841
2849
hMapping_ =
2842
2850
::CreateFileMappingFromApp (hFile_, NULL , PAGE_READONLY, size_, NULL );
2843
2851
#else
@@ -2851,7 +2859,7 @@ inline bool mmap::open(const char *path) {
2851
2859
return false ;
2852
2860
}
2853
2861
2854
- #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
2862
+ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) && (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
2855
2863
addr_ = ::MapViewOfFileFromApp (hMapping_, FILE_MAP_READ, 0 , 0 );
2856
2864
#else
2857
2865
addr_ = ::MapViewOfFile (hMapping_, FILE_MAP_READ, 0 , 0 , 0 );
0 commit comments