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 值,其中包含旗標的位 OR,指定網路適配器支援的網路喚醒 (WOL) 模式。 迷你埠驅動程式會使用這些旗標來公告網路適配器支援的封包型 WOL 模式。

如需此成員的詳細資訊,請參閱一節。 如需有關 WOL 模式的詳細資訊,請參閱 NDIS_PM_WOL_PATTERN

NDIS_PM_WOL_BITMAP_PATTERN_SUPPORTED

網路適配器在收到符合已設定位圖模式的封包時,可以產生喚醒事件。

NDIS_PM_WOL_MAGIC_PACKET_SUPPORTED

網路適配器可以在收到 WOL 魔術封包時產生喚醒事件。 魔術封包在其承載中包含六個字節的字串,其值為 0xFF,後面緊接著接收網路適配器乙太網路位址的 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 埠的任何零填滿或未指定的通配符值。 如此一來,通配符值就會符合任何 IPv4 位址,以及由 WOL 模式指定之位置內送封包的任何埠值。

當網路適配器支援以 LAN 封包模式為基礎的 IPv4 喚醒時,例如 IPv4 TCP SYN 模式時,如果傳入封包的 IPv4 位址和埠值符合喚醒模式中指定的喚醒事件,就必須支援產生喚醒事件。

不過,如果已設定NDIS_PM_WOL_IPV4_DEST_ADDR_WILDCARD_SUPPORTED旗標,如果下列模式比對條件成立,網路適配器也可以產生喚醒事件:

  • 如果該位置的 WOL 模式包含通配符值,來自內送封包的任何值都是相符的。
  • 如果該位置的 WOL 模式包含等於封包值的非零值,則由 WOL 模式指定之位置中的傳入封包值會相符。
迷你埠驅動程式必須將喚醒事件限制為指定的 IPv4 位址和埠,除非過度配置驅動程式啟用這項功能。
注意 此旗標所啟用的通配符值可以包含未指定的 IPv4 來源和目的地位址,以及未指定的來源和目的地埠。
 

NDIS_PM_WOL_IPV6_DEST_ADDR_WILDCARD_SUPPORTED

如果已設定此旗標,網路適配器支援以 WOL 模式作為 IPv6 位址和 TCP/UDP 埠的任何零填滿或未指定的通配符值。 如此一來,通配符值就會符合任何 IPv6 位址,以及由 WOL 模式指定之位置內送封包的任何埠值。

當網路適配器支援以 LAN 封包模式為基礎的 IPv6 喚醒,例如 IPv6 TCP SYN 模式時,如果傳入封包的 IPv6 位址和埠值符合喚醒模式中指定的喚醒事件,它就必須支援產生喚醒事件。

不過,如果已設定NDIS_PM_WOL_IPV6_DEST_ADDR_WILDCARD_SUPPORTED旗標,如果下列模式比對條件成立,網路適配器也可以產生喚醒事件:

  • 如果該位置的 WOL 模式包含通配符值,來自內送封包的任何值都是相符的。
  • 如果該位置的 WOL 模式包含等於封包值的非零值,則由 WOL 模式指定之位置中的傳入封包值會相符。
迷你埠驅動程式必須將喚醒事件限制為指定的 IPv6 位址和埠,除非過度配置驅動程式啟用這項功能。
注意 此旗標所啟用的通配符值可以包含未指定的 IPv6 來源和目的地位址,以及未指定的來源和目的地埠。
 

NDIS_PM_WOL_EAPOL_REQUEST_ID_MESSAGE_SUPPORTED

網路適配器在收到 EAPOL 要求標識子訊息時,可能會產生喚醒事件。

NumTotalWoLPatterns

ULONG 值,其中包含網路適配器支援的 WOL 模式總數。 這是「支援的 WOL 通訊協定模式數目」和「支援的 WOL 位圖模式數目」的總和。

例如,如果您的驅動程式支援 8 個彈性點圖模式,則 IPv4 TCP SYN (透過預設篩選) 和 magic 封包,則您會在 NumTotalWoLPatterns 中回報 9。 (8 個點陣圖 + 1 個 IPv4 TCP SYN = 9)

注意 WOL 模式的總數不包含魔術封包喚醒模式。
 
如需有關 WOL 通訊協定模式的詳細資訊,請參閱 NDIS_PM_WOL_PATTERN

MaxWoLPatternSize

ULONG 值,其中包含可與模式比較的最大位元組數目。

MaxWoLPatternOffset

ULONG 值,包含可檢查之封包中的位元組數目,從 MAC 標頭的開頭開始。

MaxWoLPacketSaveBuffer

ULONG 值,其中包含Miniport驅動程式可以儲存至緩衝區並指出驅動程式堆疊的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

指定網路適配器可以在收到魔術封包時發出喚醒事件的最小裝置電源狀態。 魔術封包在其承載中包含六個字節的字串,其值為 0xFF,後面緊接著接收網路適配器 MAC 位址的 16 個連續複本。

注意 裝置電源狀態是由 Dx 的值所指定,其中 D0 是最高的裝置電源狀態,而 D3 是最低的裝置電源狀態。
 
裝置電源狀態會指定為下列其中一個 NDIS_DEVICE_POWER_STATE 值:

NdisDeviceStateUnspecified

網路適配器不支援魔術封包喚醒。

注意 如果 MinMagicPacketWakeUp 成員設定為此值,則NDIS_PM_WOL_MAGIC_PACKET_SUPPORTED旗標不得設定在 SupportedWoLPacketPatterns 成員中。
 

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 網路適配器與存取點 () 解除關聯,則 802.11 網路適配器可能會產生喚醒事件。

NDIS_WLAN_WAKE_ON_GTK_HANDSHAKE_ERROR_SUPPORTED

如果設定此旗標,如果 802.11 網路適配器在 IEEE 802.11i RSN 群組暫時性密鑰期間遇到錯誤,則 802.11 網路適配器可能會產生喚醒事件, (GTK) 與 AP 交握。

NDIS_WLAN_WAKE_ON_4WAY_HANDSHAKE_REQUEST_SUPPORTED

如果設定此旗標,如果 802.11 網路適配器收到 IEEE 802.11i RSN 4 向交握與 AP 的第一個框架,則它可能會產生喚醒事件。 當配接器向AP進行驗證時,就會執行此交握。

NDIS_WWAN_WAKE_ON_REGISTER_STATE_SUPPORTED

如果設定此旗標,如果行動寬頻 (MB) 網路適配器的註冊狀態已變更,可能會產生喚醒事件。

NDIS_WWAN_WAKE_ON_SMS_RECEIVE_SUPPORTED

如果已設定此旗標,如果 MB 服務必須收到簡訊服務 (簡訊) 訊息的通知,MB 網路適配器可能會產生喚醒事件。 配接器會在先前發出的 OID_WWAN_SMS_READ 查詢要求完成之後,或從網路提供者收到新類別 0 (快閃/警示) 訊息作為事件通知之後,產生此喚醒事件。

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