InterlockedCompareExchangePointer-Funktion (miniport.h)
Die InterlockedCompareExchangePointer-Routine führt einen atomaren Vorgang aus, der den Eingabezeigerwert vergleicht, auf den von Destination mit dem Zeigerwert Comparand verwiesen wird.
Syntax
PVOID InterlockedCompareExchangePointer(
[in, out] PVOID volatile *Destination,
[in] PVOID Exchange,
PVOID Comperand
);
Parameter
[in, out] Destination
Ein Zeiger auf einen PVOID-Wert. Wenn (*Ziel) = Comparand, dann legt die Routine (*Ziel) auf Exchange fest.
[in] Exchange
Gibt den PVOID-Wert an, auf den (*Ziel) festgelegt werden soll.
Comperand
Gibt den PVOID-Wert an, mit dem (**Ziel*) verglichen werden soll.
Rückgabewert
InterlockedCompareExchangePointer gibt den ursprünglichen Wert des Zeigers auf *Ziel zurück (d. a. den Wert dieses Zeigers beim Einstieg in die Routine).
Hinweise
Wenn Comparand gleich *Ziel ist, wird *Ziel auf Exchange festgelegt. Andernfalls bleibt *Ziel unverändert.
InterlockedCompareExchangePointer bietet eine schnelle, atomare Möglichkeit zum Synchronisieren des Testens und Aktualisierens einer Zeigervariable, die von mehreren Threads gemeinsam genutzt wird. Wenn der Eingabewert, auf den von Destination verwiesen wird, dem Wert von Comparand entspricht, wird der Wert, auf den von Destination verwiesen wird, auf den Wert von Exchange festgelegt.
InterlockedCompareExchangePointer ist auf Geschwindigkeit ausgelegt und wird in der Regel inline von einem Compiler implementiert. InterlockedCompareExchangePointer ist nur in Bezug auf andere interlockedXxx-Aufrufe atomar. Es verwendet keine Spinsperre und kann sicher für auslagerungsfähige Daten verwendet werden.
Die InterlockedCompareExchangePointer-Routine ist nur in Bezug auf andere interlockedXxx-Aufrufe atomar.
Ineinander verriegelte 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 | miniport.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h, Miniport.h) |
IRQL | Beliebige Ebene |