InterlockedCompareExchangePointer 関数 (wdm.h)

InterlockedCompareExchangePointer ルーチンは、Destination が指す入力ポインター値とポインター値 Comperand を比較するアトミック操作を実行します。

構文

PVOID InterlockedCompareExchangePointer(
  [in, out] PVOID volatile *Destination,
  [in]      PVOID          Exchange,
  [in]      PVOID          Comperand
);

パラメーター

[in, out] Destination

PVOID 値へのポインター。 (Destination) = Comperand の場合、ルーチンは (Destination) をに設定 Exchange。

[in] Exchange

設定する PVOID 値 (*変換先) を指定します。

[in] Comperand

(*Destination) と比較する PVOID 値を指定します

戻り値

InterlockedCompareExchangePointer は、*Destination (ルーチンへのエントリ時にこのポインターの値) にポインターの元の値を返します。

解説

Comperand が Destination と等しい場合、Destination は同じ値にExchange。 それ以外の場合、*変換先 は変更されません。

InterlockedCompareExchangePointer は、複数のスレッドで共有されるポインター変数のテストと更新を同期する高速でアトミックな方法を提供します。 Destination が指す入力値が Comperand の値と等しい場合、Destination が指す値は、Exchange の値に設定されます

InterlockedCompareExchangePointer は速度を目的として設計され、通常はコンパイラによってインラインで実装されます。 InterlockedCompareExchangePointer は、他の InterlockedXxx 呼び出しに関してだけアトミックです。 スピン ロックは使用されません。ページ可能なデータで安全に使用できます。

InterlockedCompareExchangePointer ルーチンは、他の InterlockedXxx 呼び出しに関してだけアトミックです。

インターロックされた操作は、キャッシュされていないメモリでは使用できません。

要件

   
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム デスクトップ
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h、ミニポート.h を含む)
IRQL 任意のレベル

関連項目

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangePointer