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
電池類別驅動程式所配置的緩衝區指標。 緩衝區是用來傳回要求的資訊。 緩衝區是用來傳回要求的資訊。 Miniclass 驅動程式會根據 Level 的值來格式化緩衝區的內容,如下所示:
BatteryInformation
傳回格式化為BATTERY_INFORMATION結構的資訊。
BatteryGranularityInformation
傳回類型BATTERY_REPORTING_SCALE的可變長度陣列,其中包含剩餘容量的報告粒度。 傳回的專案數目取決於傳回緩衝區的大小,每個電池最多四個專案。
BatteryTemperature
傳回 ULONG 值,提供電池的目前溫度,以十分之一度 Kelvin 為單位。
BatteryEstimatedTime
根據 AtRate 中指定的清空速率,傳回 ULONG 值,估計電池剩餘運行時間的秒數。 如果 AtRate 是負數或零,迷你類別驅動程式應該根據目前的清空率來計算運行時間。 不過,如果驅動程式無法進行估計 (, 例如 AtRate 為零,而且電池不會) 卸除,它應該會傳回BATTERY_UNKNOWN_TIME。
BatteryDeviceName
傳回 Unicode 字串,指定電池的名稱。 例如,DR202 會識別 Duracell 智慧型手機型電池。
BatteryManufactureDate
傳回BATTERY_MANUFACTURE_DATE結構,指定電池製造日期。
BatteryManufactureName
傳回 Unicode 字串,指定其製造商提供給電池的型號名稱。
BatteryUniqueID
傳回可唯一識別電池的 Unicode 字串,通常是電池製造商、日期和序號的串連。
BatterySerialNumber
傳回 Unicode 字串,其中包含電池的序號。
[in] BufferLength
Buffer 所指向之緩衝區的長度,以位元組為單位。
[out] ReturnedLength
Buffer 所指向之緩衝區中傳回的位元組數目。
傳回值
BatteryMiniQueryInformation 會傳回下列其中一項:
傳回碼 | Description |
---|---|
|
BatteryTag 指定的電池目前已安裝,並已傳回要求的資訊。 |
|
BatteryTag 指定的電池不存在。 |
|
Level 參數會指定此電池不支持的資訊。 |
|
Level 參數不是列出的其中一個列舉值。 |
備註
電池類別驅動程式會呼叫迷你類別驅動程式的 BatteryMiniQueryInformation 例程,以取得電池的各種類型資訊。 傳回的信息取決於 Level 參數。 並非所有電池都支援類別驅動程式可能要求的所有可能資訊類型。 Miniclass 驅動程式應該針對任何這類要求傳回STATUS_INVALID_DEVICE_REQUEST。
如果 Level 指定 BatteryInformation,迷你類別驅動程式必須在 Buffer 所指向的緩衝區中傳回BATTERY_INFORMATION結構。 此結構包含電池的狀態資訊,包括其功能、技術 (電池是否可充電) 和化學;理論上和實際的完全收費容量;重大偏差;收費/出口週期數目;和發生警告警示的容量層級。
如果 Level 指定 BatteryGranularityInformation,迷你類別驅動程式可以傳回一到四個元素的數位,格式化為BATTERY_REPORTING_SCALE結構。 數位的每個元素都包含數據粒度值,以及以 milliwatt-hours 為單位的剩餘容量值。 數據粒度表示測量精確度,因此是容量精確度的指標。
大部分的電池類型都會以單一規模報告容量。 這些電池的迷你類別驅動程式只會傳回一個專案,提供剩餘的容量和小數位數的有效位數。 不過,有些電池有兩個小數位數:可測量容量是否大於或小於 50% 的毛利小數位數,以及套用為容量的更精細規模接近零。 這類電池的迷你類別驅動程式應該傳回描述兩個縮放比例的專案。
如果 Level 指定 BatteryEstimatedTime,迷你類別驅動程式必須使用選用 的 AtRate 參數來估計剩餘使用電池的時間量。 AtRate 參數會指定負數毫秒的清空率。
如果 Level 指定 BatteryUniqueId,迷你類別驅動程式必須傳回可唯一識別此特定電池的字串。 針對控制方法和智慧電池,唯一標識符是製造名稱、裝置名稱、製造日期,以及電池序號的 ASCII 表示法。 此值並非要顯示。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | batclass.h (include Batclass.h) |
IRQL | PASSIVE_LEVEL |