BCLASS_QUERY_INFORMATION_CALLBACK回调函数 (batclass.h)

BatteryMiniQueryInformation 返回有关给定电池设备的信息。

语法

BCLASS_QUERY_INFORMATION_CALLBACK BclassQueryInformationCallback;

NTSTATUS BclassQueryInformationCallback(
  [in]  PVOID Context,
  [in]  ULONG BatteryTag,
  [in]  BATTERY_QUERY_INFORMATION_LEVEL Level,
  [in]  LONG AtRate,
  [out] PVOID Buffer,
  [in]  ULONG BufferLength,
  [out] PULONG ReturnedLength
)
{...}

参数

[in] Context

指向由微型类驱动程序为电池设备分配的上下文区域的指针。

[in] BatteryTag

指向以前由 BatteryMiniQueryTag 返回的电池标记的指针。

[in] Level

要返回的电池信息的类型。 可能的值为:

BatteryInformationBatteryGranularityInformationBatteryTemperatureBatteryEstimatedTimeBatteryDeviceNameBatteryManufactureDateBatteryManufactureNameBatteryUniqueIDBatterySerialNumber

[in] AtRate

漏电率(以负毫瓦为单位),用于计算电池的放电时间。 仅当 LevelBatteryEstimatedTime 时,此参数才有意义;对于 Level 的所有其他值,将忽略此参数。

[out] Buffer

指向由电池类驱动程序分配的缓冲区的指针。 缓冲区用于返回请求的信息。 缓冲区用于返回请求的信息。 微类驱动程序根据 Level 的值设置缓冲区内容的格式,如下所示:

BatteryInformation

返回格式为BATTERY_INFORMATION结构的信息。

BatteryGranularityInformation

返回BATTERY_REPORTING_SCALE类型的可变长度数组,其中包含剩余容量的报告粒度。 返回的条目数取决于返回的缓冲区的大小,每个电池最多四个条目。

BatteryTemperature

返回一个 ULONG 值,该值为电池的当前温度(以 Kelvin 的十分之一为单位)。

BatteryEstimatedTime

返回一个 ULONG 值,该值根据 AtRate 中指定的排出速率估算电池剩余运行时间的秒数。 如果 AtRate 为负数或零,则微型类驱动程序应根据当前的排出率计算运行时间。 但是,如果驱动程序无法做出估计 (例如 AtRate 为零,并且电池未) 放电,则应返回BATTERY_UNKNOWN_TIME。

BatteryDeviceName

返回指定电池名称的 Unicode 字符串。 例如,DR202 标识杜拉赛尔智能电池。

BatteryManufactureDate

返回指定电池制造日期的BATTERY_MANUFACTURE_DATE结构。

BatteryManufactureName

返回一个 Unicode 字符串,指定制造商提供给电池的型号名称。

BatteryUniqueID

返回唯一标识电池的 Unicode 字符串,通常是电池制造商、日期和序列号的串联。

BatterySerialNumber

返回包含电池序列号的 Unicode 字符串。

[in] BufferLength

缓冲区指向的缓冲区的长度(以字节为单位)。

[out] ReturnedLength

缓冲区指向的缓冲区中返回的字节数。

返回值

BatteryMiniQueryInformation 返回下列值之一:

返回代码 说明
STATUS_SUCCESS
目前已安装 BatteryTag 指定的电池,并且已返回请求的信息。
STATUS_NO_SUCH_DEVICE
由 BatteryTag 指定的电池不存在。
STATUS_INVALID_DEVICE_REQUEST
Level 参数指定此电池不支持的信息。
STATUS_INVALID_PARAMETER
Level 参数不是列出的枚举器之一。

注解

电池类驱动程序调用微型类驱动程序的 BatteryMiniQueryInformation 例程,以获取有关电池的各种类型的信息。 返回的信息取决于 Level 参数。 并非所有电池都支持类驱动程序可能请求的所有可能类型的信息。 对于任何此类请求,微型类驱动程序都应返回STATUS_INVALID_DEVICE_REQUEST。

如果 Level 指定 BatteryInformation,则微型类驱动程序必须在 Buffer 指向的缓冲区中返回BATTERY_INFORMATION结构。 此结构包含有关电池的状态信息,包括其功能、技术 (电池是否可充电) 以及化学成分;理论和实际充满电容量;严重偏差;充电/放电周期数;以及发生警告警报的容量级别。

如果 Level 指定 BatteryGranularityInformation,则微类驱动程序可以返回一到四个元素的数组,格式为BATTERY_REPORTING_SCALE结构。 数组的每个元素都包含粒度值和剩余容量值(以毫瓦小时为单位)。 粒度指示测量的精度,因此是容量准确性的指标。

大多数类型的电池在单个规模上报告容量。 这些电池的微型类驱动程序仅返回一个条目,提供剩余容量和刻度精度。 但是,某些电池有两种缩放比例:一种是衡量容量大于还是小于百分之五十的缩放比例;一种在容量接近零时应用更精细的缩放比例。 此类电池的微型类驱动程序应返回两个描述两个比例的条目。

如果 Level 指定 BatteryEstimatedTime,则微型类驱动程序必须使用可选的 AtRate 参数来估计使用电池的剩余时间量。 AtRate 参数指定漏油率(以负毫瓦为单位)。

如果 Level 指定 BatteryUniqueId,则微型类驱动程序必须返回唯一标识此特定电池的字符串。 对于控制方法和智能电池,唯一 ID 是制造商名称、设备名称、制造日期以及电池序列号的 ASCII 表示形式的串联。 此值不应显示。

要求

要求
目标平台 桌面
标头 batclass.h (包括 Batclass.h)
IRQL PASSIVE_LEVEL

另请参阅

BATTERY_INFORMATION

BATTERY_MANUFACTURE_DATE

BATTERY_REPORTING_SCALE