KeRcuSynchronize 函数 (wdm.h)

KeRcuSynchronize 函数等待宽限期在默认 RCU(Read-Copy-Update) 域中运行,确保所有预先存在的 RCU 读取端关键部分都已完成。

Syntax

VOID KeRcuSynchronize();

返回值

None

注解

KeRcuSynchronize 是一种阻塞作,它使用内核门对象等待宽限期。 必须在 IRQL < DISPATCH_LEVEL(通常是PASSIVE_LEVEL)调用它,因为它可能导致调用线程挂起。

此函数会阻止调用线程,直到调用时处于活动状态的所有 RCU 读取端关键部分都已退出。 它为编写器提供一个同步点,用于安全地回收或修改受 RCU 保护的数据结构。

KeRcuSynchronize 保证:

  • 在调用 KeRcuSynchronize 之前开始的所有 RCU 只读关键部分将在函数返回之前完成。
  • 在此函数返回后,可以安全地回收受 RCU 保护的内存或数据结构。
  • 在 KeRcuSynchronize 启动后开始的新读取器可能等待或可能不会等待。

此函数通常用于更新端代码路径,调用方需要确保在安全回收或修改数据结构之前,所有读取器都已完成访问数据结构。

函数不失败。 它始终会成功完成,并且无法返回错误。

对于需要自定义同步域的更复杂的方案,请将 KeSrcuSynchronize 与显式 SRCU 分区配合使用。

要求

Requirement 价值
最低支持的客户端 Windows 11,版本 24H2
支持的最低服务器 Windows Server 2025
目标平台 普遍
Header wdm.h (包括 Wdm.h)
Library NtosKrnl.lib
IRQL <= APC_LEVEL

另请参阅

KeRcuReadLock

KeRcuReadUnlock

KeSrcuSynchronize

KeSrcuAllocate

KeSrcuFree