Bagikan melalui


IOCTL_BATTERY_QUERY_TAG kode kontrol

Mengambil tag baterai saat ini.

Untuk melakukan operasi ini, panggil fungsi DeviceIoControl dengan parameter berikut.

BOOL DeviceIoControl(
  (HANDLE) hDevice,            // handle to battery
  IOCTL_BATTERY_QUERY_TAG,     // 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

hDevice

Handel ke baterai tempat tag akan diambil. Untuk mengambil handel perangkat, panggil fungsi CreateFile .

dwIoControlCode

Kode kontrol untuk operasi. Nilai ini mengidentifikasi operasi tertentu yang akan dilakukan dan jenis perangkat untuk melakukannya. Gunakan IOCTL_BATTERY_QUERY_TAG untuk operasi ini.

lpInBuffer

Penunjuk ke buffer input ULONG . Nilai menunjukkan jumlah milidetik untuk menunggu jika tidak ada baterai. Nilai -1 menunjukkan permintaan akan menunggu tanpa batas waktu (atau hingga dibatalkan oleh beberapa acara lain).

nInBufferSize

Ukuran buffer input, dalam byte.

lpOutBuffer

Penunjuk ke buffer output ULONG . Setelah berhasil, buffer ini berisi tag baterai saat ini, yang dapat menjadi nilai apa pun kecuali BATTERY_TAG_INVALID. Jika gagal, jika GetLastError mengembalikan kode kesalahan ERROR_FILE_NOT_FOUND, buffer ini berisi nilai BATTERY_TAG_INVALID.

nOutBufferSize

Ukuran buffer output, dalam byte.

lpBytesReturned

Penunjuk ke variabel yang menerima ukuran data yang disimpan dalam buffer lpOutBuffer , dalam byte.

Jika buffer output terlalu kecil untuk mengembalikan data apa pun maka panggilan gagal, GetLastError mengembalikan kode kesalahan ERROR_INSUFFICIENT_BUFFER, dan jumlah byte yang dikembalikan adalah nol.

Jika lpOverlapped adalah NULL (I/O yang tidak tumpang tindih), lpBytesReturned tidak boleh NULL.

Jika lpOverlapped bukan NULL (Tumpang tindih I/O), lpBytesReturned bisa NULL. Jika ini adalah operasi yang tumpang tindih, Anda dapat mengambil jumlah byte yang dikembalikan dengan memanggil fungsi GetOverlappedResult . Jika hDevice dikaitkan dengan port penyelesaian I/O, Anda bisa mendapatkan jumlah byte yang dikembalikan dengan memanggil fungsi GetQueuedCompletionStatus .

lpOverlapped

Penunjuk ke struktur YANG TUMPANG TINDIH .

Jika hDevice dibuka dengan bendera FILE_FLAG_OVERLAPPED , lpOverlapped harus menunjuk ke struktur TUMPANG TINDIH yang valid. Dalam hal ini, DeviceIoControl dilakukan sebagai operasi yang tumpang tindih (asinkron). Jika perangkat dibuka dengan bendera FILE_FLAG_OVERLAPPED dan lpOverlapped adalah NULL, fungsi gagal dengan cara yang tidak dapat diprediksi.

Jika hDevice dibuka tanpa menentukan bendera FILE_FLAG_OVERLAPPED , lpOverlapped diabaikan dan fungsi DeviceIoControl tidak kembali sampai operasi selesai, atau sampai terjadi kesalahan.

Mengembalikan nilai

Jika operasi berhasil diselesaikan, DeviceIoControl mengembalikan nilai bukan nol.

Jika operasi gagal atau tertunda, DeviceIoControl mengembalikan nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Semua permintaan informasi baterai akan selesai dengan status ERROR_NO_SUCH_DEVICE (atau ERROR_FILE_NOT_FOUND dalam versi Windows 10 1809 dan yang lebih lama) setiap kali elemen BatteryTag permintaan tidak cocok dengan tag baterai saat ini. Ini memastikan bahwa informasi baterai yang dikembalikan cocok dengan baterai yang diminta (lihat Tag Baterai untuk informasi selengkapnya).

Keterangan

IOCTL baterai ini mengambil tag baterai saat ini. Tag baterai adalah nilai nonzero unik yang berubah ketika baterai fisik diinsertir kembali, diganti, atau mengalami perubahan karakteristik apa pun. Lihat bagian Tag Baterai di topik ringkasan Informasi Baterai untuk detail selengkapnya tentang kapan tag baterai berubah, cara mendeteksi perubahan, dan bagaimana aplikasi harus melanjutkan setelah perubahan tag baterai. Ketika baterai tidak ada, permintaan ini akan menunggu waktu yang ditunjukkan, dan jika masih tidak ada baterai, maka baterai akan kembali ERROR_FILE_NOT_FOUND dan mengatur tag baterai ke BATTERY_TAG_INVALID. (Lihat Informasi Baterai untuk informasi selengkapnya.)

Semua permintaan untuk informasi baterai lainnya mengharuskan penelepon untuk menyediakan tag baterai yang cocok. Ini memastikan bahwa penelepon menerima informasi untuk baterai yang sama untuk setiap permintaan dan memastikan bahwa penelepon mengetahui perubahan baterai tanpa polling konstan.

Untuk implikasi I/O yang tumpang tindih pada operasi ini, lihat bagian Keterangan dari topik DeviceIoControl .

Contoh

Misalnya, lihat Menghitung Perangkat Baterai.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows XP [hanya aplikasi desktop]
Server minimum yang didukung
Windows Server 2003 [hanya aplikasi desktop]
Header
Poclass.h;
BatClass.h pada Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP

Lihat juga

Informasi Baterai

Kode Kontrol Manajemen Daya

DeviceIoControl

IOCTL_BATTERY_QUERY_INFORMATION

IOCTL_BATTERY_QUERY_STATUS

IOCTL_BATTERY_SET_INFORMATION