ExInterlockedAddLargeInteger-Funktion (wdm.h)
Die ExInterlockedAddLargeInteger Routine fügt der angegebenen Variablen als atomische Operation einen großen ganzzahligen Wert hinzu.
Syntax
LARGE_INTEGER ExInterlockedAddLargeInteger(
[in, out] PLARGE_INTEGER Addend,
[in] LARGE_INTEGER Increment,
[in, out] PKSPIN_LOCK Lock
);
Parameter
[in, out] Addend
Ein Zeiger auf die Variable, die vom wert Increment angepasst werden soll.
[in] Increment
Gibt einen Wert an, der addendhinzugefügt werden soll.
[in, out] Lock
Ein Zeiger auf eine Drehsperre, die verwendet werden soll, um den Zugriff auf Addendzu synchronisieren.
Rückgabewert
ExInterlockedAddLargeInteger den Anfangswert des Addend -Parameters zurück.
Bemerkungen
Supportroutinen, die verriegelte Vorgänge ausführen, werden angenommen, dass sie nicht in der Lage sind, einen Seitenfehler zu verursachen. Das heißt, weder ihr Code noch eine der Daten, die sie berühren, können zu einem Seitenfehler führen, ohne das System aufzurufen. Sie verwenden Drehsperren, um Atomität auf symmetrischen Multiprozessormaschinen zu erreichen. Der Aufrufer muss residenten Speicher für die Lockbereitstellen, die mit KeInitializeSpinLock initialisiert werden muss, bevor der anfängliche Aufruf eines ExInterlockedXxx.
Die Lock an ExInterlockedAddLargeInteger übergeben wird, wird verwendet, um sicherzustellen, dass der Add-Vorgang auf Addend in Bezug auf alle anderen Vorgänge auf demselben Wert atomisch ist, die mit dieser Drehsperre synchronisiert werden.
ExInterlockedAddLargeInteger Masken unterbrechen. Daher kann sie für die Synchronisierung zwischen einem ISR- und einem anderen Gerätetreibercode verwendet werden, vorausgesetzt, das gleiche Lock wird nie in einem Aufruf einer Routine wiederverwendet, die bei IRQL = DISPATCH_LEVEL ausgeführt wird.
Beachten Sie, dass Anrufe an InterlockedXxx in Bezug auf andere InterlockedXxx Aufrufe ohne von Aufrufern bereitgestellte Drehsperren atomar sind.
Aufrufer von ExInterlockedAddLargeInteger bei jedem IRQL ausgeführt werden. Der Speicher für den Addend Parameter muss bei allen IRQLs vorhanden sein.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar in Windows 2000 und höheren Versionen von Windows. In Windows 98 oder Windows Me nicht verfügbar. |
Zielplattform- | Universal |
Header- | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |
IRQL- | Beliebige Ebene (siehe Abschnitt "Hinweise") |