· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› IRQ7 Ее Дается... Требуется перехватить прерывание от LPT

Посл.отвђт Сообщенiе


Дата: Июл 15, 2004 01:42:43

Требуется перехватить прерывание от LPT1 в WIN98/ Модифицирую IDT - вектор 57 на требуемое, в порт 37a подаю на 4бит 1, для разрешения прерывания LPT1.

Ничего не происходит. Пытаюсь SoftIc`ом перехватить его, тоже ничего. Подскажите простой и понятный приме!!!
Крыша едет!!!


Дата: Июл 15, 2004 03:24:48

IoConn.., тьфу это же 98, совсем торможу.
ну тогда VPICD_Install_Handler. этим ты перехватишь прерывание, но не уверен, что оно будет генерироваться...


Дата: Июл 15, 2004 05:00:18 · Поправил: rsrc

В BIOS Setup надо разрешить 378h порт и IRQ7, по крайней мере у меня на ASUS (i865 чипсет) так делать надо!

GENINT - этой командой айса можешь генерить прерывания, например, для теста.
MappedVector = HalGetInterruptVector(Isa, 0, 7, 7, &irql, &Affinity);
__asm and MappedVector, 0x000000FF;//если будешь далее использовать IoConnectInterrupt(), то эту строчку закомментируй!!!
if(MappedVector)
{
	Устанавливай здесь обработчик пррывания на MappedVector
}


Дата: Июл 15, 2004 10:35:10

VPICD_Install_Handler - не понял, это что за зверь?
В тупую прописываю свой адрес процедуры в IDT, по вектору 57h, именно он отвечает за IRQ7,
кроме того выставляю бит4(1) в регистр LPT, для разрешения прерывания при низком уровне на пин 10.
Проверил контроллер прерывания 8259A на наличие 0 на бит7(порт 21-так?)
В бивисе у меня стоит, что LPT висbт на IRQ7(тип порта EPP - от как и ECP предполагает наличие IRQ)
все вроде сделал правильно. Даже поставил брекпоинт SoftIce BPINT57(там вектор прописан С0001170h-был:))).

Перемыкаю ножку 10 LPT ничего не происходит.

Что сделал не так? Крышу рвет, в запой уйду. Братья, Не дайте погибнуть молодым!!!


Дата: Июл 15, 2004 11:21:34 · Поправил: rsrc

Попробуй в айсе посмотреть вектор для IRQ7 c помощью команды irq

Разреши IRQ7:
in al, 21h
and al, 01111111b
out 21h, al


Дата: Июл 15, 2004 12:20:12

я смотрел! правда ситуяция странная
в айсе прерывание постоянно запрещено
выставляю разрешение, вышел из айса, вернулся оно опять запрещено, но в тупую

__asm in al, 21h

проверяю из Visual С++, прерывание разрешено, предполагаю, что айс сам его блокирует при своей работе и разблокирует при выходе.

Чую что рядом где-то, не могу дать дупля, что не так!

ДЛЯ RSRC
я вижу, что ты DDK пользуешь? может есть готовый небольшой шаблон драверюги.
Мне надо перехватывать эти прерывания, для того, чтоб девайс один прицепить на порт. С драйверами практически не работал. В принцЫпе из нарытой инфы все понял, но простой пример на эту тему не помешает.

По любому, всем спасибо!! что не бросаете на произвол!!!


Дата: Июл 15, 2004 12:53:44

Как же ты из VC++ проверяешь? Для ring3 порты закрыты!

Если ставишь SoftIce с DriverStudio, то выбирай меню – DriverStudio->DriverWorks->Driver Wizard и получишь нужный шаблон драйвера, там много опций.


Дата: Июл 15, 2004 13:01:40

под 98 читай/пиши в порты без проблем!


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.046