Partager via


DXGKDDI_INTERRUPT_ROUTINE fonction de rappel (dispmprt.h)

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

Syntaxe

DXGKDDI_INTERRUPT_ROUTINE DxgkddiInterruptRoutine;

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

Paramètres

[in] MiniportDeviceContext

Handle vers 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 de retour

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

Remarques

Si l’interruption est basée sur une ligne (MessageNumber = 0), DxgkDdiInterruptRoutine devez déterminer si l’adaptateur représenté par MiniportDeviceContext généré l’interruption et, si ce n’est pas le cas, renvoyer FALSE immédiatement.

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

  • Ignorer l’interruption sur l’adaptateur.
  • Terminez l’opération demandée qui a provoqué l’interruption, ou filez d’attente une DPC qui terminera l’opération ultérieurement.
  • Retournez TRUE le plus rapidement possible.

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

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

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

Exigences

Exigence Valeur
client minimum pris en charge Windows Vista
plateforme cible Bureau
d’en-tête dispmprt.h
IRQL Voir la section Remarques.

Voir aussi

DxgkCbNotifyInterrupt

DxgkCbQueueDpc

DxgkCbSynchronizeExecution