Что нового

Баг Баг в функции FileRead

Oki

Знающий
Сообщения
140
Репутация
13
Заявлено, что значение, выдаваемое макрокомандой @error, устанавливается в -1 при достижении конца файла и в 1 при других ошибках. Фактически устанавливается в -1 и при некоторых других ошибках. Например, в следующих случаях:
  • диск отсоединён в процессе работы с файлом;
  • предположительно диск в неидеальном состоянии, с которым другие программы справляются (вероятно, путём повторного обращения к секторам, которые с первого раза не прочитались); по-видимому, и в случае совсем плохого состояния сектора будет вылетать с ошибкой именно конца файла, а не иной ошибкой, а тем более не с ошибкой, из кода которой можно получить эту информацию.
Чтоб два раза не вставать, здесь же помещаю запрос на добавление, если это реализуемо в принципе, возможности читать из неудачно прочтённого сектора то, как это прочиталось (пусть даже с вероятностью ошибки). К сожалению, нет опции обоих префиксов к заголовку.
 
Последнее редактирование:

damien2008

Осваивающий
Сообщения
178
Репутация
34
может пробовать проверять перед(во время) чтением(я)

winapi_getfilepointerex​

если @extended error будет STATUS_DEVICE_DATA_ERROR
то по-идее мы узнаем есть битые секторы или нет
NTSTATUS
только уже придется пользоваться winapi_createfile
 
Автор
Oki

Oki

Знающий
Сообщения
140
Репутация
13
может пробовать проверять перед(во время) чтением(я)

winapi_getfilepointerex​

Это где такое добро растёт? Ни здесь, ни даже здесь не видно.
NTSTATUS
только уже придется пользоваться winapi_createfile
Мысль непонятна.
 
Верх