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.
[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
Administración del estado de rendimiento del dispositivo