Partilhar via


Método IAdapterPowerManagement::P owerChangeState (portcls.h)

O método PowerChangeState solicita que o dispositivo mude 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 acessos de 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 a 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 os acessos de hardware e restaurar o hardware ao retornar para D0 ou D1

Valor de retorno

Nenhum

Observações

PortCls chama o método PowerChangeState em resposta a um IRP de energia de IRP_MN_SET_POWER. Essa chamada não deve falhar. PortCls e o sistema usam a chamada PowerChangeState 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, o 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, o PortCls desativará os fluxos de áudio ativos para ativar o dispositivo. Os miniportos podem optar por uma notificação adicional utilizando a interface de IPowerNotify.

O driver de miniporto deve executar a alteração solicitada no estado de energia do dispositivo antes de retornar da chamada PowerChangeState. 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 de PowerChangeState bem-sucedida, o driver de miniporto 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 do PowerDeviceD0), ele deve evitar gravar no hardware. O driver de miniporto deve armazenar em cache todos os acessos de hardware que precisam ser adiados até que o dispositivo seja habilitado novamente. Se o estado de energia estiver mudando de um dos estados de suspensão para o PowerDeviceD0, o driver de miniporto deverá executar quaisquer acessos de hardware adiados depois de ter ligado o dispositivo. Se o estado de energia estiver mudando do PowerDeviceD0 para um estado de suspensão, o driver de miniporto poderá executar todos os acessos de hardware necessários durante a chamada PowerChangeState antes de habilitar o dispositivo.

Enquanto desligado, um driver de miniporto nunca é solicitado a criar um objeto de driver de miniporto ou objeto de fluxo. O PortCls sempre coloca o dispositivo no estado PowerDeviceD0 antes de chamar o método newstream do driver do miniport.

O código para esse método deve residir na memória paginada.

Requisitos

Requisito Valor
da Plataforma de Destino Universal
cabeçalho portcls.h (inclua Portcls.h)

Consulte também

IAdapterPowerManagement

IPowerNotify

IRP_MN_SET_POWER