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