Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die InterlockedCompareExchangePointer Routine führt einen atomischen Vorgang aus, der den Eingabezeigerwert vergleicht, auf den Destination mit dem Zeigerwert Comperandverweist.
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 (*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 |