summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2016-11-12 15:42:47 +0100
committer Miodrag Milanovic <mmicko@gmail.com>2016-11-12 15:42:47 +0100
commitf9998057380fadb9cadb840e05712ce00b2fae0c (patch)
tree2556dec26405a3e6bb8558e72b46edff0c3bfb8b
parentb73126e85ad059b37471e211209aaba47bf606d4 (diff)
Implemented GetFileSize and and proper winrt file open (nw)
-rw-r--r--src/osd/modules/file/winrtfile.cpp6
-rw-r--r--src/osd/uwp/uwpcompat.cpp8
2 files changed, 9 insertions, 5 deletions
diff --git a/src/osd/modules/file/winrtfile.cpp b/src/osd/modules/file/winrtfile.cpp
index 14cb08aa7c4..a33c61cd657 100644
--- a/src/osd/modules/file/winrtfile.cpp
+++ b/src/osd/modules/file/winrtfile.cpp
@@ -232,9 +232,7 @@ osd_file::error osd_file::open(std::string const &orig_path, uint32_t openflags,
// get the file size
FILE_STANDARD_INFO file_info;
GetFileInformationByHandleEx(h, FileStandardInfo, &file_info, sizeof(file_info));
- auto lower = file_info.EndOfFile.QuadPart;
-
- if (INVALID_FILE_SIZE == lower)
+ if (INVALID_FILE_SIZE == file_info.EndOfFile.LowPart)
{
DWORD const err = GetLastError();
if (NO_ERROR != err)
@@ -247,7 +245,7 @@ osd_file::error osd_file::open(std::string const &orig_path, uint32_t openflags,
try
{
file = std::make_unique<win_osd_file>(h);
- filesize = lower;
+ filesize = file_info.EndOfFile.QuadPart;
return error::NONE;
}
catch (...)
diff --git a/src/osd/uwp/uwpcompat.cpp b/src/osd/uwp/uwpcompat.cpp
index 0358d65bcf8..b8f585b4e5b 100644
--- a/src/osd/uwp/uwpcompat.cpp
+++ b/src/osd/uwp/uwpcompat.cpp
@@ -93,6 +93,12 @@ extern "C" {
_Out_opt_ LPDWORD lpFileSizeHigh
)
{
- return 0;
+ FILE_STANDARD_INFO file_info;
+ GetFileInformationByHandleEx(hFile, FileStandardInfo, &file_info, sizeof(file_info));
+ if(lpFileSizeHigh!=nullptr)
+ {
+ *lpFileSizeHigh = file_info.EndOfFile.HighPart;
+ }
+ return file_info.EndOfFile.LowPart;
}
}