Операционная система MS DOS

       

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


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

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

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

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

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

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

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

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

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

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



    (0) 13 header Заголовок запроса.
    (+13) 1 media В этом поле драйверу передается байт-описатель среды носителя данных, с которым DOS работала раньше.
    (+14) 1 reply В это поле драйвер должен поместить ответ о факте замены среды:

    1 - диск не заменялся;

    0 - неизвестно;

    -1 - диск был заменен.

    (+15) 4 vol_id Указатель на предыдущую метку тома (если установлен бит 11 слова атрибута устройства и диск был заменен)
    <
    Если драйвер поддерживает функцию проверки замены среды носителя данных (бит 11 слова атрибута установлен в 1) и оказалось, что произошла замена диска, драйвер должен вернуть в поле vol_id указатель на область памяти, содержащую предыдущую метку тома в формате ASCIIZ. Если метка тома не используется драйвером, а бит 11 слова атрибутов установлен, необходимо вернуть указатель на строку "NO_NAME", закрытую двоичным нулем.

    Байт-описатель среды media классифицирует используемую среду носителя данных, но делает это неоднозначно. Мы приведем характерные для этого байта параметры дисков:

    0FFh 2 стороны, 8 секторов на дорожку;
    0FEh 1 сторона, 8 секторов на дорожку;
    0FDh 2 стороны, 8 секторов на дорожку;
    0FCh 1 сторона, 9 секторов на дорожку;
    0F9h 2 стороны, 15 секторов на дорожку;
    0F8h жесткий диск;
    0FEh, 0FDh используются восьмидюймовые дискеты.
    Более подробно все, что касается дисков, будет изложено в разделах, посвященных файловой системе.


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