我已经构建了一个简单的PCI驱动程序,用于读取和写入PCI设备。我还添加了中断支持,因此当有PCI中断时,ISR被称为。这一切似乎都起作用。
我想通知中断的外部应用。到目前为止,我还没有找到合适的机制。中断可能随时出现,并且取决于连接到PCI设备的传感器。
我找到了以下内容: -
1个事件对象,可以通过读取,写入iocontrol命令(重叠对象)
传递给kmdf驱动程序2插件和播放通知,该通知可以使用(烤面包机示例代码)驱动程序通知PNP事件的应用程序。
一种通知方法是理想的,但是我的特殊用例看起来不存在一个。
至少有两种方法可以实现您要寻找的东西
- 倒置呼叫模型 - 将ioctl(s)发送到驱动程序将继续待处理的驱动程序,并在需要通知用户模式的情况下完成有关事件感兴趣的事件的情况。您可以阅读有关此方法的更多信息。
- 使用共享事件手柄。用户模式应用程序使用IOCTL将事件句柄传达到内核模式。内核模式会增加参考计数,以确保手柄在需要使用时保持有效,然后在必要时向事件发出信号。您可以在此处阅读有关此方法的更多信息。
出于各种原因,您在阅读链接文章时会发现第一种方法。如果您的用例要求内核模式不仅表示事件的发生,还要将一些数据发送回用户模式,那么第二种方法不适合您的要求,您应该仅专注于第一个方法。