epee: allow shared Windows file reads

Opening a file with a zero sharing mode makes read-only access exclusive
on Windows. Allow read and write sharing so callers can inspect files
that are already open, such as active log files.
This commit is contained in:
selsta
2026-06-30 19:35:28 +02:00
parent ad6b10f33c
commit be7a5ecc4e
2 changed files with 5 additions and 1 deletions
+1 -1
View File
@@ -107,7 +107,7 @@ namespace file_io_utils
#ifdef _WIN32
std::wstring wide_path;
try { wide_path = string_tools::utf8_to_utf16(path_to_file); } catch (...) { return false; }
HANDLE file_handle = CreateFileW(wide_path.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
HANDLE file_handle = CreateFileW(wide_path.c_str(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (file_handle == INVALID_HANDLE_VALUE)
return false;
DWORD file_size = GetFileSize(file_handle, NULL);
+4
View File
@@ -136,6 +136,10 @@ TEST(logging, all)
ASSERT_TRUE(str.find("error") != std::string::npos);
ASSERT_TRUE(str.find("debug") != std::string::npos);
ASSERT_TRUE(str.find("trace") != std::string::npos);
MINFO("after active log read");
ASSERT_TRUE(load_log_to_string(log_filename, str));
ASSERT_TRUE(str.find("after active log read") != std::string::npos);
cleanup();
}