Aktivieren und Deaktivieren von Interrupts (UMDF 1)
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.
Die archivierten UMDF 1-Beispiele finden Sie im Treiberbeispielupdate Windows 11, Version 22H2 – Mai 2022.
Weitere Informationen finden Sie unter Erste Schritte mit UMDF.
Wenn Ihr Treiber Geräteunterbrechungen verarbeitet, muss er Die Rückruffunktionen OnInterruptEnable und OnInterruptDisable bereitstellen, die die Interrupts aktivieren und deaktivieren. Diese Rückruffunktionen müssen alles tun, was erforderlich ist, um den Interruptmechanismus eines Geräts zu aktivieren und zu deaktivieren.
Wenn Ihr Treiber zusätzliche Vorgänge im Zusammenhang mit dem Aktivieren oder Deaktivieren von Interrupts ausführen muss, kann der Treiber auch IPnpCallbackHardwareInterrupt::OnD0EntryPostInterruptsEnabled und IPnpCallbackHardwareInterrupt::OnD0ExitPreInterruptsDisabled-Rückruffunktionen bereitstellen.
Das Framework ruft die Rückruffunktionen OnInterruptEnable und IPnpCallbackHardwareInterrupt::OnD0EntryPostInterruptsEnabled auf, wenn das Gerät in seinen Arbeitszustand (D0) wechselt, nachdem das Framework die OnD0Entry-Rückruffunktion des Treibers aufgerufen hat. Das Framework ruft die Rückruffunktionen IPnpCallbackHardwareInterrupt::OnD0ExitPreInterruptsDisabled und OnInterruptDisable auf, wenn das Gerät seinen Arbeitszustand verlässt, bevor das Framework die OnD0Exit-Rückruffunktion des Treibers aufruft. Weitere Informationen dazu, wann das Framework die Rückruffunktionen eines Treibers aufruft, finden Sie unter PnP und Energieverwaltung in UMDF-basierten Treibern.
Sie dürfen nicht davon ausgehen, dass ein Gerät bei jedem Aufruf der OnInterruptEnable-Rückruffunktion Ihres Treibers dieselben Interruptressourcen verwendet. Manchmal verteilt der PnP-Manager Systemressourcen neu und weist Ihrem Gerät möglicherweise neue Interruptressourcen zu.
Der Treiber kann IWDFInterrupt::GetInfo aufrufen, um die Interruptressourcen eines Geräts zu bestimmen. Der Treiber kann IWDFInterrupt::GetDevice aufrufen, um das Gerät zu bestimmen, zu dem ein Interruptobjekt gehört.
Um Interrupts direkt zu aktivieren und zu deaktivieren, kann der Treiber die Methoden IWDFInterrupt::Enable und IWDFInterrupt::D isable des Interruptobjekts aufrufen, die die Ereignisrückruffunktionen OnInterruptEnable und OnInterruptDisable des Treibers aufrufen. Die meisten Treiber sollten es dem Framework jedoch einfach erlauben, die Rückruffunktionen OnInterruptEnable und OnInterruptDisable zu den richtigen Zeiten aufzurufen.