Função PoFxIssueComponentPerfStateChange (wdm.h)
A rotina PoFxIssueComponentPerfStateChange envia uma solicitação para colocar um componente do dispositivo em um estado de desempenho específico.
Sintaxe
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
Um identificador que representa o registro do dispositivo com PoFx. O driver do dispositivo recebeu esse identificador anteriormente da rotina PoFxRegisterDevice .
[in] Flags
Os sinalizadores que modificam o comportamento da operação de alteração do estado de desempenho. Defina esse membro como zero ou como um dos seguintes sinalizadores PO_FX_FLAG_ bitsXXX :
Esses dois bits de sinalizador são mutuamente exclusivos. Para obter mais informações, consulte Comentários.
[in] Component
O índice que identifica o componente. Esse parâmetro é um índice na matriz Components na estrutura PO_FX_DEVICE que o driver de dispositivo usou para registrar o dispositivo com PoFx. Se a matriz Componentes contiver N elementos, os índices de componentes variam de 0 a N-1.
[in] PerfChange
Um ponteiro para uma estrutura PO_FX_PERF_STATE_CHANGE que representa o novo estado de desempenho do componente.
[in] Context
Um ponteiro para o contexto para a rotina de retorno de chamada ComponentPerfStateCallback . Esse parâmetro é opcional. Ele é fornecido para que um contexto de driver ou dispositivo possa ser passado para a rotina de retorno de chamada. Se esse parâmetro não for usado, ele deverá ser definido como NULL.
Retornar valor
Nenhum
Comentários
Quando um driver chama PoFxIssueComponentPerfStateChange, a PoFx (estrutura de gerenciamento de energia) solicita que o PEP (plug-in de extensão de plataforma) coloque o estado de desempenho do componente definido no estado de desempenho especificado. Essa rotina pode ser usada com tipos discretos e baseados em intervalo de conjuntos de estado de desempenho. Para obter mais informações sobre conjuntos de estado de desempenho discretos e baseados em intervalo, consulte PO_FX_PERF_STATE_TYPE.
Se Flags = PO_FX_FLAG_BLOCKING, a chamada PoFxIssueComponentPerfStateChange será síncrona. Nesse caso, PoFxIssueComponentPerfStateChange aguarda o retorno até que o componente conclua a transição de estado de desempenho. A rotina ComponentPerfStateCallback do driver é chamada para informar ao driver que a alteração do estado de desempenho do componente está concluída. Esse retorno de chamada ocorre no mesmo thread que a chamada para PoFxIssueComponentPerfStateChange e PoFxIssueComponentPerfStateChange retorna somente após o retorno de chamada ComponentPerfStateCallback retornar.
Se Flags = PO_FX_FLAG_ASYNC_ONLY, a chamada PoFxIssueComponentPerfStateChange será assíncrona. Nesse caso, PoFxIssueComponentPerfStateChange agenda a rotina ComponentPerfStateCallback para ocorrer em outro thread e retorna sem esperar que o retorno de chamada ocorra. O retorno de chamada pode ocorrer antes ou depois que PoFxIssueComponentPerfStateChange retornar. O driver deve contar com a rotina ComponentPerfStateCallback para determinar quando o componente conclui a transição para o novo estado de desempenho.
O driver pode definir Flags = 0 para indicar que não se importa se a chamada PoFxIssueComponentPerfStateChange é síncrona ou assíncrona. Nesse caso, PoFx decide a sincronização da chamada com base em se o PEP usa uma solicitação síncrona ou assíncrona para emitir a alteração do estado de desempenho para o componente.
Se sinalizadores = PO_FX_FLAG_ASYNC_ONLY ou nenhum sinalizador for passado, essa rotina exigirá um IRQL de <= DISPATCH_LEVEL. Se Sinalizadores = PO_FX_FLAG_BLOCKING, essa rotina exigirá um IRQL de <= APC_LEVEL.
Essa função sempre resultará em uma chamada para a rotina ComponentPerfStateCallback , independentemente da sincronização da chamada. Como o PEP pode optar por negar a solicitação para alterar o estado de desempenho, o driver deve aguardar até receber o retorno de chamada antes de confirmar o estado de desempenho no hardware.
Somente uma única chamada da rotina PoFxIssueComponentPerfStateChange é permitida por vez por componente, independentemente de a chamada ser síncrona ou assíncrona. Depois de emitir uma solicitação de alteração de estado de desempenho, o driver deve aguardar até que ComponentPerfStateCallback seja recebido antes de chamar essa rotina novamente, mesmo que a solicitação envolva um conjunto de estado de desempenho diferente. Se essa rotina for chamada novamente antes de aguardar até que ComponentPerfStateCallback seja recebido, ocorrerá uma verificação de bugs.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 10. |
Plataforma de Destino | Universal |
Cabeçalho | wdm.h |
Biblioteca | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= APC_LEVEL ou <= DISPATCH_LEVEL (seção Consulte Comentários) |
Confira também
Gerenciamento de Estado de Desempenho do Dispositivo