InterlockedCompareExchangePointer 函数 (wdm.h)

InterlockedCompareExchangePointer 例程执行原子操作,将 Destination 指向的输入指针值与指针值 Comperand 进行比较。

语法

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

参数

[in, out] Destination

指向 PVOID 值的指针。 如果 (*Destination) = Comperand,则例程会将 (*Destination) 设置为 Exchange

[in] Exchange

指定要 (*Destination) 设置的 PVOID 值。

[in] Comperand

指定要与 (*Destination) 进行比较的 PVOID 值。

返回值

InterlockedCompareExchangePointer 在 *Destination (返回指针的原始值,即在例程) 入口处此指针的值。

注解

如果 Comperand 等于 *Destination,则 *Destination 设置为等于 Exchange。 否则,*目标 不变。

InterlockedCompareExchangePointer 提供了一种快速的原子方法,用于同步由多个线程共享的指针变量的测试和更新。 如果 Destination 指向的输入值等于 Comperand 的值,则 Destination 指向的值将设置为 Exchange 的值。

InterlockedCompareExchangePointer 专为速度而设计,通常由编译器内联实现。 InterlockedCompareExchangePointer 仅在其他 InterlockedXxx 调用方面是原子的。 它不使用旋转锁,可以安全地用于可分页数据。

InterlockedCompareExchangePointer 例程仅相对于其他 InterlockedXxx 调用是原子的。

互锁操作不能用于非缓存内存。

要求

要求
最低受支持的客户端 从 Windows 2000 开始可用。
目标平台 桌面
标头 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h、Miniport.h)
IRQL 任何级别

另请参阅

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangePointer