电池微型类驱动程序的 DispatchSystemControl 例程

电池微型类驱动程序必须提供 DispatchSystemControl 例程来处理 IRP_MJ_SYSTEM_CONTROL IRP,以便支持 Windows Management Instrumentation (WMI)。 WMI 为驱动程序提供公开测量和检测数据的一致方式。

若要执行初始处理,电池微型类驱动程序将使用 BatteryClassSystemControl 例程,该例程采用指定函数调度表的 WmiLibContext 参数。 该例程使用 IRP_MJ_SYSTEM_CONTROL的 MinorFunction 成员来确定它调用的调度函数。

电池设备的所有驱动程序都必须处理某些 WMI 查询。 电池微型类驱动程序会将这些 WMI 查询转发到电池类驱动程序,而不是直接支持它们。 若要处理 WMI 查询,微型类驱动程序将提供指向 WMILIB_CONTEXTQueryWmiDataBlock 成员中的 DpWmiQueryDataBlock 例程的指针。 微型类驱动程序不需要处理任何其他类型的 WMI 请求,并且可以将 WMILIB_CONTEXT 的其他成员设置为零(如果未设置)。

在其 DpWmiQueryDataBlock 例程中,微型类驱动程序将调用 BatteryClassQueryWmiDataBlock 例程,从而允许电池类驱动程序尽可能处理 WMI 查询请求。 如果电池类驱动程序处理 WMI 类 GUID,它将完成 IRP。 否则,BatteryClassQueryWmiDataBlock 会返回 STATUS_WMI_GUID_NOT_FOUND 的值。 然后,微型类驱动程序可以执行特定于驱动程序的处理,并使用 WmiCompleteRequest 完成请求。

电池微型类驱动程序只需调用 BatteryClassQueryWmiDataBlock 即可进行 WMI IRP 处理。 在电池微型类驱动程序的最小 WMI 处理实现中,如果 BatteryClassQueryWmiDataBlock 返回 STATUS_WMI_GUID_NOT_FOUND,则微型类驱动程序只需调用状态值为 STATUS_WMI_GUID_NOT_FOUND 的 WmiCompleteRequest