Freigeben über


IWDFInterrupt::TryToAcquireInterruptLock-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 TryToAcquireInterruptLock Methode erhält die Unterbrechungssperre, wenn kein anderer Thread sie bereits erworben hat.

Syntax

BOOLEAN TryToAcquireInterruptLock();

Rückgabewert

Die Methode gibt TRUE zurück, wenn die Unterbrechungssperre erfolgreich abgerufen wurde. Andernfalls gibt die Methode FALSE zurück.

Bemerkungen

Im Gegensatz zu IWDFInterrupt::AcquireInterruptLock, IWDFInterrupt::TryToAcquireInterruptLock wartet nicht, bis die Unterbrechungssperre verfügbar ist, wenn ein anderer Thread sie hält.

Beim Ausführen in einem beliebigen Thread, z. B. einer E/A-Warteschlangenrückrufmethode, müssen Treiber IWDFInterrupt::TryToAcquireInterruptLock anstelle von IWDFInterrupt::AcquireInterruptLockaufrufen. Beispielsweise ruft der Treiber IWDFInterrupt::TryToAcquireInterruptLock von IQueueCallbackRead::OnReadauf. Dadurch wird die Möglichkeit eines Deadlocks vermieden, wie im Abschnitt "Anmerkungen" von IWDFInterrupt::AcquireInterruptLockbeschrieben.

Der Treiber darf nicht versuchen, die Sperre rekursiv abzurufen. Wenn eine Verbindung mit dem Debugger besteht, führt das Framework in diesem Szenario einen Haltepunkt ein.

Weitere Informationen zur manuellen Unterbrechungssperre finden Sie unter Synchronisieren von Interruptcode.

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

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

IWDFInterrupt-

IWDFInterrupt::AcquireInterruptLock

WdfInterruptTryToAcquireLock-