· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ASSEMBLER —› Вопрос по дровам Win2K/WinXp (аппаратные прерывани

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


Дата: Мар 24, 2003 01:22:02

В процедуре DriverEntry пытаюсь повесить обработчик на таймер (IRQ=0), сырец:

Irql = HARD_IRQ =0;
MyMappedVector = HalGetInterruptVector(Internal,// ??? - внутренне устройство -? или InterfaceTypeUndefined ? или чёта ещё
0,HARD_IRQ,HARD_IRQ,&Irql,&Affinity);

code = IoConnectInterrupt(&pInterruptObject,//OK
IsrProcedure,//OK
pDeviceObject,//OK
NULL,//OK
MyMappedVector,// -?
Irql,Irql, //OK
Latched,// активный уровень - "1" /// LevelSensitive прерывание по "0",
TRUE, // - ? винда раньше должна повеситься на таймер со значением FALSE, но тогда код ошибки //должен быть другой
Affinity,//OK
FALSE);// OK

Я понимаю, что таймер для винды святое, но последний вызов как ни странно возвращает C000000D = STATUS_INVALID_PARAMETER, а не STATUS_INSUFFICIENT_RESOURCES. Методом исключения я вроде как определил (теоритически) все работающие параметры, а вот параметры помеченные вопросами вызывают у автора затруднения.


Дата: Мар 24, 2003 18:00:19

Можно попробовать вообще не использовать HalGetInterruptVector. в этом случае MyMappedVector будет равно 30h + IRQ_TIMER, если рабоаешь в NT... Для COM-порта два первых параметра - Eisa, 0. вроде таймер на той-же шине.
HalGetInterruptVector(Eisa, 0...
В свое время пытался запустить IoConnectInterrupt - не получилось - выдавала ту же ошибку


Дата: Мар 25, 2003 00:15:01

Спасибо, но всёравно не работает (ошибка таже).
MyMappedVector возвращает корректное значение, а вот IoConnectInterrupt ругается сволочь.


Дата: Мар 25, 2003 11:30:03

Почитай статейку, похоже здесь ответ на твой вопрос.
http://www.ddiusa.com/arch1.htm


Дата: Мар 28, 2003 01:05:23

Ссылка конечно реальная, спасибо. Но трабла в том, что я и на 10-й IRQ (у миня на нём сетевуха, звук и USB) пробовал вешаться - результат тот же. Уж этот уровень ядро врятли юзает :) По логике приведенной тобой статьи (вернее ссылки на неё) функция должна вернуть ошибку STATUS_INSUFFICIENT_RESOURCES (мол херъ тебе, а не таймер), так нет же - вещает, что что-то там с параметрами.
Может глючит из-за того, что мой драйвер "поздно" грузиться : Start=2 ?


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