ExInterlockedCompareExchange64-Makro (wdm.h)

Die ExInterlockedCompareExchange64-Routine vergleicht eine ganzzahlige Variable mit einer anderen und legt die erste Variable auf einen vom Aufrufer angegebenen Wert fest.

Syntax

void ExInterlockedCompareExchange64(
  [in, out]  Destination,
  [in]       Exchange,
             Comperand,
  [in]       Lock
);

Parameter

[in, out] Destination

Ein Zeiger auf eine ganze Zahl, die verglichen und möglicherweise ersetzt wird.

[in] Exchange

Ein Zeiger auf eine ganzzahlige Zahl, die bei Ziel ersetzt wird, wenn der Vergleich zu Gleichheit führt.

Comperand

Ein Zeiger auf eine ganze Zahl, mit der der Wert am Ziel verglichen wird.

[in] Lock

Ein Zeiger auf eine vom Aufrufer zugewiesene Spinsperre, die verwendet wird, wenn das Hostsystem keinen 8-Byte-Atomvergleichs- und Austauschvorgang unterstützt.

Rückgabewert

Keine

Bemerkungen

Dieses Makro umschließt InterlockedCompareExchange64 oder ExfInterlockedCompareExchange64 und übernimmt den Rückgabewert des Typs LONGLONG.

ExInterlockedCompareExchange64 testet und ersetzt möglicherweise den Wert einer bestimmten Variablen. Für die meisten zugrunde liegenden Mikroprozessoren wird diese Routine vom Compiler inline implementiert, um als atomarer Vorgang auszuführen. Wenn eine Spinsperre verwendet wird, kann diese Routine nur für nicht ausseitige Parameter sicher verwendet werden.

Wenn Destination und Comparand ungleich sind, gibt ExInterlockedCompareExchange64 einfach den Wert von Destination zurück.

ExInterlockedCompareExchange64 ist nur in Bezug auf andere (Ex)InterlockedXxx-Aufrufe atomar.

Aufrufer von ExInterlockedCompareExchange64 können in jedem IRQL ausgeführt werden. Der Speicher für den Parameter Destination, Comparand und Exchange sowie die Listeneinträge müssen an allen IRQLs ansässig sein.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 2000.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Beliebige Ebene (siehe Abschnitt Hinweise)

Weitere Informationen

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangeAdd