NDIS_PM_CAPABILITIES 结构 (ntddndis.h)

NDIS_PM_CAPABILITIES结构指定网络适配器的电源管理功能。

语法

typedef struct _NDIS_PM_CAPABILITIES {
  NDIS_OBJECT_HEADER      Header;
  ULONG                   Flags;
  ULONG                   SupportedWoLPacketPatterns;
  ULONG                   NumTotalWoLPatterns;
  ULONG                   MaxWoLPatternSize;
  ULONG                   MaxWoLPatternOffset;
  ULONG                   MaxWoLPacketSaveBuffer;
  ULONG                   SupportedProtocolOffloads;
  ULONG                   NumArpOffloadIPv4Addresses;
  ULONG                   NumNSOffloadIPv6Addresses;
  NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp;
  NDIS_DEVICE_POWER_STATE MinPatternWakeUp;
  NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp;
  ULONG                   SupportedWakeUpEvents;
  ULONG                   MediaSpecificWakeUpEvents;
} NDIS_PM_CAPABILITIES, *PNDIS_PM_CAPABILITIES;

成员

Header

NDIS_PM_CAPABILITIES 结构的类型、修订和大小。 此成员的格式设置为 NDIS_OBJECT_HEADER 结构。

微型端口驱动程序必须将 HeaderType 成员设置为NDIS_OBJECT_TYPE_DEFAULT。 若要指定 NDIS_PM_CAPABILITIES 结构的版本,驱动程序必须将 HeaderRevision 成员设置为以下值:

NDIS_PM_CAPABILITIES_REVISION_2

为 NDIS 6.30 添加了各种更改。

Size 成员设置为NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_2。

NDIS_PM_CAPABILITIES_REVISION_1

NDIS 6.20 的原始版本。

Size 成员设置为 NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_1。

Flags

包含标志的按位 ORULONG 值。 对于 NDIS 6.20,此成员是为 NDIS 保留的。

从 NDIS 6.30 开始,定义了以下标志:

NDIS_PM_WAKE_PACKET_INDICATION_SUPPORTED

如果设置了此标志,则网络适配器必须能够保存导致适配器生成唤醒事件的接收数据包。

如果设置了此标志,则微型端口驱动程序必须能够在网络适配器转换为全功率状态后使用此数据包执行以下操作:

有关此电源管理功能的详细信息,请参阅 NDIS 唤醒原因状态指示

NDIS_PM_SELECTIVE_SUSPEND_SUPPORTED

如果设置了此标志,微型端口驱动程序支持网络适配器的 NDIS 选择性挂起。

有关此电源管理功能的详细信息,请参阅 NDIS 选择性挂起

SupportedWoLPacketPatterns

一个 ULONG 值,该值包含指定网络适配器支持的 LAN 唤醒 (WOL) 模式的标志的按位 OR。 微型端口驱动程序使用这些标志来播发网络适配器支持的基于数据包的 WOL 模式。

有关此成员的详细信息,请参阅“备注”部分。 有关 WOL 模式的详细信息,请参阅 NDIS_PM_WOL_PATTERN

NDIS_PM_WOL_BITMAP_PATTERN_SUPPORTED

网络适配器在收到与配置的位图模式匹配的数据包时,可以生成唤醒事件。

NDIS_PM_WOL_MAGIC_PACKET_SUPPORTED

网络适配器在收到 WOL 幻数据包时可以生成唤醒事件。 幻数据包在其有效负载中包含一个值为 0xFF 的 6 个字节的字符串,后跟接收网络适配器的以太网地址的 16 个连续副本。

NDIS_PM_WOL_IPV4_TCP_SYN_SUPPORTED

网络适配器在收到 IPv4 TCP SYN 数据包时可以生成唤醒事件。 远程主机发送 TCP SYN 数据包以启动与本地计算机的 TCP 连接。

NDIS_PM_WOL_IPV6_TCP_SYN_SUPPORTED

网络适配器在收到 IPv6 TCP SYN 数据包时可以生成唤醒事件。

NDIS_PM_WOL_IPV4_DEST_ADDR_WILDCARD_SUPPORTED

如果设置了此标志,则网络适配器支持在 WOL 模式中为 IPv4 地址和 TCP/UDP 端口的任何零填充或未指定值作为通配符值。 这样,通配符值将与 WOL 模式指定的位置中传入数据包的任何 IPv4 地址和任何端口值匹配。

当网络适配器支持基于 IPv4 的 LAN 唤醒数据包模式(例如 IPv4 TCP SYN 模式)时,如果传入数据包的 IPv4 地址和端口值与唤醒模式中指定的值匹配,它必须支持生成唤醒事件。

