ExInterlockedAddUlong 函式 (wdm.h)
ExInterlockedAddUlong 例程會將不帶正負號的長值新增至指定的不帶正負號整數作為不可部分完成的作業。
ULONG ExInterlockedAddUlong(
[in, out] PULONG Addend,
[in] ULONG Increment,
[in, out] PKSPIN_LOCK Lock
);
[in, out] Addend
不帶正負號之長整數的指標,其值將由 Increment 值調整。
[in] Increment
指定要加入的不帶正負號長整數。
[in, out] Lock
微調鎖定的指標,用來同步存取 附加元件。
ExInterlockedAddUlong 會傳回 Addend的原始值。。
請考慮使用 InterlockedExchangeAdd,而不是此例程。 InterlockedExchangeAdd 可以更有效率,因為它不會使用微調鎖定,而且由編譯程式內嵌。
支援執行連鎖作業的例程會假設無法造成頁面錯誤。 也就是說,其程式代碼和他們接觸的任何數據都不會造成頁面錯誤,而不會使系統關閉。 他們會使用微調鎖定在對稱多處理器計算機上實現不可部分完成性。 呼叫端必須提供 Lock的常駐記憶體,此記憶體必須在初始 呼叫 exInterlockedXxx之前,先使用 KeInitializeSpinLock 初始化。
傳遞至 exInterlockedAddULong Lock 可確保附加元件 上的新增作業,與同步處理這個相同微調鎖定之相同值上的任何其他作業都是不可部分完成的。
ExInterlockedAddUlong 遮罩中斷。 因此,它可用於ISR與其他驅動程式程式代碼之間的同步處理,前提是在呼叫 IRQL = DISPATCH_LEVEL 的例程時,永遠不會重複使用相同的 Lock。
請注意,InterlockedXxx 的呼叫,保證對其他 Interlocked Xxx 呼叫不可部分完成,而不需呼叫端提供的微調鎖定。
ExInterlockedAddUlong 呼叫端在任何 IRQL 上執行。 Addend 參數的記憶體必須位於所有 IRQL。
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows 2000 開始提供。 |
目標平臺 | 普遍 |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任何層級 (請參閱一節) |