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 と等しい場合、*Destination は Exchange と等しく設定されます。 それ以外の場合、*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 | 任意のレベル |