Freigeben über


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

Siehe auch

InterlockedCompareExchange

InterlockedCompareExchangePointer

InterlockedExchange-