прерывания и NuMega Driver Studio
Драйвер:
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 нужно создать в самом драйвере а потом по имени открывать? как вообще правильно обрабатывать прерывания?