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 | 任意のレベル |