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