NDIS_PM_CAPABILITIES结构(ntddndis.h)

The NDIS_PM_CAPABILITIES structure specifies power management capabilities of a network adapter.

Syntax

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;

Members

Header

The type, revision, and size of the NDIS_PM_CAPABILITIES structure. This member is formatted as an NDIS_OBJECT_HEADER structure.

The miniport driver must set the Type member of Header to NDIS_OBJECT_TYPE_DEFAULT. To specify the version of the NDIS_PM_CAPABILITIES structure, the driver must set the Revision member of Header to the following value:

NDIS_PM_CAPABILITIES_REVISION_2

为 NDIS 6.30 添加了各种更改。

Set the Size member to NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_2.

NDIS_PM_CAPABILITIES_REVISION_1

NDIS 6.20 的原始版本。

Set the Size member to NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_1.

Flags

A ULONG value that contains a bitwise OR of flags. 对于 NDIS 6.20,此成员保留为 NDIS。

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

NDIS_PM_WAKE_PACKET_INDICATION_SUPPORTED

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

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

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

NDIS_PM_SELECTIVE_SUSPEND_SUPPORTED

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

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

SupportedWoLPacketPatterns

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

有关此成员的详细信息,请参阅“备注”部分。 For more information about WOL patterns, see NDIS_PM_WOL_PATTERN.

NDIS_PM_WOL_BITMAP_PATTERN_SUPPORTED

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

NDIS_PM_WOL_MAGIC_PACKET_SUPPORTED

网络适配器在收到 WOL magic 数据包时可以生成唤醒事件。 A magic packet contains within its payload a string of six bytes with a value of 0xFF, followed immediately by 16 contiguous copies of the receiving network adapter's Ethernet address.

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

If this flag is set, the network adapter supports as wildcard values any zero-filled, or unspecified, values for IPv4 addresses and TCP/UDP ports in a WOL pattern. 通过这种方式,通配符值与 WOL 模式指定的位置中传入数据包的任何 IPv4 地址和任何端口值匹配。

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

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

  • 如果该位置的 WOL 模式的 WOL 模式包含通配符值,则来自传入数据包的任何值都是匹配的。
  • 如果该位置的 WOL 模式包含等于数据包值的非零值,则来自 WOL 模式的传入数据包的值是匹配的。
微型端口驱动程序必须将唤醒事件限制为指定的 IPv4 地址和端口,除非过度配置驱动程序启用此功能。
Note Wildcard values that are enabled by this flag can include unspecified IPv4 source and destination addresses, as well as unspecified source and destination ports.
 

NDIS_PM_WOL_IPV6_DEST_ADDR_WILDCARD_SUPPORTED

If this flag is set, the network adapter supports as wildcard values any zero-filled, or unspecified, values for IPv6 addresses and TCP/UDP ports in a WOL pattern. 通过这种方式,通配符值与 WOL 模式指定的位置中传入数据包的任何 IPv6 地址和任何端口值匹配。

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

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

  • 如果该位置的 WOL 模式的 WOL 模式包含通配符值,则来自传入数据包的任何值都是匹配的。
  • 如果该位置的 WOL 模式包含等于数据包值的非零值,则来自 WOL 模式的传入数据包的值是匹配的。
微型端口驱动程序必须将唤醒事件限制为指定的 IPv6 地址和端口,除非过度配置驱动程序启用此功能。
Note Wildcard values that are enabled by this flag can include unspecified IPv6 source and destination addresses, as well as unspecified source and destination ports.
 

NDIS_PM_WOL_EAPOL_REQUEST_ID_MESSAGE_SUPPORTED

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

NumTotalWoLPatterns

A ULONG value that contains the total number of WOL patterns that a network adapter supports. 这是“支持的 WOL 协议模式数”和“支持的 WOL 位图模式数”的总和。

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

Note The total number of WOL patterns does not include the magic packet wake-up pattern.
 
For more information about WOL protocol patterns, see NDIS_PM_WOL_PATTERN.

MaxWoLPatternSize

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

MaxWoLPatternOffset

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

MaxWoLPacketSaveBuffer

一个 ULONG 值,该值包含微型端口驱动程序可以保存到缓冲区并指示驱动程序堆栈的 WOL 数据包的字节数。 此值必须小于或等于网络媒体的最大传输单元(MTU)的大小(以字节为单位)。 The driver reports the MTU size through OID query requests of OID_GEN_MAXIMUM_FRAME_SIZE.

Note This member is ignored in NDIS 6.20 and earlier versions of NDIS. Starting with NDIS 6.30, this member must contain a nonzero value if the NDIS_PM_WAKE_PACKET_INDICATION_SUPPORTED flag is set in the Flags member.
 

SupportedProtocolOffloads

A ULONG value that contains a bitwise OR of flags that specify the protocol offload features that a network adapter supports. 微型端口驱动程序使用这些标志报告网络适配器的低功率协议卸载功能。

NDIS_PM_PROTOCOL_OFFLOAD_ARP_SUPPORTED

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

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

NDIS_PM_PROTOCOL_OFFLOAD_NS_SUPPORTED

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

For more information about IPv6 NS messages, see RFC 4861.

NDIS_PM_PROTOCOL_OFFLOAD_80211_RSN_REKEY_SUPPORTED

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

NumArpOffloadIPv4Addresses

A ULONG value that contains the number of IPv4 addresses that the adapter supports for ARP offload.

NumNSOffloadIPv6Addresses

A ULONG value that contains the number of IPv6 NS offload requests that the adapter supports. 这至少应为 2。

