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) |