Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »
реклама
dici.ru

Почтовая рассылка

Подписчиков: 11639
Последний выпуск: 19.06.2015

Функции DOS - INT 23H: адрес выхода по Ctrl-Break

Адрес в этом векторе (0000:008c) - это адрес, по которому передается управление, когда DOS распознает, что пользователь нажал Ctrl-Break. Адрес по вектору INT 23H копируется в поле PSP Ctrl-Break Address функциями DOS 26H (создать PSP) и 4cH (EXEC). Исходное значение адреса обработчика Ctrl-Break восстанавливается из PSP при завершении программы. таким образом, по завершении порожденного процесса будет восстановлен адрес обработчика Ctrl-Break из родительского процесса.

Распознавание

DOS вызывает INT 23H, когда распознает, что нажата комбинация Ctrl-Break. Уровень чувствительности DOS к Ctrl-Break может быть проверен или установлен посредством функции 33H:

  • Если Break=ON, DOS распознает Ctrl-Break в течение всех функций, за исключением 06H и 07H.
  • Если Break=OFF, DOS распознает Ctrl-Break лишь во время операций ввода-вывода с консолью, принтером и последовательными портами.

Обработка

Обычная системная обработка Ctrl-Break вызывает немедленное снятие программы. чтобы перехватить обработку Ctrl-Break и передать ее вашей программе, воспользуйтесь следующими советами:

  • Вызовите функцию 25H , чтобы установить вектор INT 23H на ваш программный код.
  • При входе в ваш обработчик Ctrl-Break все регистры сохраняют те значения, которые они имели при входе в функцию DOS, распознавшую Ctrl-Break.
  • Если вы хотите игнорировать Ctrl-Break, просто выдайте IRET.
  • Если вы хотите что-нибудь сделать (скажем, прекратить повторение цикла), сохраните все регистры перед вашим действием и восстановите после действия. Выходите через IRET. Не существует ограничений для вашего обработчика - можно использовать все функции DOS. Однако, если обработчик Ctrl-Break сам выполняет символьный в/в, а пользователь вновь нажмет Ctrl-Break в это время, то DOS катастрофически сбивается.
  • Если вы хотите снять процесс (выйти в родительский процесс), установите флаг CF и выдайте FAR RET. это заставляет DOS выполнить обычную процедуру выхода в порождающий процесс.
  • Самый легкий способ убедиться, что процесс распознает нажатие Ctrl-Break - это время от времени вызывать функцию DOS 0bH.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог