BCLASS_QUERY_INFORMATION_CALLBACK función de devolución de llamada (batclass.h)

BatteryMiniQueryInformation devuelve información sobre el dispositivo de batería especificado.

Sintaxis

BCLASS_QUERY_INFORMATION_CALLBACK BclassQueryInformationCallback;

NTSTATUS BclassQueryInformationCallback(
  [in]  PVOID Context,
  [in]  ULONG BatteryTag,
  [in]  BATTERY_QUERY_INFORMATION_LEVEL Level,
  [in]  LONG AtRate,
  [out] PVOID Buffer,
  [in]  ULONG BufferLength,
  [out] PULONG ReturnedLength
)
{...}

Parámetros

[in] Context

Puntero al área de contexto asignada por el controlador de miniclase para el dispositivo de batería.

[in] BatteryTag

Puntero a una etiqueta de batería devuelta anteriormente por BatteryMiniQueryTag.

[in] Level

Tipo de información de batería que se va a devolver. Los valores posibles son:

BatteryInformationBatteryGranularityBatteryTemperatureBatteryEstimatedTimeBatteryDeviceNameBatteryManufactureDateBatteryManufactureNameBatteryUniqueIDBatterySerialNumber

[in] AtRate

Velocidad de purga, en miliwatts negativos, utilizado para calcular el tiempo de descarga de la batería. Este parámetro solo es significativo cuando Level es BatteryEstimatedTime; este parámetro se omite para todos los demás valores de Level.

[out] Buffer

Puntero a un búfer asignado por el controlador de clase de batería. El búfer se usa para devolver la información solicitada. El búfer se usa para devolver la información solicitada. Los controladores de miniclase da formato al contenido del búfer en función del valor de Level, como se indica a continuación:

BatteryInformation

Devuelve información con formato de estructura BATTERY_INFORMATION.

BatteryGranularityInformation

Devuelve una matriz de longitud variable de tipo BATTERY_REPORTING_SCALE que contiene la granularidad de informes de la capacidad restante. El número de entradas devueltas depende del tamaño del búfer devuelto, a un máximo de cuatro entradas por batería.

BatteryTemperature

Devuelve un valor ULONG que da la temperatura actual de la batería, en décimo grado Kelvin.

BatteryEstimatedTime

Devuelve un valor de ULONG que calcula el número de segundos de tiempo de ejecución restante en la batería, en función de la velocidad de purga especificada en AtRate. Si AtRate es negativo o cero, el controlador de miniclase debe calcular el tiempo de ejecución en función de la tasa actual de purga. Sin embargo, si el controlador no puede realizar una estimación (por ejemplo, AtRate es cero y la batería no se descarga), debe devolver BATTERY_UNKNOWN_TIME.

BatteryDeviceName

Devuelve una cadena Unicode que especifica el nombre de la batería. Por ejemplo, DR202 identifica una batería inteligente duracell.

BatteryManufactureDate

Devuelve una estructura BATTERY_MANUFACTURE_DATE especificando la fecha en que se fabricaba la batería.

BatteryManufactureName

Devuelve una cadena Unicode que especifica el nombre del modelo dado a la batería por su fabricante.

BatteryUniqueID

Devuelve una cadena Unicode que identifica de forma única la batería, normalmente una concatenación del fabricante, la fecha y el número de serie de la batería.

BatterySerialNumber

Devuelve una cadena Unicode que contiene el número de serie de la batería.

[in] BufferLength

Longitud, en bytes, del búfer al que apunta buffer.

[out] ReturnedLength

Número de bytes devueltos en el búfer al que apunta buffer.

Valor devuelto

BatteryMiniQueryInformation devuelve una de las siguientes opciones:

Código devuelto Descripción
STATUS_SUCCESS
La batería designada por BatteryTag está instalada actualmente y se ha devuelto la información solicitada.
STATUS_NO_SUCH_DEVICE
La batería designada por BatteryTag no está presente.
STATUS_INVALID_DEVICE_REQUEST
El parámetro Level especifica información que esta batería no admite.
STATUS_INVALID_PARAMETER
El parámetro Level no es uno de los enumeradores enumerados.

Comentarios

El controlador de clase de batería llama a una rutina BatteryMiniQueryInformation del controlador de miniclase para obtener varios tipos de información sobre la batería. La información devuelta depende del parámetro Level . No todas las baterías admiten todos los tipos posibles de información que el controlador de clase podría solicitar. Los controladores de miniclase deben devolver STATUS_INVALID_DEVICE_REQUEST para dichas solicitudes.

Si Level especifica BatteryInformation, el controlador de miniclase debe devolver una estructura de BATTERY_INFORMATION en el búfer al que apunta Buffer. Esta estructura contiene información de estado sobre la batería, incluyendo sus capacidades, tecnología (si la batería es recargable) y química; capacidad teórica y real de carga completa; sesgo crítico; número de ciclos de carga/descarga; y los niveles de capacidad en los que se producen alertas de advertencia.

Si Level especifica BatteryGranularityInformation, el controlador de miniclase puede devolver una matriz de uno a cuatro elementos, con formato BATTERY_REPORTING_SCALE estructuras. Cada elemento de la matriz consta de un valor de granularidad y un valor de capacidad restante, en miliwatt-hours. La granularidad indica la precisión de la medida y, por tanto, es un indicador de la precisión de la capacidad.

La mayoría de los tipos de baterías informan de la capacidad en una sola escala. Los controladores miniclase para estas baterías devuelven solo una entrada, lo que proporciona la capacidad restante y la precisión de la escala. Sin embargo, algunas baterías tienen dos escalas: una escala bruta que mide si la capacidad es mayor o menor que cincuenta por ciento, y una escala más fina que se aplica a medida que la capacidad se aproxima a cero. Los controladores de miniclase para estas baterías deben devolver dos entradas que describen las dos escalas.

Si Level especifica BatteryEstimatedTime, el controlador de miniclase debe usar el parámetro AtRate opcional para calcular la cantidad de tiempo restante para usar la batería. El parámetro AtRate especifica una velocidad de purga, en miliwatts negativos.

Si Level especifica BatteryUniqueId, el controlador de miniclase debe devolver una cadena que identifique de forma única esta batería determinada. Para el método de control y las baterías inteligentes, el identificador único es la concatenación del nombre de fabricación, el nombre del dispositivo, la fecha de fabricación y la representación ASCII del número de serie de la batería. Este valor no está pensado para mostrarse.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado batclass.h (incluya Batclass.h)
IRQL PASSIVE_LEVEL

Consulte también

BATTERY_INFORMATION

BATTERY_MANUFACTURE_DATE

BATTERY_REPORTING_SCALE