This commit is contained in:
Scott E. Graves 2024-10-22 13:10:01 -05:00
parent 8e2ebf05b8
commit 49e518ac19

View File

@ -143,11 +143,12 @@ public:
FILE_FLAG_BACKUP_SEMANTICS |
(directory ? FILE_ATTRIBUTE_DIRECTORY : FILE_ATTRIBUTE_NORMAL);
auto share_mode = FILE_SHARE_READ | FILE_SHARE_WRITE;
auto handle =
::CreateFileA(file_path.c_str(), GENERIC_READ, share_mode, nullptr,
OPEN_EXISTING, static_cast<DWORD>(attributes), nullptr);
FILE_BASIC_INFO fi{};
::GetFileInformationByHandleEx(handle, FileBasicInfo, &fi, sizeof(fi));
auto handle = ::CreateFileA(
file_path.c_str(), GENERIC_READ, static_cast<DWORD>(share_mode),
nullptr, OPEN_EXISTING, static_cast<DWORD>(attributes), nullptr);
FILE_BASIC_INFO basic_info{};
::GetFileInformationByHandleEx(handle, FileBasicInfo, &basic_info,
sizeof(basic_info));
if (not directory) {
auto opt_size = utils::file::file{file_path}.size();
if (not opt_size.has_value()) {
@ -162,11 +163,14 @@ public:
: utils::divide_with_ceiling(file_info.FileSize,
WINFSP_ALLOCATION_UNIT) *
WINFSP_ALLOCATION_UNIT;
file_info.FileAttributes = fi.FileAttributes;
file_info.ChangeTime = static_cast<UINT64>(fi.ChangeTime.QuadPart);
file_info.CreationTime = static_cast<UINT64>(fi.CreationTime.QuadPart);
file_info.LastAccessTime = static_cast<UINT64>(fi.LastAccessTime.QuadPart);
file_info.LastWriteTime = static_cast<UINT64>(fi.LastWriteTime.QuadPart);
file_info.FileAttributes = basic_info.FileAttributes;
file_info.ChangeTime = static_cast<UINT64>(basic_info.ChangeTime.QuadPart);
file_info.CreationTime =
static_cast<UINT64>(basic_info.CreationTime.QuadPart);
file_info.LastAccessTime =
static_cast<UINT64>(basic_info.LastAccessTime.QuadPart);
file_info.LastWriteTime =
static_cast<UINT64>(basic_info.LastWriteTime.QuadPart);
::CloseHandle(handle);
return api_error::success;
}