DXGKDDI_INTERRUPT_ROUTINE fonction de rappel (dispmprt.h)

La fonction DxgkDdiInterruptRoutine gère les interruptions générées par un adaptateur graphique.

Syntaxe

DXGKDDI_INTERRUPT_ROUTINE DxgkddiInterruptRoutine;

BOOLEAN DxgkddiInterruptRoutine(
  [in] IN_CONST_PVOID MiniportDeviceContext,
  [in] IN_ULONG MessageNumber
)
{...}

Paramètres

[in] MiniportDeviceContext

Handle d’un bloc de contexte associé à un adaptateur d’affichage. La fonction DxgkDdiAddDevice du pilote miniport d’affichage a précédemment fourni ce handle au sous-système du noyau graphique DirectX.

[in] MessageNumber

Index de base zéro dans la table d’interruption signalée par message (MSI) si l’interruption est signalée par un message. Pour les interruptions basées sur des lignes, ce paramètre est égal à zéro.

Valeur retournée

Si DxgkDdiInterruptRoutine détermine que l’adaptateur représenté par MiniportDeviceContext n’a pas généré l’interruption, il retourne FALSE. Sinon, il doit ignorer l’interruption sur l’adaptateur avant qu’elle retourne TRUE.

Remarques

Si l’interruption est basée sur une ligne (MessageNumber = 0), DxgkDdiInterruptRoutine doit déterminer si l’adaptateur représenté par MiniportDeviceContext a généré l’interruption et, dans le cas contraire, retourner la valeur FALSE immédiatement.

Si l’adaptateur représenté par MiniportDeviceContext a généré l’interruption, DxgkDdiInterruptRoutine doit effectuer les étapes suivantes :

  • Faites disparaître l’interruption sur l’adaptateur.
  • Terminez l’opération demandée à l’origine de l’interruption, ou placez en file d’attente un DPC qui terminera l’opération ultérieurement.
  • Retourne TRUE aussi rapidement que possible.

Toute autre fonction de pilote miniport d’affichage qui partage la mémoire (par exemple, une partie de l’état représentée par MiniportDeviceContext) avec DxgkDdiInterruptRoutine doit appeler DxgkCbSynchronizeExecution pour synchroniser son accès à la mémoire partagée.

La fonction DxgkDdiInterruptRoutine peut appeler DxgkCbQueueDpc et DxgkCbNotifyInterrupt, mais ne doit pas appeler d’autres fonctions Xxx DxgkCb. Pour plus d’informations sur la séquence appropriée d’appels de fonction, consultez Envoi d’une mémoire tampon de commandes.

DxgkDdiInterruptRoutine s’exécute à un IRQL avec élévation de privilèges, de sorte qu’il (et toutes les fonctions qu’il appelle) doivent être non paginables. En outre, DxgkDdiInterruptRoutine (et toutes les fonctions qu’il appelle) ne doit pas tenter d’accéder à la mémoire paginable.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Plateforme cible Desktop (Expérience utilisateur)
En-tête dispmprt.h
IRQL Consultez la section Notes.

Voir aussi

DxgkCbNotifyInterrupt

DxgkCbQueueDpc

DxgkCbSynchronizeExecution