MINIPORT_CHECK_FOR_HANG回调函数 (ndis.h)

警告

所有 NDIS 6.83 及更高版本的驱动程序都不建议使用 MiniportCheckForHangExMiniportResetEx 回调函数。 有关详细信息,请参阅 NDIS 6.83 及更高版本中的 Check-for-Hang 和 Reset 操作

NDIS 调用微型端口驱动程序的 MiniportCheckForHangEx 函数来检查微型端口适配器的操作状态,该适配器表示网络接口卡 (NIC) 。

注意 微型端口驱动程序可以使用 MINIPORT_CHECK_FOR_HANG 类型声明此函数。
 
注意 从 NDIS 6.30 开始,对于在低功率 SoC 平台上运行的驱动程序,不得注册此函数,以避免定期 检查挂起 活动导致的负面影响。
 

语法

MINIPORT_CHECK_FOR_HANG MiniportCheckForHang;

BOOLEAN MiniportCheckForHang(
  [in] NDIS_HANDLE MiniportAdapterContext
)
{...}

参数

[in] MiniportAdapterContext

微型端口驱动程序在其 MiniportInitializeEx 函数中分配的上下文区域的句柄。 微型端口驱动程序使用此上下文区域来维护微型端口适配器的状态信息。

返回值

如果驱动程序确定 NIC 未运行,并且 NDIS 应调用驱动程序的 MiniportResetEx 函数,MiniportCheckForHangEx 将返回 TRUE。 有关详细信息,请参阅“备注”部分。

备注

微型端口驱动程序在调用 MiniportCheckForHangEx 入口点时指定 MiniportCheckForHangEx 入口点 NdisMRegisterMiniportDriver 函数。

中间驱动程序不需要 MiniportCheckForHangEx

MiniportCheckForHangEx 只检查 NIC 的内部状态,如果检测到 NIC 未正常运行,则返回 TRUE

默认情况下,NDIS 每隔两秒调用 MiniportCheckForHangEx 。 因此,微型端口驱动程序的 MiniportCheckForHangEx 函数应尽快返回。

注意 从 NDIS 6.30 开始,一个具有高容差的可合并计时器用于测量对 MiniportCheckForHangEx 的调用之间的间隔。 因此,此例程不应用于任何时间敏感操作。
 
如果 MiniportCheckForHangEx 返回 TRUE,NDIS 将调用微型端口驱动程序的 MiniportResetEx 函数。

如果微型端口驱动程序未在连续两次调用 MiniportCheckForHangEx 内完成 OID 请求,NDIS 可以调用驱动程序的 MiniportResetEx 函数。 但是,为了避免不必要的重置,驱动程序的 MiniportInitializeEx 函数可以通过设置适当的 CheckForHangTimeInSeconds 值来扩展检查挂起超时间隔 NdisMSetMiniportAttributes 函数。

有关设置 CheckForHangTimeInSeconds 超时值的详细信息,请参阅 微型端口适配器 Check-for-Hang 和重置操作

注意 从 NDIS 6.30 开始,如果微型端口驱动程序检测到 NIC 在超时期限过期之前尚未完成挂起的发送请求, 则 MiniportCheckForHangEx 必须返回 TRUE 。 超时期限特定于驱动程序,但我们建议使用超时期限 2 秒。
 
MiniportCheckForHangEx 可以通过中断抢占。

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 及更高版本中受支持。
目标平台 Windows
标头 ndis.h (包括 Ndis.h)
IRQL PASSIVE_LEVEL

另请参阅

微型端口适配器挂起检查和重置操作

MiniportInitializeEx

MiniportResetEx

NdisMRegisterMiniportDriver

NdisMSetMiniportAttributes