使用 PnP 自定义通知

驱动程序可以使用目标设备更改通知机制在设备上收到自定义事件的通知。

定义自定义事件的程序员必须执行以下操作:

  1. 为自定义事件定义新的 GUID。

    使用 UuidgenGuidgen (生成 GUID,这些 GUID 包含在Microsoft Windows SDK) 中。 在相应的头文件和文档中发布 GUID。

  2. 编写代码以触发自定义事件。

    在内核模式下,驱动程序使用自定义 GUID 和指向设备的 PDO 的指针调用 IoReportTargetDeviceChange 。 自定义事件只能从内核模式触发。

驱动程序编写器通过如下过程使用自定义通知:

  1. 驱动程序 (或应用程序) 注册自定义事件的通知。

    在内核模式下,驱动程序调用 IoRegisterPlugPlayNotification 并在设备上注册 EventCategoryTargetDeviceChange

    在用户模式下,应用程序使用 RegisterDeviceNotification 进行注册。 有关详细信息,请参阅 Windows SDK。

  2. 内核模式组件触发自定义事件。

  3. PnP 管理器调用在设备上注册的通知例程。

    PnP 管理器调用已注册的用户模式回调例程,然后调用内核模式回调例程。

  4. 用户模式通知完成后,内核模式驱动程序通知回调例程 () 响应自定义事件。

    有关 通知回调例程的 一般指南,请参阅编写 PnP 通知回调例程的指南。 除了这些准则之外,自定义通知回调例程不得从回调例程线程中打开设备的句柄。