From 25264af5441a148e7ebc311b2b679c7ef8e404da Mon Sep 17 00:00:00 2001 From: Duke Manchester Date: Fri, 26 Jun 2026 11:05:33 -0600 Subject: [PATCH] avoid running 'GetVolumeInfotmationW' on network drives efficiently avoid running 'GetVolumeInformationW' on network drives use a variable to not re-do utf16 conversion, change [] to <> to be more visually distinct from inevitably wrapping () (cherry picked from commit 9338b10dd3e6614f1172cb38d086b0bc4be40dc8) --- drivers/windows/dir_access_windows.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/windows/dir_access_windows.cpp b/drivers/windows/dir_access_windows.cpp index 20b1661663..20dea21608 100644 --- a/drivers/windows/dir_access_windows.cpp +++ b/drivers/windows/dir_access_windows.cpp @@ -143,8 +143,14 @@ void DirAccessWindows::_update_drives() { String drive = String::chr('A' + i) + ':'; String path = drive + '\\'; String label; + Char16String cs = path.utf16(); + UINT type = GetDriveTypeW((LPCWSTR)cs.get_data()); + if (type == DRIVE_REMOTE) { + drives.push_back(DriveInfo{ drive, "" }); + continue; + } char16_t wlabel[4096]; - if (GetVolumeInformationW((LPCWSTR)(path).utf16().get_data(), (LPWSTR)wlabel, 4096, nullptr, nullptr, nullptr, nullptr, 0)) { + if (GetVolumeInformationW((LPCWSTR)cs.get_data(), (LPWSTR)wlabel, 4096, nullptr, nullptr, nullptr, nullptr, 0)) { label = String::utf16(wlabel); } drives.push_back(DriveInfo{ drive, label });