Función PoFxRegisterComponentPerfStates (wdm.h)

La rutina PoFxRegisterComponentPerfStates registra un componente de dispositivo para la administración del estado de rendimiento por parte del marco de administración de energía (PoFx).

Sintaxis

NTSTATUS PoFxRegisterComponentPerfStates(
  [in]  POHANDLE                             Handle,
  [in]  ULONG                                Component,
  [in]  ULONGLONG                            Flags,
  [in]  PPO_FX_COMPONENT_PERF_STATE_CALLBACK ComponentPerfStateCallback,
  [in]  PPO_FX_COMPONENT_PERF_INFO           InputStateInfo,
  [out] PPO_FX_COMPONENT_PERF_INFO           *OutputStateInfo
);

Parámetros

[in] Handle

Identificador que representa el registro del dispositivo con PoFx. El controlador de dispositivo recibió previamente este identificador de la rutina PoFxRegisterDevice .

[in] Component

Índice que identifica el componente cuyos estados de rendimiento se administrarán. Este parámetro es un índice en la matriz Components de la estructura PO_FX_DEVICE que el controlador de dispositivo usó para registrar el dispositivo con PoFx. Si la matriz Components contiene N elementos, los índices de componente van de 0 a N-1.

[in] Flags

Marcas que modifican el comportamiento del registro de estado de rendimiento. Establezca este miembro en cero o en uno de los siguientes bits de marca PO_FX_FLAG_PERF_XXX :

Valor Significado
PO_FX_FLAG_PERF_PEP_OPTIONAL
0x1
Indica que el controlador puede cambiar los estados de rendimiento sin ayuda del complemento de extensión de plataforma (PEP), o que el controlador está registrando estados de rendimiento con PoFx únicamente con fines de registro. Si se establece esta marca, la llamada a PoFxRegisterComponentPerfStates se realizará correctamente si el PEP no admite estados de rendimiento para el componente.
PO_FX_FLAG_PERF_QUERY_ON_F0
0x2
En algunos dispositivos, el PEP puede necesitar colocar un estado de rendimiento establecido para un componente en un estado de rendimiento determinado (conocido como estado de rendimiento nominal) cuando inactiva el componente. Los controladores establecen esta marca si el componente contiene estados de rendimiento nominales, en cuyo caso PoFx consultará el PEP para determinar el estado de rendimiento actual cuando el componente pase a F0.
PO_FX_FLAG_PERF_QUERY_ON_ALL_IDLE_STATES
0x4
Para algunos dispositivos, el PEP puede necesitar colocar un estado de rendimiento establecido para un componente en un estado de rendimiento determinado (conocido como estado de rendimiento nominal) cuando realiza la transición del componente entre estados inactivos. Los controladores establecen esta marca si este componente contiene estados de rendimiento nominales, en cuyo caso PoFx consultará el PEP para determinar el estado de rendimiento actual cuando el componente pase entre estados inactivos.

[in] ComponentPerfStateCallback

Puntero a una rutina ComponentPerfStateCallback . Se llama a esta rutina cuando PoFx ha completado el registro y notifica al PEP sobre una transición de estado de rendimiento iniciada por la llamada del controlador a PoFxIssueComponentPerfStateChange o PoFxIssueComponentPerfStateChangeMultiple. Esta devolución de llamada puede ser la misma para todos los componentes y todos los dispositivos; PoFx proporciona el identificador de dispositivo y el índice de componentes en cada llamada de finalización.

[in] InputStateInfo

Si el controlador proporciona información de estado de rendimiento, este parámetro contiene un puntero a un controlador asignado PO_FX_COMPONENT_PERF_INFO estructura que proporciona información de estado de rendimiento a PoFx. Si el controlador requiere información de estado de rendimiento del PEP, este parámetro debe establecerse en NULL.

[out] OutputStateInfo

Si el controlador requiere información de estado de rendimiento del PEP, después de un registro correcto, este parámetro contiene un puntero a una estructura de PO_FX_COMPONENT_PERF_INFO que proporciona información de estado de rendimiento definida por el PEP. Si el controlador proporciona información de estado de rendimiento, este parámetro debe establecerse en NULL.

PoFx administra la memoria asignada para este parámetro y el controlador no debe liberar esta memoria cuando se quita el dispositivo. Se garantiza que la duración de esta memoria supere la duración del componente de PoFx que contiene estos conjuntos de estados de rendimiento.

Valor devuelto

PoFxRegisterComponentPerfStates devuelve STATUS_SUCCESS si PoFx acepta el registro del dispositivo de los estados de rendimiento. Si alguna de las informaciones necesarias no se proporciona o no es correcta, se producirá un error en el registro con un código de retorno distinto de STATUS_SUCCESS. Entre los posibles valores devueltos de error se incluyen los siguientes códigos de estado.

Código devuelto Descripción
STATUS_NOT_IMPLEMENTED
El parámetro Flags no incluye la marca PO_FX_FLAG_PERF_PEP_OPTIONAL y el PEP no puede proporcionar administración del estado de rendimiento para este dispositivo.
STATUS_INVALID_PARAMETER
InputStateInfo y OutputStateInfo son NULL o ambos parámetros no son NULL o no hay ningún conjunto de estados de rendimiento en la estructura PO_FX_COMPONENT_PERF_INFO que se asignó al parámetro InputStateInfo.

Comentarios

Tenga en cuenta que PoFx realiza una copia profunda de las estructuras del dispositivo en su memoria.

El controlador o el complemento de extensión de plataforma (PEP) pueden proporcionar información sobre los estados de rendimiento admitidos por cada componente:

  • Si el controlador proporciona información de estado de rendimiento, el controlador debe establecer el parámetro InputStateInfo en un puntero a una estructura PO_FX_COMPONENT_PERF_INFO que contenga la información de estado de rendimiento. De lo contrario, el controlador debe establecer este parámetro en NULL.
  • Si el PEP proporciona información de estado de rendimiento, el controlador debe establecer el parámetro OutputStateInfo en un puntero válido en una estructura de PO_FX_COMPONENT_PERF_INFO que recibe la información de estado de rendimiento. De lo contrario, el controlador debe establecer este parámetro en NULL.
Si el PEP no admite estados de rendimiento, el controlador puede registrarse para admitir el estado de rendimiento solo con PoFx con fines de registro.

Si el controlador se registra para admitir el estado de rendimiento solo con fines de registro, o si el controlador puede funcionar correctamente con o sin compatibilidad con PEP para la administración del estado de rendimiento, el controlador debe establecer la marca PO_FX_FLAG_PERF_PEP_OPTIONAL en el parámetro Flags . Si se establece la marca, la llamada de registro se realizará correctamente incluso si el PEP no proporciona compatibilidad con los estados de rendimiento.

Si el controlador requiere que el PEP proporcione información de estado de rendimiento, el controlador no puede establecer la marca PO_FX_FLAG_PERF_PEP_OPTIONAL en el parámetro Flags .

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 10.
Plataforma de destino Universal
Encabezado wdm.h
Library Ntoskrnl.lib
Archivo DLL Ntoskrnl.exe
IRQL <= APC_LEVEL

Consulte también

ComponentPerfStateCallback

Administración del estado de rendimiento del dispositivo

PO_FX_COMPONENT_PERF_INFO

PoFxRegisterDevice