Freigeben über


NdisAcquireSpinLock-Makro (ndis.h)

Die NdisAcquireSpinLock-Funktion erhält eine Spinsperre, damit der Aufrufer exklusiven Zugriff auf die Ressourcen erhält, die von der Spinsperre geschützt werden.

Syntax

void NdisAcquireSpinLock(
  [in]  _SpinLock
);

Parameter

[in] _SpinLock

Zeiger auf eine undurchsichtige Spinsperre, die bereits vom Aufrufer initialisiert wurde.

Rückgabewert

Keine

Bemerkungen

Der Treiber muss eine Variable vom Typ NDIS_SPIN_LOCK mit NdisAllocateSpinLock initialisieren, bevor er eine andere NdisXxxSpinLock-Funktion aufruft. Der Treiber muss einen residenten Speicher für die von er verwendeten Drehsperren bereitstellen.

Nach dem Erwerb einer Drehsperre mit NdisAcquireSpinLock muss der Aufrufer diese Sperre mit einem Aufruf von NdisReleaseSpinLock freigeben. Ein Treiber muss nach jedem Aufruf von NdisAcquireSpinLock NdisReleaseSpinLock aufrufen. Andernfalls tritt ein Deadlock auf, der den Treiber hängt.

Eine mit NdisAcquireSpinLock erworbene Spinsperre muss mit NdisReleaseSpinLock freigegeben werden. Eine mit NdisDprAcquireSpinLock erworbene Spinsperre muss mit NdisDprReleaseSpinLock freigegeben werden.

Ein Treiber sollte niemals eine Drehsperre für einen längeren Zeitraum (mehr als ein paar Anweisungen) halten. Wenn Sie eine Drehsperre länger als 25 Mikrosekunden halten, beeinträchtigt dies sowohl die System- als auch die Treiberleistung.

Ein Miniporttreiber kann keine Spinsperre verwenden, um Ressourcen zu schützen, die seine anderen Funktionen mit dem MiniportInterrupt und/oder teilen. MiniportDisableInterruptEx-Funktionen . Stattdessen muss ein Miniporttreiber NdisMSynchronizeWithInterruptEx aufrufen, damit seine MiniportSynchronizeInterrupt-Funktion greift auf diese freigegebenen Ressourcen mit demselben DIRQL zu, unter dem ihre
Die Funktionen MiniportInterrupt und/oder MiniportDisableInterruptEx funktionieren.

Weitere Informationen zum Abrufen und Freigeben von NDIS-Spinsperren finden Sie unter Synchronisierung und Benachrichtigung in Netzwerktreibern.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt für NDIS 6.0- und NDIS 5.1-Treiber (siehe NdisAcquireSpinLock (NDIS 5.1)) in Windows Vista. Unterstützt für NDIS 5.1-Treiber (siehe NdisAcquireSpinLock (NDIS 5.1)) in Windows XP.
Zielplattform Universell
Header ndis.h (einschließlich Ndis.h)
Bibliothek Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln Irql_Synch_Function(ndis), SpinLock(ndis), SpinLockBalanced(ndis), SpinLockDpr(ndis), SpinLockDprRelease(ndis), SpinlockRelease(ndis)

Weitere Informationen

MiniportDisableInterruptEx

MiniportHaltEx

MiniportInitializeEx

MiniportInterrupt

MiniportSynchronizeInterrupt

NdisAllocateSpinLock

NdisDprAcquireSpinLock

NdisMSynchronizeWithInterruptEx

NdisReleaseSpinLock