Angeben eines Rückrufsynchronisierungsmodus
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.
Die archivierten UMDF 1-Beispiele finden Sie im Treiberbeispielupdate Windows 11, Version 22H2 – Mai 2022.
Weitere Informationen finden Sie unter Erste Schritte mit UMDF.
Der Treiber kann angeben, wie seine Rückruffunktionen vom Framework aufgerufen werden. Der Treiber gibt einen Synchronisierungsmodus (oder Sperrmodus) für ein Gerät an, bevor die IWDFDriver::CreateDevice-Methode aufgerufen wird, um ein Geräteobjekt für das Gerät zu erstellen. Um den Synchronisierungsmodus anzugeben, sollte der Treiber die IWDFDeviceInitialize::SetLockingConstraint-Methode aufrufen. Der Treiber empfängt einen Zeiger auf die IWDFDeviceInitialize-Schnittstelle , wenn seine IDriverEntry::OnDeviceAdd-Methode aufgerufen wird, um das Gerät dem System hinzuzufügen.
Der Treiber kann einen der folgenden Werte aus dem WDF_CALLBACK_CONSTRAINT Enumerationstyp im LockType-Parameter von IWDFDeviceInitialize::SetLockingConstraint angeben, um den Sperrmodus zu identifizieren. Der Typ der angegebenen Einschränkung (oder Sperrung) hängt davon ab, wie viel Parallelität das Hardwaregerät ausnutzen kann und wie viel der Treiber verarbeiten kann.
Wert | Bedeutung |
---|---|
Keine (0) |
Gibt an, dass keine Rückruffunktionen im Treiber synchronisiert werden. |
WdfDeviceLevel (1) |
Gibt an, dass alle Warteschlangenrückruffunktionen im Treiber synchronisiert werden. |
Hinweis Wenn der Treiber IWDFDeviceInitialize::SetLockingConstraint nicht aufruft, um einen Wert anzugeben, legt das Framework den Standardwert dieser Eigenschaft auf WdfDeviceLevel fest.
Einschränkungen gelten nur für Warteschlangenrückruffunktionen und nicht für Plug & Play -Funktionen (PnP) und Energieverwaltungsrückruffunktionen. Warteschlangenrückruffunktionen umfassen Folgendes:
Automatische Dispatch-Rückruffunktionen, z. B. IQueueCallbackRead::OnRead und IQueueCallbackWrite::OnWrite. Weitere Informationen finden Sie unter Rückruffunktionen für E/A-Warteschlangenereignisse.
Rückruffunktionen für Warteschlangenstatusänderungen, z. B. IQueueCallbackStateChange::OnStateChange.
Rückruffunktionen für Anforderungsabbruch, z. B. IRequestCallbackCancel::OnCancel.
Dateibereinigungs- und Schließen-Rückruffunktionen, z. B. IFileCallbackCleanup::OnCleanupFile und IFileCallbackClose::OnCloseFile.
Rückruffunktionen für die Anforderungsvervollständigung (IRequestCallbackRequestCompletion::OnCompletion) sind keine Warteschlangenrückruffunktionen. Daher werden sie nicht synchronisiert.