InterlockedCompareExchangePointer-Funktion (wdm.h)
Die InterlockedCompareExchangePointer-Routine führt einen atomischen Vorgang aus, der den Eingabezeigerwert vergleicht, auf den Destination mit dem Zeigerwert Comperand verweist.
Syntax
PVOID InterlockedCompareExchangePointer(
[in, out] PVOID volatile *Destination,
[in] PVOID Exchange,
[in] PVOID Comperand
);
Parameter
[in, out] Destination
Ein Zeiger auf einen PVOID-Wert. Wenn (*Ziel) = Comperand, dann legt die Routine (*Ziel) auf Exchange fest.
[in] Exchange
Gibt den PVOID-Wert an, auf den (*Ziel) festgelegt werden soll.
[in] Comperand
Gibt den PVOID-Wert an, der mit (*Ziel) verglichen werden soll.
Rückgabewert
InterlockedCompareExchangePointer gibt den ursprünglichen Wert des Zeigers bei *Destination zurück (d. a. den Wert dieses Zeigers beim Eintrag in die Routine).
Hinweise
Wenn Comperand gleich *Destination ist, wird *Destination auf equal Exchange festgelegt. Andernfalls bleibt *Destination unverändert.
InterlockedCompareExchangePointer bietet eine schnelle, atomare Möglichkeit zum Synchronisieren des Testens und Aktualisierens einer Zeigervariablen, die von mehreren Threads gemeinsam genutzt wird. Wenn der Eingabewert, auf den von Destination verwiesen wird, dem Wert von Comperand entspricht, wird der Wert, auf den destination verweist, auf den Wert von Exchange festgelegt.
InterlockedCompareExchangePointer ist auf Geschwindigkeit ausgelegt und wird in der Regel von einem Compiler inline implementiert. InterlockedCompareExchangePointer ist nur in Bezug auf andere interlockedXxx-Aufrufe atomar. Es verwendet keine Spin-Sperre und kann sicher für ausgelagerte Daten verwendet werden.
Die InterlockedCompareExchangePointer-Routine ist nur in Bezug auf andere interlockedXxx-Aufrufe atomar.
Ineinandergreifende Vorgänge können nicht für nicht zwischengespeicherten Arbeitsspeicher verwendet werden.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar ab Windows 2000. |
Zielplattform | Desktop |
Kopfzeile | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h) |
IRQL | Beliebige Ebene |