Вопрос № 25397: Здравствуйте, уважаемый эксперты.
Прошу помощи в следующем вопросе:
Написал прогу на WinAsme, которая меняет 9-е исключение, переходит на нулевое кольцо вызовом int 9, затем возвращает старое значение исключения. В исключениии я читаю данные ...
Вопрос № 25.397
Здравствуйте, уважаемый эксперты.
Прошу помощи в следующем вопросе:
Написал прогу на WinAsme, которая меняет 9-е исключение, переходит на нулевое кольцо вызовом int 9, затем возвращает старое значение исключения. В исключениии я читаю данные из порта и передаю их в вызывающую программу через регистр cl. В eax на выходе передается регистр CR0 (зачем!?, понятия не имею). Для задания интервала опроса порта использую объект-событие. Для передачи данных на другую машину - сокетную связь из другого треда этой программы. Вроде-бы все работает, но иногда машина виснет, толи из-за моей
программы, толи еще из-за чего. Система Win98.
Вопрос: Как правильно передавать данные в обработчик исключения и читать из него, может блок памяти можно как-то использовать? Можно ли менять в исключении регист ecx?
Заранее благодарю за ответ.
Отвечает: Bob Johnson
Здравствуйте, Аксенов Николай Николаевич!
Windows 98 может и просто так повиснуть без видимых на то причин :)
вообще же, если тебе нужно корректно попадать на 0-е кольцо, то лучше всего написать vxd-драйвер, в котором выполнять все требуемые операции. вызывать какие-либо функции драйвера (с передачей ей параметров и возвращению обратно результата) можно с помощью api функции DeviceIoControl. Краткое руководство по тому, как создать драйвер для windows 9х есть у меня на странице в разделе файлов.
http://bobjohnson.nm.ru
на счет того, какие регистры можно менять в обработчике особого случая - все. и еще, почему ты выбрал именно 9-е, а не 3-е (как обычно) прерывание? в мануале от пентиума это исключение стоит как reserved, не уверен, что его стоит использовать.
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 27.08.2005, 17:59 Оценка за ответ: 5 Комментарий оценки: А где можно найти реально описание существующих обработчиков и их номера?