WUDF_INTERRUPT_ISR Rückruffunktion (wudfinterrupt.h)

Warnung

UMDF 2 ist die neueste Version von UMDF und ersetzt UMDF 1. Alle neuen UMDF-Treiber sollten mit UMDF 2 geschrieben werden. UMDF 1 werden keine neuen Features hinzugefügt, und die Unterstützung für UMDF 1 in neueren Versionen von Windows 10 ist eingeschränkt. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF.

Die OnInterruptIsr-Ereignisrückruffunktion eines Treibers verwendet einen Hardwareunterbrechung.

Syntax

typedef
BOOLEAN
_Function_class_(WUDF_INTERRUPT_ISR)
WUDF_INTERRUPT_ISR(
    _In_
    IWDFInterrupt* Interrupt,
    _In_
    ULONG MessageID,
    _In_
    ULONG Reserved
    );

typedef WUDF_INTERRUPT_ISR *PFN_WUDF_INTERRUPT_ISR;

Parameter

[in] Interrupt

Ein Zeiger auf die IWDFInterrupt-Schnittstelle .

[in] MessageID

Wenn das Gerät MSIs (Message-Signaled Interrupts) verwendet, ist dieser Parameter die Nachrichtennummer, die die Hardwareunterbrechungsnachricht des Geräts identifiziert. Andernfalls ist dieser Wert 0.

[in] Reserved

Ist für das System reserviert.

Rückgabewert

Keine

Bemerkungen

Gibt TRUE zurück, wenn der Treiber den Besitz des Interrupts bestätigt und den Interrupt auf seinem Gerät beendet und bestätigt hat. Andernfalls wird FALSE zurückgegeben.

Um eine OnInterruptIsr-Rückruffunktion zu registrieren, muss Ihr Treiber die Adresse der Rückruffunktion in einer WUDF_INTERRUPT_CONFIG-Struktur platzieren, bevor IWDFDevice3::CreateInterrupt aufgerufen wird.

Die OnInterruptIsr-Rückruffunktion ist eine Interrupt-Dienstroutine (ISR) des UMDF-Treibers, die bei PASSIVE_LEVEL aufgerufen wird, wenn ein Hardwareunterbrechung auftritt.

Für einen edgetriggerierten Interrupt oder einen Message-Signaled Interrupt (MSI) ruft das Framework OnInterruptIsr außerhalb des Interrupt-Dispatchkontexts des Betriebssystems auf. Dies liegt daran, dass UMDF nur nicht freigegebene Edge- oder MSI-Interrupts zulässt und der Treiber in diesem Kontext nicht mit seiner Hardware interagieren muss.

Für einen level-triggered interrupt ruft das Framework OnInterruptIsr im Kontext der Interruptverteilung des Betriebssystems auf. Daher wird der Interrupt-Dispatchthread des Betriebssystems im Kernelmodus blockiert und wartet auf eine Antwort des Treibers.

In der Regel speichert OnInterruptIsr alle flüchtigen Informationen, die möglicherweise verloren gehen, und löscht den Hardware-Interrupt. Bei einem level-ausgelösten Interrupt sollte der Treiber den Interrupt auf dem Gerät beenden und bestätigen und dann TRUE zurückgeben, wenn er den Interrupt besitzt. Der Treiber sollte jede weitere Verarbeitung in einem OnInterruptWorkItem-Rückruf durchführen. Um ein Arbeitselement in die Warteschlange zu stellen, ruft der Treiber die IWDFInterrupt::QueueWorkItemForIsr-Methode auf.

Weitere Informationen zur Behandlung von Interrupts in UMDF-Treibern finden Sie unter Zugreifen auf Hardware und Behandeln von Interrupts.

Beispiele

Der Funktionstyp wird in Wudfinterrupt.h wie folgt deklariert.

typedef
BOOLEAN
WUDF_INTERRUPT_ISR(
    _In_
    IWDFInterrupt* Interrupt,
    _In_
    ULONG MessageID,
    _In_
    ULONG Reserved
    );

typedef WUDF_INTERRUPT_ISR *PFN_WUDF_INTERRUPT_ISR;

Um eine OnInterruptIsr-Rückruffunktion namens MyInterruptIsr zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die SDV und andere Überprüfungstools wie folgt erfordern:

WUDF_INTERRUPT_NOTIFY  MyInterruptIsr;

Implementieren Sie dann Ihre Rückruffunktion wie folgt:

BOOLEAN
  MyInterruptIsr (
    IN IWDFInterrupt*  Interrupt,
    IN ULONG  MessageID,
    IN ULONG Reserved
    )
  {…}

Anforderungen

Anforderung Wert
Ende des Supports In UMDF 2.0 und höher nicht verfügbar.
Zielplattform Desktop
UMDF-Mindestversion 1.11
Kopfzeile wudfinterrupt.h

Weitere Informationen