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