Как проверить готовность диска без появления ошибки?

Иногда требуется проверить готовность диска, перед обращением к нему. При этом если сделать это «в лоб» — возникнет сообщение об ошибке. Поэтому сначала бывает полезным изменить режим отображения ошибок, а только потом проверять готовность диска. Вот готовая функция на языке программирования Delphi, которая по букве диска проверяет его готовность:

//проверяет готовность диска по его букве (aDrive)
function TestDrive(aDrive: Char): Boolean;
var
  ErrorModeBuf: Word;
  DirectoryBuf: String;
begin
  ErrorModeBuf := SetErrorMode(Windows.SEM_NOOPENFILEERRORBOX);
  GetDir(0, DirectoryBuf);
  //берем на себя контроль ошибок ввода\вывода
  {$I-}
    //пытаемся перейти в корень проверяемого диска
    ChDir(aDrive + ':\');
  {$I+}
  //если возникла ошибка, то диск не готов
  if (IoResult <> 0) then
    Result := False
  else
    //иначе - готов
    Result := True;
  //возвращаемся к предыдущей директории
  ChDir(DirectoryBuf);
  //устанавливаем запомненный режим ошибок
  SetErrorMode(ErrorModeBuf);
end;

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *