InterlockedExchangePointer-Funktion (miniport.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 (*Ziel) auf Value fest.
[in, optional] Value
Gibt den PVOID-Wert an, auf den (*Ziel) festgelegt werden soll.
Rückgabewert
InterlockedExchangePointer gibt den ursprünglichen Wert des Zeigers bei *Target zurück (d. a. den Wert dieses Zeigers beim Eintrag in die Routine).
Hinweise
InterlockedExchangePointer bietet eine schnelle, atomare Möglichkeit zum Synchronisieren der Aktualisierung einer Zeigervariable, die von mehreren Threads gemeinsam genutzt wird.
InterlockedExchangePointer ist auf Geschwindigkeit ausgelegt und wird in der Regel von einem Compiler inline implementiert. InterlockedExchangePointer ist nur in Bezug auf andere interlockedXxx-Aufrufe atomar. Es verwendet keine Spin-Sperre und kann sicher für ausgelagerte Daten verwendet werden.
Der Target-Parameter sollte je nach Systemtyp entweder an 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 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 | miniport.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h) |
IRQL | Beliebige Ebene |