MINIPORT_CHECK_FOR_HANG回调函数 (ndis.h)
警告
所有 NDIS 6.83 及更高版本的驱动程序都不建议使用 MiniportCheckForHangEx 和 MiniportResetEx 回调函数。 有关详细信息,请参阅 NDIS 6.83 及更高版本中的 Check-for-Hang 和 Reset作。
NDIS 调用微型端口驱动程序的 MiniportCheckForHangEx 函数来检查表示网络接口卡(NIC)的微型端口适配器的作状态。
语法
MINIPORT_CHECK_FOR_HANG MiniportCheckForHang;
BOOLEAN MiniportCheckForHang(
[in] NDIS_HANDLE MiniportAdapterContext
)
{...}
参数
[in] MiniportAdapterContext
微型端口驱动程序在其 MiniportInitializeEx 函数中分配的上下文区域的句柄。 微型端口驱动程序使用此上下文区域来维护微型端口适配器的状态信息。
返回值
MiniportCheckForHangEx 如果驱动程序确定 NIC 未运行,并且 NDIS 应调用驱动程序的 MiniportResetEx 函数,则返回 true。 有关详细信息,请参阅“备注”部分。
言论
微型端口驱动程序在调用 时指定 MiniportCheckForHangEx 入口点 NdisMRegisterMiniportDriver 函数。
中间驱动程序不需要 MiniportCheckForHangEx。
MiniportCheckForHangEx 只执行检查 NIC 的内部状态,如果检测到 NIC 无法正常运行,则返回 TRUE。
默认情况下,NDIS 调用 MiniportCheckForHangEx 大约每两秒一次。 因此,微型端口驱动程序的 MiniportCheckForHangEx 函数应尽快返回。
如果微型端口驱动程序未在连续两次调用 MiniportCheckForHangEx内完成 OID 请求,NDIS 可以调用驱动程序的 MiniportResetEx 函数。 但是,为了避免不必要的重置,驱动程序的 MiniportInitializeEx 函数可以通过设置适当的 CheckForHangTimeInSeconds 值来扩展检查挂起超时间隔 NdisMSetMiniportAttributes 函数。
有关设置 CheckForHangTimeInSeconds 超时值的详细信息,请参阅 微型端口适配器检查和重置作。
NDIS 在 IRQL = PASSIVE_LEVEL 调用 MiniportCheckForHangEx。
示例
若要定义 MiniportCheckForHangEx 函数,必须先提供一个函数声明来标识要定义的函数的类型。 Windows 为驱动程序提供了一组函数类型。 使用函数类型声明函数有助于 驱动程序代码分析、静态驱动程序验证程序(SDV)和其他验证工具查找错误,这是为 Windows作系统编写驱动程序的要求。例如,若要定义名为“MyCheckForHangEx”的 MiniportCheckForHangEx 函数,请使用 MINIPORT_CHECK_FOR_HANG 类型,如以下代码示例所示:
MINIPORT_CHECK_FOR_HANG MyCheckForHangEx;
然后,按如下所示实现函数:
_Use_decl_annotations_
BOOLEAN
MyCheckForHangEx(
NDIS_HANDLE MiniportAdapterContext
)
{...}
MINIPORT_CHECK_FOR_HANG 函数类型在 Ndis.h 头文件中定义。 若要在运行代码分析工具时更准确地识别错误,请务必将 Use_decl_annotations 注释添加到函数定义。 Use_decl_annotations 批注可确保使用应用于头文件中 MINIPORT_CHECK_FOR_HANG 函数类型的批注。 有关函数声明要求的详细信息,请参阅 使用 NDIS 驱动程序的函数角色类型声明函数。
有关 Use_decl_annotations的信息,请参阅 批注函数行为。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | NDIS 6.0 及更高版本中受支持。 |
目标平台 | 窗户 |
标头 | ndis.h (包括 Ndis.h) |
IRQL | PASSIVE_LEVEL |