Función PoFxIssueComponentPerfStateChangeMultiple (wdm.h)

La rutina PoFxIssueComponentPerfStateChangeMultiple envía una solicitud para cambiar los estados de rendimiento en varios conjuntos de estados de rendimiento simultáneamente para un componente de dispositivo.

Sintaxis

void PoFxIssueComponentPerfStateChangeMultiple(
  [in] POHANDLE                   Handle,
  [in] ULONG                      Flags,
  [in] ULONG                      Component,
  [in] ULONG                      PerfChangesCount,
  [in] PO_FX_PERF_STATE_CHANGE [] PerfChanges,
  [in] PVOID                      Context
);

Parámetros

[in] Handle

Identificador que representa el registro del dispositivo con PoFx. El controlador de dispositivo recibió anteriormente 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 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 que realiza la 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 oscilan entre 0 y N-1.

[in] PerfChangesCount

Número de solicitudes de cambio de estado de rendimiento contenidas en la matriz PerfChanges .

[in] PerfChanges

Primer elemento de una matriz de estructuras de PO_FX_PERF_STATE_CHANGE que representan los estados de rendimiento a los que el controlador pretende realizar la transición. Cada elemento de matriz representa una única solicitud de cambio de estado de rendimiento.

[in] Context

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

Valor devuelto

None

Observaciones

Un controlador llama a PoFxIssueComponentPerfStateChangeMultiple, el marco de administración de energía (PoFx) solicitará el complemento de extensión de plataforma (PEP) para colocar los conjuntos de estado de rendimiento del componente en los estados de rendimiento especificados. 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 a PoFxIssueComponentPerfStateChangeMultiple es sincrónica. En este caso, PoFxIssueComponentPerfStateChangeMultiple espera a que se devuelva hasta que el componente complete la transición de 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 PoFxIssueComponentPerfStateChangeMultiple y PoFxIssueComponentPerfStateChangeMultiple solo devuelve después de que se devuelva la devolución de llamada ComponentPerfStateCallback .

Si flags = PO_FX_FLAG_ASYNC_ONLY, la llamada a PoFxIssueComponentPerfStateChangeMultiple es asincrónica. En este caso, PoFxIssueComponentPerfStateChangeMultiple programa la rutina ComponentPerfStateCallback para que se produzca en otro subproceso y, a continuación, vuelve sin esperar a que se produzca la devolución de llamada. La devolución de llamada puede producirse antes o después de la devolución poFxIssueComponentPerfStateChangeMultiple . 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 a PoFxIssueComponentPerfStateChangeMultiple 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 al componente.

Si se pasan marcas = PO_FX_FLAG_ASYNC_ONLY o no se pasan marcas, esta rutina requiere un IRQL de <= DISPATCH_LEVEL. Si 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 sincrónica de la llamada. Dado que el PEP puede optar por denegar la solicitud para cambiar los estados de rendimiento, el controlador debe esperar hasta que reciba la devolución de llamada antes de confirmar los estados de rendimiento en el hardware.

Solo se permite una sola llamada de la rutina PoFxIssueComponentPerfStateChangeMultiple 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

PoFxIssueComponentPerfStateChange

PoFxRegisterComponentPerfStates