зеркало из https://github.com/microsoft/STL.git
Fix std::filesystem::remove on ReFS targets (#407)
* Fix std::filesystem::remove on ReFS targets by falling back to standard delete on ERROR_NOT_SUPPORTED. Resolves DevCom-857535.
This commit is contained in:
Родитель
4d5d226a72
Коммит
94c9f9965b
|
@ -657,11 +657,15 @@ __std_win_error __stdcall __std_fs_get_file_id(__std_fs_file_id* const _Id, cons
|
||||||
}
|
}
|
||||||
|
|
||||||
_Last_error = __std_win_error{GetLastError()};
|
_Last_error = __std_win_error{GetLastError()};
|
||||||
if (_Last_error != __std_win_error::_Invalid_parameter && _Last_error != __std_win_error::_Invalid_function) {
|
switch (_Last_error) {
|
||||||
|
case __std_win_error::_Invalid_parameter: // Older Windows versions
|
||||||
|
case __std_win_error::_Invalid_function: // Windows 10 1607
|
||||||
|
case __std_win_error::_Not_supported: // POSIX delete not supported by the file system
|
||||||
|
break; // try non-POSIX delete below
|
||||||
|
default:
|
||||||
return {false, _Last_error};
|
return {false, _Last_error};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Filesystem without POSIX delete support, or older than Windows 10 RS1 version without such support:
|
|
||||||
FILE_DISPOSITION_INFO _Info{/* .Delete= */ TRUE};
|
FILE_DISPOSITION_INFO _Info{/* .Delete= */ TRUE};
|
||||||
if (_SetFileInformationByHandle(_Handle._Get(), FileDispositionInfo, &_Info, sizeof(_Info))) {
|
if (_SetFileInformationByHandle(_Handle._Get(), FileDispositionInfo, &_Info, sizeof(_Info))) {
|
||||||
return {true, __std_win_error::_Success};
|
return {true, __std_win_error::_Success};
|
||||||
|
|
Загрузка…
Ссылка в новой задаче