summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Brad Hughes <bradhugh@outlook.com>2016-03-18 13:37:49 -0400
committer Brad Hughes <bradhugh@outlook.com>2016-03-18 13:37:49 -0400
commit603d5509df7e3d0455d048ab5ec71397183ac44c (patch)
tree3d91130d58818631ff16049905d792735b6204c0
parent4e214fd08df1a0f633eb057b393c0f72be1d7754 (diff)
Update Windows OSD file functions to preferred more modern versions. All still available on XP and later.
-rw-r--r--src/osd/modules/file/winfile.cpp19
-rw-r--r--src/osd/windows/windir.cpp2
2 files changed, 11 insertions, 10 deletions
diff --git a/src/osd/modules/file/winfile.cpp b/src/osd/modules/file/winfile.cpp
index 894ce5b58bb..787a90957ae 100644
--- a/src/osd/modules/file/winfile.cpp
+++ b/src/osd/modules/file/winfile.cpp
@@ -57,8 +57,8 @@ public:
virtual error read(void *buffer, std::uint64_t offset, std::uint32_t length, std::uint32_t &actual) override
{
// attempt to set the file pointer
- LONG upper(std::uint32_t(offset >> 32));
- DWORD result(SetFilePointer(m_handle, std::uint32_t(offset), &upper, FILE_BEGIN));
+ LARGE_INTEGER largeOffset = { offset };
+ DWORD result(SetFilePointerEx(m_handle, largeOffset, NULL, FILE_BEGIN));
if (INVALID_SET_FILE_POINTER == result)
{
DWORD const err(GetLastError());
@@ -77,8 +77,8 @@ public:
virtual error write(void const *buffer, std::uint64_t offset, std::uint32_t length, std::uint32_t &actual) override
{
// attempt to set the file pointer
- LONG upper(std::uint32_t(offset >> 32));
- DWORD result(SetFilePointer(m_handle, std::uint32_t(offset), &upper, FILE_BEGIN));
+ LARGE_INTEGER largeOffset = { offset };
+ DWORD result(SetFilePointerEx(m_handle, largeOffset, NULL, FILE_BEGIN));
if (INVALID_SET_FILE_POINTER == result)
{
DWORD const err(GetLastError());
@@ -97,8 +97,8 @@ public:
virtual error truncate(std::uint64_t offset) override
{
// attempt to set the file pointer
- LONG upper(std::uint32_t(offset >> 32));
- DWORD const result(SetFilePointer(m_handle, std::uint32_t(offset), &upper, FILE_BEGIN));
+ LARGE_INTEGER largeOffset = { offset };
+ DWORD const result(SetFilePointerEx(m_handle, largeOffset, NULL, FILE_BEGIN));
if (INVALID_SET_FILE_POINTER == result)
{
DWORD const err(GetLastError());
@@ -163,7 +163,8 @@ DWORD create_path_recursive(TCHAR *path)
}
// if the path already exists, we're done
- if (GetFileAttributes(path) != INVALID_FILE_ATTRIBUTES)
+ WIN32_FILE_ATTRIBUTE_DATA fileinfo;
+ if (GetFileAttributesEx(path, GetFileExInfoStandard, &fileinfo) != INVALID_FILE_ATTRIBUTES)
return NO_ERROR;
else if (!CreateDirectory(path, NULL))
return GetLastError();
@@ -376,12 +377,12 @@ osd_directory_entry *osd_stat(const std::string &path)
{
// need to do special logic for root directories
memset(&find_data, 0, sizeof(find_data));
- find_data.dwFileAttributes = GetFileAttributes(t_path);
+ GetFileAttributesEx(t_path, GetFileExInfoStandard, &find_data.dwFileAttributes);
}
else
{
// attempt to find the first file
- find = FindFirstFile(t_path, &find_data);
+ find = FindFirstFileEx(t_path, FindExInfoStandard, &find_data, FindExSearchNameMatch, NULL, 0);
if (find == INVALID_HANDLE_VALUE)
goto done;
}
diff --git a/src/osd/windows/windir.cpp b/src/osd/windows/windir.cpp
index edbe688ffe9..87b1b5e05ce 100644
--- a/src/osd/windows/windir.cpp
+++ b/src/osd/windows/windir.cpp
@@ -72,7 +72,7 @@ osd_directory *osd_opendir(const char *dirname)
_sntprintf(dirfilter, dirfilter_size, TEXT("%s\\*.*"), t_dirname);
// attempt to find the first file
- dir->find = FindFirstFile(dirfilter, &dir->data);
+ dir->find = FindFirstFileEx(dirfilter, FindExInfoStandard, &dir->data, FindExSearchNameMatch, nullptr, 0);
error:
// cleanup