SET_D3COLD_SUPPORT função de retorno de chamada (wdm.h)

A rotina de retorno de chamada SetD3ColdSupport habilita ou desabilita as transições para o estado de energia do dispositivo D3cold.

Sintaxe

SET_D3COLD_SUPPORT SetD3coldSupport;

void SetD3coldSupport(
  [in, optional] PVOID Context,
  [in]           BOOLEAN D3ColdSupport
)
{...}

Parâmetros

[in, optional] Context

Um ponteiro para informações de contexto específicas da interface. O chamador define esse parâmetro como o valor do membro Context da estrutura D3COLD_SUPPORT_INTERFACE da interface.

[in] D3ColdSupport

Se deseja permitir transições de D3hot para D3cold. Defina como TRUE para habilitar essas transições. Caso contrário, defina como FALSE. Para obter mais informações, consulte Comentários.

Retornar valor

Nenhum

Comentários

O driver que é o PPO (proprietário da política de energia) de um dispositivo pode chamar essa rotina para habilitar ou desabilitar transições para o subestado D3cold que podem ocorrer quando o computador está no estado de energia do sistema S0 (em funcionamento) e não está se preparando para sair do S0.

Se um dispositivo precisar ser capaz de sinalizar um evento de ativação de qualquer estado Dx de baixa potência que ele insira, o driver deste dispositivo não deverá habilitar transições para o subestado D3cold, a menos que o dispositivo possa sinalizar um evento de ativação desse subestado. Caso contrário, depois de inserir D3cold, o dispositivo ficará indisponível até que o computador reinicie ou desperte de um estado de suspensão.

O driver do dispositivo pode chamar a rotina GetIdleWakeInfo para determinar se o dispositivo pode sinalizar um evento de ativação de D3cold.

Se necessário, o driver de um dispositivo pode fazer uma série de chamadas SetD3ColdSupport para habilitar e desabilitar alternadamente transições D3cold em resposta a condições de alteração dinâmica.

Por exemplo, um dispositivo gráfico pode ter um contexto de hardware grande para restaurar após uma transição de D3cold para D0. O tempo necessário para restaurar esse contexto pode ou não ser aceitável dependendo do conjunto de tarefas que o usuário está executando no momento. Além disso, o tempo de restauração pode variar com essa combinação de tarefas. O driver pode precisar habilitar e desabilitar dinamicamente as transições para D3cold à medida que a combinação de tarefas é alterada.

Um dispositivo pode inserir o subestado D3cold somente do subestado D3hot. Se o driver chamar SetD3ColdSupport para habilitar transições de D3hot para D3cold, o dispositivo poderá ou não inserir D3cold depois de entrar em D3hot. Em resposta a um evento de ativação, um dispositivo pode inserir D0 diretamente do D3hot sem passar por D3cold.

Quando um dispositivo passa de D3hot para D3cold, ele provavelmente faz isso porque a fonte de energia que ele compartilha com alguns outros dispositivos foi desativada. Algum tempo depois que esses dispositivos entrarem em D3cold, o driver de um dos dispositivos poderá solicitar uma transição para D0. Em resposta a essa solicitação, o driver de barramento pai ou o driver de filtro ACPI ativa a fonte de alimentação e todos os dispositivos que compartilham a fonte de alimentação inserem seus estados de alimentação padrão.

O único driver de dispositivo que espera essa alteração de estado de energia é o driver que solicitou a alteração. Os drivers dos outros dispositivos devem receber notificação dessa alteração para que possam inicializar corretamente seus dispositivos para operar em D0. Somente um driver que pode receber essa notificação deve permitir que seu dispositivo insira D3cold. Caso contrário, o driver não saberá quando o dispositivo entrar em D0.

Começando com Windows 8, um driver WDM pode registrar seu dispositivo com a PoFx (estrutura de energia) e ser notificado pela rotina DevicePowerRequiredCallback quando o dispositivo entra em D0. Da mesma forma, um driver KMDF pode registrar seu dispositivo com PoFx e ser notificado pelo retorno de chamada de evento EvtDeviceD0Entry .

Um driver que não registra seu dispositivo com PoFx ainda poderá ser notificado de uma transição para D0 se o dispositivo estiver armado para ativação. Quando os motoristas de ônibus ativam a energia para o dispositivo, eles completam a solicitação de IRP_MN_WAIT_WAKE do motorista. Em resposta, o driver inicializa seu dispositivo para operar no D0.

Depois que uma fonte de energia compartilhada por vários dispositivos é ativada, o dispositivo cujo driver solicitou a transição para D0 pode ser o único desses dispositivos que tem trabalho a fazer. Os outros dispositivos provavelmente ficarão ociosos, caso em que seus drivers, após algum tempo, moverão esses dispositivos para d3hot.

Se o driver chamar SetD3ColdSupport para desabilitar as transições para D3cold, D0 será o único estado de energia do dispositivo que o dispositivo pode inserir do D3hot.

Se o driver chamar SetD3ColdSupport para habilitar transições para D3cold, essas transições poderão ser desabilitadas por outros motivos. O driver pode chamar a rotina GetD3ColdCapability para determinar se o dispositivo é capaz de entrar no subestado D3cold. No entanto, um driver pode não precisar dessas informações. Se um dispositivo não for capaz de inserir D3cold, as chamadas para SetD3ColdSupport não terão efeito, mas serão inofensivas.

A rotina SetD3ColdSupport afeta apenas as transições D3hot para D3cold que podem ocorrer quando o computador está dentro (e não está se preparando para sair) do estado S0. Essa rotina não tem efeito sobre o caso em que o computador está se preparando para sair do S0 e entrar em um estado de sistema de baixa potência. Um dispositivo no subestado D3hot sempre pode inserir o subestado D3cold pouco antes de o computador entrar em um estado de baixa energia do sistema.

Por padrão, antes da primeira chamada para a rotina SetD3ColdSupport , as transições D3hot para D3cold são desabilitadas. Para alterar esse padrão para que as transições D3hot-to-D3cold sejam habilitadas antes da primeira chamada SetD3ColdSupport , o pacote de driver do dispositivo pode incluir as duas linhas a seguir na seção DDInstall.HW do arquivo INF que instala o driver:

Include = machine.inf
Needs = PciD3ColdSupported

Windows 8 é a primeira versão do Windows a dar suporte a dispositivos que podem entrar e sair do subestado D3cold enquanto o computador permanece no estado S0. Para obter mais informações, consulte Estados de Low-Power de dispositivos.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 8.
Plataforma de Destino Área de Trabalho
Cabeçalho wdm.h (inclua Wdm.h)
IRQL PASSIVE_LEVEL

Confira também

D3COLD_SUPPORT_INTERFACE

DevicePowerRequiredCallback

EvtDeviceD0Entry

GetD3ColdCapability

IRP_MN_WAIT_WAKE