Текст книги "Создаем вирус и антивирус"
Автор книги: Игорь Гульев
Жанр: Программирование, Компьютеры
сообщить о неприемлемом содержимом
Текущая страница: 13 (всего у книги 15 страниц)
Версии: 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
Получить адрес флага активности DOS
(Официально не документирована)
Вход:
AH=34h
Выход:
ES:BX – адрес флага активности DOS
Описание.
Функция возвращает флаг активности DOS, который показывает, можно ли на данный момент вызывать функции DOS. Эту функцию использует, например, функция фоновой печати PRINT.
Если ES: [BX] не нулевой, фоновая программа (TSR либо popup) не должна использовать никаких функций DOS.
Версии: DOS 2.00 и выше.
DOS, функция 35h
Получить вектор прерывания
Вход:
AH=35h
AL – номер прерывания (00h до FFh)
Выход:
ES:BX – адрес обработчика прерывания
Описание.
Возвращает значение вектора прерывания для INT (AL), то есть загружает в BX 0000:[AL*4], а в ES – 0000:[(AL*4)+2].
Примечание.
Эта функция изменяет сегментный регистр ES.
Версии: DOS 2.00 и выше.
DOS, функция 36h
Получить свободную память диска
Вход:
AH=36h
DL – номер диска (0 – текущий, 1 – A и так далее)
Выход:
AX=FFFFh, если AL содержал неверный номер диска
Если функция выполнена успешно:
AX – число секторов на кластер
BX – число доступных кластеров
CX – байт на сектор
DX – всего кластеров на диске
Описание.
Возвращает данные, полезные для подсчета общей и доступной дисковой памяти. Если в AX возвращено FFFFh, значит задан неверный диск. Иначе свободная память (в байтах) составляет (AX*BX*CX), всего памяти (AX*CX*DX) байт.
Версии: DOS 2.00 и выше.
DOS, функция 37h
Установить/опросить символ-переключатель
(Официально не документирована)
Вход:
AH=37h
AL=00h – опросить текущий переключатель
AL=01h – установить символ-переключатель
DL – символ-переключатель
Выход:
AL=00h, если функция выполнена успешно
DL – текущий символ-переключатель DOS (если при вызове AL=00h)
AL=FFh, если использована неподдерживаемая подфункция
Описание.
Устанавливает или опрашивает «Глобальный переключатель» DOS. Переключатель (SWITCHAR) – это символ, используемый в командной строке как признак опции. По умолчанию принимается «/» (например, DIR /w/p), но его можно изменить на «-» (DIR – w-p), если нужно, чтобы система была больше похожа на UNIX. Общепринято опрашивать значение SWITCHAR перед разбором области неформатированных параметров в PSP для выделения опций команды.
Примечание.
Эта недокументированная команда может измениться в будущих версиях DOS. Не рекомендуется изменять SWITCHAR.
Версии: DOS 2.00 и выше.
DOS, функция 38h
Получить/установить информацию о стране
Вход:
AH=38h
Получить информацию:
AL=00h – получить данные для текущей страны
DS:DX – адрес локального буфера для чтения блока данных страны (Таблица Б-7)
Установить информацию:
AL=01h-FEh – установить данные для указанной страны < 255
AL=FFh – установить данные для кода страны > 255
BX – 16-битный код страны (Таблица Б-8)
DX=FFFFh
Выход:
CF=0, если функция выполнена успешно
BX – код страны
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Если DX=FFFFh, то текущий код страны устанавливается равным AL (если AL=FFh, то код страны устанавливается равным BX). Обычно код страны устанавливается в файле CONFIG.SYS. Если DX<FFFFh, то DS:DX адресует буфер пользователя, в который помещается 20h-байтный блок данных для указанной страны.
Версии: DOS 2.00 и выше.
Таблица Б-7. Формат блока данных страны
DOS, функция 39h
Создать новое оглавление
Вход:
AH=39h
DS:DX – адрес строки ASCIZ с именем оглавления
Выход:
CF=0, если функция выполнена успешно
AX не сохранен
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Таблица Б-8. Коды некоторых стран
Описание.
Если диск и/или корневой путь не указаны, то новое оглавление создается в текущей директории. Поддиректория создается и связывается с существующим деревом. Если флаг CF установлен при возврате, то AX содержит код ошибки, и оглавление не создается.
Версии: DOS 2.00 и выше.
DOS, функция 3Ah
Удалить оглавление
Вход:
AH=3Ah
DS:DX – адрес строки ASCIZ с именем оглавления
Выход:
CF=0, если функция выполнена успешно
AX не сохранен
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Если диск и/или корневой путь не указаны, принимаются значения по умолчанию. Поддиректория удаляется из структуры оглавлений. Если флаг CF установлен при возврате, то AX содержит код ошибки, и оглавление не удаляется.
Примечание.
Оглавление не должно содержать файлов и поддиректорий, оно не должно попадать под влияние возможных ограничений DOS (например, не должно быть задействовано в активных командах JOIN или SUBST).
Версии: DOS 2.00 и выше.
DOS, функция 3Bh
Установить текущую директорию
Вход:
AH=3Bh
DS:DX – адрес строки ASCIZ с именем оглавления
Выход:
CF=0, если функция выполнена успешно
AX не сохранен
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Если диск и/или корневой путь не указаны, принимаются значения по умолчанию. Указанная поддиректория становится текущим оглавлением DOS для этого (или текущего) диска. Если флаг CF установлен при возврате, то AX содержит код ошибки, и текущее оглавление для выбранного диска не изменяется.
Версии: DOS 2.00 и выше.
DOS, функция 3Ch
Создать файл через описатель
Вход:
AH=3Ch
DS:DX – адрес строки ASCIZ с именем файла
CX – атрибут файла (атрибуты приведены в описании функции DOS 43h)
Выход:
CF=0, если функция выполнена успешно
AX – описатель файла
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Если диск и/или путь не указаны, принимаются значения по умолчанию.
Версии: DOS 2.00 и выше.
DOS, функция 3Dh
Открыть описатель файла
Вход:
AH=3Dh
DS:DX – адрес строки ASCIZ с именем файла
AL – режим открытия:
AL=00h, чтобы открыть для чтения
AL=01h, чтобы открыть для записи
AL=02h, чтобы открыть для чтения и записи
Выход:
CF=0, если функция выполнена успешно
AX – описатель файла
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Файл открывается в выбранном режиме доступа (режиме открытия). Если диск и/или путь не указаны, принимаются указанные по умолчанию. Файл должен существовать. Указатель чтения/записи устанавливается в ноль.
Версии: DOS 2.00 и выше.
DOS, функция 3Eh
Закрыть описатель файла
Вход:
AH=3Eh
BX – описатель файла
Выход:
CF=0, если функция выполнилась успешно
AX не сохранен
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
BX содержит описатель файла (handle), возвращенный при открытии. Файл, представленный этим описателем, закрывается, его буферы сбрасываются и оглавление обновляется корректными размером, временем и датой. Из-за недостатка описателей файлов (максимум 20, по умолчанию установлено 8), возможно, придется закрыть часть текущих описателей, как, например, описатель 3 (стандартный AUX).
Версии: DOS 2.00 и выше.
DOS, функция 3Fh
Читать файл через описатель
Вход:
AH=3Fh
BX – описатель файла
DS:DX – адрес буфера для чтения данных
CX – число считываемых байт
Выход:
CF=0, если функция выполнена успешно
AX – число действительно прочитанных байт
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
CX байт данных считываются из файла или устройства с описателем, указанным в BX. Данные читаются с текущей позиции указателя чтения/записи файла и помещаются в буфер вызывающей программы, адресуемый через DS:DX. Если необходимо установить позицию чтения/записи, можно использовать функцию 42h. Эта функция обновляет указатель чтения/записи файла, чтобы подготовиться к последующим операциям чтения или записи.
Версии: DOS 2.00 и выше.
DOS, функция 40h
Писать в файл через описатель
Вход:
AH=40h
BX – описатель файла
DS:DX – адрес буфера, содержащего записываемые данные
CX – число записываемых байт
Выход:
CF=0, если функция выполнена успешно
AX – число действительно записанных байт
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
CX байт данных записываются в файл или на устройство с описателем, заданным в BX. Данные берутся из буфера, адресуемого через DS:DX, и записываются, начиная с текущей позиции указателя чтения/записи файла. Чтобы установить указатель файла, если необходимо, можно использовать функцию 42h. Обновляет указатель чтения/записи файла, чтобы подготовиться к последующим операциям чтения или записи.
Версии: DOS 2.00 и выше.
DOS, функция 41h
Удалить файл
Вход:
AH=41h
DS:DX – адрес строки ASCIZ с именем файла
Выход:
CF=0, если функция выполнена успешно
AX не сохранен
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Файл удаляется из оглавления заданного диска. Если диск и/или путь не указаны, принимаются значения по умолчанию. Имя файла не может содержать обобщенные символы («?» и «*»). Если файл имеет атрибут «только чтение», то перед удалением необходимо изменить этот атрибут через функцию 43h.
Версии: DOS 2.00 и выше.
DOS, функция 42h
Переместить указатель файла
Вход:
AH=42h
BX – описатель файла
CX:DX на сколько передвинуть указатель: (CX*65536)+DX
AL=00h переместить относительно начала файла +CX:DX
AL=01h переместить относительно текущей позиции +CX:DX
AL=02h переместить относительно конца файла +CX:DX
Выход:
CF=0, если функция выполнена успешно
DX:AX новая позиция указателя файла (если нет ошибки)
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Перемещает логический указатель чтения/записи к нужной позиции. Очередная операция чтения или записи начнется с этого адреса.
Примечание.
Вызов с AL=2, CX=0, DX=0 возвращает длину файла в DX:AX.
Действительная длина файла равна (DX*65536)+AX.
Версии: DOS 2.00 и выше.
DOS, функция 43h
Установить/опросить атрибуты файла
Вход:
AH=43h
DS:DX – адрес строки ASCIZ с именем файла
AL=00h – извлечь текущий атрибут файла
AL=01h – установить атрибут файла
CX – новый атрибут файла (для подфункции 01h)(Таблица Б-9)
Выход:
CF=0, если функция выполнена успешно
CX – текущий атрибут файла (для подфункции 00h)(Таблица Б-9)
AX не сохранен
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Таблица Б-9. Атрибуты файла
Описание.
Атрибут файла читается или устанавливается, согласно коду в AL. Если диск и/или путь не указаны, принимаются значения по умолчанию.
Примечание.
Чтобы скрыть оглавление, нужно использовать CX=02h (а не 12h, как можно было ожидать).
Версии: DOS 2.00 и выше.
DOS, функция 44h
Управление устройством ввода/вывода
Вход:
AH=44h
AL – код подфункции:
AL=00h – получить информацию об устройстве
AL=01h – установить информацию об устройстве
AL=02h – читать с символьного устройства
AL=03h – писать на символьное устройство
AL=04h – читать с блочного устройства
AL=05h – писать на блочное устройство
AL=06h – дать статус ввода
AL=07h – дать статус вывода
AL=08h – запрос съемного носителя
AL=09h – запрос удаленного устройства
AL=0Ah – запрос удаленного описателя
AL=0Bh – счет повторов разделения
AL=0Ch – кодовые страницы 3.3
AL=0Dh – общий IOCTL
AL=0Eh – получить логическое устройство
AL=0Fh – установить логическое устройство
Версии: DOS 2.00 и выше.
DOS, функция 45h
Дублировать описатель файла
Вход:
AH=45h
BX – существующий описатель файла
Выход:
CF=0, если функция выполнена успешно
AX – новый описатель файла, дублирующий оригинал
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Создает дополнительный описатель файла, ссылающийся на тот же поток ввода/вывода, что и существующий описатель. Любое продвижение указателя чтения/записи одного описателя (включая любые операции чтения, записи или перемещения указателя посредством функции 42h) действует на его дубликат.
Версии: DOS 2.00 и выше.
DOS, функция 46h
Переназначить описатель
Вход:
AH=46h
BX – целевой описатель файла (должен уже существовать)
CX – исходный описатель файла (должен уже существовать)
Выход:
CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Заставляет описатель файла (handle) ссылаться на другой файл или устройство. Если описатель в CX (источник) открыт, он закрывается, а затем становится дубликатом описателя в BX (назначения). Иными словами, описатели в CX и BX будут ссылаться на один и тот же физический файл или устройство.
Версии: DOS 2.00 и выше.
DOS, функция 47h
Получить текущее оглавление DOS
Вход:
AH=47h
DS:SI – адрес локального буфера для результирующего пути – 64 байта
DL – номер диска (0 – текущий, 1 – A и так далее)
Выход:
CF=0, если функция выполнена успешно
AX не сохранен
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
В буфер по адресу DS:SI помещается в форме ASCIZ путь текущего оглавления для диска, указанного в DL. Путь возвращается в формате: «путьоглавление»,0. Впереди не подставляется буква диска, а сзади не подставляется символ «». Например, если текущим является корневое оглавление, эта функция вернет пустую строку (DS: [SI]=0).
Версии: DOS 2.00 и выше.
DOS, функция 48h
Выделить память
Вход:
AH=48h
BX – запрошенное количество памяти в 16-байтных параграфах
Выход:
CF=0, если функция выполнена успешно
AX – сегментный адрес распределенного блока
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
BX – размер максимального доступного блока памяти (в параграфах)
Описание.
Распределяет блок памяти длиной BX параграфов, возвращая сегментный адрес этого блока в AX (блок начинается с AX:0000). Если распределение неудачно, устанавливается флаг CF, в AX возвращается код ошибки, а BX содержит максимальный размер доступной для распределения памяти (в параграфах). Чтобы определить наибольший доступный блок, общепринято устанавливать BX=FFFFh перед вызовом. Распределение завершится с ошибкой, возвратив размер максимального блока памяти в BX.
Версии: DOS 2.00 и выше.
DOS, функция 49h
Освободить блок памяти
Вход:
AH=49h
ES – сегментный адрес освобождаемого блока памяти
Выход:
CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Освобождает блок памяти, начинающийся с адреса ES:0000. Этот блок становится доступным для других запросов системы. Вообще говоря, нужно освобождать лишь те блоки памяти, которые получены через функцию 48h (распределить память). Родитель отвечает за освобождение памяти порожденных процессов. Тем не менее, ничто не препятствует освобождать память чужих процессов.
Версии: DOS 2.00 и выше.
DOS, функция 4Ah
Изменить размер блока памяти
Вход:
AH=4Ah
ES – сегмент распределенного блока памяти
BX – нужный размер блока в 16-байтных параграфах
Выход:
CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
BX – размер максимального доступного блока памяти (в параграфах)
Описание.
Изменяет размер существующего блока памяти. Когда программа получает управление, функция 4Bh уже распределила блок памяти, начиная с PSP, который содержит всю доступную память. Чтобы освободить память для запуска порождаемых процессов, блок памяти, начинающийся с PSP, необходимо сначала сжать.
Примечание.
Функция 31h и INT 27h (TSR) сжимают блок по адресу PSP.
Версии: DOS 2.00 и выше.
DOS, функция 4Bh
Выполнить или загрузить программу
Вход:
AH=4Bh
DS:DX – адрес строки ASCIZ с именем файла, содержащего программу
ES:BX – адрес EPB (блока параметров EXEC)
AL=00h – загрузить и выполнить
AL=01h – загрузить, но не выполнять
AL=03h – загрузить программный оверлей
Выход:
CF=0, если функция выполнена успешно
BX, DX не сохранены
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Данная функция загружает в память и запускает программу, имя которой указано в регистрах DS:DX. Запущенная программа после завершения работы возвратит управление запускаемой. Если диск или путь не указаны, принимаются значения по умолчанию. ES:BX указывает на блок памяти, подготовленный как EPB, формат которого зависит от запрошенной подфункции в AL.
Версии: DOS 2.00 и выше.
DOS, функция 4Ch
Завершить программу
Вход:
AH=4Ch
AL – код выхода
Описание.
Возвращает управление от порожденного процесса его родителю, устанавливая код выхода (его можно опросить функцией 4Dh). Управление передается по адресу завершения в PSP завершающейся программы. Векторы Ctrl-Break и Critical Error восстанавливаются к старым адресам, сохраненным в родительском PSP.
Примечание.
Значение ERRORLEVEL (используемое в пакетных файлах DOS) можно использовать для проверки кода выхода самой последней программы.
Версии: DOS 2.00 и выше.
DOS, функция 4Dh
Получить код выхода программы
Вход:
AH=4Dh
Выход:
AH – код выхода последнего завершившегося процесса
AH=00h – нормальное завершение
AH=01h – завершение через Ctrl-Break INT 23h
AH=02h – завершение по критической ошибке устройства INT 24h
AH=03h – завершение через функцию 31h
AL – код выхода
Описание.
Возвращает код выхода последнего из завершившихся процессов. Эта функция возвращает правильную информацию только однажды для каждого завершившегося процесса.
Версии: DOS 2.00 и выше.
DOS, функция 4Eh
Найти первый совпадающий файл
Вход:
AH=4Eh
DS:DX – адрес строки ASCIZ с именем файла (допускается использовать символы «?» и «*»)
CX – атрибут файла для сравнения
Выход:
CF=0, если функция выполнена успешно
DTA заполнена данными (Таблица Б-10)
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Если диск и/или путь не указаны, принимаются значения по умолчанию. Обобщенные символы «*» и «?» допускается использовать в имени файла и расширении.
Версии: DOS 2.00 и выше.
DOS, функция 4Fh
Найти следующий совпадающий файл
Вход:
AH=4Fh
DS:DX – адрес данных, возвращенных предыдущей 4Eh (Найти первый файл)
Таблица Б-10. Формат данных в DTA
Выход:
CF=0, если функция выполнена успешно
DTA заполнена данными
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Эту функцию можно использовать после вызова 4Eh. Следующее имя файла, совпадающее по обобщенному имени и атрибуту файла, копируется в буфер по адресу DS:DX вместе с другой информацией (Таблица Б-10).
Примечание.
Параметр DS:DX добавлен в DOS 3.0.
Версии: DOS 2.00 и выше.
DOS, функция 52h
Получить адрес векторной таблицы связи
(Официально не документирована)
Вход:
AH=52h
Выход:
ES:BX – адрес векторной таблицы связи (Таблица Б-11)
Описание.
Данная функция возвращает адрес векторной таблицы связи.
Версии: DOS 2.00 и выше.
DOS, функция 54h
Получить переключатель верификации DOS
Вход:
AH=54h
Выход:
AL=00h, если верификация выключена (OFF)
AL=01h, если верификация включена (ON)
Описание.
Возвращает текущий статус верификации записи DOS. Если в AL возвращается 1, то DOS считывает обратно каждый сектор, записываемый на диск, чтобы проверить правильность записи. Функция DOS 2Eh позволяет установить/изменить режим верификации.
Версии: DOS 2.00 и выше.
Таблица Б-11. Формат векторной таблицы связи
DOS, функция 56h
Переименовать/переместить файл
Вход:
AH=56h
DS:DX – адрес старого ASCIZ имени (путь/имя существующего файла)
ES:DI – адрес нового ASCIZ имени (новые путь/имя)
Выход:
CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Старое имя DS:DX должно существовать и не может содержать обобщенных символов. Диск и путь необязательны (если они не указаны, принимаются значения по умолчанию). Новое имя ES:DI должно описывать несуществующий файл. Если указан диск, он должен быть тем же, что и в старом имени. Если диск или путь не указаны, принимаются текущие. Если старое и новое имя содержат разные пути (явные или принятые по умолчанию), то элемент оглавления для файла перемещается в оглавление, указанное в новом имени.
Версии: DOS 2.00 и выше.
DOS, функция 57h
Установить/опросить дату/время файла
Вход:
AH=57h
AL=00h – получить дату/время файла
AL=01h – установить дату/время файла
BX – описатель файла (handle)
CX (если AL=1) – новая отметка времени в формате время файла
DX (если AL=1) – новая отметка даты в формате дата файла
Выход:
CF=0, если функция выполнена успешно
CX – (если при вызове AL=0) отметка времени файла в формате время/дата файла (Таблица Б-12)
Таблица Б-12. Формат времени файла
DX – (если при вызове AL=0) отметка даты файла в формате время/дата файла (Таблица Б-13)
Таблица Б-13. Формат даты файла
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
BX должен содержать описатель открытого файла (см. 3Ch или 3Dh). DX и CX задаются в формате памяти (например, младшие 8 бит даты находятся в DH).
Версии: DOS 2.00 и выше.
DOS, функция 59h
Получить расширенную информацию об ошибке
Вход:
AH=59h
BX=0000h (номер версии: 0000h для DOS 3.0, 3.1 и 3.2)
Выход:
AX – расширенный код ошибки (0, если ошибки не было)
BH – класс ошибки
BL – предлагаемое действие
CH – сфера (где произошла ошибка)
Описание.
Эту функцию можно использовать, чтобы уточнить, что предпринять после сбоя функции DOS по ошибке (только DOS 3.0+). Ее можно вызывать: в обработчике критических ошибок INT 24h, после любой функции INT 21h, возвратившей флаг переноса после вызова FCB-функции, возвратившей AL=FFh.
Версии: DOS 3.00 и выше.
DOS, функция 5Ah
Создать уникальный временный файл
Вход:
AH=5Ah
DS:DX – адрес строки ASCIZ с диском и путем (заканчивается символом «»)
CX – атрибут файла
Выход:
CF=0, если функция выполнена успешно
AX – описатель файла
DS:DX – (не изменяется) полное ASCIZ-имя нового файла
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Открывает (создает) файл с уникальным именем в каталоге, заданном строкой ASCIZ, на которую указывает DS:DX. COMMAND.COM вызывает эту функцию, когда создает временные «канальные» файлы, используемые при переназначении ввода-вывода. Описание пути должно быть готово к добавлению в его конец имени файла. Необходимо обеспечить минимум 12 байт в конце строки. Сама строка должна быть заполнена в одной из форм: «^: путь»,0 (указан диск и путь), «d:»,0 (текущее оглавление диска) или «d: »,0 (корневое оглавление диска).
Версии: DOS 3.00 и выше.
DOS, функция 5Bh
Создать новый файл
Вход:
AH=5Bh
DS:DX – адрес строки ASCIZ с именем файла
CX – атрибут файла
Выход:
CF=0, если функция выполнена успешно
AX – описатель файла
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Файл открывается для чтения/записи в совместимом режиме доступа. Если диск и/или путь не указаны, принимаются значения по умолчанию. Этот вызов идентичен функции DOS 3Ch с тем исключением, что он вернет ошибку, если файл с заданным именем уже существует.
Версии: DOS 3.00 и выше.
DOS, функция 5Ch
Блокировать/разблокировать доступ к файлу
Вход:
AH=5Ch
AL – подфункция:
AL=00h – заблокировать область файла
AL=01h – разблокировать ранее заблокированную область
BX – описатель файла
CX:DX – смещение ((CX*65536)+DX) от начала файла
SI:DI – длина блокируемой области ((SI*65536)+DI) байт
Выход:
CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Блокирует или освобождает доступ к участку файла, указанного в BX. Область файла с логическим смещением CX:DX и длиной SI:DI блокируется (захватывается) или разблокируется (освобождается). Смещение и длина обязательно должны быть указаны. Разделение файлов должно быть активизировано (командой SHARE), иначе функция вернет код ошибки «Неверный номер функции».
Версии: DOS 3.00 и выше (при обязательной загрузке SHARE).
DOS, функция 62h
Получить адрес PSP
Вход:
AH=62h
Выход:
BX – сегментный адрес PSP выполняющейся программы
Описание.
Эта функция возвращает в BX адрес PSP текущей программы. Используется, для получения адреса параметров командной строки, адреса окружения DOS и другой полезной информации, содержащейся в PSP.
Версии: DOS 3.00 и выше.
DOS, функция 65h
Получить расширенную информацию страны
Вход:
AH=65h DOS 3.3
AL – подфункция:
AL=01h – дать расширенную информацию страны DOS 3.3
AL=02h – дать таблицу преобразования строчных букв в прописные
AL=04h – то же для символов, допустимых в именах файлов
AL=06h – дать сопоставляющую последовательность
DX – код страны
BX – кодовая страница (FFFFh – консоль)
CX – размер буфера возврата (должен быть минимум 5 байт)
ES:DI – адрес буфера возврата
Выход:
CF=0, если функция выполнена успешно
ES:DI – адрес возвращенной информации
CF=1, если при выполнении функции возникли ошибки:
AX – код ошибки
Описание.
Эта функция возвращает различную национальную информацию. Используется для получения формата даты, символа валюты и других данных, необходимых для вывода и сортировки информации (во всех странах, кроме США).
Версии: DOS 3.30 и выше.
DOS, функция 66h
Получить/установить глобальную кодовую страницу
Вход:
AH=66h
AL – подфункция:
AL=01h – запросить текущую глобальную кодовую страницу
AL=02h – установить активную кодовую страницу
BX – (при AL=02h) кодовая страница (Таблица Б-14)
DX – (при AL=02h) системная кодовая страница (устанавливаемая при загрузке)
Выход:
CF=0, если функция выполнена успешно
Таблица Б-14. Значения кодовых страниц
BX – (если при вызове AL=01h) текущая активная кодовая страница
DX – (если при вызове AL=01h) системная кодовая страница (устанавливаемая при загрузке)
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Эта функция выбирает новую кодовую страницу или получает значение текущей активной кодовой страницы (страниц). Программа DOS NLSFUNC должна быть загружена до этого вызова. Функция используется в сочетании с 65h или 38h.
Примечание.
Устанавливая новую активную кодовую страницу, DOS читает данные из файла COUNTRY.SYS.
Версии: DOS 3.30 и выше.
DOS, функция 67h
Установить число описателей файлов
Вход:
AH=67h
BX – максимальное число описателей (до FFFFh)
Выход:
CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Эта функция устанавливает максимальное число описателей файлов, которые могут быть открыты одновременно. Если значение BX меньше 20, то принимается 20. Если значение BX меньше текущего максимума (нужно сократить число описателей), и в данный момент открыто более чем BX файлов, то изменение будет иметь место, когда число открытых файлов не будет превышать устанавливаемый максимум. Если BX больше текущего максимума (нужно увеличить число описателей), то DOS должна иметь доступную память, чтобы распределить ее под новые описатели. Функция 4Ah позволяет освободить память, чтобы она стала доступной DOS.
Версии: DOS 3.30 и выше.
DOS, функция 68h
Завершить файл
Вход:
AH=68h
BX – описатель завершаемого файла
Выход:
CF=0, если функция выполнена успешно
CF=1, если при выполнении функции возникли ошибки
AX – код ошибки
Описание.
Эта функция заставляет DOS сбросить (записать на диск) буфера основной памяти для указанного описателя файла. DOS обычно избегает обмена с дисками, записывая данные в буфера в основной памяти до заполнения сектора или закрытия файла. Эта функция заставляет DOS немедленно записать данные на диск. Это ускоряет операции с базами данных, позволяя приложению избежать неэффективного закрытия и повторного открытия файлов.
Версии: DOS 3.3 и выше. В версиях DOS от 2.0 до 3.2 можно использовать функцию DOS 45h, чтобы создать и затем закрыть дубликат.
Правообладателям!
Это произведение, предположительно, находится в статусе 'public domain'. Если это не так и размещение материала нарушает чьи-либо права, то сообщите нам об этом.