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

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

構文

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

パラメーター

[in, out] Destination

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

[in] Exchange

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

Comperand

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

戻り値

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

注釈

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

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

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

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

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

要件

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

こちらもご覧ください

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangePointer