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 值,其中包含旗標的位 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 模式指定之位置中的傳入封包值會相符。
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 模式指定之位置中的傳入封包值會相符。
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)
MaxWoLPatternSize
ULONG 值,其中包含可與模式比較的最大位元組數目。
MaxWoLPatternOffset
ULONG 值,包含可檢查之封包中的位元組數目,從 MAC 標頭的開頭開始。
MaxWoLPacketSaveBuffer
ULONG 值,其中包含Miniport驅動程式可以儲存至緩衝區並指出驅動程式堆疊的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
指定網路適配器可以在收到魔術封包時發出喚醒事件的最小裝置電源狀態。 魔術封包在其承載中包含六個字節的字串,其值為 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 網路適配器與存取點 () 解除關聯,則 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_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) |