InterlockedExchangePointer-Funktion (wdm.h)
Die InterlockedExchangePointer Routine führt einen atomischen Vorgang aus, der einen Zeiger auf einen neuen Wert festlegt.
Syntax
PVOID InterlockedExchangePointer(
[in, out] PVOID volatile *Target,
[in, optional] PVOID Value
);
Parameter
[in, out] Target
Ein Zeiger auf einen PVOID-Wert. Die Routine legt (*Target) auf Wertfest.
[in, optional] Value
Gibt den PVOID-Wert an, der festgelegt werden soll (*Target) auf.
Rückgabewert
InterlockedExchangePointer- den ursprünglichen Wert des Zeigers bei *Target zurück (d. a. den Wert dieses Zeigers beim Einstieg in die Routine).
Bemerkungen
InterlockedExchangePointer- bietet eine schnelle, atomare Möglichkeit zum Synchronisieren der Aktualisierung einer Zeigervariable, die von mehreren Threads gemeinsam genutzt wird.
InterlockedExchangePointer ist für Geschwindigkeit ausgelegt und wird in der Regel von einem Compiler inline implementiert. InterlockedExchangePointer ist nur in Bezug auf andere InterlockedXxx Aufrufe atomisch. Es verwendet keine Drehsperre und kann auf seitenfähigen Daten sicher verwendet werden.
Der parameter Target sollte je nach Systemtyp auf einer 32-Bit- oder 64-Bit-Grenze ausgerichtet werden, um eine bessere Leistung zu erzielen.
Ein Aufruf von InterlockedExchangePointer- 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 |