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

Форматы запросов для различных команд


  • 0 - Инициализация


  • (0) 13 header Заголовок запроса.
    (+13) 1 n_units Количество устройств, обслуживаемых драйвером. Это поле заполняется только блочным драйвером.
    (+14) 4 end_addr Конечный FAR-адрес резидентной части кода драйвера. В это поле драйвер записывает адрес байта памяти, следующего за той частью кода драйвера, которая должна стать резидентной.
    (+18) 4 parm FAR-адрес строки параметров инициализации драйвера из файла CONFIG.SYS. Эта строка содержит все, что находится в строке файла после команды 'DEVICE=', она заканчивается символами перевода строки и возврата каретки 0Ah, 0Dh. При возврате драйвер блочного устройства должен записать в это поле адрес массива указателей на блоки параметров BIOSBIOS

    (BPB), по одному указателю на каждое устройство, обслуживаемое драйвером.

    (+22) 1 drive Номер устройства. Для версии DOS 3.0 и более поздних версий в это поле при загрузке драйвера операционная система заносит номер, назначенный устройству, обслуживаемому драйвером. Например, для устройства А:это 0, для B: - 1 и т.д.

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

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

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

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

    (+15) 4 vol_id Указатель на предыдущую метку тома (если установлен бит 11 слова атрибута устройства и диск был заменен)

  • 2 - Построить блок BPB.
  • (0) 13 header Заголовок запроса.
    (+13) 1 media В этом поле драйверу передается байт-описатель среды носителя данных, с которым DOS работала раньше.
    (+14) 4 buf_adr Адрес буфера обмена. Содержимое этого буфера при вызове драйвера зависит от утановки бита 13 слова атрибутов устройства (IBM-формат). Если этот бит равен 0 (устройство формата IBM), буфер содержит первый сектор первой копии FAT. В противном случае указатель установлен на буфер свободного сектора.
    (+18) 4 bpb_adr Указатель на новый BPB, записывается в это поле драйвером.
    <
  • 3, 4, 8, 9, 0Ch - Чтение/Запись.


  • (0) 13 header Заголовок запроса.
    (+13) 1 media В этом поле драйверу передается байт-описатель среды носителя данных.
    (+14) 4 buf_adr Адрес буфера для передачи данных.
    (+18) 2 count Количество передаваемых байтов для символьных устройств или секторов для блочных устройств.
    (+20) 2 sector Номер начального сектора, если драйвер использует 16-битовую адресацию секторов или -1

    для 32-битовой адресации. Это поле не используется символьными драйверами.
    (+22) 4 vol_id Указатель на метку тома в формате ASCIIZ. Возвращается блочным драйвером, если он выставляет ошибку 15 (неправильная смена диска). Это поле должно содержать ссылку на метку требуемого диска.
    (+26) 4 sect32 Номер начального сектора, если содержимое поля sector равно -1. Первым идет старшее слово номера сектора. Если обнаружена ошибка с номером 15, в это поле записывается указатель на метку тома.
  • 5 - Неразрушающий ввод.


  • (0) 13 header Заголовок запроса.
    (+13) 1 byte В это поле драйвер записывает извлеченный из буфера байт, который будет считан по следующей команде ввода.
  • 6, 0Ah - Проверит состояние ввода/вывода.


  • Для команд проверки состояния запрос состоит только из заголовка, область переменного формата отсутствует.

  • 7 - Сброс буфера устройства ввода.


  • 11 - Сброс буфера устройства вывода.


  • Запрос состоит только из заголовка.

  • 0Dh, 0Eh - Открыть/Закрыть устройство.


  • Запрос для этих команд состоит только из заголовка.

  • 15 - Проверка сменяемости диска.


  • Запрос состоит только из заголовка.

  • 19 - Общее управление вводом/выводом (GENERIC_IOCTL).


  • (0) 13 header Заголовок запроса.
    (+13) 1 funct Это поле содержит код функции команды общего IOCTL.
    (+14) 1 subfunc Код подфункции для функции funct.
    (+15) 2 si_reg Значение регистра SI при вызове функции 44h прерывания 21h. Эта функция DOS предназначена для управления вводом/выводом.
    (+17) 2 di_reg Значение, передаваемое при вызове функции 44h прерывания 21h через регистр DI.
    (+19) 4 buf Указатель на буфер данных, содержащий управляющую информацию для устройства или предназначенный для приема информации от устройства.
    <


  • 23 - Получить активное логическое устройство.


  • 24 - Установить активное логическое устройство.


  • (0) 13 header Заголовок запроса.
    (+13) 1 unit Код логического устройства, которое должно стать активным при использовании команды 24, или код активного устройства, помещаемый драйвером по команде 23.
    (+14) 1 cmd Код команды.
    (+15) 4 status Слово состояния.
    (+19) 4 reserved Зарезервировано.

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