NDIS_TIMER_FUNCTION回调函数 (ndis.h)
NdisTimerFunction 回调函数在驱动程序在计时器触发时设置一次性计时器或定期计时器后由 NDIS 调用。
语法
NDIS_TIMER_FUNCTION NdisTimerFunction;
void NdisTimerFunction(
[in] PVOID SystemSpecific1,
[in] PVOID FunctionContext,
[in] PVOID SystemSpecific2,
[in] PVOID SystemSpecific3
)
{...}
参数
[in] SystemSpecific1
指向为系统使用保留的系统特定值的指针。
[in] FunctionContext
指向驱动程序提供给 NdisSetTimerObject 函数的驱动程序提供的上下文区域的指针。 如果 NdisSetTimerObject 的 FunctionContext 参数为 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 |