[适用于 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 回调函数完成执行后返回。
驱动程序可以调用 WdfInterruptAcquireLock 和 WdfInterruptReleaseLock,而不是调用 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) |
图书馆 | Wdf01000.sys(KMDF):WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
DDI 符合性规则 | DriverCreate(kmdf),KmdfIrql(kmdf),KmdfIrql2(kmdf),KmdfIrqlExplicit(kmdf) |