Freigeben über


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

Weitere Informationen

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangePointer