Método IAdapterPowerManagement::P owerChangeState (portcls.h)
O PowerChangeState
método solicita que o dispositivo altere para um novo estado de energia.
Sintaxe
void PowerChangeState(
[in] POWER_STATE NewState
);
Parâmetros
[in] NewState
Especifica o novo estado de energia que está sendo solicitado para o dispositivo. Esse parâmetro é uma união do tipo POWER_STATE. O novo estado de energia (NewState.DeviceState) pode ser um dos valores de enumeração DEVICE_POWER_STATE mostrados na tabela a seguir.
Estado de energia | Significado |
---|---|
PowerDeviceD0 | Estado de energia total (D0). Esse código pode ser uma função do estado de energia atual. Salve o novo estado. Esse valor local é usado para determinar quando armazenar em cache os acessos à propriedade e quando permitir que o driver acesse o hardware. |
PowerDeviceD1 | O estado de suspensão com a menor latência em relação ao tempo de latência necessário para retornar ao D0 |
PowerDeviceD2 | Um estado de suspensão de latência média. Nesse estado, o driver do dispositivo não pode assumir que ele pode tocar no hardware, portanto, todos os acessos precisam ser armazenados em cache e o hardware restaurado ao entrar em D0. |
PowerDeviceD3 | Um estado de hibernação completo e é o estado de sono de latência mais longo. O driver não pode acessar o hardware nesse estado e deve armazenar em cache quaisquer acessos de hardware e restaurar o hardware ao retornar para D0 ou D1 |
Retornar valor
Nenhum
Comentários
PortCls chama o PowerChangeState
método em resposta a um IRP de energia de IRP_MN_SET_POWER . Essa chamada não deve falhar. PortCls e o sistema usam a PowerChangeState
chamada para colocar o dispositivo no estado de energia desejado. Quando o sistema tenta suspender ou retomar um fluxo de áudio ativo, o driver deve ser capaz de salvar ou restaurar o contexto do dispositivo adequadamente.
Para ajudar o driver, PortCls pausará todos os fluxos de áudio ativos antes de chamar esse método para colocar o dispositivo em um estado de suspensão. Depois de chamar esse método, PortCls desativará os fluxos de áudio ativos para ativar o dispositivo. Os miniportos podem optar por uma notificação adicional utilizando a interface IPowerNotify .
O driver de miniporte deve executar a alteração solicitada para o estado de energia do dispositivo antes de retornar da PowerChangeState
chamada. Se o driver de miniporto precisar salvar ou restaurar qualquer estado do dispositivo antes de uma alteração de estado de energia, o driver de miniporto deverá dar suporte à interface IPowerNotify , o que permite que ele receba aviso prévio de qualquer alteração desse tipo. Antes de retornar de uma chamada bem-sucedida PowerChangeState
, o driver de miniporte deve armazenar em cache o novo estado de energia.
Embora o driver de miniporte esteja em um dos estados de suspensão (qualquer estado diferente de PowerDeviceD0), ele deve evitar gravar no hardware. O driver de miniporte deve armazenar em cache todos os acessos de hardware que precisem ser adiados até que o dispositivo seja habilitado novamente. Se o estado de energia estiver mudando de um dos estados de suspensão para PowerDeviceD0, o driver de miniporte deverá executar quaisquer acessos de hardware adiados depois de ligar o dispositivo. Se o estado de energia estiver mudando de PowerDeviceD0 para um estado de suspensão, o driver de miniporto poderá executar todos os acessos de hardware necessários durante a PowerChangeState
chamada antes de desligar o dispositivo.
Enquanto ligado, um driver de miniporto nunca é solicitado a criar um objeto de driver de miniporto ou objeto de fluxo. PortCls sempre coloca o dispositivo no estado PowerDeviceD0 antes de chamar o método NewStream do driver de miniport.
O código para esse método deve residir na memória paginada.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | portcls.h (inclua Portcls.h) |