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.
Die KeAcquireInterruptSpinLock Routine übernimmt die Drehsperre, die einem Interruptobjekt zugeordnet ist.
Syntax
KIRQL KeAcquireInterruptSpinLock(
PKINTERRUPT Interrupt
);
Parameter
Interrupt
[in, out] Gibt einen Zeiger auf ein Interrupt-Objekt an. Dieser Wert muss von IoConnectInterrupt oder IoConnectInterruptEx-angegeben werden.
Rückgabewert
KeAcquireInterruptSpinLock gibt die aktuelle IRQL zurück, wenn die Routine aufgerufen wird. Dieser Wert wird an KeReleaseInterruptSpinLock übergeben, wenn die Drehsperre losgelassen wird.
Bemerkungen
Treiber verwenden die Unterbrechungs-Spin-Sperre, um den Zugriff auf den Speicher zu synchronisieren, der mit dem ISR des Interrupts gemeinsam genutzt wird. Der Treiber kann die Drehsperre loslassen, indem KeReleaseInterruptSpinLockaufgerufen wird.
Jeder Code, der ausgeführt wird, während die Unterbrechungs-Drehsperre gehalten wird, führt dies bei IRQL = DIRQL für die angegebene Interruptaus, sodass er sehr schnell ausgeführt werden muss. Weitere Informationen finden Sie unter Using Critical Sections.
Die bevorzugte Methode zum Synchronisieren einer Treiberroutine mit einem ISR ist die Verwendung der KeSynchronizeExecution Routine.
Ab Windows 8 kann ein Treiber IoConnectInterruptEx- verwenden, um eine Interruptdienstroutine zu registrieren, die bei IRQL = PASSIVE_LEVEL ausgeführt wird und für die unterbrechungssynchronisierung keine Drehsperre verwendet wird. Wenn Interrupt auf ein Interruptobjekt zeigt, das eine Verbindung mit einem passiven ISR herstellt, führt KeAcquireInterruptSpinLock zu einer Fehlerüberprüfung. Weitere Informationen finden Sie unter Using Passive-Level Interrupt Service Routines.
Anrufer müssen bei IRQL <= DIRQL für Interruptausgeführt werden. (Dies ist der Wert, den der Treiber als SynchronizeIrql Parameter von IoConnectInterrupt übergeben wird, wenn Interrupt- erstellt wird.)
Anforderungen
| Anforderung | Wert |
|---|---|
| mindestens unterstützte Client- | Windows XP |
| Header- | wdm.h |
| IRQL- | <= DIRQL |
| DDI-Complianceregeln | HwStorPortProhibitedDIs(storport) |