Partager via


DXGKDDI_BEGINEXCLUSIVEACCESS fonction de rappel (d3dkmddi.h)

Dxgkrnl appelle DxgkDdiBeginExclusiveAccess pour informer le pilote en mode noyau qu’un commutateur de domaine IOMMU est sur le point de se produire.

Syntaxe

DXGKDDI_BEGINEXCLUSIVEACCESS DxgkddiBeginexclusiveaccess;

NTSTATUS DxgkddiBeginexclusiveaccess(
  IN_CONST_HANDLE hAdapter,
  IN_PDXGKARG_BEGINEXCLUSIVEACCESS pBeginExclusiveAccess
)
{...}

Paramètres

hAdapter

[in] Handle d’un bloc de contexte associé à une carte d’affichage.

pBeginExclusiveAccess

[in] Pointeur vers une structure DXGKARG_BEGINEXCLUSIVEACCESS qui contient les arguments d’entrée pour DxgkDdiBeginExclusiveAccess.

Valeur retournée

DxgkDdiBeginExclusiveAccess doit retourner STATUS_SUCCESS si l’opération réussit. Sinon, il doit retourner un code d’erreur NTSTATUS approprié.

Remarques

L’attachement et le détachement de domaine IOMMU sont extrêmement rapides, mais ne sont pas atomiques actuellement. Cela signifie qu’une transaction émise sur PCIe n’est pas garantie d’être traduite correctement lors de l’échange vers un domaine avec des mappages différents.

Pour gérer cette situation, Dxgkrnl appelle la paire DDI KMD suivante :

  • DxgkDdiBeginExclusiveAccess pour informer KMD qu’un commutateur de domaine IOMMU est sur le point de se produire.
  • DxgkDdiEndExclusiveAccess une fois le commutateur de domaine IOMMU terminé.

Le pilote doit s’assurer que son matériel est silencieux chaque fois que l’appareil est basculé vers un nouveau domaine IOMMU. Autrement dit, le pilote doit s’assurer qu’il ne lit ni n’écrit dans la mémoire système à partir de l’appareil entre ces deux appels.

Entre ces deux appels, Dxgkrnl garantit les éléments suivants :

  • Le planificateur sera suspendu. Toutes les charges de travail actives seront vidées et aucune nouvelle charge de travail ne sera envoyée ou planifiée sur le matériel.
  • Aucun autre appel DDI ne sera effectué.

Dans le cadre de ces appels, le pilote peut choisir de désactiver et de supprimer les interruptions (y compris les interruptions vsync) pendant la durée de l’accès exclusif, même sans notification explicite du système d’exploitation.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 1803 (WDDM 2.4)
En-tête d3dkmddi.h
IRQL PASSIVE_LEVEL

Voir aussi

DRIVER_INITIALIZATION_DATA

DXGKARG_BEGINEXCLUSIVEACCESS

DxgkDdiEndExclusiveAccess