次の方法で共有


InterlockedCompareExchangePointer 関数 (ミニポート.h)

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

構文

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

パラメーター

[in, out] Destination

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

[in] Exchange

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

Comperand

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

戻り値

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

備考

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

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

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

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

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

必要条件

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

関連項目

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangePointer