NdisSetTimerObject 函数 (ndis.h)

NdisSetTimerObject 函数将计时器对象设置为在指定间隔后触发或定期触发。

语法

BOOLEAN NdisSetTimerObject(
  [in]           NDIS_HANDLE   TimerObject,
  [in]           LARGE_INTEGER DueTime,
  [in, optional] LONG          MillisecondsPeriod,
  [in, optional] PVOID         FunctionContext
);

参数

[in] TimerObject

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

[in] DueTime

计时器到期的绝对时间或相对时间。 如果 DueTime 参数的值为负值,则过期时间相对于当前系统时间。 否则,过期时间是绝对的。 过期时间以系统时间单位表示 (100 纳秒间隔) 。 绝对过期时间跟踪系统时间中的任何更改;相对过期时间不受系统时间更改的影响。

[in, optional] MillisecondsPeriod

计时器每次触发和下次调用 NetTimerCallback 函数之间经过的周期时间间隔(以毫秒为单位),除非取消计时器。 此参数的值必须小于或等于 MAXLONG。

[in, optional] FunctionContext

指向调用方提供的上下文区域的指针,当计时器触发时,NDIS 会传递给关联的 NetTimerCallback 函数。 如果此参数为 NULL,则 NDIS 使用在 中指定的默认值 NDIS_TIMER_CHARACTERISTICS 结构。

返回值

如果计时器对象已在系统计时器队列中,则 NdisSetTimerObject 返回 TRUE;否则返回 FALSE

注解

驱动程序调用 NdisSetTimerObject 后,计时器对象将排队,直到 DueTime 参数中指定的间隔过期。 间隔到期后,计时器对象将取消排队,调用方提供的 NetTimerCallback 函数在处理器可用后立即在 IRQL = DISPATCH_LEVEL 运行一次。

如果在 MillisecondsPeriod 参数中指定了非零值,计时器对象将再次排队,直到 MillisecondsPeriod 中指定的间隔过期。 此间隔到期后,计时器对象将重新排队,调用方提供的 NetTimerCallback 函数在处理器可用后立即在 IRQL = DISPATCH_LEVEL 运行一次。

注意 从 Windows 7 开始,你可以通过调用如果不需要确切的计时器精度,则使用 NdisSetCoalescableTimerObject 而不是 NdisSetTimerObject
 
有关计时器行为的详细信息,请参阅 KeSetTimerEx

若要取消计时器,请调用 NdisCancelTimerObject 函数。

要求

要求
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
目标平台 通用
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 Irql_Timer_Function (ndis) PeriodicTimer (ndis)

另请参阅

KeSetTimerEx

NDIS_TIMER_CHARACTERISTICS

NdisAllocateTimerObject

NdisCancelTimerObject

NdisSetCoalescableTimerObject

NetTimerCallback