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 结构。
微型端口驱动程序必须将 Header 的 Type 成员设置为NDIS_OBJECT_TYPE_DEFAULT。 若要指定 NDIS_PM_CAPABILITIES 结构的版本,驱动程序必须将 Header 的 Revision 成员设置为以下值:
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
包含标志的按位 OR 的 ULONG 值。 对于 NDIS 6.20,此成员是为 NDIS 保留的。
从 NDIS 6.30 开始,定义了以下标志:
NDIS_PM_WAKE_PACKET_INDICATION_SUPPORTED
如果设置了此标志,则网络适配器必须能够保存导致适配器生成唤醒事件的接收数据包。
如果设置了此标志,则微型端口驱动程序必须能够在网络适配器转换为全功率状态后使用此数据包执行以下操作:
- 微型端口驱动程序必须能够通过调用 NdisMIndicateReceiveNetBufferLists 来指示数据包。
- 微型端口驱动程序必须能够发出 NDIS_STATUS_PM_WAKE_REASON 状态指示,并且必须传递带有 指示的数据包。
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 模式指定的位置中的传入数据包的值是匹配的。
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 模式指定的位置中的传入数据包的值是匹配的。
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)
MaxWoLPatternSize
一个 ULONG 值,该值包含可与模式进行比较的最大字节数。
MaxWoLPatternOffset
一个 ULONG 值,该值包含数据包中可检查的字节数,从 MAC 标头的开头开始。
MaxWoLPacketSaveBuffer
一个 ULONG 值,该值包含微型端口驱动程序可以保存到缓冲区并指示驱动程序堆栈向上的 WOL 数据包的字节数。 此值必须小于或等于网络媒体的最大传输单元 (MTU) 的大小(以字节为单位)。 驱动程序通过 OID_GEN_MAXIMUM_FRAME_SIZE的 OID 查询请求报告 MTU 大小。
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。
MinMagicPacketWakeUp
指定最低设备电源状态,网络适配器可在收到幻数据包时从中发出唤醒事件信号。 幻数据包在其有效负载中包含一个 6 个字节的字符串,值为 0xFF,后跟接收网络适配器的 MAC 地址的 16 个连续副本。
NdisDeviceStateUnspecified
网络适配器不支持幻数据包唤醒。
NdisDeviceStateD0
网络适配器可以从设备电源状态 D0 发出幻数据包唤醒信号。 由于 D0 是完全供电状态,因此这不会导致唤醒,但可用作运行时事件。
NdisDeviceStateD1
网络适配器可以从设备电源状态 D1 发出神奇数据包唤醒信号。
NdisDeviceStateD2
网络适配器可以从设备状态 D2 发出神奇数据包唤醒信号。
NdisDeviceStateD3
网络适配器可以从设备电源状态 D3 发出神奇数据包唤醒信号。
MinPatternWakeUp
指定最低设备电源状态,网络适配器可在收到包含协议驱动程序指定的模式的网络帧时发出唤醒事件信号。 电源状态指定为以下 NDIS_DEVICE_POWER_STATE 值之一:
NdisDeviceStateUnspecified
网络适配器不支持模式匹配唤醒。
NdisDeviceStateD0
网络适配器可以从设备电源状态 D0 发出模式匹配唤醒信号。 由于 D0 是完全供电状态,因此这不会导致唤醒,但可用作运行时事件。
NdisDeviceStateD1
网络适配器可以从设备电源状态 D1 发出模式匹配唤醒信号。
NdisDeviceStateD2
网络适配器可以从设备电源状态 D2 发出模式匹配唤醒信号。
NdisDeviceStateD3
网络适配器可以从设备电源状态 D3 发出模式匹配唤醒信号。
MinLinkChangeWakeUp
从 NDIS 6.20 开始,此成员指定最低设备电源状态,当链接状态从已断开连接的媒体更改为已连接的媒体时,网络适配器可以从该状态发出唤醒事件信号。
从 NDIS 6.30 开始,此成员指定网络适配器可从中发出唤醒事件信号的最低设备电源状态。 这些事件在 SupportedWakeUpEvents 成员中指定。
电源状态指定为以下 NDIS_DEVICE_POWER_STATE 值之一:
NdisDeviceStateUnspecified
网络适配器不支持链接更改唤醒。
NdisDeviceStateD0
网络适配器可以从设备电源状态 D0 发出链路更改唤醒信号。 由于 D0 是完全供电状态,因此这不会导致唤醒,但可用作运行时事件。
NdisDeviceStateD1
网络适配器可以从设备电源状态 D1 发出链路更改唤醒信号。
NdisDeviceStateD2
网络适配器可以从设备电源状态 D2 发出链路更改唤醒信号。
NdisDeviceStateD3
网络适配器可以从设备电源状态 D3 发出链路更改唤醒信号。
SupportedWakeUpEvents
包含标志的按位 OR 的 ULONG 值。 这些标志指定网络适配器支持的独立于媒体的唤醒事件。 这些事件不特定于媒体类型。
从 NDIS 6.30 开始,定义了以下标志:
NDIS_PM_WAKE_ON_MEDIA_CONNECT_SUPPORTED
如果设置了此标志,则网络适配器在连接到网络接口时可以生成唤醒事件。
NDIS_PM_WAKE_ON_MEDIA_DISCONNECT_SUPPORTED
如果设置了此标志,则网络适配器在与网络接口断开连接时可能会生成唤醒事件。
MediaSpecificWakeUpEvents
包含标志的按位 OR 的 ULONG 值。 这些标志指定网络适配器支持的特定于媒体的唤醒事件。
从 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_ATTRIBUTES 和 NDIS_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 及更高版本中受支持。 |
标头 | ntddndis.h (包括 Ntddndis.h) |