MINIPORT_IDLE_NOTIFICATION回调函数 (ndis.h)

NDIS 调用 MiniportIdleNotification 处理程序函数,以在空闲网络适配器上启动 NDIS 选择性挂起操作。 通过此操作,网络适配器将挂起并转换为低功耗状态。

语法

MINIPORT_IDLE_NOTIFICATION MiniportIdleNotification;

NDIS_STATUS MiniportIdleNotification(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] BOOLEAN ForceIdle
)
{...}

参数

[in] MiniportAdapterContext

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

[in] ForceIdle

设置为 TRUE 时,BOOLEAN 值指定微型端口驱动程序不得否决空闲通知,并且必须继续执行低功耗状态转换。

有关 ForceIdle 参数的详细信息,请参阅备注部分。

返回值

MiniportIdleNotification 返回以下状态值之一:

返回代码 说明
NDIS_STATUS_PENDING 微型端口驱动程序已成功处理空闲通知。 通知将保持挂起状态,直到微型端口驱动程序调用 NdisMIdleNotificationComplete注意: 微型端口驱动程序不得从 MiniportIdleNotification 返回NDIS_STATUS_SUCCESS。
NDIS_STATUS_BUSY 微型端口驱动程序已否决空闲通知,因为网络适配器仍在使用。 注意:如果 ForceIdle 参数设置为 TRUE则 MiniportIdleNotification 不得返回此状态代码。
NDIS_STATUS_FAILURE 微型端口驱动程序无法成功发出特定于总线的 IRP。

注解

MiniportIdleNotification 处理程序函数对于支持 NDIS 选择性挂起接口的微型端口驱动程序是必需的。 有关驱动程序如何注册其选择性挂起处理程序函数的详细信息,请参阅 注册 NDIS 选择性挂起处理程序函数

当网络适配器处于非活动状态的时间超过空闲超时时间时,NDIS 将 ForceIdle 参数设置为 FALSE 。 因此,NDIS 有选择地仅挂起 网络适配器。

空闲超时期限的持续时间由 *SSIdleTimeout INF 关键字 (keyword) 的值指定。 有关此关键字 (keyword) 的详细信息,请参阅 NDIS 选择性挂起的标准化 INF 关键字

注意

仅当符合 Always On Always Connected (AOAC) 技术的系统转换为连接待机状态时,NDIS 才会将 ForceIdle 参数设置为 TRUE

如果微型端口驱动程序确定正在使用网络适配器,它可以通过返回NDIS_STATUS_BUSY来否决空闲通知请求。 这会导致 NDIS 重启网络适配器上的活动监视器。

如果适配器在空闲超时期间再次变为非活动状态,NDIS 将调用 MiniportIdleNotification

注意

如果 ForceIdle 参数设置为 TRUE,微型端口驱动程序不得返回NDIS_STATUS_BUSY。

发出空闲通知后,可以按以下方式取消并完成该通知:

  • 如果满足以下条件,NDIS 可以取消未完成的空闲通知:

    • 覆盖协议或筛选器驱动程序向微型端口驱动程序发出发送数据包请求或 OID 请求。
    • 基础适配器向唤醒事件发出信号,例如接收与 LAN 唤醒 (WOL) 模式匹配的数据包,或检测其媒体连接状态的更改。

    NDIS 通过调用 MiniportCancelIdleNotification 取消空闲通知。 调用此处理程序函数时,微型端口驱动程序将取消它之前可能为空闲通知发出的任何特定于总线的 IRP。 最后,微型端口驱动程序调用 NdisMIdleNotificationComplete 以完成空闲通知。

  • 网络适配器处于低功耗状态后,微型端口驱动程序可以完成空闲通知本身,以便将适配器恢复为全功率状态。 执行此操作的原因特定于驱动程序和适配器的设计和要求。

    微型端口驱动程序通过调用 NdisMIdleNotificationComplete 完成空闲通知。 有关微型端口驱动程序如何完成空闲通知的详细信息,请参阅 完成 NDIS 选择性挂起空闲通知

有关如何处理 NDIS 选择性挂起的空闲通知的详细信息,请参阅 处理 NDIS 选择性挂起空闲通知

有关如何实现 MiniportIdleNotification 处理程序函数的指南,请参阅 实现 MiniportIdleNotification 处理程序函数

要求

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

另请参阅

MiniportCancelIdleNotification

NdisMIdleNotificationComplete