NDIS_RECEIVE_FILTER_FIELD_PARAMETERS結構 (ntddndis.h)
NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 結構會指定網路封包標頭中欄位的篩選測試準則。
NDIS 接收篩選條件用於下列 NDIS 介面:
-
NDIS 封包聯合。 如需有關如何在此介面中使用接收篩選的詳細資訊,請參閱 管理封包聯合接收篩選。
-
單一根目錄 I/O 虛擬化 (SR-IOV) 。 如需如何在此介面中使用接收篩選的詳細資訊,請參閱 在虛擬埠上設定接收篩選。
-
虛擬機器佇列 (VMQ)。 如需有關如何在此介面中使用接收篩選的詳細資訊,請參閱 設定和清除 VMQ 篩選。
語法
typedef struct _NDIS_RECEIVE_FILTER_FIELD_PARAMETERS {
NDIS_OBJECT_HEADER Header;
ULONG Flags;
NDIS_FRAME_HEADER FrameHeader;
NDIS_RECEIVE_FILTER_TEST ReceiveFilterTest;
union {
NDIS_MAC_HEADER_FIELD MacHeaderField;
NDIS_ARP_HEADER_FIELD ArpHeaderField;
NDIS_IPV4_HEADER_FIELD IPv4HeaderField;
NDIS_IPV6_HEADER_FIELD IPv6HeaderField;
NDIS_UDP_HEADER_FIELD UdpHeaderField;
} HeaderField;
_HEADER_FIELD _HEADER_FIELD;
union {
UCHAR FieldByteValue;
USHORT FieldShortValue;
ULONG FieldLongValue;
ULONG64 FieldLong64Value;
UCHAR FieldByteArrayValue[16];
} FieldValue;
_FIELD_VALUE _FIELD_VALUE;
union {
UCHAR ResultByteValue;
USHORT ResultShortValue;
ULONG ResultLongValue;
ULONG64 ResultLong64Value;
UCHAR ResultByteArrayValue[16];
} ResultValue;
_RESULT_VALUE _RESULT_VALUE;
} NDIS_RECEIVE_FILTER_FIELD_PARAMETERS, *PNDIS_RECEIVE_FILTER_FIELD_PARAMETERS;
成員
Header
NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 結構的NDIS_OBJECT_HEADER結構。 驅動程式會將 Header 所指定之結構的 Type 成員設定為NDIS_OBJECT_TYPE_DEFAULT。
若要指出 NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 結構的版本,驅動程式會將 Revision 成員設定為下列其中一個值:
Flags
旗標的位 OR。 下列旗標對 有效 OID_RECEIVE_FILTER_SET_FILTER 老。
值 | 意義 |
---|---|
|
如果已設定此旗標,網路適配器必須只指出通過下列準則的已接收封包:
注意 如果過度配置驅動程式設定 MAC 位址篩選條件,以及具有 OID 要求的 VLAN 識別元篩選 條件OID_RECEIVE_FILTER_SET_FILTER,則不會在任一篩選字段中設定此旗標。 在此情況下,迷你埠驅動程序應該指出符合指定 MAC 位址和 VLAN 識別碼的封包。 也就是說,迷你埠驅動程序不應該指出具有零 VLAN 標識碼或未標記封包之相符 MAC 位址的封包。
|
FrameHeader
網路數據框架中的標頭類型。
ReceiveFilterTest
要針對接收篩選條件執行的測試類型。
HeaderField
標頭中的欄位類型。 例如,欄位類型 (,NDIS_MAC_HEADER_FIELD) 對應至 FrameHeader 成員中指定的標頭類型。
此聯集包含下列成員:
HeaderField.MacHeaderField
MAC 標頭中的欄位類型。
HeaderField.ArpHeaderField
位址解析通訊協定 (ARP) 標頭中的欄位類型。
HeaderField.IPv4HeaderField
NDIS_IPV4_HEADER_FIELD 列舉值,指定IP版本4 (IPv4) 標頭中的欄位類型。
HeaderField.IPv6HeaderField
NDIS_IPV6_HEADER_FIELD列舉值,指定IP版本6 (IPv6) 標頭中的欄位類型。
HeaderField.UdpHeaderField
用戶數據報通訊協定中的欄位類型, (UDP) 標頭。
_HEADER_FIELD
FieldValue
迷你埠配接器與傳入封包中對應的標頭域值相比較的值。 標頭域值的位置取決於 HeaderField 成員中指定的欄位類型。
如需詳細資訊,請參閱<備註>一節。
此聯集包含下列成員:
FieldValue.FieldByteValue
要與網路封包中欄位比較的 UCHAR 值。
FieldValue.FieldShortValue
要與網路封包中欄位比較的 USHORT 值。
FieldValue.FieldLongValue
要與網路封包中欄位比較的 ULONG 值。
FieldValue.FieldLong64Value
要與網路封包中欄位比較 的ULONG64 值。
FieldValue.FieldByteArrayValue[16]
要與網路封包中字段比較的 UCHAR 陣列。
_FIELD_VALUE
ResultValue
包含測試結果值的等位。
如果 ReceiveFilterTest 成員設定為 NdisReceiveFilterTestMaskEqual,網路適配器會先計算 FieldValue 成員中的值和 HeaderField 成員所指定的標頭域值的結果。 接著,配接器會比較計算結果與 ResultValue。
如需詳細資訊,請參閱<備註>一節。
此聯集包含下列成員:
ResultValue.ResultByteValue
要與測試結果比較的 UCHAR 值。
ResultValue.ResultShortValue
要與測試結果比較的 USHORT 值。
ResultValue.ResultLongValue
要與測試結果比較的 ULONG 值。
ResultValue.ResultLong64Value
要與測試結果比較 的ULONG64 值。
ResultValue.ResultByteArrayValue[16]
要與測試結果比較的 UCHAR 陣列。
_RESULT_VALUE
備註
NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 結構會指定一個字段的篩選測試準則,該欄位的可能陣列中可以使用 指定 NDIS_RECEIVE_FILTER_PARAMETERS 結構。
下表描述網路適配器如何使用 ReceiveFilterTest、FieldValue 和 ResultValue 成員,對所接收封包的指定標頭域值執行篩選測試。
ReceiveFilterTest 值 | 網路配接器所執行的篩選測試 |
---|---|
NdisReceiveFilterTestEqual | < (標頭域值> == FieldValue) |
NdisReceiveFilterTestMaskEqual | < ( (標頭域值> & FieldValue) == ResultValue) |
NdisReceiveFilterTestNotEqual | < (標頭域值> != FieldValue) |
- 針對 NDIS 6.20,迷你埠驅動程式必須針對 OID_RECEIVE_FILTER_SET_FILTER的 OID 要求傳回失敗狀態。
-
從 NDIS 6.30 開始,如果未設定 NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO 旗標,而且 OID_RECEIVE_FILTER_SET_FILTER方法要求 未設定 VLAN 識別符篩選,迷你埠驅動程式必須執行下列其中一項:
- 迷你埠驅動程序必須傳回 OID_RECEIVE_FILTER_SET_FILTER 方法要求的失敗狀態。
- 迷你埠驅動程式必須設定網路適配器,以檢查和篩選指定的 MAC 位址欄位。 如果接收的封包中有 VLAN 標籤,網路適配器必須將其從封包數據中移除。 迷你埠驅動程序必須將 VLAN 標籤放在與封包NET_BUFFER_LIST結構相關聯的NDIS_NET_BUFFER_LIST_8021Q_INFO中。
-
迷你埠驅動程式必須設定網路適配器,以檢查和篩選指定的 MAC 位址和 VLAN 識別符字段。
如果接收的封包中有 VLAN 標籤,網路適配器必須將其從封包數據中移除。 迷你埠驅動程序必須將 VLAN 標籤放在與封包NET_BUFFER_LIST結構相關聯的NDIS_NET_BUFFER_LIST_8021Q_INFO中。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | NDIS 6.20 和更新版本支援。 |
標頭 | ntddndis.h (包含 Ndis.h) |
另請參閱
NDIS_RECEIVE_FILTER_PARAMETERS意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應