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
指定要設定 (*目的地) 的 PVOID 值。
[in] Comperand
指定要與 (*目的地) 比較的 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 | 任何層級 |