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. 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 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.

Bemerkungen

Ihr Treiber muss CreateInterrupt einmal für jeden von seinem Gerät benötigten Interruptvektor aufrufen. Wenn das Gerät Nachrichtensignalunterbrechungen (MSI) unterstützt, muss der Treiber für jede Nachricht, die das Gerät unterstützen kann, ein Interruptobjekt erstellen.

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

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

Das System weist möglicherweise nicht alle Unterbrechungsressourcen 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 weist dem Gerät jedoch möglicherweise nur eine Nachricht zu. In diesem Fall werden sieben der Interruptobjekte nicht verwendet.

In der Regel sollte der Treiber interruptspezifische Informationen speichern, z. B. den kopierten Inhalt von Geräteunterbrechungsregistern, im Kontextbereich des Interruptobjekts. 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-triggerte Interrupts ab Windows 8. Wenn ein Treiber, der auf einem Früheren Betriebssystem als Windows 8 ausgeführt wird, einen ebenenauslösten Interrupt in OnDeviceAdderstellt, CreateInterrupt erfolgreich ist, 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 zum Behandeln von Unterbrechungen 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
Mindest-UMDF-Version 1.11
Header- wudfddi.h
DLL- WUDFx.dll

Siehe auch

IWDFDevice3-

WUDF_INTERRUPT_CONFIG

WUDF_INTERRUPT_CONFIG_INIT