EVT_WDF_TIMER回调函数 (wdftimer.h)
[适用于 KMDF 和 UMDF]
当指定的时间段已过时,将调用 EvtTimerFunc 事件回调函数。
语法
EVT_WDF_TIMER EvtWdfTimer;
void EvtWdfTimer(
[in] WDFTIMER Timer
)
{...}
参数
[in] Timer
框架计时器对象的句柄,该对象是从上一次调用 WdfTimerCreate 获取的。
返回值
无
备注
若要注册 EvtTimerFunc 回调函数并指定框架在调用此函数之前应经过的时间段,驱动程序必须调用 WdfTimerCreate。
在版本 1.9 之前的 KMDF 版本中,框架实现 EvtTimerFunc 回调函数作为延迟过程调用 (DPC) 。 因此,当时间段过后,系统会向 DPC 队列添加对 EvtTimerFunc 回调函数的调用。 系统在 IRQL = DISPATCH_LEVEL调用 EvtTimerFunc 回调函数,当它到达队列的前面,并且 IRQL < DISPATCH_LEVEL上运行的 CPU 可用时。
在 KMDF 版本 1.9 及更高版本中,框架默认将 EvtTimerFunc 回调函数实现为 DPC。 或者,如果驱动程序将计时器对象的执行级别设置为 WdfExecutionLevelPassive,框架将从 IRQL = PASSIVE_LEVEL 的工作项调用 EvtTimerFunc 回调函数。
注意
如果在 PASSIVE_LEVEL 运行的 EvtTimerFunc 回调函数调用 WdfObjectDelete,则会导致死锁。 相反,请在删除设备时等待父级自动删除计时器,或者,如果需要提前删除,请计划计时器回调中的工作项以删除计时器。
从 UMDF 版本 2.0 开始,UMDF 驱动程序的 EvtTimerFunc 回调函数始终在 PASSIVE_LEVEL 运行。
有关框架计时器对象的详细信息,请参阅 使用计时器。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
最低 KMDF 版本 | 1.0 |
最低 UMDF 版本 | 2.0 |
标头 | wdftimer.h (包括 Wdf.h) |
IRQL | 请参见“备注”部分。 |