|
|
| Посл.отвђт | Сообщен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 |