次の方法で共有


InterlockedCompareExchangePointer 関数 (wdm.h)

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

構文

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

パラメーター

[in, out] Destination

PVOID 値へのポインター。 (*宛先) = Comperandの場合、ルーチンは (*宛先) を Exchange に設定します。

[in] Exchange

(*Destination) を設定する PVOID 値を指定します。

[in] Comperand

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

戻り値

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

備考

Comperand が *Destinationに等しい場合、 *Destination は Exchange 等しく設定されます。 それ以外の場合、*Destination は変更されません。

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