InterlockedExchangePointer 関数 (wdm.h)

InterlockedExchangePointer ルーチンは、ポインターを新しい値に設定するアトミック操作を実行します。

構文

PVOID InterlockedExchangePointer(
  [in, out]      PVOID volatile *Target,
  [in, optional] PVOID          Value
);

パラメーター

[in, out] Target

PVOID 値へのポインター。 ルーチンは (*Target) を Value に設定 します

[in, optional] Value

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

戻り値

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

注釈

InterlockedExchangePointer は、複数のスレッドで共有されるポインター変数の更新を同期する高速でアトミックな方法を提供します。

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

パフォーマンスを向上させるには、システムの種類に応じて、 Target パラメーターを 32 ビットまたは 64 ビットの境界に配置する必要があります。

InterlockedExchangePointer の呼び出しは、他の InterlockedXxx 呼び出しに関してのみアトミックです。

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

要件

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

こちらもご覧ください

InterlockedCompareExchange

InterlockedCompareExchangePointer

InterlockedExchange