Auf Englisch lesen

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 Comperandverweist.

Syntax

C++
PVOID InterlockedCompareExchangePointer(
  [in, out] PVOID volatile *Destination,
  [in]      PVOID          Exchange,
  [in]      PVOID          Comperand
);

Parameter

[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.

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 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.

Anforderungen

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

Siehe auch

InterlockedCompareExchange

InterlockedExchange-

InterlockedExchangePointer-