функция обратного вызова 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
Тип возвращаемых сведений об аккумуляторе. Возможны следующие значения:
BatteryInformationBatteryGranularityInformationBatteryTemperatureBatteryEstimatedTimeBatteryManufactureDateBatteryManufactureDateBatteryUniqueIDBatterySerialNumber
[in] AtRate
Скорость стока в отрицательных милливаттах используется для расчета времени разрядки батареи. Этот параметр имеет смысл только в том случае, если для параметра Levelзадано значение BatteryEstimatedTime; Этот параметр игнорируется для всех остальных значений Level.
[out] Buffer
Указатель на буфер, выделенный драйвером класса батареи. Буфер используется для возврата запрошенных сведений. Буфер используется для возврата запрошенных сведений. Драйверы миникласса форматирует содержимое буфера в зависимости от значения Level следующим образом:
BatteryInformation
Возвращает сведения в формате BATTERY_INFORMATION структуры.
BatteryGranularityInformation
Возвращает массив переменной длины типа BATTERY_REPORTING_SCALE, содержащий степень детализации отчетов оставшейся емкости. Количество возвращаемых записей зависит от размера возвращаемого буфера и не более четырех записей на батарею.
BatteryTemperature
Возвращает значение ULONG, указывающее текущую температуру батареи, в десятых градусах Кельвина.
BatteryEstimatedTime
Возвращает значение ULONG, оценивающее количество секунд времени выполнения, оставшееся от батареи, на основе скорости стока, указанной в AtRate. Если значение AtRate отрицательное или нулевое, драйвер мини-класса должен вычислять время выполнения на основе текущей скорости стока. Однако если драйвер не может выполнить оценку (например, AtRate равен нулю, а батарея не разрядится), он должен вернуть BATTERY_UNKNOWN_TIME.
BatteryDeviceName
Возвращает строку Юникода, указывающую имя батареи. Например, DR202 определяет интеллектуальный аккумулятор Duracell.
BatteryManufactureDate
Возвращает BATTERY_MANUFACTURE_DATE структуру, указывающую дату производства батареи.
BatteryManufactureName
Возвращает строку Юникода, указывающую имя модели, данное батарее производителем.
BatteryUniqueID
Возвращает строку Юникода, которая однозначно идентифицирует батарею. Обычно это объединение изготовителя, даты и серийного номера батареи.
BatterySerialNumber
Возвращает строку Юникода, содержащую серийный номер батареи.
[in] BufferLength
Длина (в байтах) буфера, на который указывает буфер.
[out] ReturnedLength
Число байтов, возвращаемых в буфере, на который указывает buffer.
Возвращаемое значение
BatteryMiniQueryInformation возвращает одно из следующих данных:
Код возврата | Описание |
---|---|
|
Батарея, назначенная BatteryTag, в настоящее время установлена, и запрошенные сведения возвращены. |
|
Батарея, назначенная BatteryTag, отсутствует. |
|
Параметр Level указывает сведения, которые не поддерживаются этой батареей. |
|
Параметр Level не является одним из перечисленных перечислителей. |
Комментарии
Драйвер класса батареи вызывает подпрограмму BatteryMiniQueryInformation миникласса, чтобы получить различные типы информации об аккумуляторе. Возвращаемые сведения зависят от параметра Level . Не все батареи поддерживают все возможные типы сведений, которые может запрашивать драйвер класса. Драйверы мини-класса должны возвращать STATUS_INVALID_DEVICE_REQUEST для любых таких запросов.
Если параметр Level указывает BatteryInformation, драйвер мини-класса должен возвращать структуру BATTERY_INFORMATION в буфере, на который указывает Buffer. Эта структура содержит сведения о состоянии батареи, включая его возможности, технологию (является ли аккумулятор перезаряжаемой) и химию; теоретическая и фактическая полная мощность; критическое смещение; количество циклов зарядки и разрядки; и уровни емкости, при которых появляются предупреждения.
Если параметр Level указывает BatteryGranularityInformation, драйвер мини-класса может возвращать массив из одного или четырех элементов в формате BATTERY_REPORTING_SCALE структур. Каждый элемент массива состоит из значения детализации и оставшегося значения емкости в милливатт-часах. Степень детализации указывает на точность измерения и, таким образом, является показателем точности емкости.
Большинство типов аккумуляторов сообщают о емкости в одном масштабе. Драйверы миникласса для этих батарей возвращают только одну запись, обеспечивая оставшуюся емкость и точность шкалы. Некоторые батареи, однако, имеют две шкалы: валовую шкалу, которая измеряет, превышает ли емкость пятьдесят процентов, и более тонкая шкала, которая применяется по мере приближения емкости к нулю. Драйверы мини-класса для таких батарей должны возвращать две записи, описывающие две шкалы.
Если в параметре Level указано значение BatteryEstimatedTime, драйвер мини-класса должен использовать необязательный параметр AtRate , чтобы оценить время, оставшееся на использование батареи. Параметр AtRate указывает скорость стока в отрицательных милливаттах.
Если в параметре Level задано значение BatteryUniqueId, драйвер мини-класса должен вернуть строку, которая однозначно идентифицирует этот конкретный аккумулятор. Для метода управления и смарт-аккумуляторов уникальным идентификатором является объединение названия производства, названия устройства, даты производства и представления ASCII серийного номера батареи. Это значение не предназначено для отображения.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | batclass.h (включая Batclass.h) |
IRQL | PASSIVE_LEVEL |