NdisDprAcquireSpinLock-Makro (ndis.h)
Die NdisDprAcquireSpinLock Funktion erhält eine Drehsperre, sodass der Aufrufer den Zugriff auf Ressourcen synchronisieren kann, die von nicht-ISR-Treiberfunktionen gemeinsam genutzt werden.
Syntax
void NdisDprAcquireSpinLock(
[in] _SpinLock
);
Parameter
[in] _SpinLock
Zeiger auf eine undurchsichtige Drehsperre, die bereits vom Aufrufer initialisiert wurde.
Rückgabewert
Nichts
Bemerkungen
Der Miniporttreiber muss eine Variable vom Typ NDIS_SPIN_LOCK mit NdisAllocateSpinLock- initialisieren, bevor eine andere Ndis aufgerufen wird. SpinLock--Funktion. Der Treiber muss einen residenten Speicher für die von ihr verwendeten Spin-Sperren bereitstellen.
NdisDprAcquireSpinLock ist eine optimierte Version von NdisAcquireSpinLock, dass ein Miniporttreiber nur während der Ausführung bei IRQL = DISPATCH_LEVEL aufgerufen werden kann.
Nach dem Abrufen einer Drehsperre mit NdisDprAcquireSpinLockmuss der Aufrufer diese Sperre mit einem Aufruf von NdisDprReleaseSpinLockfreigeben. Ein Miniporttreiber muss NdisDprReleaseSpinLock nach jedem Aufruf von NdisDprAcquireSpinLockaufrufen. Andernfalls tritt ein Deadlock auf und hängt den Treiber.
Eine mit NdisDprAcquireSpinLock erworbene Drehsperre muss mit NdisDprReleaseSpinLockfreigegeben werden. Eine mit NdisAcquireSpinLock erworbene Drehsperre muss mit NdisReleaseSpinLockfreigegeben werden.
Ein Treiber sollte niemals eine Drehsperre für einen längeren Zeitraum (mehr als ein paar Anweisungen) halten. Das Halten einer Drehsperre für mehr als 25 Mikrosekunden beeinträchtigt sowohl die System- als auch die Treiberleistung.
Ein Miniporttreiber kann keine Drehsperre verwenden, um Ressourcen zu schützen, die ihre anderen Funktionen mit dem MiniportInterrupt- und/oder
MiniportDisableInterruptEx Funktionen. Stattdessen muss ein Miniporttreiber anrufen
NdisMSynchronizeWithInterruptEx so, dass sie
MiniportSynchronizeInterrupt Funktion greift auf solche gemeinsam genutzten Ressourcen in derselben DIRQL zu, an der sie sich befinden
MiniportInterrupt und/oder MiniportDisableInterruptEx Funktionen ausführen.
Weitere Informationen zum Abrufen und Freigeben von NDIS-Drehsperren finden Sie unter Synchronisierung und Benachrichtigung in Netzwerktreibern.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Unterstützt für NDIS 6.0- und NDIS 5.1-Treiber (siehe NdisDprAcquireSpinLock (NDIS 5.1)) in Windows Vista. Unterstützt für NDIS 5.1-Treiber (siehe NdisDprAcquireSpinLock (NDIS 5.1)) in Windows XP. |
Zielplattform- | Universal |
Header- | ndis.h (include Ndis.h) |
Library | Ndis.lib |
IRQL- | DISPATCH_LEVEL |
DDI-Complianceregeln | Irql_Synch_Function(ndis), SpinLock(ndis), SpinLockBalanced(ndis), SpinLockDpr(ndis), SpinLockDprRelease(ndis), SpinlockRelease(ndis) |