Función PoFxIssueComponentPerfStateChange (wdm.h)

La rutina PoFxIssueComponentPerfStateChange envía una solicitud para colocar un componente de dispositivo en un estado de rendimiento determinado.

Sintaxis

void PoFxIssueComponentPerfStateChange(
  [in] POHANDLE                 Handle,
  [in] ULONG                    Flags,
  [in] ULONG                    Component,
  [in] PPO_FX_PERF_STATE_CHANGE PerfChange,
  [in] PVOID                    Context
);

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] Flags

Marcas que modifican el comportamiento de la operación de cambio de estado de rendimiento. Establezca este miembro en cero o en uno de los siguientes bits de marca PO_FX_FLAG_XXX :

Estos dos bits de marca son mutuamente excluyentes. Para obtener más información, vea la sección Comentarios.

Valor Significado
PO_FX_FLAG_BLOCKING
0x1
Haga que la condición cambie sincrónicamente. Si se establece esta marca, la rutina que solicita el cambio de condición no devuelve el control al controlador que realiza la llamada hasta que el hardware del componente completa la transición a la nueva condición. Esta marca solo se puede usar si el autor de la llamada se ejecuta en IRQL < DISPATCH_LEVEL.
PO_FX_FLAG_ASYNC_ONLY
0x2
Haga que la condición cambie completamente asincrónica. Si se establece esta marca, se llama a la rutina de devolución de llamada del controlador de llamada desde un subproceso distinto del subproceso en el que se llama a la rutina que solicita el cambio de condición. Por lo tanto, la rutina que solicita el cambio de condición siempre devuelve de forma asincrónica sin esperar a que se complete la devolución de llamada.

[in] Component

Índice que identifica el componente. 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] PerfChange

Puntero a una estructura PO_FX_PERF_STATE_CHANGE que representa el nuevo estado de rendimiento del componente.

[in] Context

Puntero al contexto de la rutina de devolución de llamada ComponentPerfStateCallback . Este parámetro es opcional. Se proporciona para que se pueda pasar un controlador o contexto de dispositivo a la rutina de devolución de llamada. Si no se usa este parámetro, debe establecerse en NULL.

Valor devuelto

None

Observaciones

Cuando un controlador llama a PoFxIssueComponentPerfStateChange, el marco de administración de energía (PoFx) solicita al complemento de extensión de plataforma (PEP) que coloque el estado de rendimiento del componente establecido en el estado de rendimiento especificado. Esta rutina se puede usar con tipos discretos y basados en intervalos de conjuntos de estados de rendimiento. Para obtener más información sobre los conjuntos de estados de rendimiento discretos y basados en intervalos, consulte PO_FX_PERF_STATE_TYPE.

Si flags = PO_FX_FLAG_BLOCKING, la llamada PoFxIssueComponentPerfStateChange es sincrónica. En este caso, PoFxIssueComponentPerfStateChange espera a que se devuelva hasta que el componente complete la transición del estado de rendimiento. Se llama a la rutina ComponentPerfStateCallback del controlador para informar al controlador de que se ha completado el cambio de estado de rendimiento del componente. Esta devolución de llamada se produce en el mismo subproceso que la llamada a PoFxIssueComponentPerfStateChange y PoFxIssueComponentPerfStateChange solo devuelve después de que se devuelva la devolución de llamada ComponentPerfStateCallback .

Si flags = PO_FX_FLAG_ASYNC_ONLY, la llamada PoFxIssueComponentPerfStateChange es asincrónica. En este caso, PoFxIssueComponentPerfStateChange programa la rutina ComponentPerfStateCallback para que se produzca en otro subproceso y, a continuación, devuelve sin esperar a que se produzca la devolución de llamada. La devolución de llamada puede producirse antes o después de que PoFxIssueComponentPerfStateChange devuelva. El controlador debe basarse en la rutina ComponentPerfStateCallback para determinar cuándo el componente completa la transición al nuevo estado de rendimiento.

El controlador puede establecer Flags = 0 para indicar que no importa si la llamada PoFxIssueComponentPerfStateChange es sincrónica o asincrónica. En este caso, PoFx decide la sincronía de la llamada en función de si el PEP usa una solicitud sincrónica o asincrónica para emitir el cambio de estado de rendimiento en el componente.

= Sise pasan marcas PO_FX_FLAG_ASYNC_ONLY o no se pasan marcas, esta rutina requiere un IRQL de <= DISPATCH_LEVEL. = Silas marcas PO_FX_FLAG_BLOCKING, esta rutina requiere un IRQL de <= APC_LEVEL.

Esta función siempre dará lugar a una llamada a la rutina ComponentPerfStateCallback independientemente de la sincronónica de la llamada. Dado que el PEP puede optar por denegar la solicitud para cambiar el estado de rendimiento, el controlador debe esperar hasta recibir la devolución de llamada antes de confirmar el estado de rendimiento en el hardware.

Solo se permite una sola llamada de la rutina PoFxIssueComponentPerfStateChange a la vez por componente, independientemente de si la llamada es sincrónica o asincrónica. Después de emitir una solicitud de cambio de estado de rendimiento, el controlador debe esperar hasta que se reciba ComponentPerfStateCallback antes de llamar a esta rutina de nuevo, incluso si la solicitud implica un conjunto de estados de rendimiento diferente. Si se vuelve a llamar a esta rutina antes de esperar hasta que se reciba ComponentPerfStateCallback , se producirá una comprobación de errores.

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 o <= DISPATCH_LEVEL (vea la sección Comentarios)

Consulte también

ComponentPerfStateCallback

Administración del estado de rendimiento del dispositivo

PO_FX_PERF_STATE_TYPE

PoFxIssueComponentPerfStateChangeMultiple

PoFxRegisterComponentPerfStates