但是,如果设置了NDIS_PM_WOL_IPV4_DEST_ADDR_WILDCARD_SUPPORTED标志,则如果以下模式匹配条件为 true,网络适配器也可以生成唤醒事件:

  • 如果该位置的 WOL 模式包含通配符值,则来自由 WOL 模式指定的位置中传入数据包的任何值都是匹配的。
  • 如果该位置的 WOL 模式包含等于数据包值的非零值,则来自由 WOL 模式指定的位置中的传入数据包的值是匹配的。
微型端口驱动程序必须将唤醒事件限制为指定的 IPv4 地址和端口,除非超载驱动程序启用此功能。
注意 此标志启用的通配符值可以包括未指定的 IPv4 源和目标地址,以及未指定的源和目标端口。
 

NDIS_PM_WOL_IPV6_DEST_ADDR_WILDCARD_SUPPORTED

如果设置了此标志,则网络适配器支持在 WOL 模式中为 IPv6 地址和 TCP/UDP 端口的任何填充或未指定值作为通配符值。 这样,通配符值将与 WOL 模式指定的位置中传入数据包的任何 IPv6 地址和任何端口值匹配。

当网络适配器支持基于 IPv6 的 LAN 唤醒数据包模式(例如 IPv6 TCP SYN 模式)时,如果传入数据包的 IPv6 地址和端口值与唤醒模式中指定的值匹配,它必须支持生成唤醒事件。

但是,如果设置了NDIS_PM_WOL_IPV6_DEST_ADDR_WILDCARD_SUPPORTED标志,则如果以下模式匹配条件成立,网络适配器也可以生成唤醒事件:

  • 如果该位置的 WOL 模式包含通配符值,则来自由 WOL 模式指定的位置中传入数据包的任何值都是匹配的。
  • 如果该位置的 WOL 模式包含等于数据包值的非零值,则来自由 WOL 模式指定的位置中的传入数据包的值是匹配的。
除非超载驱动程序启用此功能,否则微型端口驱动程序必须将唤醒事件限制为指定的 IPv6 地址和端口。
注意 此标志启用的通配符值可以包括未指定的 IPv6 源和目标地址,以及未指定的源和目标端口。
 

NDIS_PM_WOL_EAPOL_REQUEST_ID_MESSAGE_SUPPORTED

网络适配器在收到 EAPOL 请求标识符消息时可以生成唤醒事件。

NumTotalWoLPatterns

一个 ULONG 值,该值包含网络适配器支持的 WOL 模式总数。 这是“支持的 WOL 协议模式数”和“支持的 WOL 位图模式数”的总和。

