Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[Gilt für KMDF und UMDF]
Die WDF_INTERRUPT_CONFIG-Struktur enthält Konfigurationsinformationen für einen Geräteunterbruch.
Syntax
typedef struct _WDF_INTERRUPT_CONFIG {
ULONG Size;
WDFSPINLOCK SpinLock;
WDF_TRI_STATE ShareVector;
BOOLEAN FloatingSave;
BOOLEAN AutomaticSerialization;
PFN_WDF_INTERRUPT_ISR EvtInterruptIsr;
PFN_WDF_INTERRUPT_DPC EvtInterruptDpc;
PFN_WDF_INTERRUPT_ENABLE EvtInterruptEnable;
PFN_WDF_INTERRUPT_DISABLE EvtInterruptDisable;
PFN_WDF_INTERRUPT_WORKITEM EvtInterruptWorkItem;
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptRaw;
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptTranslated;
WDFWAITLOCK WaitLock;
BOOLEAN PassiveHandling;
WDF_TRI_STATE ReportInactiveOnPowerDown;
BOOLEAN CanWakeDevice;
} WDF_INTERRUPT_CONFIG, *PWDF_INTERRUPT_CONFIG;
Elemente
Size
Die Größe dieser Struktur in Byte.
SpinLock
Das Handle für ein Framework-Spin-Lock-Objekt, das durch einen vorherigen Aufruf von WdfSpinLockCreateoder NULL-abgerufen wird. Wenn dieser Parameter NULL-ist, verwendet das Framework ein internes Spin-Lock-Objekt. Das Framework erwirbt die Drehsperre, bevor er die EvtInterruptSynchronize Ereignisrückruffunktion aufruft und wenn der Treiber WdfInterruptAcquireLockaufruft. Legen Sie für die Behandlung von Unterbrechungen auf passiver Ebene den Wert NULL fest.
Ab UMDF Version 2.0 verwendet UMDF immer die Behandlung von Unterbrechungen auf passiver Ebene. Legen Sie in diesem Fall dieses Element auf NULL fest.
ShareVector
Ein WDF_TRI_STATE-typed-Wert. Wenn dieser Wert WdfTrueist, kann der Interruptvektor freigegeben werden. Wenn der Wert WdfFalseist, kann der Interruptvektor nicht freigegeben werden. Wenn der Wert WdfDefaultist, verwendet der PnP-Manager den Wert des Bustreibers.
FloatingSave
Ein boolescher Wert, der, wenn TRUE, angibt, dass das System den Gleitkomma- und MMX-Zustand des Prozessors speichert, wenn das Gerät unterbrochen wird. Wenn FALSE-, speichert das System nicht den Gleitkomma- und MMX-Zustand. Ein Treiber sollte diesen Wert nur auf "TRUE" festlegen, wenn die EvtInterruptIsr- Rückruffunktion Gleitkomma- oder MMX-Register verwenden muss. Weitere Informationen zum Speichern von Gleitkomma- und MMX-Zustand finden Sie unter Verwenden von Gleitkomma oder MMX in einem WDM-Treiber.
Dieser Member wird ab UMDF Version 2.0 ignoriert.
AutomaticSerialization
Ein boolescher Wert, der, wenn TRUE, angibt, dass das Framework die Ausführung des EvtInterruptDpc oder EvtInterruptWorkItem Rückruffunktion mit Rückruffunktionen von anderen Objekten synchronisiert, die sich unter dem übergeordneten Objekt des Interrupts befinden. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".
EvtInterruptIsr
Ein Zeiger auf die EvtInterruptIsr Rückruffunktion des Treibers. Dieser Zeiger kann nicht NULL-werden.
EvtInterruptDpc
Ein Zeiger auf die EvtInterruptDpc Rückruffunktion des Treibers oder NULL-. Der Treiber kann EvtInterruptWorkItem oder EvtInterruptDpcbereitstellen, aber nicht beide.
EvtInterruptEnable
Ein Zeiger auf die EvtInterruptEnable Rückruffunktion des Treibers oder NULL-.
EvtInterruptDisable
Ein Zeiger auf die EvtInterruptDisable Rückruffunktion des Treibers oder NULL-.
EvtInterruptWorkItem
Ein Zeiger auf die EvtInterruptWorkItem Rückruffunktion des Treibers oder NULL-. Der Treiber kann EvtInterruptWorkItem oder EvtInterruptDpcbereitstellen, aber nicht beide. Das EvtInterruptWorkItem Member ist in Version 1.11 und höheren Versionen von KMDF verfügbar.
InterruptRaw
Ein Zeiger auf die CM_PARTIAL_RESOURCE_DESCRIPTOR-Struktur, die die Rohressourcen beschreibt, die das System dem Interrupt zugewiesen hat. Dieses Element wird nur verwendet, wenn der Interrupt im EvtDevicePrepareHardware Rückruf erstellt wird. Das InterruptRaw Member ist in Version 1.11 und höheren Versionen von KMDF verfügbar.
InterruptTranslated
Ein Zeiger auf die CM_PARTIAL_RESOURCE_DESCRIPTOR Struktur, die die übersetzten Ressourcen beschreibt, die das System dem Interrupt zugewiesen hat. Dieses Element wird nur verwendet, wenn der Interrupt im EvtDevicePrepareHardware Rückruf erstellt wird. Das InterruptTranslated Member ist in Version 1.11 und höheren Versionen von KMDF verfügbar.
WaitLock
Ein Handle für ein Framework-Wait-Lock-Objekt, das durch einen vorherigen Aufruf von WdfWaitLockCreateoder NULL-abgerufen wird. Wenn WaitLock nichtNULL-ist, muss PassiveHandling- auf TRUEfestgelegt werden. Das WaitLock Member ist in Version 1.11 und höheren Versionen von KMDF verfügbar. Weitere Informationen zu WaitLockfinden Sie unter Hinweise.
PassiveHandling
Legen Sie auf FALSE- für die Unterbrechungsbehandlung im IRQL (DIRQL) des Geräts fest. Legen Sie den Wert auf TRUE- für die Behandlung von Unterbrechungen auf passiver Ebene fest. Das PassiveHandling Member ist in Version 1.11 und höheren Versionen von KMDF verfügbar. Ab UMDF, Version 2.0, legt WDF_INTERRUPT_CONFIG_INIT dieses Element immer auf TRUE fest.
ReportInactiveOnPowerDown
Dieses Mitglied gilt nur für KMDF.
Ein WDF_TRI_STATE-typed-Wert, der nur gilt, wenn der Treiber nicht WdfDeviceInitSetPowerNotPageableaufgerufen hat. Dieses Element kann einen der folgenden Werte aufweisen:
WdfTrue – KMDF meldet den Inaktiven Interrupt, wenn das Gerät in einen Zustand mit niedriger Leistung (Dx) wechselt. In Betriebssystemen vor Windows 8 stimmt das Framework mit dem Verhalten überein, das für WdfFalse-beschrieben wurde.
WdfFalse- – KMDF trennt den Interrupt, wenn das Gerät in einen Zustand mit niedriger Leistung (Dx) wechselt.
WdfDefault- – Auf ARM-basierten Plattformen entspricht das Verhalten des Frameworks, das für WdfTrue-beschrieben wurde. Auf anderen Plattformen entspricht das Verhalten des Frameworks, das für WdfFalse-beschrieben wurde.
Der ReportInactiveOnPowerDown Member ist in Version 1.11 und höheren Versionen von KMDF verfügbar. Sie ist in DER UMDF-Version 2.0 nicht verfügbar.
Weitere Informationen zum Melden eines inaktiven Interrupts finden Sie unter Erstellen eines ISR-aktiven oder inaktiven.
CanWakeDevice
Ein boolescher Wert, der angibt, ob der Interrupt verwendet wird, um das Gerät aus einem Energiesparzustand zu reaktivieren. Wenn FALSE, wird der Interrupt nicht verwendet, um das Gerät zu reaktivieren. Wenn TRUE, wird der Interrupt verwendet, um das Gerät zu reaktivieren. Der CanWakeDevice Member ist ab KMDF Version 1.13 und UMDF Version 2.0 verfügbar.
Bemerkungen
Die WDF_INTERRUPT_CONFIG-Struktur wird als Eingabe zum WdfInterruptCreateverwendet.
Um eine WDF_INTERRUPT_CONFIG Struktur zu initialisieren, muss der Treiber zuerst WDF_INTERRUPT_CONFIG_INIT aufrufen und dann Strukturmember ausfüllen, die WDF_INTERRUPT_CONFIG_INIT nicht initialisiert.
Wenn AutomaticSerialization WAHR ist, gelten die folgenden Regeln:
- Wenn die Ausführungsebene des übergeordneten Interruptobjekts WdfExecutionLevelPassiveist, kann der Treiber EvtInterruptWorkItem-bereitstellen, sollte jedoch nicht EvtInterruptDpc- in dieser Konfigurationsstruktur bereitstellen.
- Wenn die Ausführungsebene des übergeordneten Interruptobjekts WdfExecutionLevelDispatch-ist, kann der Treiber EvtInterruptDpcbereitstellen, sollte jedoch nicht EvtInterruptWorkItem- in dieser Konfigurationsstruktur bereitstellen. In diesem zweiten Fall kann das Interruptobjekt selbst noch passiv sein.
Weitere Informationen zu AutomaticSerialization und synchronisieren von Treiberrückruffunktionen finden Sie unter Synchronisierungstechniken für Framework-Based Treiber.
Standardmäßig sind KMDF-Funktionstreiber power pageable. Ein Treiber ruft WdfDeviceInitSetPowerNotPageable auf, um anzugeben, dass es nicht power pageable ist.
In KMDF-Versionen vor 1.11 trennt das Framework immer unterbrechungsfähige Treiber, wenn das Gerät in den Zustand "Low-Power(Dx)" wechselt. Ab KMDF Version 1.11 können Sie dieses Verhalten ändern, indem Sie das ReportInactiveOnPowerDown Mitglied dieser Struktur festlegen. Bei nicht leistungsstärkeren Treibern bleiben Unterbrechungen verbunden, wenn Dx-Zustandsübergänge auftreten, unabhängig vom Wert, der in ReportInactiveOnPowerDown-festgelegt ist.
Wenn ein UMDF-Treiber ReportInactiveOnPowerDown-festlegt, wird der Wert ignoriert.
Weitere Informationen zum Behandeln von Unterbrechungen in frameworkbasierten Treibern finden Sie unter Behandeln von Hardware-Interrupts.
Der Treiber kann die CanWakeDevice Member dieser Struktur verwenden, um einen Interrupt zu erstellen, der verwendet werden kann, um das Gerät aus einem Dx-Zustand mit niedriger Leistung zurück zu D0 zu bringen. Die EvtInterruptIsr Callbackroutine des Treibers soll bei IRQL = PASSIVE_LEVEL ausgeführt werden, nachdem das Gerät D0 eingegeben hat.
Weitere Informationen finden Sie unter Using an Interrupt to Wake a Device.
Anforderungen
| Anforderung | Wert |
|---|---|
| Minimale KMDF-Version | 1.0 |
| Mindest-UMDF-Version | 2.0 |
| Kopfzeile | wdfinterrupt.h (einschließen Wdf.h) |