IOCTL_BATTERY_QUERY_TAG codice di controllo
Recupera il tag corrente della batteria.
Per eseguire questa operazione, chiamare la funzione DeviceIoControl con i parametri seguenti.
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
Parametri
-
hDevice
-
Handle alla batteria da cui recuperare il tag. Per recuperare un handle del dispositivo, chiamare la funzione CreateFile .
-
dwIoControlCode
-
Codice di controllo per l'operazione. Questo valore identifica l'operazione specifica da eseguire e il tipo di dispositivo su cui eseguirlo. Usare IOCTL_BATTERY_QUERY_TAG per questa operazione.
-
lpInBuffer
-
Puntatore a un buffer di input ULONG . Il valore indica il numero di millisecondi da attendere se non è presente alcuna batteria. Un valore di -1 indica che la richiesta attenderà in modo indefinito (o fino a quando non viene annullata da un altro evento).
-
nInBufferSize
-
Dimensioni del buffer di input, in byte.
-
lpOutBuffer
-
Puntatore a un buffer di output ULONG . In caso di esito positivo, questo buffer contiene il tag della batteria corrente, che può essere qualsiasi valore tranne BATTERY_TAG_INVALID. In caso di errore, se GetLastError restituisce il codice di errore ERROR_FILE_NOT_FOUND, questo buffer contiene il valore BATTERY_TAG_INVALID.
-
nOutBufferSize
-
Dimensioni in byte del buffer di output.
-
lpBytesReturned
-
Puntatore a una variabile che riceve le dimensioni dei dati archiviati nel buffer lpOutBuffer , in byte.
Se il buffer di output è troppo piccolo per restituire i dati, la chiamata ha esito negativo, GetLastError restituisce il codice di errore ERROR_INSUFFICIENT_BUFFER e il conteggio dei byte restituito è zero.
Se lpOverlapped è NULL (I/O non sovrapposto), lpBytesReturned non può essere NULL.
Se lpOverlapped non è NULL (sovrapposto I/O), lpBytesReturned può essere NULL. Se si tratta di un'operazione sovrapposta, è possibile recuperare il numero di byte restituiti chiamando la funzione GetOverlappedResult . Se hDevice è associato a una porta di completamento di I/O, è possibile ottenere il numero di byte restituiti chiamando la funzione GetQueuedCompletionStatus .
-
lpOverlapped
-
Puntatore a una struttura OVERLAPPED .
Se hDevice è stato aperto con il flag FILE_FLAG_OVERLAPPED , lpOverlapped deve puntare a una struttura OVERLAPPED valida. In questo caso, DeviceIoControl viene eseguito come operazione sovrapposta (asincrona). Se il dispositivo è stato aperto con il flag FILE_FLAG_OVERLAPPED e lpOverlapped è NULL, la funzione non riesce in modi imprevedibili.
Se hDevice è stato aperto senza specificare il flag FILE_FLAG_OVERLAPPED , lpOverlapped viene ignorato e la funzione DeviceIoControl non restituisce fino al completamento dell'operazione o fino a quando non si verifica un errore.
Valore restituito
Se l'operazione viene completata correttamente, DeviceIoControl restituisce un valore diverso da zero.
Se l'operazione ha esito negativo o è in sospeso, DeviceIoControl restituisce zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Tutte le richieste di informazioni sulla batteria verranno completate con lo stato di ERROR_NO_SUCH_DEVICE (o ERROR_FILE_NOT_FOUND in Windows 10 versione 1809 e versioni precedenti) ogni volta che l'elemento BatteryTag della richiesta non corrisponde a quello del tag della batteria corrente. Ciò garantisce che le informazioni sulla batteria restituite corrispondano a quella della batteria richiesta (vedere Tag batteria per altre informazioni).
Commenti
Questa batteria IOCTL recupera il tag corrente della batteria. Il tag della batteria è un valore diverso da zero univoco che cambia quando la batteria fisica viene reinsertata, sostituita o subisce modifiche caratteristiche. Vedere la sezione Tag batteria nell'argomento Informazioni sulla batteria per altri dettagli su quando cambia un tag di batteria, su come rilevare la modifica e su come un'applicazione deve procedere dopo una modifica del tag della batteria. Quando una batteria non è presente, questa richiesta attenderà il tempo indicato e, se non esiste ancora una batteria presente, restituirà ERROR_FILE_NOT_FOUND e imposta il tag della batteria su BATTERY_TAG_INVALID. Per altre informazioni, vedere Informazioni sulla batteria.
Tutte le richieste per altre informazioni sulla batteria richiedono al chiamante di specificare il tag della batteria corrispondente. Ciò garantisce che il chiamante riceva informazioni per la stessa batteria per ogni richiesta e garantisce che il chiamante sia consapevole delle modifiche della batteria senza polling costante.
Per le implicazioni dell'I/O sovrapposta in questa operazione, vedere la sezione Osservazioni dell'argomento DeviceIoControl .
Esempio
Per un esempio, vedere Enumerazione dei dispositivi batteria.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows XP [solo app desktop] |
Server minimo supportato |
Windows Server 2003 [solo app desktop] |
Intestazione |
|