NDIS 唤醒原因状态指示概述

从 NDIS 6.30 开始,微型端口驱动程序会发出 NDIS 唤醒原因状态指示, (NDIS_STATUS_PM_WAKE_REASON) 通知 NDIS 和过度配置驱动程序系统唤醒事件的原因。 如果网络适配器生成唤醒事件,则当网络适配器恢复为全功率状态时,微型端口驱动程序会立即发出 NDIS 状态指示 NDIS_STATUS_PM_WAKE_REASON

注意 对于移动宽带 (MB) 微型端口驱动程序,可选支持 NDIS 唤醒原因状态指示。

微型端口驱动程序通过对象标识符 (OID) OID_PM_PARAMETERS集请求配置电源管理 (PM ) 参数。 此 OID 请求通过 NDIS_PM_PARAMETERS 结构指定 PM 参数。

NDIS_PM_PARAMETERS 结构指定以下唤醒事件类型的参数。

收到的数据包唤醒事件
如果网络适配器收到与 LAN 唤醒 (WOL) 模式匹配的数据包,则会生成唤醒事件。 WOL 模式包括以下内容:

  • 独立于媒体的 WOL 模式,例如数据包有效负载中的 magic 数据包或 TCP/IP 数据模式。 例如, NDIS_PM_PARAMETERS 结构可以为 TCP SYN 帧指定 WOL 模式。

  • 特定于媒体的 WOL 模式,例如 EAPOL 请求标识符数据包或移动宽带 (MB) 短信服务 (短信) 消息。

  • 与通过 OID_GEN_CURRENT_PACKET_FILTER 的 OID 集请求指定的接收筛选器匹配的通配符模式。

注意 对于这种类型的唤醒原因状态指示,网络适配器必须能够保存收到的数据包。 驱动程序必须在状态指示内返回收到的数据包。

WOL 模式是通过 NDIS_PM_PARAMETERS 结构的 EnabledWoLPacketPatterns 成员指定的。

特定于媒体的唤醒事件
由于媒体特定原因,网络适配器会生成唤醒事件,例如从 802.11 接入点 (AP) 取消关联,或者收到移动宽带 (MB) 短信服务 (短信) 消息。

此类型的唤醒事件是通过 NDIS_PM_PARAMETERS 结构的 MediaSpecificWakeUpEvents 成员指定的。

独立于媒体的唤醒事件
网络适配器由于媒体无关的原因(例如媒体连接或断开连接)而生成唤醒事件。

此类型的唤醒事件是通过 NDIS_PM_PARAMETERS 结构的 WakeUpFlags 成员指定的。

对于 NDIS 唤醒原因状态指示,微型端口驱动程序必须遵循以下指南:

  • 如果微型端口驱动程序支持发出唤醒数据包指示的功能,则在 NDIS 调用驱动程序的 MiniportInitializeEx 函数时,它必须报告此功能。 有关详细信息,请参阅 报告唤醒原因状态指示功能

    注意 微型端口驱动程序不必报告其为接收 WOL 数据包无关的事件发出 NDIS 唤醒原因状态指示的能力。

  • 当微型端口驱动程序为 WOL 数据包发出唤醒数据包指示时,它必须包含导致唤醒事件的数据包。 有关详细信息,请参阅 发出 NDIS 唤醒原因状态指示

  • 如果网络适配器生成了唤醒信号,微型端口驱动程序必须发出 NDIS_STATUS_PM_WAKE_REASON 状态指示。 驱动程序在处理 OID_PNP_SET_POWER 的 OID 集请求时执行此操作,以便转换为全功率状态。

  • 微型端口驱动程序必须先发出 NDIS_STATUS_PM_WAKE_REASON 状态指示,然后才能发出与唤醒事件相关的状态指示。 例如,如果唤醒事件是由于媒体连接状态发生更改,微型端口驱动程序必须在发出 NDIS_STATUS_PM_WAKE_REASON 状态指示后发出 NDIS_STATUS_LINK_STATE 状态指示。

  • 微型端口驱动程序必须仅针对以前通过 OID_PM_PARAMETERS 的 OID 集请求启用的电源管理事件 发出NDIS_STATUS_PM_WAKE_REASON状态指示。

  • 微型端口驱动程序必须仅针对基础网络适配器生成的唤醒事件发出 NDIS_STATUS_PM_WAKE_REASON 状态指示。