创建硬件通知客户端驱动程序

本部分提供有关开发利用 Microsoft 提供的 KMDF 类扩展的硬件通知客户端驱动程序的一般指导。

  1. 为客户端驱动程序实现创建一个文件,该文件链接到 Mshwnclxstub.lib,并包含标头 hwn.h 和 hwnclx.h。

  2. 定义所需 KMDF 和硬件通知类扩展回调函数的实例。 具体而言,必须实现并注册这些回调函数,如以下示例代码所示。

    DRIVER_INITIALIZE DriverEntry;
    EVT_WDF_DRIVER_DEVICE_ADD HwnClientEvtDeviceAdd;
    HWN_CLIENT_INITIALIZE_DEVICE HwnClientInitializeDevice;
    HWN_CLIENT_UNINITIALIZE_DEVICE HwnClientUnInitializeDevice;
    HWN_CLIENT_QUERY_DEVICE_INFORMATION HwnClientQueryDeviceInformation;
    HWN_CLIENT_START_DEVICE HwnClientStartDevice;
    HWN_CLIENT_STOP_DEVICE HwnClientStopDevice;
    HWN_CLIENT_SET_STATE HwnClientSetState;
    HWN_CLIENT_GET_STATE HwnClientGetState;
    
  3. 实现 DriverEntry 例程,该例程是客户端驱动程序入口点,负责初始化。 对于硬件通知客户端驱动程序,此函数应处理以下问题:

  4. 实现 EVT_WDF_DRIVER_DEVICE_ADD 函数,该函数负责在 PnP 管理器报告存在设备时执行设备初始化操作。 对于硬件通知客户端驱动程序,此函数应处理以下问题:

  5. 实现定义的 HWN_CLIENT_INITIALIZE_DEVICE 函数,该函数由类扩展调用,以准备硬件通知控制器以供使用。

  6. 实现定义的 HWN_CLIENT_UNINITIALIZE_DEVICE 函数,该函数由类扩展调用以取消初始化硬件通知控制器。

  7. 实现定义的 HWN_CLIENT_QUERY_DEVICE_INFORMATION 函数,该函数由类扩展调用。 此函数负责检索硬件通知组件的属性。

  8. 实现定义的 HWN_CLIENT_START_DEVICE 函数,该函数由类扩展调用。 此函数负责启动硬件通知控制器并为客户端驱动程序分配 ACPI 资源。

  9. 实现定义的 HWN_CLIENT_STOP_DEVICE 函数,该函数由类扩展调用。 此函数负责停止硬件通知控制器并释放客户端驱动程序使用的 ACPI 资源。

  10. 实现定义的 HWN_CLIENT_SET_STATE,由类扩展调用。 此函数负责设置硬件通知组件状态。

  11. 实现定义的 HWN_CLIENT_GET_STATE,由类扩展调用。 此函数负责获取硬件通知组件的当前值。 当输入缓冲区为 NULL 时,表示用户未指定特定的硬件通知状态,此函数应返回所有硬件通知组件的状态信息。

硬件通知