例如,如果驱动程序支持 8 种灵活的位图模式、通过预设筛选器) 和幻数据包 (IPv4 TCP SYN,则你将在 NumTotalWoLPatterns 中报告 9。 (8 个位图 + 1 个 IPv4 TCP SYN = 9)

注意 WOL 模式的总数不包括幻数据包唤醒模式。
 
有关 WOL 协议模式的详细信息,请参阅 NDIS_PM_WOL_PATTERN

MaxWoLPatternSize

一个 ULONG 值,该值包含可与模式进行比较的最大字节数。

MaxWoLPatternOffset

一个 ULONG 值,该值包含数据包中可检查的字节数,从 MAC 标头的开头开始。

MaxWoLPacketSaveBuffer

一个 ULONG 值,该值包含微型端口驱动程序可以保存到缓冲区并指示驱动程序堆栈向上的 WOL 数据包的字节数。 此值必须小于或等于网络媒体的最大传输单元 (MTU) 的大小(以字节为单位)。 驱动程序通过 OID_GEN_MAXIMUM_FRAME_SIZE的 OID 查询请求报告 MTU 大小。

注意 在 NDIS 6.20 和早期版本的 NDIS 中忽略此成员。 从 NDIS 6.30 开始,如果在 Flags 成员中设置了NDIS_PM_WAKE_PACKET_INDICATION_SUPPORTED标志,则此成员必须包含非零值。
 

SupportedProtocolOffloads

一个 ULONG 值,该值包含指定网络适配器支持的协议卸载功能的标志的按位 OR 。 微型端口驱动程序使用这些标志来报告网络适配器的低功耗协议卸载功能。

NDIS_PM_PROTOCOL_OFFLOAD_ARP_SUPPORTED

如果设置了此位,则网络适配器可以在处于低功耗状态时响应 IPv4 ARP 数据包

有关 ARP 协议的详细信息,请参阅 RFC 826。

NDIS_PM_PROTOCOL_OFFLOAD_NS_SUPPORTED

如果设置了此位,则网络适配器可以在处于低功耗状态时响应 IPv6 邻居请求 (NS) 数据包。

有关 IPv6 NS 消息的详细信息,请参阅 RFC 4861

NDIS_PM_PROTOCOL_OFFLOAD_80211_RSN_REKEY_SUPPORTED

网络适配器可以在处于低功耗状态时响应 IEEE 802.11i 可靠安全网络 (RSN) 重新键请求。

NumArpOffloadIPv4Addresses

一个 ULONG 值,该值包含适配器支持 ARP 卸载的 IPv4 地址数。

NumNSOffloadIPv6Addresses

一个 ULONG 值,该值包含适配器支持的 IPv6 NS 卸载请求数。 这至少应为 2。

注意 尽管名称如此, NumNSOffloadIPv6Addresses 包含支持的请求数,而不是地址。
 

MinMagicPacketWakeUp

指定最低设备电源状态,网络适配器可在收到幻数据包时从中发出唤醒事件信号。 幻数据包在其有效负载中包含一个 6 个字节的字符串,值为 0xFF,后跟接收网络适配器的 MAC 地址的 16 个连续副本。

注意 设备电源状态由值 Dx 指定,其中 D0 是最高的设备电源状态,D3 是最低设备功率状态。
 
设备电源状态指定为以下 NDIS_DEVICE_POWER_STATE 值之一:

NdisDeviceStateUnspecified

网络适配器不支持幻数据包唤醒。

注意 如果 MinMagicPacketWakeUp 成员设置为此值,则不能在 SupportedWoLPacketPatterns 成员中设置NDIS_PM_WOL_MAGIC_PACKET_SUPPORTED标志。
 

NdisDeviceStateD0

网络适配器可以从设备电源状态 D0 发出幻数据包唤醒信号。 由于 D0 是完全供电状态,因此这不会导致唤醒,但可用作运行时事件。

注意 从 NDIS 6.20 开始,不再支持从 NdisDeviceStateD0 发出神奇数据包唤醒的信号。
 

NdisDeviceStateD1

网络适配器可以从设备电源状态 D1 发出神奇数据包唤醒信号。

NdisDeviceStateD2

网络适配器可以从设备状态 D2 发出神奇数据包唤醒信号。

NdisDeviceStateD3

网络适配器可以从设备电源状态 D3 发出神奇数据包唤醒信号。

MinPatternWakeUp

指定最低设备电源状态,网络适配器可在收到包含协议驱动程序指定的模式的网络帧时发出唤醒事件信号。 电源状态指定为以下 NDIS_DEVICE_POWER_STATE 值之一:

NdisDeviceStateUnspecified

网络适配器不支持模式匹配唤醒。

注意 如果 MinPatternWakeUp 成员设置为此值,则只能在 SupportedWoLPacketPatterns 成员中设置NDIS_PM_WOL_MAGIC_PACKET_SUPPORTED标志。
 

NdisDeviceStateD0

网络适配器可以从设备电源状态 D0 发出模式匹配唤醒信号。 由于 D0 是完全供电状态,因此这不会导致唤醒,但可用作运行时事件。

注意 从 NDIS 6.20 开始,不再支持从 NdisDeviceStateD0 发出模式匹配唤醒信号。
 

NdisDeviceStateD1

网络适配器可以从设备电源状态 D1 发出模式匹配唤醒信号。

NdisDeviceStateD2

网络适配器可以从设备电源状态 D2 发出模式匹配唤醒信号。

NdisDeviceStateD3

网络适配器可以从设备电源状态 D3 发出模式匹配唤醒信号。

MinLinkChangeWakeUp

从 NDIS 6.20 开始,此成员指定最低设备电源状态,当链接状态从已断开连接的媒体更改为已连接的媒体时,网络适配器可以从该状态发出唤醒事件信号。

从 NDIS 6.30 开始,此成员指定网络适配器可从中发出唤醒事件信号的最低设备电源状态。 这些事件在 SupportedWakeUpEvents 成员中指定。

电源状态指定为以下 NDIS_DEVICE_POWER_STATE 值之一:

NdisDeviceStateUnspecified

网络适配器不支持链接更改唤醒。

注意 如果 MinLinkChangeWakeUp 成员设置为此值,则必须将SupportedWakeUpEvents 成员设置为零。
 

NdisDeviceStateD0

网络适配器可以从设备电源状态 D0 发出链路更改唤醒信号。 由于 D0 是完全供电状态,因此这不会导致唤醒,但可用作运行时事件。

注意 从 NDIS 6.20 开始,不再支持从 NdisDeviceStateD0 发出链接更改唤醒的信号。
 

NdisDeviceStateD1

网络适配器可以从设备电源状态 D1 发出链路更改唤醒信号。

NdisDeviceStateD2

网络适配器可以从设备电源状态 D2 发出链路更改唤醒信号。

NdisDeviceStateD3

网络适配器可以从设备电源状态 D3 发出链路更改唤醒信号。

SupportedWakeUpEvents

包含标志的按位 ORULONG 值。 这些标志指定网络适配器支持的独立于媒体的唤醒事件。 这些事件不特定于媒体类型。

从 NDIS 6.30 开始,定义了以下标志:

NDIS_PM_WAKE_ON_MEDIA_CONNECT_SUPPORTED

如果设置了此标志,则网络适配器在连接到网络接口时可以生成唤醒事件。

NDIS_PM_WAKE_ON_MEDIA_DISCONNECT_SUPPORTED

如果设置了此标志,则网络适配器在与网络接口断开连接时可能会生成唤醒事件。

MediaSpecificWakeUpEvents

包含标志的按位 ORULONG 值。 这些标志指定网络适配器支持的特定于媒体的唤醒事件。

从 NDIS 6.30 开始,定义了以下标志:

NDIS_WLAN_WAKE_ON_NLO_DISCOVERY_SUPPORTED

如果设置了此标志,如果 802.11 网络适配器检测到通过网络列表卸载 (NLO) 指定的服务集标识符 (SSID) ,则会生成唤醒事件。

有关 NLO 的详细信息,请参阅 Wi-Fi 网络列表卸载

NDIS_WLAN_WAKE_ON_AP_ASSOCIATION_LOST_SUPPORTED

如果设置了此标志,如果 802.11 网络适配器与接入点 (ap) 取消关联,则可能会生成唤醒事件。

NDIS_WLAN_WAKE_ON_GTK_HANDSHAKE_ERROR_SUPPORTED

如果设置了此标志,则 802.11 网络适配器在 IEEE 802.11i RSN 组暂时性密钥 (GTK) 与 AP 握手期间遇到错误时,可能会生成唤醒事件。

NDIS_WLAN_WAKE_ON_4WAY_HANDSHAKE_REQUEST_SUPPORTED

如果设置了此标志,如果 802.11 网络适配器收到与 AP 的 IEEE 802.11i RSN 4 路握手的第一帧,则它可以生成唤醒事件。 当适配器向 AP 进行身份验证时,会执行此握手。

NDIS_WWAN_WAKE_ON_REGISTER_STATE_SUPPORTED

如果设置了此标志, (MB) 网络适配器的移动宽带可以生成唤醒事件,前提是其注册到 MB 服务的状态已更改。

NDIS_WWAN_WAKE_ON_SMS_RECEIVE_SUPPORTED

如果设置了此标志,则 MB 网络适配器可以生成唤醒事件,如果 MB 服务必须收到短信服务 (短信) 消息。 适配器在完成以前发出的 OID_WWAN_SMS_READ 查询请求后生成此唤醒事件,或者新 class-0 (flash/alert) 来自网络提供程序的消息作为事件通知。

NDIS_WWAN_WAKE_ON_USSD_RECEIVE_SUPPORTED

如果设置了此标志,如果 MB 网络适配器收到非结构化补充服务数据 (USSD) 消息,则它可以生成唤醒事件。

注解

NDIS_PM_CAPABILITIES 结构用于 的 PowerManagementCapabilitiesEx 成员 NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTESNDIS_BIND_PARAMETERS 结构和 中的 NDIS_STATUS_PM_CAPABILITIES_CHANGE 状态指示。

在微型端口初始化期间,微型端口驱动程序使用网络适配器硬件的电源管理功能初始化 NDIS_PM_CAPABILITIES 结构。 然后,微型端口驱动程序将 NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 结构的 PowerManagementCapabilitiesEx 成员设置为指向初始化 NDIS_PM_CAPABILITIES 结构。

过度使用的驱动程序不应尝试启用网络适配器不支持的功能。 为了允许过度使用的驱动程序确定网络适配器提供的功能,NDIS 在 NDIS_BIND_PARAMETERS 结构的 PowerManagementCapabilitiesEx 成员中提供了功能。

注意 NDIS 6.20 驱动程序必须使用 PowerManagementCapabilitiesEx 成员,而不是 PowerManagementCapabilities 成员。
 
SupportedProtocolOffloads 成员包含指定网络适配器支持的协议卸载功能的标志。 网络适配器在低功耗状态下处理这些协议。 例如,如果网络适配器硬件可以在驱动程序堆栈处于低功耗状态时处理驱动程序堆栈的 IPv4 ARP 数据包,则微型端口驱动程序在 SupportedProtocolOffloads 中设置NDIS_PM_PROTOCOL_OFFLOAD_ARP_SUPPORTED位。

要求

要求
最低受支持的客户端 在 NDIS 6.20 及更高版本中受支持。
标头 ntddndis.h (包括 Ntddndis.h)

另请参阅

NDIS_BIND_PARAMETERS

NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES

NDIS_OBJECT_HEADER

NDIS_PM_WOL_PATTERN

NDIS_STATUS_PM_CAPABILITIES_CHANGE

NDIS_STATUS_PM_WAKE_REASON

NdisMIndicateReceiveNetBufferLists

NdisMIndicateStatusEx