Freigeben über


GPIO-Based Unterbrechen von Ressourcen

Treiber für Peripheriegeräte, die Unterbrechungen an allgemeine I/O-GPIO-Pins senden, erwerben GPIO-Interrupts als abstrakte Interrupt-Ressourcen von Windows. Kernelmodustreiberframework (KMDF)-Treiber und UMDF-Treiber (User-Mode Driver Framework ) empfangen diese Ressourcen über ihre EvtDevicePrepareHardware-Ereignisrückruffunktionen .

Peripheriegerätetreiber, die GPIO-basierte Interruptressourcen verwenden, können Details zur Implementierung auf niedriger Ebene ignorieren, z. B. ob ein Interrupt durch einen GPIO-Pin anstelle eines Interruptcontrollers oder durch einen Interrupt-Pin auf einem Prozessorchip generiert wird.

Ein GPIO-basierter Interrupt ist eine Ressource vom Typ CmResourceTypeInterrupt. Die Konfigurationsparameter für diesen Interrupt sind im u.Interrupt-Element der CM_PARTIAL_RESOURCE_DESCRIPTOR-Struktur enthalten, die die Interruptressource beschreibt. Um eine Unterbrechungsdienstroutine (Interrupt Service Routine, ISR) mit einem Interrupt zu verbinden, liefert ein UMDF- oder KMDF-Treiber sowohl die unformatierten als auch übersetzten Beschreibungen der Interruptressource an eine Interrupterstellungsmethode.

Der KMDF- oder UMDF-Treiber für ein Peripheriegerät ruft die WdfInterruptCreate-Methode auf, um einen ISR mit dem Interrupt vom Gerät zu verbinden. Einer der Eingabeparameter für diese Methode ist ein Zeiger auf eine WDF_INTERRUPT_CONFIG Struktur, die Konfigurationsinformationen für den Interrupt enthält.

Wenn ein Peripheriegerätetreiber mehr als eine GPIO-Interruptressource verwendet, muss dieser Treiber die Reihenfolge kennen, in der diese Ressourcen in den rohen und übersetzten Ressourcenlisten angezeigt werden, die als Eingabeparameter für die EvtDevicePrepareHardware-Funktion oder die OnPrepareHardware-Methode bereitgestellt werden. Die Ressourcen in diesen Listen werden in der Reihenfolge angezeigt, in der sie in der Plattformfirmware beschrieben werden, die mit der vom Treiber erwarteten Reihenfolge übereinstimmen muss.