ExInterlockedAddLargeInteger 函数 (wdm.h)

ExInterlockedAddLargeInteger 例程将一个大整数值作为原子作添加到指定的变量。

语法

LARGE_INTEGER ExInterlockedAddLargeInteger(
  [in, out] PLARGE_INTEGER Addend,
  [in]      LARGE_INTEGER  Increment,
  [in, out] PKSPIN_LOCK    Lock
);

参数

[in, out] Addend

指向 增量 值的变量的指针。

[in] Increment

指定要添加到 加载项的值。

[in, out] Lock

指向用于同步对 附录的访问的旋转锁的指针。

返回值

ExInterlockedAddLargeInteger 返回 Addend 参数的初始值。

言论

假定支持执行互锁作的例程无法导致页面错误。 也就是说,他们的代码和他们触摸的任何数据都可能导致页面错误,而不会降低系统。 它们使用旋转锁在对称多处理器计算机上实现原子性。 调用方必须为 Lock提供驻留存储,该存储必须在初始调用 ExInterlockedXxx之前使用 KeInitializeSpinLock 进行初始化。

传递给 ExInterlockedAddLargeInteger 用于确保与同一旋转锁同步的相同值上的任何其他作 加载项 上的添加作是原子的。

ExInterlockedAddLargeInteger 掩码中断。 因此,它可用于 ISR 和其他设备驱动程序代码之间的同步,前提是对在 IRQL = DISPATCH_LEVEL 上运行的例程的调用中永远不会重复使用同一 Lock

请注意,保证对 InterlockedXxx 的调用与其他 InterlockedXxx 调用是原子的,无需调用方提供的旋转锁。

ExInterlockedAddLargeInteger 调用方在任何 IRQL 上运行。 附录 参数的存储必须驻留在所有 IRCL 中。

要求

要求 价值
最低支持的客户端 在 Windows 2000 及更高版本的 Windows 中可用。 在 Windows 98 或 Windows Me 中不可用。
目标平台 普遍
标头 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何级别 (请参阅“备注”部分)

另请参阅

ExInterlockedAddUlong

InterlockedDecrement

InterlockedIncrement

KeInitializeSpinLock