Freigeben über


IWDFDevice3::CreateInterrupt-Methode (wudfddi.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 CreateInterrupt-Methode erstellt ein Framework-Interruptobjekt.

Syntax

HRESULT CreateInterrupt(
  [in]  PWUDF_INTERRUPT_CONFIG Configuration,
  [out] IWDFInterrupt          **ppInterrupt
);

Parameter

[in] Configuration

Ein Zeiger auf eine WUDF_INTERRUPT_CONFIG-Struktur , die durch einen Aufruf des WUDF_INTERRUPT_CONFIG_INIT-Makros initialisiert wurde.

[out] ppInterrupt

Ein Zeiger auf einen Puffer, der einen Zeiger auf die IWDFInterrupt-Schnittstelle für das neue Interruptobjekt empfängt.

Rückgabewert

Die -Methode gibt S_OK zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode einen der Fehlercodes zurück, die in Winerror.h definiert sind.

Hinweise

Ihr Treiber muss CreateInterrupt einmal für jeden Interruptvektor aufrufen, den sein Gerät benötigt. Wenn das Gerät MSI (Message-Signaled Interrupts) unterstützt, muss der Treiber ein Interruptobjekt für jede Nachricht erstellen, die das Gerät unterstützen kann.

Treiber rufen in der Regel die CreateInterrupt-Methode aus einer OnDeviceAdd-Rückruffunktion auf, können diese Methode aber auch aus IPnpCallbackHardware2::OnPrepareHardware aufrufen.

Nachdem der Plug & Play -Manager (PnP) dem Gerät Systemressourcen zugewiesen hat, speichert das Framework Informationen zu den dem Gerät zugewiesenen Interruptressourcen in den Interruptobjekten, die der Treiber erstellt hat. (Treiber, die Plug & Play nicht unterstützen, können keine Interruptobjekte verwenden.)

Das System weist möglicherweise nicht alle Interruptressourcen zu, die ein Gerät unterstützen kann. Beispielsweise erstellt ein Treiber acht Interruptobjekte für ein Gerät, das acht MSI-Nachrichten unterstützen kann. Das System kann dem Gerät jedoch nur eine Nachricht zuweisen. In diesem Fall werden sieben der Interruptobjekte nicht verwendet.

In der Regel sollte Ihr Treiber interruptspezifische Informationen, z. B. den kopierten Inhalt von Geräteunterbrechungsregistern, im Kontextbereich des Interruptobjekts speichern. Ein Treiber ruft IWDFObject::AssignContext auf, um einen Kontext zu registrieren und eine Benachrichtigung anzufordern, wenn das Objekt ungültig wird.

UMDF unterstützt level-triggered interrupts ab Windows 8. Wenn ein Treiber, der auf einem früheren Betriebssystem als Windows 8 ausgeführt wird, in OnDeviceAdd einen level-triggered interrupt erstellt, ist CreateInterrupt erfolgreich, da dem Betriebssystem noch keine Ressourcen zugewiesen wurden. Wenn das Framework jedoch versucht, den Interrupt später zu verbinden, kann das Gerät nicht gestartet werden.

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

Beispiele

HRESULT  hr;
IWDFInterrupt* pInterrupt;
WUDF_INTERRUPT_CONFIG  interruptConfig;

WUDF_INTERRUPT_CONFIG_INIT(&interruptConfig,
                           MyInterruptIsr,
                           MyInterruptWorkItem);

hr = pDevice->Create(&interruptConfig, 
                     &pInterrupt);

Anforderungen

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

Weitere Informationen

IWDFDevice3

WUDF_INTERRUPT_CONFIG

WUDF_INTERRUPT_CONFIG_INIT