Note Despite its name, the NumNSOffloadIPv6Addresses contains the number of supported requests, not addresses.
 

MinMagicPacketWakeUp

指定网络适配器在收到神奇数据包时发出唤醒事件信号的最低设备电源状态。 A magic packet contains within its payload a string of six bytes with a value of 0xFF, followed immediately by 16 contiguous copies of the receiving network adapter's MAC address.

Note Device power states are specified by a value of Dx, where D0 is the highest device power state and D3 is the lowest device power state.
 
The device power state is specified as one of the following NDIS_DEVICE_POWER_STATE values:

NdisDeviceStateUnspecified

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

Note If the MinMagicPacketWakeUp member is set to this value, the NDIS_PM_WOL_MAGIC_PACKET_SUPPORTED flag must not be set in the SupportedWoLPacketPatterns member.
 

NdisDeviceStateD0

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

Note Starting with NDIS 6.20, signaling a magic packet wake-up from NdisDeviceStateD0 is no longer supported.
 

NdisDeviceStateD1

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

NdisDeviceStateD2

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

NdisDeviceStateD3

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

MinPatternWakeUp

指定网络适配器在收到包含协议驱动程序指定的模式的网络帧时发出唤醒事件信号的最低设备电源状态。 The power state is specified as one of the following NDIS_DEVICE_POWER_STATE values:

NdisDeviceStateUnspecified

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

Note If the MinPatternWakeUp member is set to this value, only the NDIS_PM_WOL_MAGIC_PACKET_SUPPORTED flag can be set in the SupportedWoLPacketPatterns member.
 

NdisDeviceStateD0

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

Note Starting with NDIS 6.20, signaling a pattern-match wake-up from NdisDeviceStateD0 is no longer supported.
 

NdisDeviceStateD1

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

NdisDeviceStateD2

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

NdisDeviceStateD3

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

MinLinkChangeWakeUp

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

从 NDIS 6.30 开始,此成员指定网络适配器可以发出唤醒事件信号的最低设备电源状态。 These events are specified in the SupportedWakeUpEvents member.

The power state is specified as one of the following NDIS_DEVICE_POWER_STATE values:

NdisDeviceStateUnspecified

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

Note If the MinLinkChangeWakeUp member is set to this value, theSupportedWakeUpEvents member must be set to zero.
 

NdisDeviceStateD0

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

Note Starting with NDIS 6.20, signaling a link change wake-up from NdisDeviceStateD0 is no longer supported.
 

NdisDeviceStateD1

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

NdisDeviceStateD2

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

NdisDeviceStateD3

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

SupportedWakeUpEvents

A ULONG value that contains a bitwise OR of flags. 这些标志指定网络适配器支持的独立于媒体的唤醒事件。 这些事件不特定于媒体类型。

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

NDIS_PM_WAKE_ON_MEDIA_CONNECT_SUPPORTED

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

NDIS_PM_WAKE_ON_MEDIA_DISCONNECT_SUPPORTED

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

MediaSpecificWakeUpEvents

A ULONG value that contains a bitwise OR of flags. 这些标志指定网络适配器支持的特定于媒体的唤醒事件。

从 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 网络适配器收到 IEEE 802.11i RSN 4 向握手,则它可以生成唤醒事件。 当适配器使用 AP 进行身份验证时,将执行此握手。

NDIS_WWAN_WAKE_ON_REGISTER_STATE_SUPPORTED

如果设置了此标志,则移动宽带(MB)网络适配器可以在其注册状态更改为 MB 服务时生成唤醒事件。

NDIS_WWAN_WAKE_ON_SMS_RECEIVE_SUPPORTED

如果设置了此标志,则 MB 网络适配器可以生成唤醒事件(如果 MB 服务必须收到有关收到短消息服务(SMS)消息的通知。 The adapter generates this wake-up event either after the completion of a previously issued OID_WWAN_SMS_READ query request, or the arrival of a new class-0 (flash/alert) message from the network provider as an event notification.

NDIS_WWAN_WAKE_ON_USSD_RECEIVE_SUPPORTED

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

Remarks

The NDIS_PM_CAPABILITIES structure is used in the PowerManagementCapabilitiesEx member of the NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES and NDIS_BIND_PARAMETERS structures and in the NDIS_STATUS_PM_CAPABILITIES_CHANGE status indication.

During miniport initialization, the miniport driver initializes an NDIS_PM_CAPABILITIES structure with the power management capabilities of the network adapter hardware. The miniport driver then sets the PowerManagementCapabilitiesEx member of the NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES structure to point to the initialized NDIS_PM_CAPABILITIES structure.

过度的驱动程序不应尝试启用网络适配器不支持的功能。 To allow an overlying driver to determine what capabilities a network adapter provides, NDIS provides the capabilities in the PowerManagementCapabilitiesEx member of the NDIS_BIND_PARAMETERS structure.

Note NDIS 6.20 drivers must use the PowerManagementCapabilitiesEx member instead of the PowerManagementCapabilities member.
 
The SupportedProtocolOffloads member contains flags that specify the protocol offload features that a network adapter supports. 网络适配器以低功率状态处理这些协议。 For example, if the network adapter hardware can handle IPv4 ARP packets for the driver stack while it is in a low power state, the miniport driver sets the NDIS_PM_PROTOCOL_OFFLOAD_ARP_SUPPORTED bit in SupportedProtocolOffloads.

Requirements

Requirement Value
最低支持的客户端 NDIS 6.20 及更高版本中受支持。
Header ntddndis.h (包括 Ntddndis.h)

See also

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