WdfInterruptSynchronize 函数 (wdfinterrupt.h)

[适用于 KMDF 和 UMDF]

WdfInterruptSynchronize 方法在设备的 DIRQL 上执行指定的回调函数,同时持有中断对象的旋转锁。

对于被动级别中断对象,此方法在被动级别执行指定的回调函数,同时持有中断对象的被动级别中断锁。

语法

BOOLEAN WdfInterruptSynchronize(
  [in] WDFINTERRUPT                  Interrupt,
  [in] PFN_WDF_INTERRUPT_SYNCHRONIZE Callback,
  [in] WDFCONTEXT                    Context
);

参数

[in] Interrupt

框架中断对象的句柄。

[in] Callback

指向 EvtInterruptSynchronize 回调函数的指针。

[in] Context

一个非类型化的指针,指向框架传递给 EvtInterruptSynchronize 回调函数的驱动程序提供的信息。

返回值

WdfInterruptSynchronize 返回 EvtInterruptSynchronize 回调函数返回的布尔状态值。

如果驱动程序提供无效的对象句柄,则会发生 bug 检查。

注解

如果希望驱动程序执行必须在不被抢占的情况下运行且有效禁用设备中断维护的代码,则应将该代码置于 EvtInterruptSynchronize 回调函数中。 若要计划回调函数的执行,驱动程序必须调用 WdfInterruptSynchronize

WdfInterruptSynchronize 方法在 EvtInterruptSynchronize 回调函数完成执行后返回。

驱动程序可以调用 WdfInterruptAcquireLockWdfInterruptReleaseLock,而不是调用 WdfInterruptSynchronize

有关 WdfInterruptSynchronize 方法的详细信息,请参阅 同步中断代码

有关在基于框架的驱动程序中处理中断的详细信息,请参阅 处理硬件中断

对于被动级别中断,驱动程序必须在 IRQL = PASSIVE_LEVEL 调用 WdfInterruptSynchronize

不要从任意线程上下文(如请求处理程序)调用 WdfInterruptSynchronize

示例

下面的代码示例演示如何调用 WdfInterruptSynchronize 以计划 执行 EvtInterruptSynchronize 回调函数。

BOOLEAN synchronizeReturnValue;

synchronizeReturnValue = WdfInterruptSynchronize(
                                         WdfInterrupt,
                                         MyEvtInterruptSynchronize,
                                         CallbackContext
                                         );

要求

要求
目标平台 通用
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
标头 wdfinterrupt.h (包括 Wdf.h)
Library Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
DDI 符合性规则 DriverCreate (kmdf) KmdfIrql (kmdf) KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf)

另请参阅

EvtInterruptSynchronize

WdfInterruptAcquireLock

WdfInterruptReleaseLock