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. Es werden keine neuen Features zu UMDF 1 hinzugefügt, und es gibt eingeschränkte Unterstützung für UMDF 1 für neuere Versionen von Windows 10. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF-.
Die onInterruptIsr Ereignisrückruffunktion eines Treibers einen Hardwareunterbruch.
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 nachrichtensignalierte Interrupts (MSIs) verwendet, ist dieser Parameter die Nachrichtennummer, die die Hardwareunterbrechungsnachricht des Geräts identifiziert. Andernfalls ist dieser Wert 0.
[in] Reserved
Reserviert für die Systemverwendung.
Rückgabewert
Nichts
Bemerkungen
Gibt WAHR 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 der Treiber die Adresse der Rückruffunktion in einer WUDF_INTERRUPT_CONFIG Struktur platzieren, bevor IWDFDevice3::CreateInterruptaufgerufen wird.
Die OnInterruptIsr- Rückruffunktion ist eine UMDF-Treiber-Interruptdienstroutine (ISR), die bei PASSIVE_LEVEL aufgerufen wird, wenn ein Hardwareunterbrechung auftritt.
Bei einem edgeauslösten Interrupt oder nachrichtensignalierten Interrupt (MSI) ruft das Framework OnInterruptIsr außerhalb des Interrupt-Dispatchkontexts des Betriebssystems auf. Dies liegt daran, dass UMDF nur nicht gemeinsam genutzte edgeauslöste oder MSI-Unterbrechungen zulässt, und der Treiber muss nicht innerhalb dieses Kontexts mit seiner Hardware interagieren.
Für einen durch die Ebene ausgelösten Interrupt ruft das Framework OnInterruptIsr- im Kontext des Interrupt-Dispatchs des Betriebssystems auf. Infolgedessen wird der Interrupt-Dispatch-Thread des Betriebssystems im Kernelmodus blockiert, der auf eine Antwort des Treibers wartet.
In der Regel speichert OnInterruptIsr alle veränderliche Informationen, die verloren gegangen sind, und löscht die Hardwareunterbrechung. Bei einem durch den 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 eine weitere Verarbeitung in einem OnInterruptWorkItem Rückruf durchführen. Um eine Arbeitsaufgabe in die Warteschlange zu stellen, ruft der Treiber die IWDFInterrupt::QueueWorkItemForIsr-Methode auf.
Weitere Informationen zum Behandeln von Unterbrechungen in UMDF-Treibern finden Sie unter Zugreifen auf Hardware und Behandeln von Interrupts.
Beispiele
Der Funktionstyp wird wie folgt in Wudfinterrupt.hdeklariert.
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 zu definieren, die MyInterruptIsr-heißt, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die SDV und andere Überprüfungstools erfordern:
WUDF_INTERRUPT_NOTIFY MyInterruptIsr;
Implementieren Sie dann die 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 |
Mindest-UMDF-Version | 1.11 |
Header- | wudfinterrupt.h |