InterlockedCompareExchangePointer-Funktion (miniport.h)
Die InterlockedCompareExchangePointer Routine führt einen atomischen Vorgang aus, der den Eingabezeigerwert vergleicht, auf den durch Destination mit dem Zeigerwert Comparandverwiesen wird.
Syntax
PVOID InterlockedCompareExchangePointer(
[in, out] PVOID volatile *Destination,
[in] PVOID Exchange,
PVOID Comperand
);
Parameter
[in, out] Destination
Ein Zeiger auf einen PVOID-Wert. Wenn (*Destination) = Comparand, wird die RoutineDestination) auf Exchangefestgelegt.
[in] Exchange
Gibt den PVOID-Wert an, der festgelegt werden soll (*Destination) auf.
Comperand
Gibt den PVOID-Wert an, der mit (**Destination*) verglichen werden soll.
Rückgabewert
InterlockedCompareExchangePointer- den ursprünglichen Wert des Zeigers bei *Destination zurück (d. a. der Wert dieses Zeigers beim Eintrag in die Routine).
Bemerkungen
Wenn Comparand- gleich *Ziel-ist, wird *Ziel- auf Exchange-festgelegt. Andernfalls ist *Ziel- unverändert.
InterlockedCompareExchangePointer bietet eine schnelle, atomare Möglichkeit, das Testen und Aktualisieren einer Zeigervariable zu synchronisieren, die von mehreren Threads gemeinsam genutzt wird. Wenn der von Destination auf den Wert Comparandverweist, wird der wert, auf den Destination verweist, auf den Wert Exchangefestgelegt.
InterlockedCompareExchangePointer ist für Geschwindigkeit ausgelegt und wird in der Regel von einem Compiler inline implementiert. InterlockedCompareExchangePointer ist nur in Bezug auf andere InterlockedXxx Aufrufe atomisch. Es verwendet keine Drehsperre und kann auf seitenfähigen Daten sicher verwendet werden.
Die InterlockedCompareExchangePointer Routine ist nur in Bezug auf andere InterlockedXxx Aufrufe atomisch.
Interlocked-Vorgänge können nicht für nicht zwischengespeicherten Arbeitsspeicher verwendet werden.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Ab Windows 2000 verfügbar. |
Zielplattform- | Desktop |
Header- | miniport.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h) |
IRQL- | Beliebige Ebene |