Hi again,
I'm am using interrupt IRQC and everything is working just fine, at least once through the application. When the application terminates and I try to rerun the program the interrupts no longer work until I reset the device. I think I have isolated the problem though... IOCTL_HAL_RELEASE_SYSINTR always fails. So the the irq to interrupt value mapping becomes inconsistent, I think. Can you help? Perhaps OEMIoControl has been implemented incorrectly for IOCTL_HAL_RELEASE_SYSINTR? Here are the exact calls I make...
if (!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR,
(VOID *)(&irq), sizeof(irq),
(VOID *)(&(inst->sysIntrValue)),
sizeof(inst->sysIntrValue), NULL))
{
ASSERT(FALSE);
DeleteCriticalSection(&(inst->criticalSection));
if (!CryptReleaseContext(inst->cryptProv, 0)) {ASSERT(FALSE);}
pmmFree(inst);
return 0;
}
if (!KernelIoControl(IOCTL_HAL_RELEASE_SYSINTR,
(VOID *)(&(inst->sysIntrValue)),
sizeof(inst->sysIntrValue),
NULL, 0, NULL))
{
ASSERT(FALSE); /* this may assert */
}
Thanks!
|