NDIS_TIMER_FUNCTION回调函数 (ndis.h)

NdisTimerFunction 回调函数在驱动程序在计时器触发时设置一次性计时器或定期计时器后由 NDIS 调用。

注意 必须使用 NDIS_TIMER_FUNCTION 类型声明函数。 有关详细信息,请参阅以下示例部分。
 

语法

NDIS_TIMER_FUNCTION NdisTimerFunction;

void NdisTimerFunction(
  [in] PVOID SystemSpecific1,
  [in] PVOID FunctionContext,
  [in] PVOID SystemSpecific2,
  [in] PVOID SystemSpecific3
)
{...}

参数

[in] SystemSpecific1

指向为系统使用保留的系统特定值的指针。

[in] FunctionContext

指向驱动程序提供给 NdisSetTimerObject 函数的驱动程序提供的上下文区域的指针。 如果 NdisSetTimerObjectFunctionContext 参数为 NULL,则 NDIS 将使用驱动程序在 中指定的 默认值 NDIS_TIMER_CHARACTERISTICS 结构。 驱动程序将结构传递给 NdisAllocateTimerObject 函数,以初始化关联的计时器对象。

[in] SystemSpecific2

指向为系统使用保留的系统特定值的指针。

[in] SystemSpecific3

指向为系统使用保留的系统特定值的指针。

返回值

备注

任何 NDIS 驱动程序都可以有一个或多个 NdisTimerFunction 回调函数。 每个此类 NdisTimerFunction 回调都必须与不同的驱动程序分配和初始化的计时器对象相关联。

驱动程序通过调用 初始化驱动程序分配的计时器对象 NdisAllocateTimerObject 函数。

后续调用 NdisSetTimerObject 函数会导致与计时器对象关联的 NdisTimerFunction 回调在指定间隔后运行或定期运行。

若要取消对 NdisTimerFunction 的调用,请调用 NdisCancelTimerObject 函数。 如果在调用 NdisCancelTimerObject 之前超时已过期,NDIS 仍可能调用 NdisTimerFunction

如果 NdisTimerFunction 回调与其他驱动程序函数共享资源,则驱动程序应使用旋转锁来同步对这些资源的访问。

示例

若要定义 NdisTimerFunction 函数,必须先提供一个函数声明来标识要定义的函数类型。 Windows 为驱动程序提供了一组函数类型。 使用函数类型声明函数可帮助 驱动程序的代码分析静态驱动程序验证程序 (SDV) 和其他验证工具查找错误,并且这是为 Windows 操作系统编写驱动程序的要求。

例如,若要定义名为“ MyTimerCallback”的 NdisTimerFunction 函数,请使用 NDIS_TIMER_FUNCTION 类型,如以下代码示例所示:

NDIS_TIMER_FUNCTION MyTimerCallback;

然后,按如下所示实现函数:

_Use_decl_annotations_
VOID
 MyTimerCallback(
    PVOID  SystemSpecific1,
    PVOID  FunctionContext,
    PVOID  SystemSpecific2,
    PVOID  SystemSpecific3
    )
  {...}

NDIS_TIMER_FUNCTION函数类型在 Ndis.h 头文件中定义。 若要在运行代码分析工具时更准确地识别错误,请务必将 Use_decl_annotations 注释添加到函数定义。 Use_decl_annotations注释可确保使用应用于头文件中NDIS_TIMER_FUNCTION函数类型的注释。 有关函数声明要求的详细信息,请参阅 使用 NDIS 驱动程序的函数角色类型声明函数

有关 Use_decl_annotations的信息,请参阅 批注函数行为

要求

要求
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
目标平台 Windows
标头 ndis.h (包括 Ndis.h)
IRQL DISPATCH_LEVEL

另请参阅

初始化 NDIS 计时器

NDIS_TIMER_CHARACTERISTICS

NdisAllocateTimerObject

NdisCancelTimerObject

NdisSetTimerObject

服务计时器

设置和清除计时器