DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP fonction de rappel (dispmprt.h)

Appelé par le système d’exploitation pour demander au pilote de miniport d’affichage de réinitialiser le périphérique d’affichage et de libérer la propriété du périphérique d’auto-test d’alimentation (POST) actuel.

À compter de Windows 8, le système d’exploitation appelle cette fonction lors d’une opération d’arrêt de Plug-and-Play (PnP).

Pour indiquer au système d’exploitation que cette fonction est prise en charge, le pilote doit définir le membre NonVGASupport de la structure DXGK_DRIVERCAPS lorsque la fonction DxgkDdiQueryAdapterInfo est appelée.

Syntaxe

DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP DxgkddiStopDeviceAndReleasePostDisplayOwnership;

NTSTATUS DxgkddiStopDeviceAndReleasePostDisplayOwnership(
  [in]  PVOID MiniportDeviceContext,
  [in]  D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
  [out] PDXGK_DISPLAY_INFORMATION DisplayInfo
)
{...}

Paramètres

[in] MiniportDeviceContext

Handle d’un bloc de contexte associé à une carte d’affichage. La fonction DxgkDdiAddDevice du pilote miniport d’affichage fournissait précédemment cette poignée au sous-système du noyau graphique Microsoft DirectX.

[in] TargetId

Valeur D3DDDI_VIDEO_PRESENT_TARGET_ID qui spécifie l’identificateur de la cible présente vidéo sur l’adaptateur d’affichage auquel le périphérique d’affichage est connecté. Cet identificateur peut concerner la cible qui a été laissée dans l’état actuel du réseau vidéo présent (VidPN) lors de l’appel précédent à DxgkDdiCommitVidPn.

Pour plus d’informations sur l’utilisation du paramètre TargetId , consultez la section Remarques suivante.

[out] DisplayInfo

Pointeur vers une structure DXGK_DISPLAY_INFORMATION allouée par le système d’exploitation.

Valeur retournée

Retourne STATUS_SUCCESS si elle réussit. Sinon, il retourne l’un des codes d’erreur définis dans Ntstatus.h. Pour plus d'informations, consultez la section Notes qui suit.

Remarques

Formats de couleurs autorisés

Le pilote miniport d’affichage doit signaler uniquement un format de couleur 32 bits. Par conséquent, le membre DisplayInfo->ColorFormat ne doit inclure qu’un seul des deux formats suivants :
  • D3DDDIFMT_X8R8G8B8
  • D3DDDIFMT_A8R8G8B8

Initialisation de la cible de présentation vidéo

Le pilote de miniport d’affichage doit définir le membre DisplayInfo->TargetId sur l’identificateur cible de l’affichage qui reste actif. En règle générale, cet identificateur correspond à la valeur du paramètre TargetId que le système d’exploitation a passé au pilote.

De même, le pilote de miniport d’affichage doit définir le membre DisplayInfo-AcpiId> sur l’identificateur ACPI de l’affichage qui reste actif.

Étapes requises par le pilote miniport d’affichage

Le pilote miniport d’affichage doit suivre ces étapes lorsque sa fonction DxgkDdiStopDeviceAndReleasePostDisplayOwnership est appelée :
  1. Le pilote doit arrêter le périphérique d’affichage associé à la cible de présentation vidéo indiquée par le paramètre TargetId , mais doit conserver l’affichage associé à cette cible sous tension et visible.
  2. Le pilote doit case activée la connectivité de l’affichage associé à cette cible. Si l’affichage de la cible n’est pas connecté, le pilote doit terminer l’appel à cette fonction et retourner le code d’erreur STATUS_NOT_SUPPORTED.
  3. Le pilote doit désactiver le signal à tous les autres affichages connectés à l’adaptateur d’affichage. Si cela n’est pas possible, le pilote doit tenter de placer une image vide sur tous les autres affichages. Si cela n’est pas possible, le pilote doit laisser la dernière image à l’écran inchangée.
  4. Le pilote doit conserver le mode d’affichage actuel sur la cible indiquée et fournir ce mode au système d’exploitation dans le cadre de cet appel de fonction.
  5. Si le pilote ne peut pas maintenir le mode d’affichage actuel ou si la cible ne fait pas partie de la topologie active, le pilote doit sélectionner une autre cible active et tenter de conserver la résolution actuelle de cette cible. Si ce n’est pas possible, le pilote doit tenter de définir l’affichage sur sa résolution native ou sur un mode haute résolution. Dans ce cas, la résolution d’affichage doit être définie sur au moins 800 x 600 pixels dans les formats de couleur D3DDDIFMT_R8G8B8 (24 bits par pixel) ou D3DDDIFMT_X8R8G8B8 (32 bpp) de l’énumération D3DDDIFORMAT .
  6. Si aucune cible n’est active, le pilote doit tenter d’activer une cible, de préférence le panneau interne, si elle est disponible.
  7. Si possible, le pilote doit effacer la mémoire tampon d’image actuelle et désactiver le curseur matériel et toutes les superpositions d’affichage.
  8. Si possible, le pilote doit définir la rampe gamma de l’appareil sur ses valeurs par défaut.
  9. Le pilote doit définir la mémoire tampon d’image actuelle pour qu’elle soit en mode linéaire. Pour ce faire, le pilote utilise la plage swizzle par défaut ou en désactivant le mode swizzle.
  10. Le pilote doit rendre la mémoire tampon de trame actuelle accessible à l’UC en mappant la mémoire tampon d’image actuelle de manière linéaire dans l’espace d’adressage du processeur.
  11. Le pilote doit s’assurer que la visibilité de la cible indiquée est définie sur « enabled ».
