IOCTL_BATTERY_QUERY_STATUS Steuerungscode

Ruft den aktuellen status des Akkus ab.

Um diesen Vorgang auszuführen, rufen Sie die DeviceIoControl-Funktion mit den folgenden Parametern auf.

BOOL DeviceIoControl(
  (HANDLE) hDevice,           // handle to battery
  IOCTL_BATTERY_QUERY_STATUS, // dwIoControlCode
  (LPVOID) lpInBuffer,        // input buffer
  (DWORD) nInBufferSize,      // size of input buffer
  (LPVOID) lpOutBuffer,       // output buffer
  (DWORD) nOutBufferSize,     // size of output buffer
  (LPDWORD) lpBytesReturned,  // number of bytes returned
  (LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);

Parameter

hGeräte

Ein Handle für den Akku, von dem Informationen zurückgegeben werden sollen. Um ein Gerätehandle abzurufen, rufen Sie die Funktion CreateFile auf.

dwIoControlCode

Der Steuerelementcode für den Vorgang. Dieser Wert gibt den spezifischen Vorgang an, der ausgeführt werden soll, und den Typ des Geräts, auf dem er ausgeführt werden soll. Verwenden Sie für diesen Vorgang IOCTL_BATTERY_QUERY_STATUS .

lpInBuffer

Ein Zeiger auf eine BATTERY_WAIT_STATUS-Struktur .

nInBufferSize

Die Größe des Eingabepuffers in Bytes.

lpOutBuffer

Ein Zeiger auf eine BATTERY_STATUS-Struktur .

nOutBufferSize

Die Größe des Ausgabepuffers in Bytes.

lpBytesReturned

Ein Zeiger auf eine Variable, die die Größe der im lpOutBuffer-Puffer zurückgegebenen Daten in Bytes empfängt.

Wenn der Ausgabepuffer zu klein ist, um Daten zurückzugeben, schlägt der Aufruf fehl, GetLastError gibt den Fehlercode ERROR_INSUFFICIENT_BUFFER zurück, und die zurückgegebene Byteanzahl ist 0.

Wenn lpOverlappedNULL (nicht überlappende E/A) ist, kann lpBytesReturned nicht NULL sein.

Wenn lpOverlapped nicht NULL (überlappende E/A) ist, kann lpBytesReturnedNULL sein. Wenn es sich um einen überlappenden Vorgang handelt, können Sie die Anzahl der zurückgegebenen Bytes abrufen, indem Sie die GetOverlappedResult-Funktion aufrufen. Wenn hDevice einem E/A-Vervollständigungsport zugeordnet ist, können Sie die Anzahl der zurückgegebenen Bytes abrufen, indem Sie die GetQueuedCompletionStatus-Funktion aufrufen.

lpOverlapped

Ein Zeiger auf eine ÜBERLAPPENDE Struktur.

Wenn hDevice mit dem flag FILE_FLAG_OVERLAPPED geöffnet wurde, muss lpOverlapped auf eine gültige OVERLAPPED-Struktur verweisen. In diesem Fall wird DeviceIoControl als überlappender (asynchroner) Vorgang ausgeführt. Wenn das Gerät mit dem flag FILE_FLAG_OVERLAPPED geöffnet wurde und lpOverlappedNULL ist, schlägt die Funktion auf unvorhersehbare Weise fehl.

Wenn hDevice geöffnet wurde, ohne das flag FILE_FLAG_OVERLAPPED anzugeben, wird lpOverlapped ignoriert, und die DeviceIoControl-Funktion wird erst zurückgegeben, wenn der Vorgang abgeschlossen wurde oder bis ein Fehler auftritt.

Rückgabewert

Wenn der Vorgang erfolgreich abgeschlossen wurde, gibt DeviceIoControl einen wert ohne Zero zurück.

Wenn der Vorgang fehlschlägt oder aussteht, gibt DeviceIoControl null zurück. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Alle Anforderungen für Akkuinformationen werden mit dem status von ERROR_NO_SUCH_DEVICE (oder ERROR_FILE_NOT_FOUND in Windows 10 Version 1809 und früher) abgeschlossen, wenn das BatteryTag-Element der Anforderung nicht mit dem des aktuellen Akkutags übereinstimmt. Dadurch wird sichergestellt, dass die zurückgegebenen Akkuinformationen mit denen des angeforderten Akkus übereinstimmen (weitere Informationen finden Sie unter Akkutags ).

Bemerkungen

Diese Akku-IOCTL ruft die status des Akkus ab, wenn der Vorgang zurückgibt. Die Eingabeparameterstruktur BATTERY_WAIT_STATUS gibt an, wann der akku status verarbeitet und zurückgegeben werden soll.

Anforderungen für status können sofort zurückgegeben werden oder so festgelegt werden, dass sie auf eine bestimmte Bedingung warten, bevor sie abgeschlossen werden. Beispielsweise kann eine Anforderung für Akkuinformationen gestellt werden, die wartet, bis die Akkukapazität einen angegebenen Punkt erreicht oder sich der Akkuzustand ändert.

Alle Anforderungen für Akkuinformationen werden mit dem status von ERROR_FILE_NOT_FOUND abgeschlossen, wenn das BatteryTag-Element der Anforderung nicht mit dem des aktuellen Akkutags übereinstimmt. (Weitere Informationen finden Sie unter Akkutags .) Dies wird verwendet, um sicherzustellen, dass die zurückgegebenen Akkuinformationen mit denen des angeforderten Akkus übereinstimmen.

Die Auswirkungen von überlappenden E/A-Vorgängen auf diesen Vorgang finden Sie im Abschnitt Hinweise des Themas DeviceIoControl .

Beispiele

Ein Beispiel finden Sie unter Aufzählen von Akkugeräten.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows Server 2003 [nur Desktop-Apps]
Header
Poclass.h;
BatClass.h unter Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP

Siehe auch

Akkuinformationen

Steuerungscodes für die Energieverwaltung

Deviceiocontrol

BATTERY_STATUS

BATTERY_WAIT_STATUS

IOCTL_BATTERY_QUERY_INFORMATION

IOCTL_BATTERY_QUERY_TAG

IOCTL_BATTERY_SET_INFORMATION