Compartilhar via


DXGKDDI_SET_POWER_STATE função de retorno de chamada (dispmprt.h)

A função DxgkDdiSetPowerState define o estado de energia de um adaptador de exibição ou de um dispositivo filho de um adaptador de exibição.

Sintaxe

DXGKDDI_SET_POWER_STATE DxgkddiSetPowerState;

NTSTATUS DxgkddiSetPowerState(
  [in] IN_CONST_PVOID MiniportDeviceContext,
  [in] IN_ULONG DeviceUid,
  [in] IN_DEVICE_POWER_STATE DevicePowerState,
  [in] IN_POWER_ACTION ActionType
)
{...}

Parâmetros

[in] MiniportDeviceContext

Um identificador para um bloco de contexto associado a um adaptador de exibição. A função DxgkDdiAddDevice do driver de miniporta de exibição forneceu anteriormente esse identificador para o subsistema de kernel de elementos gráficos DirectX.

[in] DeviceUid

Um inteiro positivo que identifica o dispositivo para o qual o estado de energia deve ser definido. Se DeviceUid for igual a DISPLAY_ADAPTER_HW_ID (definido em Video.h), o dispositivo será o próprio adaptador de exibição. Caso contrário, DeviceUid é o identificador de um dispositivo filho do adaptador de exibição. Os identificadores de dispositivo filho foram atribuídos anteriormente pela função DxgkDdiQueryChildRelations .

[in] DevicePowerState

Um DEVICE_POWER_STATE valor de enumeração que fornece o estado de energia (PowerDeviceD0, PowerDeviceD1, PowerDeviceD2, PowerDeviceD3) para o qual o dispositivo deve ser definido.

[in] ActionType

Um POWER_ACTION valor de enumeração que fornece o motivo (PowerActionSleep, PowerActionHibernate, PowerActionShutdown) para a alteração do estado de energia.

Retornar valor

DxgkDdiSetPowerState retornará STATUS_SUCCESS se for bem-sucedido. DxgkDdiSetPowerState nunca deve falhar; no entanto, ele pode retornar qualquer valor do tipo NTSTATUS definido em Ntstatus.h e que passe a macro NT_SUCCESS(Status).

Comentários

Se o estado solicitado for igual a PowerDeviceD1, PowerDeviceD2 ou PowerDeviceD3, DxgkDdiSetPowerState salvará qualquer contexto que mais tarde será necessário para trazer o dispositivo de volta ao PowerDeviceD0 e, em seguida, colocará o dispositivo no estado solicitado. Se o estado solicitado for PowerDeviceD0 (totalmente ativado), DxgkDdiSetPowerState restaurará o contexto do dispositivo e colocará o dispositivo no PowerDeviceD0.

Se DxgkDdiSetPowerState for chamado com uma solicitação para colocar o adaptador de exibição habilitado para VGA em hibernação, ele não deverá desligar o adaptador de exibição. Em vez disso, ele deve salvar o contexto e deixar o driver do barramento desligar o adaptador de exibição. Dessa forma, o power manager pode exibir o progresso da hibernação depois que o driver de miniporto de exibição tiver sido notificado sobre a alteração do estado de energia.

O sistema operacional pode chamar DxgkDdiSetPowerState em um dispositivo filho do adaptador de exibição que não está mais conectado (por exemplo, um monitor que foi desconectado recentemente). Essa anomalia ocorre porque existe uma latência inerente entre o tempo em que o sistema operacional chama dxgkDdiSetPowerState do driver e a hora em que o sistema operacional processa a desconexão. O driver deve lidar com essas situações sem falhar.

Se DevicePowerState for igual a PowerDeviceD0, não dependa do valor de ActionType.

A partir do Modelo do Windows Display Driver (WDDM) 1.2, se o parâmetro DevicePowerState estiver definido como PowerDeviceD0, o driver de miniporto de exibição deverá chamar DxgkCbAcquirePostDisplayOwnership para consultar as informações sobre o modo de exibição. Esse modo de exibição pode ter sido definido anteriormente pelo firmware e pelo carregador do sistema. Se DxgkCbAcquirePostDisplayOwnership retornar com STATUS_SUCCESS, o driver deverá determinar se ele precisa reinicializar a exibição com base nas informações do modo de exibição retornadas por meio do parâmetro DisplayInfo . Caso contrário, o driver não deve assumir que qualquer modo de exibição específico está atualmente habilitado no dispositivo e deve inicializar a exibição.

A função DxgkDdiSetPowerState deve ser tornada paginável.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows Vista.
Plataforma de Destino Área de Trabalho
Cabeçalho dispmprt.h
IRQL PASSIVE_LEVEL

Confira também

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiQueryChildRelations