次の方法で共有


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型の可変長配列を返します。 返されるエントリの数は、返されるバッファーのサイズによって異なります。バッテリーあたり最大 4 エントリまでです。

BatteryTemperature

バッテリーの現在の温度を示す ULONG 値を、ケルビンの 10 分の 1 で返します。

BatteryEstimatedTime

AtRate で指定されたドレイン速度に基づいて、バッテリの残りの実行時間の秒数を見積もる ULONG 値を返します。 AtRate が負またはゼロの場合、ミニクラス ドライバーは、ドレインの現在のレートに基づいて実行時間を計算する必要があります。 ただし、ドライバーが見積もりを行うことができない場合 (たとえば、 AtRate が 0 で、バッテリーが放電していない場合)、BATTERY_UNKNOWN_TIMEを返す必要があります。

BatteryDeviceName

バッテリーの名前を指定する Unicode 文字列を返します。 たとえば、DR202 は Duracell スマート バッテリーを識別します。

BatteryManufactureDate

バッテリが製造された日付を指定するBATTERY_MANUFACTURE_DATE構造体を返します。

BatteryManufactureName

製造元によってバッテリに指定されたモデル名を指定する Unicode 文字列を返します。

BatteryUniqueID

バッテリを一意に識別する Unicode 文字列を返します。通常は、バッテリーの製造元、日付、シリアル番号を連結したものです。

BatterySerialNumber

バッテリーのシリアル番号を含む Unicode 文字列を返します。

[in] BufferLength

Buffer が指すバッファーの長さ (バイト単位)。

[out] ReturnedLength

Buffer が指すバッファーで返されるバイト数。

戻り値

BatteryMiniQueryInformation は、次のいずれかを返します。

リターン コード 説明
STATUS_SUCCESS
BatteryTag によって指定されたバッテリーは現在インストールされており、要求された情報が返されています。
STATUS_NO_SUCH_DEVICE
BatteryTag によって指定されたバッテリーが存在しません。
STATUS_INVALID_DEVICE_REQUEST
Level パラメーターは、このバッテリがサポートしていない情報を指定します。
STATUS_INVALID_PARAMETER
Level パラメーターは、列挙子の 1 つではありません。

注釈

バッテリー クラス ドライバーは、ミニクラス ドライバーの BatteryMiniQueryInformation ルーチンを呼び出して、バッテリーに関するさまざまな種類の情報を取得します。 返される情報は Level パラメーターによって異なります。 すべてのバッテリが、クラス ドライバーが要求する可能性のあるすべての種類の情報をサポートしているわけではありません。 ミニクラス ドライバーは、このような要求のSTATUS_INVALID_DEVICE_REQUESTを返す必要があります。

Level で BatteryInformation が指定されている場合、ミニクラス ドライバーは Buffer が指すバッファー内のBATTERY_INFORMATION構造体を返す必要があります。 この構造には、バッテリーに関する状態情報が含まれています。理論上および実際のフル充電容量。重大なバイアス;充電/放電サイクルの数;および警告アラートが発生する容量レベル。

Level BatteryGranularityInformation が指定されている場合、ミニクラス ドライバーは、構造体として書式設定された 1 から 4 つの要素の配列BATTERY_REPORTING_SCALE返すことができます。 配列の各要素は、粒度値と残りの容量値 (ミリワット時間) で構成されます。 粒度は測定の精度を示すので、容量の精度を示す指標になります。

ほとんどの種類の電池は、1つのスケールで容量を報告します。 これらのバッテリのミニクラス ドライバーは、残りの容量とスケールの精度を提供するエントリを 1 つだけ返します。 ただし、一部のバッテリには、容量が 50% より大きいか 50% 未満かを測定する総スケールと、容量がゼロに近づくにつれて適用されるより細かいスケールという 2 つのスケールがあります。 このようなバッテリのミニクラス ドライバーは、2 つのスケールを記述する 2 つのエントリを返す必要があります。

LevelBatteryEstimatedTime が指定されている場合、ミニクラス ドライバーはオプションの AtRate パラメーターを使用して、バッテリーを使用するための残りの時間を見積もる必要があります。 AtRate パラメーターは、ドレイン レートを負のミリワット単位で指定します。

LevelBatteryUniqueId が指定されている場合、ミニクラス ドライバーは、この特定のバッテリーを一意に識別する文字列を返す必要があります。 制御方法とスマート バッテリの場合、一意の ID は、製造名、デバイス名、製造日、およびバッテリのシリアル番号の ASCII 表現を連結したものです。 この値は表示されません。

要件

要件
対象プラットフォーム デスクトップ
Header batclass.h (Batclass.h を含む)
IRQL PASSIVE_LEVEL

こちらもご覧ください

BATTERY_INFORMATION

BATTERY_MANUFACTURE_DATE

BATTERY_REPORTING_SCALE