Partager via


Ressources d’interruption GPIO-Based

Les pilotes des périphériques qui envoient des interruptions à des broches d’E/S à usage général (GPIO) acquièrent des interruptions GPIO en tant que ressources d’interruption Windows abstraites. Les pilotes KMDF (Kernel-Mode Driver Framework) et les pilotes UMDF (User-Mode Driver Framework) reçoivent ces ressources via leurs fonctions de rappel d’événement EvtDevicePrepareHardware.

Les pilotes de périphériques qui utilisent des ressources d’interruption basées sur GPIO peuvent ignorer les détails d’implémentation de bas niveau, par exemple si une interruption est générée par une broche GPIO au lieu d’un contrôleur d’interruption ou par une broche d’interruption sur une puce de processeur.

Une interruption basée sur GPIO est une ressource de type CmResourceTypeInterrupt. Les paramètres de configuration de cette interruption sont contenus dans le membre u.Interrupt de la structure CM_PARTIAL_RESOURCE_DESCRIPTOR qui décrit la ressource d’interruption. Pour connecter une routine de service d’interruption (ISR) à une interruption, un pilote UMDF ou KMDF fournit les descriptions brutes et traduites de la ressource d’interruption à une méthode de création d’interruption.

Le pilote KMDF ou UMDF pour un périphérique appelle la méthode WdfInterruptCreate pour connecter un ISR à l’interruption de l’appareil. L’un des paramètres d’entrée de cette méthode est un pointeur vers une structure WDF_INTERRUPT_CONFIG qui contient des informations de configuration pour l’interruption.

Si un pilote de périphérique utilise plusieurs ressources d’interruption GPIO, ce pilote doit connaître l’ordre dans lequel ces ressources apparaissent dans les listes de ressources brutes et traduites fournies en tant que paramètres d’entrée à la fonction EvtDevicePrepareHardware ou à la méthode OnPrepareHardware . Les ressources de ces listes apparaissent dans l’ordre dans lequel elles sont décrites dans le microprogramme de la plateforme, qui doit correspondre à l’ordre attendu par le pilote.