バッテリー情報
バッテリは、無停電電源装置 (UPS) で実行されているポータブル コンピューターやコンピューターに電力を供給できます。 これらのコンピューターでは、オペレーティング システムはバッテリの状態に関する情報を提供するため、アプリケーションはユーザーに便利な機能を提供できます。 (一部の古い非標準バッテリ システムと UPS はサポートされていません)。
この概要では、デバイス管理 理解していることを前提としています。
バッテリの状態に関する情報を取得するには、GetSystemPowerStatus 関数を使用します。この関数は、システム内のすべての電源に関する一般的な情報を返します。 可能な限り、GetSystemPowerStatus を使用する必要があります。
ただし、場合によっては、個々のバッテリに関する詳細情報が必要になります。 このため、各バッテリ デバイスは IOCTL インターフェイスを公開します。 次の IOCTL 操作は、DeviceIoControl 関数を使用して実行されます。
IOCTL_BATTERY_QUERY_INFORMATION
IOCTL_BATTERY_QUERY_STATUS
IOCTL_BATTERY_QUERY_TAG
IOCTL_BATTERY_SET_INFORMATION
このインターフェイスを使用するには、アプリケーションはいくつかの手順に従う必要があります。 まず、セットアップ ルーチンを使用して、バッテリ クラス インターフェイスを持つすべてのデバイスを列挙する必要があります。 これらのデバイスは、システムに存在する実際のバッテリではなく、バッテリ ポートを表します。 その後、アプリケーションは、DeviceIoControl 関数を使用してデバイスに要求を送信し、挿入されたすべてのバッテリのタグを取得できるように、各デバイスへのハンドルを開く必要があります。 これらの手順を完了すると、アプリケーションは各バッテリ デバイスにクエリを送信できます。
バッテリー タグ
各バッテリ デバイスは、バッテリを挿入できるスロットを表しているため、バッテリがいつ取り外され、再挿入、交換、または他の方法で変更されるかを判断する方法が必要です。 これを行うには、特定のスロット内の各バッテリにタグが割り当てられます。 このタグは、情報のすべてのクエリに使用する必要があります。 アプリケーションによって提供されるタグがバッテリと一致しない場合、クエリは失敗し、何らかの方法でバッテリが変更されたことをアプリケーションに示します。 クエリを正常に完了するには、新しいバッテリー タグが必要です。 IOCTL_BATTERY_QUERY_TAG 操作を使用してタグを取得します。 そのスロットにバッテリーが存在する場合は、返されたタグを他のバッテリ IOCTL のいずれかに渡して、他の機能を実行できます。 マルチバッテリ システムでは、各バッテリ デバイス (スロット) が個別にバッテリ タグを発行するため、2 つの個別のデバイスのタグが同一になる場合があります。
バッテリ タグの変更は、必ずしもバッテリが取り外され、再挿入または交換されたことを意味するとは限りません。 通常は静的なデータのいずれかに変更がある場合は、新しいタグを生成できます。 たとえば、バッテリの充電が完了すると、最後に完全に充電された容量が変更された可能性があります。 このタグは、バッテリ通信が一時的に失われた場合、または BIOS からの不適切な通知があった場合にも変更される可能性があります。 一部のシステムでは、AC ステータスが変更されるたびにバッテリ タグが更新される場合があります。 この動作は、バッテリ システムの特性が原因であり、一般的ではありません。
バッテリー タグが更新されるたびに、バッテリは新しいバッテリーであるかのように扱い、キャッシュされたすべてのデータを再読み取りする必要があります。 アプリケーションで同じ物理バッテリが存在するかどうかを知る必要がある場合は、BatteryUniqueID 情報レベルで呼び出されたときに、IOCTL_BATTERY_QUERY_INFORMATION の出力バッファー内の BatteryUniqueID の値を確認する必要があります。
関連トピック
-
電源管理 について