IOCTL_BATTERY_QUERY_STATUS código de control
Recupera el estado actual de la batería.
Para realizar esta operación, llame a la función DeviceIoControl con los parámetros siguientes.
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
);
Parámetros
-
hDevice
-
Un asa a la batería desde la que se va a devolver la información. Para recuperar un identificador de dispositivo, llame a la función CreateFile .
-
dwIoControlCode
-
Código de control para la operación. Este valor identifica la operación específica que se va a realizar y el tipo de dispositivo en el que se va a realizar. Use IOCTL_BATTERY_QUERY_STATUS para esta operación.
-
lpInBuffer
-
Puntero a una estructura de BATTERY_WAIT_STATUS .
-
nInBufferSize
-
Tamaño del búfer de entrada, en bytes.
-
lpOutBuffer
-
Puntero a una estructura de BATTERY_STATUS .
-
nOutBufferSize
-
Tamaño del búfer de salida, en bytes.
-
lpBytesReturned
-
Puntero a una variable que recibe el tamaño de los datos devueltos en el búfer lpOutBuffer , en bytes.
Si el búfer de salida es demasiado pequeño para devolver datos, se produce un error en la llamada, GetLastError devuelve el código de error ERROR_INSUFFICIENT_BUFFER y el recuento de bytes devuelto es cero.
Si lpOverlapped es NULL (E/S no superpuesta), lpBytesReturned no puede ser NULL.
Si lpOverlapped no es NULL (E/S superpuesta), lpBytesReturned puede ser NULL. Si se trata de una operación superpuesta, puede recuperar el número de bytes devueltos mediante una llamada a la función GetOverlappedResult . Si hDevice está asociado a un puerto de finalización de E/S, puede obtener el número de bytes devueltos llamando a la función GetQueuedCompletionStatus .
-
lpOverlapped
-
Puntero a una estructura SUPERPUESTA .
Si hDevice se abrió con la marca FILE_FLAG_OVERLAPPED , lpOverlapped debe apuntar a una estructura SUPERPUESTA válida. En este caso, DeviceIoControl se realiza como una operación superpuesta (asincrónica). Si el dispositivo se abrió con la marca FILE_FLAG_OVERLAPPED y lpOverlapped es NULL, la función produce un error de maneras impredecibles.
Si hDevice se abrió sin especificar la marca FILE_FLAG_OVERLAPPED , lpOverlapped se omite y la función DeviceIoControl no devuelve hasta que se haya completado la operación o hasta que se produzca un error.
Valor devuelto
Si la operación se completa correctamente, DeviceIoControl devuelve un valor distinto de cero.
Si se produce un error en la operación o está pendiente, DeviceIoControl devuelve cero. Para obtener información de error extendida, llame a GetLastError.
Todas las solicitudes de información de batería se completarán con el estado de ERROR_NO_SUCH_DEVICE (o ERROR_FILE_NOT_FOUND en Windows 10 versión 1809 y anteriores) siempre que el elemento BatteryTag de la solicitud no coincida con el de la etiqueta de batería actual. Esto garantiza que la información de la batería devuelta coincida con la de la batería solicitada (consulte Etiquetas de batería para obtener más información).
Comentarios
Este IOCTL de batería recupera el estado de la batería en el momento en que la operación devuelve. La estructura de parámetros de entrada, BATTERY_WAIT_STATUS, indica cuándo se va a procesar y devolver el estado de la batería.
Las solicitudes de estado de la batería pueden ser de devolución inmediata o se pueden establecer para esperar una condición determinada antes de completarse. Por ejemplo, se puede realizar una solicitud de información de batería que espere hasta que la capacidad de la batería alcance un punto especificado o cambie el estado de la batería.
Todas las solicitudes de información de batería se completarán con el estado de ERROR_FILE_NOT_FOUND siempre que el elemento BatteryTag de la solicitud no coincida con el de la etiqueta de batería actual. (Consulte Etiquetas de batería para obtener más información). Esto se usa para asegurarse de que la información de la batería devuelta coincide con la de la batería solicitada.
Para conocer las implicaciones de la E/S superpuesta en esta operación, consulte la sección Comentarios del tema DeviceIoControl .
Ejemplos
Para obtener un ejemplo, vea Enumerar dispositivos de batería.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible |
Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible |
Windows Server 2003 [solo aplicaciones de escritorio] |
Encabezado |
|