# 1 Проверка замены носителя данных


Эту команду DOS выдает драйверу, когда она хочет проверить, не произошла ли замена носителя данных, например, замена дискеты.

Вообще говоря, довольно трудно определить, заменил ли оператор дискету или там все еще стоит старая, с которой DOS начала работу. Наиболее достоверные результаты можно было бы получить от аппаратуры, если бы она следила за заменой дискет. Но когда аппаратура не отслеживает замены дискет, приходится анализировать метку диска или как-то иначе определять, поменялась дискета или нет. Метка диска - слабое подспорье в этом вопросе, так как обычно при форматировании дискет пользователь не задает метку. Однако MS-DOS 4.01 при форматировании автоматически записывает на дискету уникальный серийный номер, который можно использовать для проверки факта замены дискеты в приемном кармане дисковода.

Можно отслеживать время доступа к диску и считать, что для смены носителя нужно не менее двух секунд.

К чему может привести некорректный ответ DOS на вопрос о замене дискеты?

К очень тяжелым последствиям.

Возможны три варианта ответа на вопрос о замене дискеты:

  1. Да, дискета заменена.
  2. Нет, дискета все та же.
  3. Неизвестно, произошла замена дискеты или нет.

Если DOS получила ответ, что дискета не заменена, она продолжает работу, которой занималась раньше.

Если пришел ответ, что носитель данных заменен, DOS выдает драйверу команду с номером 2. Это запрос драйверу на построение нового BPB. Все буфера, связанные с данным устройством, при этом очищаются, и, если они не были записаны на диск, может произойти потеря информации. Осуществляется чтение каталога и FAT.

Если пришел ответ, что неизвестно, сменили ли носитель данных или нет, действия DOS зависят от наличия в данный момент непустых дисковых буферов. Если непустых буферов нет, DOS считает, что носитель сменился, и ведет себя так, как это было описано раньше. Если есть непустые буфера, DOS записывает буфера на диск. При этом структура информации на новой дискете может оказаться полностью нарушенной.

Приведем формат запроса для команды проверки замены носителя:



Содержание раздела