DXGKDDI_SYSTEM_DISPLAY_ENABLE fonction de rappel (dispmprt.h)
Le système d’exploitation appelle le pilote d’affichage en mode noyau (KMD) DxgkddiSystemDisplayEnable fonction pour demander que KMD réinitialise l’appareil d’affichage actuel à un état spécifié.
Syntaxe
DXGKDDI_SYSTEM_DISPLAY_ENABLE DxgkddiSystemDisplayEnable;
NTSTATUS DxgkddiSystemDisplayEnable(
[in] PVOID MiniportDeviceContext,
[in] D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
[in] PDXGKARG_SYSTEM_DISPLAY_ENABLE_FLAGS Flags,
[out] UINT *Width,
[out] UINT *Height,
[out] D3DDDIFORMAT *ColorFormat
)
{...}
Paramètres
[in] MiniportDeviceContext
Gérer un bloc de contexte associé à un adaptateur d’affichage. La fonction
[in] TargetId
Valeur D3DDDI_VIDEO_PRESENT_TARGET_ID qui spécifie l’identificateur de la vidéo cible présente sur l’adaptateur d’affichage auquel l’appareil d’affichage est connecté. Cet identificateur peut être pour la cible qui a été laissée dans l’état actuel du réseau présent vidéo (VidPn) lors de l’appel précédent à DxgkDdiCommitVidPn.
[in] Flags
Pointeur vers une valeur DXGKARG_SYSTEM_DISPLAY_ENABLE_FLAGS qui contient une OR au niveau du bit des indicateurs. Ce membre est réservé par le système d’exploitation.
[out] Width
Largeur du mode d’affichage de l’appareil spécifié, en pixels.
[out] Height
Hauteur du mode d’affichage de l’appareil spécifié, en pixels.
[out] ColorFormat
Pointeur vers une valeur D3DDDIFORMAT qui spécifie le format de couleur de l’appareil d’affichage.
Valeur de retour
DxgkDdiSystemDisplayEnable retourne STATUS_SUCCESS si elle réussit. Si la cible spécifiée par le paramètre TargetId
Remarques
Le système d’exploitation appelle DxgkddiSystemDisplayEnable pendant une opération de vérification de bogues après une erreur d’arrêt du système.
Étapes requises par KMD
Le kmD doit suivre ces étapes lorsque sa fonction DxgkDdiSystemDisplayEnable est appelée :
- Annulez toutes les opérations GPU ou réinitialisez le GPU à l’état inactif.
- Le système d’exploitation indique la cible actuelle de la vidéo via le paramètre TargetId
. Le pilote doit conserver l’affichage associé à cette cible sous tension et visible. Si le pilote ne peut pas activer l’affichage, il doit échouer à cet appel à cette fonction. Dans ce cas, le système d’exploitation peut appeler DxgkDdiResetDevice et provoquer une vérification de bogue système. - Vérifiez la connectivité de l’affichage associé à cette cible. Si la cible n’a pas d’affichage connecté, le pilote doit terminer l’appel à cette fonction et retourner le code d’erreur STATUS_NOT_SUPPORTED.
- Désactivez le signal pour tous les autres affichages connectés à l’adaptateur d’affichage. Si ce n’est pas possible, le pilote doit tenter de placer une image vide sur tous les autres affichages. Si ce n’est pas possible, le pilote doit laisser la dernière image sur l’écran inchangée.
- Conservez le mode d’affichage actuel sur la cible indiquée et fournissez ce mode au système d’exploitation dans le cadre de cet appel de fonction.
- Si le pilote ne peut pas conserver le mode d’affichage actuel ou si la cible ne fait pas partie de la topologie active, le pilote doit tenter de définir une mémoire tampon d’images sur une autre cible capable d’une résolution d’affichage d’au moins 640 x 480 pixels dans un format de 24 bits par pixel. Si ce n’est pas possible, le pilote peut échouer cet appel de fonction, ce qui entraîne une vérification de bogue système et l’affichage d’un écran noir.
KMD n’a pas besoin d’utiliser un mode de mémoire tampon de trame linéaire. Toutefois, KMD doit prendre en charge les opérations d’écriture dans cette mémoire tampon d’images à partir de sources qui ont le format D3DDDIFMT_A8R8G8B8 de l’énumération D3DDDIFORMAT.
Restrictions relatives à l’image source
Une fois que KMD donne le contrôle du système d’exploitation sur les fonctionnalités d’affichage, le système d’exploitation peut appeler la fonction DxgkDdiSystemDisplayWrite pour mettre à jour l’image d’écran et écrire un bloc d’images provenant de sources spécifiées à l’écran qui a été réinitialisé par la fonction DxgkDdiSystemDisplayEnable.
DxgkDdiSystemDisplayWrite fournit au pilote l’adresse de départ de l’image source, ainsi que la progression, la largeur et la hauteur. Le format de couleur de l’image source est toujours D3DDDIFMT_X8R8G8B8. Le système d’exploitation garantit que l’image source est en mémoire non paginée.
KMD doit écrire cette image source dans l’écran actuel à partir des positions spécifiées par le PositionX
Il est recommandé que le pilote utilise l’UC pour écrire l’image à partir de la source dans la mémoire tampon d’images, car une vérification de bogue système peut être due à des
Utiliser la mémoire non paginée
Les fonctions en mode noyau Windows peuvent ne pas être disponibles pendant l’appel de cette fonction.
DxgkDdiSystemDisplayEnable peut être appelée à n’importe quel runtime d’intégration. Il doit donc être en mémoire non modifiable. DxgkDdiSystemDisplayEnable ne doit appeler aucun code qui est en mémoire paginable et ne doit pas manipuler les données qui sont en mémoire paginable.
Basculement automatique de l’affichage
Un pilote de commutateur d’affichage automatique DxgkDdiSystemDisplayEnable DDI doit s’assurer que l’actualisation automatique du panneau (PSR) est désactivée à la fin de l’appel. Pour plus d’informations, consultez commutateur d’affichage automatique.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 8 (WDDM 1.2) |
serveur minimum pris en charge | Windows Server 2012 |
plateforme cible | Bureau |
d’en-tête | dispmprt.h |
IRQL | N’importe quel niveau (voir section Remarques) |
Voir aussi
DxgkCbAcquirePostDisplayOwnership