次の方法で共有


InterlockedExchangePointer 関数 (miniport.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 miniport.h (Wdm.h、Ntddk.h、Ntifs.h、Miniport.h を含む)
IRQL 任意のレベル

こちらもご覧ください

InterlockedCompareExchange

InterlockedCompareExchangePointer

InterlockedExchange