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 | 任何级别 (请参阅“备注”部分) |