DXGKDDI_PREEMPTCOMMAND fonction de rappel (d3dkmddi.h)

La fonction DxgkDdiPreemptCommand préempte une mémoire tampon d’accès direct à la mémoire (DMA) précédemment soumise à l’unité d’exécution de commande matérielle et actuellement mise en file d’attente.

Syntaxe

DXGKDDI_PREEMPTCOMMAND DxgkddiPreemptcommand;

NTSTATUS DxgkddiPreemptcommand(
  [in] IN_CONST_HANDLE hAdapter,
  [in] IN_CONST_PDXGKARG_PREEMPTCOMMAND pPreemptCommand
)
{...}

Paramètres

[in] hAdapter

Handle vers un bloc de contexte associé à un adaptateur d’affichage. Le pilote miniport d’affichage a précédemment fourni ce handle au sous-système du noyau graphique Microsoft DirectX dans le paramètre de sortie MiniportDeviceContext de la fonction DxgkDdiAddDevice .

[in] pPreemptCommand

Pointeur vers une structure de DXGKARG_PREEMPTCOMMAND qui décrit la commande utilisée pour préempter une mémoire tampon DMA précédemment soumise à l’unité d’exécution de commande matérielle.

Valeur retournée

Retourne STATUS_SUCCESS en cas de réussite de l’exécution. Si le pilote retourne à la place un code d’erreur, le système d’exploitation provoque une vérification d’erreur système. Pour plus d'informations, consultez la section Notes qui suit.

Remarques

Si le pilote détermine que le matériel a déjà terminé de traiter toutes les mémoires tampons DMA envoyées et que le matériel a informé le planificateur de l’unité de traitement graphique (GPU) des achèvements lorsque sa fonction DxgkDdiPreemptCommand est appelée pour préempter les mémoires tampons DMA, le pilote doit effectuer les opérations suivantes au lieu d’envoyer la clôture préemptaire identifiée par le membre PreemptionFenceId de DXGKARG_PREEMPTCOMMAND au matériel :

  • Augmentez IRQL au niveau d’interruption. Par exemple, le pilote peut appeler la fonction DxgkCbSynchronizeExecution pour se synchroniser avec sa fonction DxgkDdiInterruptRoutine .
  • Informez le planificateur GPU des informations de préemption. Le pilote peut appeler directement la fonction DxgkCbNotifyInterrupt ou appeler sa fonction DxgkDdiInterruptRoutine (par exemple, si le pilote doit également effectuer d’autres mises à jour).

    Notez que le planificateur GPU gère les instances où le matériel a cessé de répondre en raison du travail de détection et de récupération du délai d’expiration (TDR).

Si le pilote retourne un code d’erreur, le sous-système du noyau graphique Microsoft DirectX provoque une vérification d’erreur système. Dans un fichier de vidage sur incident, l’erreur est notée par le message BugCheck 0x119, qui contient les quatre paramètres suivants.
  1. 0x2
  2. Code d’erreur NTSTATUS retourné par l’appel de pilote ayant échoué
  3. Pointeur vers la structure DXGKARG_PREEMPTCOMMAND
  4. Pointeur vers une structure de données de planificateur interne
DxgkDdiPreemptCommand doit être rendu non paginable, car il s’exécute à IRQL = DISPATCH_LEVEL

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Plateforme cible Desktop (Expérience utilisateur)
En-tête d3dkmddi.h
IRQL DISPATCH_LEVEL

Voir aussi

DXGKARG_PREEMPTCOMMAND

DxgkCbNotifyInterrupt

DxgkCbSynchronizeExecution

DxgkDdiAddDevice

DxgkDdiInterruptRoutine