InterlockedCompareExchangePointer 函数 (miniport.h)
InterlockedCompareExchangePointer 例程执行原子作,将 目标 指向的输入指针值与 Compareand的指针值进行比较。
语法
PVOID InterlockedCompareExchangePointer(
[in, out] PVOID volatile *Destination,
[in] PVOID Exchange,
PVOID Comperand
);
参数
[in, out] Destination
指向 PVOID 值的指针。 如果 (*Destination) = Comparand,则例程集 (*Destination) Exchange。
[in] Exchange
指定要设置的 PVOID 值(*目标)。
Comperand
指定要与 (**Destination*) 进行比较的 PVOID 值。
返回值
InterlockedCompareExchangePointer 返回位于 *Destination 的指针的原始值(即,此指针位于例程条目的值)。
言论
如果 Comparand 等于 *Destination,则 *Destination 设置为等于 exchange 。 否则,*目标 保持不变。
InterlockedCompareExchangePointer 提供了一种快速、原子的方式,用于同步由多个线程共享的指针变量的测试和更新。 如果 Destination 指向的输入值 等于 Comparand的值,则 Destination 指向的值设置为 exchange的值。
InterlockedCompareExchangePointer 设计为速度,通常由编译器内联实现。 InterlockedCompareExchangePointer 仅在其他 InterlockedXxx 调用方面是原子的。 它不使用旋转锁,可以安全地用于可分页数据。
InterlockedCompareExchangePointer 例程仅在其他 InterlockedXxx 调用方面是原子的。
不能对非缓存内存使用互锁作。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 桌面 |
标头 | miniport.h (包括 Wdm.h、Ntddk.h、Ntifs.h、Miniport.h) |
IRQL | 任何级别 |