DXGKDDI_SET_POWER_STATE funzione di callback (dispmprt.h)

La funzione DxgkDdiSetPowerState imposta lo stato di alimentazione di una scheda di visualizzazione o di un dispositivo figlio di una scheda di visualizzazione.

Sintassi

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
)
{...}

Parametri

[in] MiniportDeviceContext

Handle di un blocco di contesto associato a una scheda di visualizzazione. La funzione DxgkDdiAddDevice del driver miniport di visualizzazione ha fornito in precedenza questo handle al sottosistema del kernel grafico DirectX.

[in] DeviceUid

Intero positivo che identifica il dispositivo per il quale deve essere impostato lo stato di alimentazione. Se DeviceUid è uguale a DISPLAY_ADAPTER_HW_ID (definito in Video.h), il dispositivo è la scheda di visualizzazione stessa. In caso contrario , DeviceUid è l'identificatore di un dispositivo figlio della scheda di visualizzazione. Gli identificatori di dispositivo figlio sono stati precedentemente assegnati dalla funzione DxgkDdiQueryChildRelations .

[in] DevicePowerState

Valore di enumerazione DEVICE_POWER_STATE che fornisce lo stato di alimentazione (PowerDeviceD0, PowerDeviceD1, PowerDeviceD2, PowerDeviceD3) a cui deve essere impostato il dispositivo.

[in] ActionType

Valore di enumerazione POWER_ACTION che fornisce il motivo (PowerActionSleep, PowerActionHibernate, PowerActionShutdown) per la modifica dello stato di alimentazione.

Valore restituito

DxgkDdiSetPowerState restituisce STATUS_SUCCESS se ha esito positivo. DxgkDdiSetPowerState non dovrebbe mai avere esito negativo; Tuttavia, può restituire qualsiasi valore tipizzato NTSTATUS definito in Ntstatus.h e che passa la macro NT_SUCCESS(Status).

Commenti

Se lo stato richiesto è uguale a PowerDeviceD1, PowerDeviceD2 o PowerDeviceD3, DxgkDdiSetPowerState salva qualsiasi contesto che sarà necessario in un secondo momento per riportare il dispositivo a PowerDeviceD0 e quindi inserisce il dispositivo nello stato richiesto. Se lo stato richiesto è PowerDeviceD0 (completamente attivo), DxgkDdiSetPowerState ripristina il contesto del dispositivo e inserisce il dispositivo in PowerDeviceD0.

Se DxgkDdiSetPowerState viene chiamato con una richiesta per inserire la scheda di visualizzazione abilitata per VGA in ibernazione, non deve spegnere la scheda di visualizzazione. Al contrario, dovrebbe salvare il contesto e lasciare che il driver del bus spegnere la scheda di visualizzazione. In questo modo, il risparmio energia può visualizzare lo stato di ibernazione dopo che il driver miniport di visualizzazione ha ricevuto una notifica sulla modifica dello stato di alimentazione.

Il sistema operativo potrebbe chiamare DxgkDdiSetPowerState su un dispositivo figlio della scheda di visualizzazione che non è più connessa (ad esempio, un monitor che è stato scollegato di recente). Questa anomalia si verifica perché esiste una latenza intrinseca tra il tempo in cui il sistema operativo chiama dxgkDdiSetPowerState del driver e l'ora in cui il sistema operativo elabora la disconnessione. Il driver deve gestire tali situazioni senza errori.

Se DevicePowerState è uguale a PowerDeviceD0, non basarsi sul valore di ActionType.

A partire da Windows Display Driver Model (WDDM) 1.2, se il parametro DevicePowerState è impostato su PowerDeviceD0, il driver miniport di visualizzazione deve chiamare DxgkCbAcquirePostDisplayOwnership per eseguire una query sulle informazioni sulla modalità di visualizzazione. Questa modalità di visualizzazione potrebbe essere stata precedentemente impostata dal firmware e dal caricatore di sistema. Se DxgkCbAcquirePostDisplayOwnership restituisce con STATUS_SUCCESS, il driver deve determinare se deve reinizializzare la visualizzazione in base alle informazioni sulla modalità di visualizzazione restituite tramite il parametro DisplayInfo . In caso contrario, il driver non deve presupporre che nessuna modalità di visualizzazione specifica sia attualmente abilitata nel dispositivo e che debba inizializzare lo schermo.

La funzione DxgkDdiSetPowerState deve essere resa pageable.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows Vista.
Piattaforma di destinazione Desktop
Intestazione dispmprt.h
IRQL PASSIVE_LEVEL

Vedi anche

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiQueryChildRelations