ExInterlockedCompareExchange64 マクロ (wdm.h)

ExInterlockedCompareExchange64 ルーチンは、ある整数変数を別の整数変数と比較し、等しい場合は、最初の変数を呼び出し元から指定された値に設定します。

構文

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

パラメーター

[in, out] Destination

比較され、置き換えられる可能性がある整数へのポインター。

[in] Exchange

比較の結果が等しい場合に Destination の値を置き換える整数へのポインター。

Comperand

Destination の値が比較される整数へのポインター。

[in] Lock

ホスト システムが 8 バイトのアトミック比較および交換操作をサポートしていない場合に使用される、呼び出し元によって割り当てられたスピン ロックへのポインター。

戻り値

なし

解説

このマクロは InterlockedCompareExchange64 または ExfInterlockedCompareExchange64 をラップし、LONGLONG 型の戻り値を前提としています。

ExInterlockedCompareExchange64 は、特定の変数の値をテストし、場合によっては置き換えます。 基になるほとんどのマイクロプロセッサでは、このルーチンはコンパイラによってインラインで実装され、アトミック操作として実行されます。 スピン ロックを使用する場合、このルーチンは非ページ パラメーターでのみ安全に使用できます。

DestinationComparand が等しくない場合、ExInterlockedCompareExchange64 は単に Destination の値を返します

ExInterlockedCompareExchange64 は、他 の (Ex)InterlockedXxx 呼び出しに関してのみアトミックです。

ExInterlockedCompareExchange64 の呼び出し元は、任意の IRQL で実行できます。 Destination、Comparand、および Exchange パラメーターのストレージとリスト エントリは、すべての IRQL に常駐している必要があります。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL 任意のレベル (「解説」セクションを参照)

こちらもご覧ください

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangeAdd