KeSynchronizeExecution 函数 (wdm.h)
KeSynchronizeExecution 例程将指定的例程的执行与分配给一个或多个中断对象的 ISR) (中断服务例程同步。
语法
BOOLEAN KeSynchronizeExecution(
[in, out] PKINTERRUPT Interrupt,
[in] PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
[in, optional] __drv_aliasesMem PVOID SynchronizeContext
);
参数
[in, out] Interrupt
指向一组中断对象的指针。 调用方从 IoConnectInterrupt 或 IoConnectInterruptEx 例程获取此指针。
[in] SynchronizeRoutine
指定调用方提供的 SynchCritSection 例程,该例程的执行将与分配给中断对象的 ISR 的执行同步。
[in, optional] SynchronizeContext
指向调用方提供的上下文值的指针,在调用 SynchCritSection 例程时要传递给它。
返回值
如果操作成功,KeSynchronizeExecution 将返回 TRUE。 否则,它将返回 FALSE。
注解
调用此例程时,将发生以下情况:
- IRQL 将提升为调用 IoConnectInterrupt 或 IoConnectInterruptEx 中指定的 SynchronizeIrql 值。
- 如果 ISR 在PASSIVE_LEVEL) 运行,则通过获取关联的中断对象旋转锁 (或系统事件对象来同步对 SynchronizeContext 的访问。
- 使用 SyncContext 值作为其参数调用指定的 SynchCritSection 例程。
KeSynchronizeExecution 的调用方必须在 IRQL <= DIRQL 上运行;也就是说,在 IRQL 上运行,该值小于或等于调用方在向 IoConnectInterrupt 或 IoConnectInterruptEx 注册其 ISR 时指定的 SynchronizeIrql 值的值。
从 Windows 8 开始,驱动程序可以调用 KeSynchronizeExecution,以将 SynchCritSection 例程的执行与在 IRQL = PASSIVE_LEVEL 运行的 ISR 同步。 在早期版本的 Windows 中, KeSynchronizeExecution 只能与在 IRQL >= DISPATCH_LEVEL 运行的 ISR 同步执行。 有关详细信息,请参阅 使用 Passive-Level 中断服务例程。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DIRQL (请参阅备注部分) |