Compartilhar via


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)

Confira também

IAdapterPowerManagement

IPowerNotify

IRP_MN_SET_POWER