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 是用來確保附加元件上的附加作業相對於與這個相同微調鎖定同步處理之相同值上的任何其他作業不可部分完成。
ExInterlockedAddLargeInteger 遮罩會中斷。 因此,它可用於ISR與其他裝置驅動程式程式代碼之間的同步處理,前提是相同的 Lock 永遠不會在對在IRQL = DISPATCH_LEVEL執行的例程呼叫中重複使用。
請注意,對 InterlockedXxx 的呼叫保證是相對於其他 InterlockedXxx 呼叫不可部分完成的,而不需呼叫端提供的微調鎖定。
ExInterlockedAddLargeInteger 的呼叫端在任何 IRQL 上執行。 Addend 參數的記憶體必須位於所有 IRQL。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 可在 Windows 2000 和更新版本的 Windows 中使用。 無法在 Windows 98 或 Windows Me 中使用。 |
目標平台 | Universal |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | 任何層級 (請參閱一節) |