DXGKCB_EXCLUDE_ADAPTER_ACCESS fonction de rappel (dispmprt.h)

La fonction DxgkCbExcludeAdapterAccess empêche tout accès à la carte graphique et appelle une routine de rappel DxgkProtectedCallback fournie dans cet état protégé.

Syntaxe

DXGKCB_EXCLUDE_ADAPTER_ACCESS DxgkcbExcludeAdapterAccess;

NTSTATUS DxgkcbExcludeAdapterAccess(
  [in] HANDLE DeviceHandle,
  [in] ULONG Attributes,
  [in] DXGKDDI_PROTECTED_CALLBACK DxgkProtectedCallback,
  [in] PVOID ProtectedCallbackContext
)
{...}

Paramètres

[in] DeviceHandle

Handle qui représente un adaptateur d’affichage. Le pilote de miniport d’affichage a obtenu ce handle dans le membre DeviceHandle de la structure DXGKRNL_INTERFACE qui a été passée à DxgkDdiStartDevice.

[in] Attributes

Valeur qui spécifie les opérations de mémoire vidéo. Ce paramètre peut être n’importe quelle combinaison des valeurs d’indicateur de bits suivantes, sauf que DXGK_EXCLUDE_EVICT_ALL et DXGK_EXCLUDE_CALL_SYNCHRONOUS s’excluent mutuellement. Ces valeurs sont définies dans Dispmprt.h.

DXGK_EXCLUDE_EVICT_ALL

Toute la mémoire vidéo de l’adaptateur est copiée dans la mémoire système ; il s’agit d’une opération coûteuse. Si le paramètre Attributes n’est pas défini sur cette valeur, l’accès aux surfaces verrouillées dans la mémoire système est suspendu.

DXGK_EXCLUDE_CALL_SYNCHRONOUS

Exécute la routine de rappel du pilote DxgkProtectedCallback protégée dans le même contexte de thread que l’appelant. L’appelant doit appeler à partir d’un appel DDI synchronisé de deuxième niveau ou de troisième niveau . Sinon, la fonction DxgkCbExcludeAdapterAccess échoue.

DXGK_EXCLUDE_BRIDGE_ACCESS

Protège l’accès au port racine PCI Express (PCIe) lorsque le pilote doit accéder à l’espace de configuration du port racine. Définissez le paramètre Attributes sur cette valeur avant d’appeler les fonctions DxgkCbReadDeviceSpace ou DxgkCbWriteDeviceSpace avec le paramètre DataType défini sur DXGK_WHICHSPACE_BRIDGE.

[in] DxgkProtectedCallback

Routine de rappel à rappeler lorsque tous les accès à l’adaptateur ont été arrêtés.

[in] ProtectedCallbackContext

Pointeur vers la valeur à passer au paramètre ProtectedCallbackContext de la routine de rappel DxgkProtectedCallback .

Valeur retournée

DxgkCbExcludeAdapterAccess retourne STATUS_SUCCESS si elle réussit. Sinon, elle retourne l’un des codes d’erreur définis dans Ntstatus.h.

Remarques

Les demandes d’application sont bloquées jusqu’à ce que cette fonction soit retournée. Dans cet état de protection, la routine de rappel DxgkProtectedCallback fournie est appelée dans IRQL = PASSIVE_LEVEL.

DxgkCbExcludeAdapterAccess acquiert un accès exclusif à l’adaptateur afin d’empêcher les opérations d’E/S liées aux graphiques sur la carte graphique et sur tous les liens. Cela inactif le GPU pendant toute la durée de l’appel.

Cette fonction empêche également tout espace de configuration PCI d’accéder au port racine PCI Express (PCIe) si DXGK_EXCLUDE_BRIDGE_ACCESS est spécifié dans le paramètre Attributes .

Le pilote ne doit pas bloquer l’exécution continue du thread appelant en attendant le retour de la routine de rappel DxgkProtectedCallback . Par exemple, le pilote peut planifier un thread de travail asynchrone pour gérer la routine de rappel.

Une exception à ce blocage des demandes d’application se produit lorsque le pilote d’affichage en mode utilisateur a défini l’indicateur de champ binaire UseAlternateVA dans le membre Indicateurs de la structure D3DDDICB_LOCKFLAGS dans un appel à la fonction pfnLockCb . DxgkCbExcludeAdapterAccess ne bloque pas ce type de verrou d’allocation, et le processeur peut accéder à la carte graphique pendant l’exécution de la routine de rappel protégée.

Note Si UseAlternateVA a été défini lors d’un appel à pfnLockCb, le pilote de miniport d’affichage ne doit pas appeler DxgkCbExcludeAdapterAccess.
 

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Desktop (Expérience utilisateur)
En-tête dispmprt.h (include Dispmprt.h)
IRQL PASSIVE_LEVEL

Voir aussi

DxgkProtectedCallback