Partager via


DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP fonction de rappel (dispmprt.h)

Le système d’exploitation appelle le pilote d’affichage en mode noyau (KMD) DxgkddiStopDeviceAndReleasePostDisplayOwnership fonction pour demander que KMD réinitialise l’appareil d’affichage et libère la propriété de l’appareil d’alimentation actuel auto-test (POST).

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 vers un bloc de contexte associé à un adaptateur d’affichage. La fonction DxgkDdiAddDevice kmD a précédemment fourni ce handle au sous-système du noyau graphique DirectX (Dxgkrnl).

[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) pendant l’appel précédent à DxgkDdiCommitVidPn.

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

[out] DisplayInfo

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

Valeur de retour

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

Remarques

À compter de Windows 8 (WDDM 1.2), le système d’exploitation appelle cette fonction pendant une opération d’arrêt 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 sa fonction DxgkDdiQueryAdapterInfo est appelée.

Formats de couleurs autorisés

Le kmD ne doit signaler qu’un format de couleur 32 bits. Par conséquent, le membre DisplayInfo->ColorFormat ne doit inclure qu’un des deux formats de D3DDDIFORMAT suivants :

  • D3DDDIFMT_X8R8G8B8
  • D3DDDIFMT_A8R8G8B8

Initialisation de la cible de la vidéo présente

Le KMD doit définir le DisplayInfo->TargetId membre 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 KMD doit définir l'DisplayInfo->AcpiId membre sur l’identificateur ACPI de l’affichage qui reste actif.

Étapes requises par le KMD

Le KMD doit suivre ces étapes lorsque sa fonction DxgkDdiStopDeviceAndReleasePostDisplayOwnership est appelée :

  1. Arrêtez l’appareil d’affichage associé à la cible présente vidéo indiquée par le paramètre TargetId, mais devez conserver l’affichage associé à cette cible sous tension et visible.

  2. Vérifiez la connectivité de l’affichage associé à cette cible. Si la cible n’a pas d’affichage connecté, le KMD doit terminer l’appel à cette fonction et retourner le code d’erreur STATUS_NOT_SUPPORTED.

  3. Désactivez le signal pour 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 sur l’écran inchangée.

  4. 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.

  5. 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 sélectionner une autre cible active et tenter de maintenir la résolution actuelle de cette cible. Si cela 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).

  6. Si aucune cible n’est active, le pilote doit tenter d’activer une cible, de préférence le panneau interne, s’il 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 en mode linéaire. Le pilote effectue cette opération soit à l’aide de la plage swizzle par défaut, soit en désactivant le mode swizzle.

  10. Le pilote doit rendre la mémoire tampon d’image actuelle accessible au processeur en mappant linéairement la mémoire tampon d’image actuelle 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 « activée ».

Une fois que le KMD effectue 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.

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 l’appareil d’affichage.

Autres exigences

Sur les systèmes qui prennent en charge l’interface UEFI (Unified Extensible Firmware Interface), un système d’entrée/sortie de base (BIOS) n’existe pas. Pour prendre en charge les opérations d’arrêt PnP sur ces systèmes, WDDM 1.2 et versions ultérieures prennent 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. Le système d’exploitation effectue cette opération en appelant la fonction DxgkDdiStopDeviceAndReleasePostDisplayOwnership.

Une opération d’arrêt PnP peut se produire en réponse aux demandes par des 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.

Il est facultatif que KMD appelle DxgkCbAcquirePostDisplayOwnership. Toutefois, le système d’exploitation peut toujours appeler la fonction DxgkDdiStopDeviceAndReleasePostDisplayOwnership, que le pilote ait effectué un appel précédent à DxgkCbAcquirePostDisplayOwnership.

Si le pilote termine correctement un appel à cette fonction, le système d’exploitation n’appelle pas la fonction DxgkDdiStopDevice kmD. Si le pilote ne parvient pas à terminer un appel à cette fonction, le système d’exploitation appelle DxgkDdiStopDevice, et le comportement de l’appareil est le même que dans Windows 7.

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

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.

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 PASSIVE_LEVEL

Voir aussi

DXGKRNL_INTERFACE

DXGK_DISPLAY_INFORMATION

DXGK_DRIVERCAPS

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiQueryAdapterInfo

DxgkDdiStartDevice

DxgkDdiStopDevice