Добое время суток!!! Существует следующая проблема: есть pci девайс, который пользует прерывания, есно стоит проблема их перехватывать. Сам пользуюсь нумегой. При создании WDM драйвера она вроде как инициализирует прерывание, но обработчик почему-то не вызывается, а при генерировании прерывания платой винды подзависают. На аппаратном уровне все вроде работает.
Ну вообще я пользуюсь numegой и в ней эта ф-я называется Kinterrupt::Connect. Она мне STATUS_SUCCESS вернула. Я так понимаю, что надо как-то сбрасывать прерывания, когда они происходят. В силу того, что я первый раз занимаюсь этим делом, то не очень очетливо понимаю, как этот процес происходит, и как мне кажется чего-то не доделываю в обработчике.
у нумеги много всяких продуктов - лучше сказать что "пользуюсь DriverStudio" Поскольку прерывание PCI может быть разделяемым, не забывай возврящять TRUE, если запрос на прерывание делало твое устройство, и FALSE если нет.
Kola Полностью согласен. Некоректное название. Конечно-же DriverStudio С прерываниями все вроде заработало, только мне не очень понятно как. Возвращать TRUE из обработчика я возвращал. Только все заработало, когда в обработчике в регистр прерывания (функция в DDK - HalSetBusDataByOffset, в DriverWork - KPciConfiguration::WriteInterrupt) записываю номер прерывания. Я никак не могу понять смысла этой операции. Мне казалось, что прерывание я снимаю, возвращая из обработчика TRUE и снимая его на плате вручную.