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
漏电率(以负毫瓦为单位),用于计算电池的放电时间。 仅当 Level 为 BatteryEstimatedTime 时,此参数才有意义;对于 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 返回下列值之一:
返回代码 | 说明 |
---|---|
|
目前已安装 BatteryTag 指定的电池,并且已返回请求的信息。 |
|
由 BatteryTag 指定的电池不存在。 |
|
Level 参数指定此电池不支持的信息。 |
|
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 |