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.