Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

прерывания и NuMega Driver Studio

8.9K
28 октября 2004 года
Porolon
2 / / 28.10.2004
Я новичек в разработке драйверов, и у меня возникла такая проблема: Мне нужно сигнализировать приложению что произошло прерывание из драйвера. Я делаю вот так:
Драйвер:
KEvent * m_event;
DeviceIOcontrol(KIrp I)
{ .....
case SET_EVENT: //METHOD_BUFFERED
HANDLE m_handle = *(HANDLE)* I.IoctlBuffer();
m_event = new KEvent(m_handle);
...... }
Interrupt(..)
{
m_event->Set();
}
Программа:
.....
HANDLE m_handle = CreateEvent(NULL,FALSE,FALSE,NULL)
if (handle)
{
DeviceIoControl (hDevice,SET_EVENT,m_handle,0,NULL,0,&sz,NULL);
.....
WaitForSingleObject(m_handle,1000); //Ждем прерывание
......

}
Когда выполняю DeviceIoControl в програме, вылетает синий экран.
Пробовал остановливать io запрос через STATUS_PENDING тоже вылетает ошибка вроде: ERROR_IRP_COMPLETE_...
Но мне нужен первый вариан т.к. мне нужно оюрабатывать другие IRP запросы...
Возможно обект Event нужно создать в самом драйвере а потом по имени открывать? как вообще правильно обрабатывать прерывания?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог