Windows KMDF 驱动程序,通过通知通知应用程序更改,是否可能

Windows KMDF driver, Informing application of a change via a notification, is it possible

我构建了一个简单的 PCI 驱动程序,用于读取和写入 PCI 设备的数据。我还添加了中断支持,所以当有 PCI 中断时,一个 ISR 被调用。这一切似乎都有效。

我想通知外部应用程序中断。到目前为止我还没有找到合适的机制。中断随时可能发生,具体取决于连接到 PCI 设备的传感器。

我发现了以下内容:-

1 可以通过读取、写入、iocontrol 命令(重叠对象)传递给 KMDF 驱动程序的事件对象

2 即插即用通知,(Toaster 示例代码)驱动程序可以使用它来通知应用程序 PNP 事件。

通知方法将是理想的,但对于我的特定用例,它似乎并不存在。

至少有 2 种方法可以达到您的要求

  1. 反向调用模型 - 将 IOCTL 发送给驱动程序,驱动程序将保持挂起状态,并在需要通知用户模式它感兴趣的事件发生时完成它们。你可以阅读有关此方法的更多信息 here
  2. 使用共享事件句柄。用户模式应用程序使用 IOCTL 将事件句柄传递给内核模式。内核模式递增引用计数以确保句柄在需要使用时保持有效,然后在必要时发出事件信号。您可以阅读有关此方法的更多信息 here

由于各种原因,您在阅读链接文章时会发现第一种方法更受青睐。如果您的用例需要内核模式不仅指示事件的发生而且还要将一些数据发送回用户模式,那么第二种方法不适合您的要求,您应该单独关注第一种方法。