ExInterlockedAddLargeInteger-Funktion (wdm.h)

Die ExInterlockedAddLargeInteger-Routine fügt der angegebenen Variablen einen großen ganzzahligen Wert als atomischen Vorgang 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 durch den Inkrementwert angepasst werden soll.

[in] Increment

Gibt einen Wert an, der zu Addend hinzugefügt werden soll.

[in, out] Lock

Ein Zeiger auf eine Drehsperre, die zum Synchronisieren des Zugriffs auf Addend verwendet werden soll.

Rückgabewert

ExInterlockedAddLargeInteger gibt den Anfangswert des Addend-Parameters zurück.

Hinweise

Bei Unterstützungsroutinen, die ineinandergreifende Vorgänge ausführen, wird 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 einen Seitenfehler verursachen, ohne das System herunter zu bringen. Sie verwenden Spin-Sperren, um Atomarität auf symmetrischen Multiprozessorcomputern zu erreichen. Der Aufrufer muss residenten Speicher für die Sperre bereitstellen, der vor dem ersten Aufruf eines ExInterlock-Xxx-Elements mit KeInitializeSpinLock initialisiert werden muss.

Die an ExInterlockedAddLargeInteger übergebene Sperre wird verwendet, um sicherzustellen, dass der Add-Vorgang für Addend in Bezug auf alle anderen Vorgänge mit demselben Wert, die mit derselben Drehsperre synchronisiert werden, atomar ist.

ExInterlockedAddLargeInteger maskiert Interrupts. Daher kann es für die Synchronisierung zwischen einer ISR und einem anderen Gerätetreibercode verwendet werden, vorausgesetzt, dass dieselbe Sperre nie in einem Aufruf einer Routine wiederverwendet wird, die unter IRQL = DISPATCH_LEVEL ausgeführt wird.

Beachten Sie, dass Aufrufe von InterlockedXxx in Bezug auf andere interlockedXxx-Aufrufe ohne vom Aufrufer bereitgestellte Drehsperren garantiert atomar sind.

Aufrufer von ExInterlockedAddLargeInteger werden bei jedem IRQL ausgeführt. Der Speicher für den Addend-Parameter muss bei allen IRQLs vorhanden sein.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows 2000 und höheren Versionen von Windows. Nicht verfügbar in Windows 98 oder Windows Me.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Beliebige Ebene (siehe Abschnitt "Hinweise")

Weitere Informationen

ExInterlockedAddUlong

InterlockedDecrement

InterlockedIncrement

KeInitializeSpinLock