InterlockedCompareExchangePointer-Funktion (wdm.h)
Die InterlockedCompareExchangePointer Routine führt einen atomischen Vorgang aus, der den Eingabezeigerwert vergleicht, auf den Destination mit dem Zeigerwert Comperandverweist.
PVOID InterlockedCompareExchangePointer(
[in, out] PVOID volatile *Destination,
[in] PVOID Exchange,
[in] PVOID Comperand
);
[in, out] Destination
Ein Zeiger auf einen PVOID-Wert. Wenn (*Destination) = Comperand, wird die RoutineDestination) auf Exchangefestgelegt.
[in] Exchange
Gibt den PVOID-Wert an, der festgelegt werden soll (*Destination) auf.
[in] Comperand
Gibt den PVOID-Wert an, der mit (*Destination) verglichen werden soll.
InterlockedCompareExchangePointer- den ursprünglichen Wert des Zeigers bei *Destination zurück (d. a. der Wert dieses Zeigers beim Eintrag in die Routine).
Wenn Comperand gleich *Destinationist, wird *Ziel- auf den Wert 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 Comperandverweist, 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.
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Ab Windows 2000 verfügbar. |
Zielplattform- | Desktop |
Header- | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h) |
IRQL- | Beliebige Ebene |