DXGKDDI_SET_POWER_STATE fonction de rappel (dispmprt.h)
La fonction DxgkDdiSetPowerState définit l’état d’alimentation d’une carte d’affichage ou d’un appareil enfant d’une carte d’affichage.
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
)
{...}
[in] MiniportDeviceContext
Handle vers un bloc de contexte associé à un adaptateur d’affichage. La fonction d’affichage du pilote miniport DxgkDdiAddDevice 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 d’affichage lui-même. Sinon, DeviceUid est l’identificateur d’un appareil enfant de l’adaptateur d’affichage. Les identificateurs d’appareil enfant ont été 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 laquelle 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.
DxgkDdiSetPowerState retourne STATUS_SUCCESS si elle réussit. DxgkDdiSetPowerState ne doit jamais échouer ; Toutefois, elle peut retourner n’importe quelle valeur typée NTSTATUS définie dans Ntstatus.h et qui transmet la macro NT_SUCCESS(Status).
Si l’état demandé est égal à PowerDeviceD1, PowerDeviceD2ou PowerDeviceD3, DxgkDdiSetPowerState enregistre tout contexte qui sera ultérieurement nécessaire pour ramener l’appareil à 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 d’affichage prenant en charge LE MODE MODE, il ne doit pas être mis hors tension de l’adaptateur d’affichage. Au lieu de cela, il doit enregistrer le contexte et laisser le pilote 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 miniport d’affichage a été averti de la modification de l’état de l’alimentation.
Le système d’exploitation peut appeler DxgkDdiSetPowerState sur un appareil enfant de l’adaptateur d’affichage qui n’est plus connecté (par exemple, un moniteur récemment déconnecté). Cette anomalie se produit parce qu’une latence inhérente existe entre le temps pendant lequel le système d’exploitation appelle le DxgkDdiSetPowerState et le temps pendant lequel le système d’exploitation traite la déconnexion. Le conducteur doit gérer ces situations sans échouer.
Si DevicePowerState est égal à PowerDeviceD0, ne reposez pas sur la valeur de ActionType.
À compter du modèle de pilote d’affichage Windows (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 retourne avec STATUS_SUCCESS, le pilote doit déterminer s’il doit réinitialiser l’affichage en fonction des informations du 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 qu’il doit initialiser l’affichage.
La fonction DxgkDdiSetPowerState doit être rendue paginable.
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible à partir de Windows Vista. |
plateforme cible | Bureau |
d’en-tête | dispmprt.h |
IRQL | PASSIVE_LEVEL |