报告唤醒原因状态指示功能

从 NDIS 6.30 开始,微型端口驱动程序必须报告是否可以发出 NDIS 唤醒原因状态指示, (NDIS_STATUS_PM_WAKE_REASON) 报告由以下情况之一引起的唤醒事件:

  • 网络适配器收到与 LAN 唤醒 (WOL) 模式匹配的数据包。 这包括接收与通过对象标识符指定的接收筛选器匹配的数据包 (OID) OID_GEN_CURRENT_PACKET_FILTER集请求。

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

  • 网络适配器检测到特定于媒体的事件,例如从 802.11 接入点取消关联 (AP) 或收到移动宽带 (MB) 短信服务 (短信) 消息。

  • 网络适配器检测到另一个启用的事件,该事件并非特定于 WOL 模式或媒体类型 (媒体无关的事件) 。 例如,如果微型端口驱动程序允许网络适配器检测媒体连接或断开连接,则会发出 NDIS_STATUS_PM_WAKE_REASON 状态指示。

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

当 NDIS 调用驱动程序的 MiniportInitializeEx 函数时,微型端口驱动程序会按照以下步骤报告其唤醒原因状态指示功能:

  1. 微型端口驱动程序使用基础硬件的电源管理功能初始化 NDIS_PM_CAPABILITIES 结构。

    若要启用对唤醒原因状态指示的支持,微型端口驱动程序必须按如下所示设置 NDIS_PM_CAPABILITIES 结构的成员:

    • 微型端口驱动程序必须在结构的 Header 成员中指定NDIS_PM_CAPABILITIES结构的修订和长度NDIS_PM_CAPABILITIES_REVISION_2和NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_2

    • 如果网络适配器可以存储导致系统唤醒事件的接收数据包,则微型端口驱动程序会在此结构的 Flags 成员中设置NDIS_PM_WAKE_PACKET_INDICATION_SUPPORTED标志。

      如果设置了此标志,则网络适配器必须能够保存导致适配器生成唤醒事件的接收数据包。 此外,在网络适配器转换为全功率状态后,微型端口驱动程序必须能够使用此数据包执行以下操作:

    • 微型端口驱动程序将 MaxWoLPacketSaveBuffer 成员设置为包含导致系统唤醒事件的 WOL 数据包的缓冲区的最大大小(以字节为单位)。

      MaxWoLPacketSaveBuffer 成员的值必须小于或等于网络媒体的最大传输单元 (MTU) 和媒体访问控制 (MAC) 标头的大小(以字节为单位)。 驱动程序通过 OID_GEN_MAXIMUM_FRAME_SIZE的 OID 查询请求报告 MTU 大小。

    • 微型端口驱动程序将 SupportedWakeUpEvents 设置为网络适配器支持的独立于媒体的唤醒事件,例如在适配器连接到网络接口时生成唤醒事件。

    • 微型端口驱动程序将 MediaSpecificWakeUpEvents 设置为网络适配器支持的特定于媒体的唤醒事件。 这些事件包括在 802.11 适配器与 AP 解除关联时生成唤醒事件。

  2. 微型端口驱动程序初始化 NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 结构,并将PowerManagementCapabilitiesEx 成员设置为初始化 的 NDIS_PM_CAPABILITIES 结构的地址。

  3. 微型端口驱动程序调用 NdisMSetMiniportAttributes 函数来注册其电源管理功能。 当微型端口驱动程序调用此函数时,它会将 MiniportAttributes 参数设置为 NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 结构的地址。

微型端口驱动程序用于报告唤醒原因状态指示功能的方法基于用于报告电源管理功能的 NDIS 6.20 方法。 有关此方法的详细信息,请参阅 报告电源管理功能

有关适配器初始化过程的详细信息,请参阅 初始化微型端口适配器

有关如何报告电源管理功能的详细信息,请参阅 报告电源管理功能