Freigeben über


Erstellen eines Interruptobjekts (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.

Ein UMDF-Treiber, der die Hardwareunterbrechungen eines Geräts verarbeitet, muss ein Framework-Interruptobjekt für jeden Interrupt erstellen, den jedes Gerät unterstützen kann.

In der Regel erstellt ein Treiber Framework-Interruptobjekte in IDriverEntry::OnDeviceAdd. Sie können jedoch auch Interruptobjekte in IPnpCallbackHardware2::OnPrepareHardware erstellen.

Um ein Framework-Interruptobjekt zu erstellen, muss der Treiber eine WUDF_INTERRUPT_CONFIG-Struktur initialisieren und an die IWDFDevice3::CreateInterrupt-Methode übergeben. Diese Methode registriert die folgenden vom Treiber bereitgestellten Ereignisrückruffunktionen:

OnInterruptEnable
Aktiviert einen Hardwareunterbrechung.

OnInterruptDisable
Deaktiviert einen Hardwareunterbrechung.

OnInterruptIsr
Die Interruptdienstroutine (ISR) für den Interrupt.

OnInterruptWorkItem
Die Workerroutine für den Interrupt.

Optional kann der Treiber IWDFInterrupt::SetPolicy oder IWDFInterrupt::SetExtendedPolicy aufrufen, um zusätzliche Interruptparameter anzugeben.

Das Framework ruft die IDriverEntry::OnDeviceAdd-Rückruffunktion des Treibers auf, bevor der Plug & Play-Manager (PnP) dem Gerät Systemressourcen wie Interruptvektoren zugewiesen hat. Nachdem der PnP-Manager Ressourcen zugewiesen hat, speichert das Framework Interruptressourcen im Interruptobjekt des Geräts. (Treiber, die keine Plug & Play unterstützen, können keine Interruptobjekte verwenden.)

MsIs (Message-Signaled Interrupts) werden in Windows Vista und höheren Versionen des Betriebssystems unterstützt. Damit das Betriebssystem MSIs für Ihr Gerät unterstützt, muss die INF-Datei Ihres Treibers einige Werte in der Registrierung festlegen. Informationen zum Festlegen dieser Werte finden Sie unter Aktivieren Message-Signaled Interrupts in der Registrierung.

Wenn ein Gerät eine bestimmte Anzahl von MSI-Nachrichten unterstützen kann, versucht der PnP-Manager, dem Gerät diese Anzahl von Nachrichten zuzuweisen. Wenn der PnP-Manager nicht alle Nachrichten zuweisen kann, die das Gerät unterstützen kann, weist er dem Gerät nur eine Nachricht zu.

Ihr Treiber sollte ein Framework-Interruptobjekt für jeden Interruptvektor oder jede MSI-Nachricht erstellen, die vom Gerät unterstützt werden kann. Wenn der PnP-Manager dem Gerät nicht alle Interruptressourcen gewährt, die das Gerät unterstützen kann, werden die zusätzlichen Interruptobjekte nicht verwendet, und die Rückruffunktionen werden nicht aufgerufen.