CodeNet / Языки программирования / Ассемблер / Прерывания DOS и BIOS
CodeNet / Платформы / Другие платформы / DOS / Прерывания DOS и BIOS
CodeNet / Платформы / Другие платформы / DOS / Прерывания DOS и BIOS
DOS Fn 46H: переназначить описатель -- FORCDUP
Вход
- AH = 46H
- BX = целевой описатель файла (должен уже существовать)
- CX = исходный описатель файла (должен уже существовать)
Выход
- AX = код ошибки если CF установлен
Описание:
Заставляет описатель файла (handle) ссылаться на другой файл или устройство. описатель в CX (источник) закрывается, если он открыт, а затем становится дубликатом описателя в BX (назначения). Иными словами, описатели в CX и BX будут ссылаться на один и тот же физический файл или устройство.
используется для переназначения стандартного в/в. пример:
- Откроем файл "C:\STDOUT.TXT" через функцию 3dH Open File и получим описатель (например, 05).
- установим BX=05, CX=01 и вызовем эту функцию. (замечание: описатель 01 - это предопределенный описатель "стандартного выходного устройства").
- Теперь можно вызвать функцию 3eH Close File и закрыть handle 05. можно обращаться к файлу STDOUT.TXT через описатель 01.
- Стало быть, дисковый файл "C:\STDOUT.TXT" будет отныне получать весь вывод, создаваемый всеми процессами (текущим и порожденными) через любую функцию символьного в/в DOS, так же как и любой вывод в описатель файла 01 через функцию DOS 40H.
- когда вы выходите в COMMAND.COM, предопределенные описатели устанавливаются на обычные устройства (например, описатель 01 устанавливается на "CON").