DXGKDDI_SET_POWER_STATE fonction de rappel (dispmprt.h)

La fonction DxgkDdiSetPowerState définit l’état d’alimentation d’une carte graphique ou d’un périphérique enfant d’une carte graphique.

Syntaxe

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

Paramètres

[in] MiniportDeviceContext

Handle d’un bloc de contexte associé à un adaptateur d’affichage. La fonction DxgkDdiAddDevice du pilote miniport d’affichage a précédemment fourni ce handle au sous-système du noyau graphique DirectX.

[in] DeviceUid

Entier positif qui identifie l’appareil pour lequel l’état d’alimentation doit être défini. Si DeviceUid est égal à DISPLAY_ADAPTER_HW_ID (défini dans Video.h), l’appareil est l’adaptateur graphique lui-même. Sinon, DeviceUid est l’identificateur d’un appareil enfant de l’adaptateur graphique. Les identificateurs d’appareil enfants étaient précédemment attribués par la fonction DxgkDdiQueryChildRelations .

[in] DevicePowerState

Valeur d’énumération DEVICE_POWER_STATE qui fournit l’état d’alimentation (PowerDeviceD0, PowerDeviceD1, PowerDeviceD2, PowerDeviceD3) sur lequel l’appareil doit être défini.

[in] ActionType

Valeur d’énumération POWER_ACTION qui fournit la raison (PowerActionSleep, PowerActionHibernate, PowerActionShutdown) pour le changement d’état d’alimentation.

Valeur retournée

DxgkDdiSetPowerState retourne STATUS_SUCCESS si elle réussit. DxgkDdiSetPowerState ne doit jamais échouer ; Toutefois, elle peut retourner n’importe quelle valeur de type NTSTATUS définie dans Ntstatus.h et qui transmet la macro NT_SUCCESS(Status).

Remarques

Si l’état demandé est égal à PowerDeviceD1, PowerDeviceD2 ou PowerDeviceD3, DxgkDdiSetPowerState enregistre tout contexte qui sera nécessaire ultérieurement pour ramener l’appareil dans PowerDeviceD0 , puis place l’appareil dans l’état demandé. Si l’état demandé est PowerDeviceD0 (entièrement activé), DxgkDdiSetPowerState restaure le contexte de l’appareil et place l’appareil dans PowerDeviceD0.

Si DxgkDdiSetPowerState est appelé avec une demande de mise en veille prolongée de l’adaptateur graphique VGA, il ne doit pas mettre hors tension l’adaptateur d’affichage. Au lieu de cela, il doit enregistrer le contexte et laisser le pilote de bus mettre hors tension l’adaptateur d’affichage. De cette façon, le gestionnaire d’alimentation peut afficher la progression de la mise en veille prolongée une fois que le pilote de miniport d’affichage a été averti de la modification de l’état d’alimentation.

Le système d’exploitation peut appeler DxgkDdiSetPowerState sur un appareil enfant de la carte graphique qui n’est plus connecté (par exemple, un moniteur récemment débranché). Cette anomalie se produit parce qu’une latence inhérente existe entre le moment où le système d’exploitation appelle le DxgkDdiSetPowerState du pilote et le moment où le système d’exploitation traite la déconnexion. Le pilote doit gérer ces situations sans défaillance.

Si DevicePowerState est égal à PowerDeviceD0, ne vous fiez pas à la valeur d’ActionType.

À compter de Windows Display Driver Model (WDDM) 1.2, si le paramètre DevicePowerState est défini sur PowerDeviceD0, le pilote miniport d’affichage doit appeler DxgkCbAcquirePostDisplayOwnership pour interroger les informations sur le mode d’affichage. Ce mode d’affichage a peut-être été précédemment défini par le microprogramme et le chargeur système. Si DxgkCbAcquirePostDisplayOwnership est retourné avec STATUS_SUCCESS, le pilote doit déterminer s’il doit réinitialiser l’affichage en fonction des informations de mode d’affichage retournées via le paramètre DisplayInfo . Sinon, le pilote ne doit pas supposer qu’un mode d’affichage spécifique est actuellement activé sur l’appareil, et il doit initialiser l’affichage.

La fonction DxgkDdiSetPowerState doit être rendue paginable.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows Vista.
Plateforme cible Desktop (Expérience utilisateur)
En-tête dispmprt.h
IRQL PASSIVE_LEVEL

Voir aussi

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiQueryChildRelations