次の方法で共有


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 の場合、ルーチンは (*宛先) を Exchange に設定します。

[in] Exchange

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

[in] Comperand

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

戻り値

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

注釈

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

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

InterlockedCompareExchangePointer は速度を考慮して設計されており、通常はコンパイラによってインラインで実装されます。 InterlockedCompareExchangePointer は、他の InterlockedXxx 呼び出しに対してのみアトミックです。 これはスピン ロックを使用せず、ページング可能なデータで安全に使用できます。

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

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

要件

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

こちらもご覧ください

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangePointer