Freigeben über


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

Weitere Informationen

InterlockedCompareExchange

InterlockedCompareExchangePointer

InterlockedExchange