NdisCancelTimerObject 函数 (ndis.h)
NdisCancelTimerObject 函数取消与先前对 NdisSetTimerObject 函数的调用关联的计时器对象。
语法
BOOLEAN NdisCancelTimerObject(
[in] NDIS_HANDLE TimerObject
);
参数
[in] TimerObject
NDIS 在驱动程序调用计时器对象时提供的计时器对象的句柄 NdisAllocateTimerObject 函数。
返回值
如果指定的计时器对象位于系统计时器队列中,则 NdisCancelTimerObject 返回 TRUE;否则,它将返回 FALSE。
言论
调用 NdisCancelTimerObject 取消执行 NetTimerCallback 函数,前提是上次指定的超时间隔尚未过期。
NDIS 驱动程序应在停止或卸载时先调用 NdisCancelTimerObject,以确保 NetTimerCallback 函数不会尝试访问驱动程序已发布的资源。
如果在 NdisSetTimerObject 函数的 毫秒Period 参数中指定了非零值,计时器称为 定期计时器。 如果在 MillisecondsPeriod 参数中指定了零值,计时器称为 一次性计时器。 以下几点适用于取消这两种类型的计时器:
- 如果 NdisCancelTimerObject 的调用方正在取消定期计时器,则必须在 IRQL = PASSIVE_LEVEL 上运行。 否则,NdisCancelTimerObject 的调用方应在 IRQL <= DISPATCH_LEVEL 上运行。
-
如果 NdisCancelTimerObject 的调用方正在取消定期计时器,NdisCancelTimerObject 调用 KeFlushQueuedDpcs 以确保计时器当前未运行。 因此,调用方不需要具有单独的同步机制,以确保计时器当前未在另一个处理器上执行。
如果 NdisCancelTimerObject 的调用方 取消一次性计时器,则调用方必须具有单独的同步机制,以确保计时器当前未在另一个处理器上运行。 例如,调用方可以调用 NDIS_WAIT_FOR_MUTEX,以便在线程即将完成时等待计时器线程发出互斥对象信号。
有关详细信息,请参阅 网络驱动程序中的同步和通知。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | NDIS 6.0 及更高版本中受支持。 |
目标平台 | 普遍 |
标头 | ndis.h (包括 Ndis.h) |
库 | Ndis.lib |
IRQL | 请参阅“备注”部分 |
DDI 符合性规则 | Irql_Timer_Function(ndis), PeriodicTimer(ndis) |