Создаем вирус и антивирус (Гульев) - страница 105

Примечание. Если в AL возвращается 00h, можно предполагать, что работает DOS более ранней версии, чем DOS 2.0.

Версии: DOS 2.00 и выше. DOS, функция 31h Завершиться и остаться резидентным

Вход:

AH=31h

AL – код выхода

DX – объем памяти, оставляемой резидентной (в параграфах)

Описание. Выходит в родительский процесс, сохраняя код выхода в AL. Код выхода можно получить через функцию 4Dh. DOS устанавливает начальное распределение памяти, как специфицировано в DX, и возвращает управление родительскому процессу, оставляя указанную память резидентной (число байт равно DX*16). Эта функция перекрывает функцию INT 27h, которая не возвращает код выхода и не способна установить резидентную программу, размер которой превышает 64 Кбайт.

Версии: DOS 2.00 и выше. DOS, функция 32h Получить информацию DOS о диске (Официально не документирована)

Вход:

AH=32h

DL – номер диска (0 – текущий, 1 – A и так далее)

Выход:

AL=00h, если в DL был задан корректный диск

DS:BX – адрес блока информации о диске для запрошенного устройства (Таблица Б-6)

AL=FFh, если в DL был задан некорректный диск

Описание.

Возвращает блок информации, представляющей интерес для приложений и утилит, которые выполняют доступ к дискам, поддерживаемым драйверами устройств, на уровне секторов.

Некоторые дисководы (особенно незагружаемые) функционируют только через свои драйвера устройств. Такие диски могут содержать неверную информацию в корневой записи и таблице разделов, что делает очень трудным определение, например, размера корневого оглавления, числа таблиц FAT и прочего. Блок информации диска содержит такие данные в хорошо форматированной структуре.

Версии: DOS 2.00 и выше. Таблица Б-6. Формат блока информации о диске

DOS, функция 33h Установить/опросить статус Ctrl-Break

Вход:

AH=33h

AL=00h – опросить текущий статус контроля Ctrl-Break

AL=01h – установить статус контроля Ctrl-Break

DL – требуемый статус (0 – выключен, 1 – включен)

Выход: DL – текущий статус (0 – выключен, 1 – включен)

Описание.

Если AL=00h, в DL возвращается текущий статус контроля Ctrl-Break.

Если AL=01h, в DL возвращается новый текущий статус.

Когда статус «включен», DOS при выполнении большинства функций (исключая 06h и 07h) проверяет, нажаты ли клавиши Ctrl-Break. Если это обнаружено, выполняется прерывание INT 23h (если оно не перехватывается, то процесс снимается).

При статусе «выключен» DOS проверяет на нажатие Ctrl-Break лишь при выполнении операций стандартного ввода/вывода, стандартной печати и стандартного AUX.

Версии: DOS 2.00 и выше. DOS, функция 34h