NdisCancelTimerObject 函数 (ndis.h)

NdisCancelTimerObject 函数取消与之前对 NdisSetTimerObject 函数的调用关联的计时器对象。

语法

BOOLEAN NdisCancelTimerObject(
  [in] NDIS_HANDLE TimerObject
);

参数

[in] TimerObject

NDIS 在驱动程序调用 时提供的计时器对象的句柄 NdisAllocateTimerObject 函数。

返回值

如果指定的计时器对象在系统计时器队列中,则 NdisCancelTimerObject 返回 TRUE;否则,它将返回 FALSE

注解

调用 NdisCancelTimerObject 会取消 NetTimerCallback 函数的执行,前提是上次指定的超时间隔尚未过期。

NDIS 驱动程序在停止或卸载时应首先调用 NdisCancelTimerObject ,以确保 NetTimerCallback 函数不会尝试访问驱动程序已释放的资源。

如果在 NdisSetTimerObject 函数的 MillisecondsPeriod 参数中指定了非零值,则计时器称为定期计时器。 如果在 MillisecondsPeriod 参数中指定了零值,则计时器称为 一次性计时器。 以下几点适用于取消这两种类型的计时器:

  • 如果 NdisCancelTimerObject 的调用方取消定期计时器,则必须在 IRQL = PASSIVE_LEVEL 运行。 否则, NdisCancelTimerObject 的调用方应在 IRQL <= DISPATCH_LEVEL 运行。
  • 如果 NdisCancelTimerObject 的调用方取消定期计时器, 则 NdisCancelTimerObject 调用 KeFlushQueuedDpcs 以确保计时器当前未运行。 因此,调用方不需要单独的同步机制来确保计时器当前不会在另一个处理器上执行。

    如果 NdisCancelTimerObject 的调用方正在取消一次性计时器,则调用方需要具有单独的同步机制,以确保计时器当前未在另一个处理器上运行。 例如,调用方可以调用 NDIS_WAIT_FOR_MUTEX ,以便在线程即将完成时等待计时器线程向互斥对象发出信号。

    有关详细信息,请参阅 网络驱动程序中的同步和通知

要求

要求
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
目标平台 通用
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL 请参阅“备注”部分
DDI 符合性规则 Irql_Timer_Function (ndis) PeriodicTimer (ndis)

另请参阅

NdisAllocateTimerObject

NdisSetTimerObject

NetTimerCallback