Une fois que le pilote miniport d’affichage a effectué ces étapes, il doit retourner les paramètres d’affichage actuels de l’appareil. Le pilote retourne ces informations en définissant les membres de la structure DXGK_DISPLAY_INFORMATION référencée par le paramètre DisplayInfo .
Note Une fois l’appareil arrêté, ces informations d’affichage peuvent être utilisées par le pilote d’affichage générique Windows pour gérer le périphérique d’affichage.
 

Autres exigences

Sur les systèmes qui prennent en charge l’interface UEFI (Unified Extensible Firmware Interface), il n’existe pas de système d’entrée/sortie de base (BIOS) VGA. Pour prendre en charge les opérations d’arrêt PnP sur ces systèmes, windows Display Driver Model (WDDM) 1.2 et versions ultérieures prend en charge le système d’exploitation pour réinitialiser l’appareil POST et obtenir ses informations d’affichage pendant une opération d’arrêt PnP. Pour ce faire, le système d’exploitation appelle la fonction DxgkDdiStopDeviceAndReleasePostDisplayOwnership du pilote d’affichage.

Une opération d’arrêt PnP peut se produire en réponse aux demandes de processus tels que le Gestionnaire de périphériques, ou pendant un processus de mise à niveau du pilote.

À compter de Windows 8, le système d’exploitation appelle la fonction DxgkDdiStopDeviceAndReleasePostDisplayOwnership du pilote uniquement sur l’appareil POST pendant une opération d’arrêt PnP.

Note Il est facultatif pour le pilote d’affichage miniport d’appeler DxgkCbAcquirePostDisplayOwnership. Toutefois, le système d’exploitation peut toujours appeler la fonction DxgkDdiStopDeviceAndReleasePostDisplayOwnership du pilote de périphérique si le pilote n’a pas précédemment appelé DxgkCbAcquirePostDisplayOwnership.
 
Si le pilote termine correctement un appel à cette fonction, le système d’exploitation n’appelle pas la fonction DxgkDdiStopDevice . Si le pilote ne parvient pas à appeler cette fonction, le système d’exploitation appelle la fonction DxgkDdiStopDevice et le comportement de l’appareil est le même que dans Windows 7.

Sur les systèmes UEFI uniquement, si le pilote miniport d’affichage échoue à un appel à cette fonction, un écran noir s’affiche et le pilote IHV n’est pas installé. La solution de contournement à ce scénario consiste à redémarrer l’ordinateur par l’utilisateur.

Pour plus d’informations sur l’utilisation de cette fonction dans les scénarios PnP, consultez Plug-and-Play (PnP) dans WDDM 1.2 et versions ultérieures.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8
Serveur minimal pris en charge Windows Server 2012
Plateforme cible Desktop (Expérience utilisateur)
En-tête dispmprt.h
IRQL PASSIVE_LEVEL

Voir aussi

DXGKRNL_INTERFACE

DXGK_DISPLAY_INFORMATION

DXGK_DRIVERCAPS

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiQueryAdapterInfo

DxgkDdiStartDevice

DxgkDdiStopDevice