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 がNDIS_OBJECT_TYPE_DEFAULTに指定する構造体の Type メンバーを設定します。
NDIS_RECEIVE_FILTER_FIELD_PARAMETERS構造体のバージョンを示すために、ドライバーは Revision メンバーを次のいずれかの値に設定します。
Flags
フラグのビットごとの OR。 次のフラグは、 に対して有効です。 OID_RECEIVE_FILTER_SET_FILTER Oid。
値 | 意味 |
---|---|
|
このフラグが設定されている場合、ネットワーク アダプターは、次の条件を満たす受信パケットのみを示す必要があります。
メモ 上にあるドライバーが MAC アドレス フィルターと、OID_RECEIVE_FILTER_SET_FILTER の OID 要求を持つ VLAN 識別子フィルターを設定する 場合、フィルター フィールドのいずれにもこのフラグは設定されません。 この場合、ミニポート ドライバーは、指定された MAC アドレスと VLAN 識別子の両方に一致するパケットを示す必要があります。 つまり、ミニポート ドライバーは、0 個の VLAN 識別子を持つ、またはタグ付けされていないパケットが一致する MAC アドレスを持つパケットを示すべきではありません。
|
FrameHeader
ネットワーク データ フレーム内のヘッダーの種類。
ReceiveFilterTest
受信フィルターに対して実行するテストの種類。
HeaderField
ヘッダー内のフィールドの型。 フィールド型 ( たとえば、NDIS_MAC_HEADER_FIELD) は、 FrameHeader メンバーで指定されたヘッダーの型に対応します。
この共用体には、次のメンバーが含まれています。
HeaderField.MacHeaderField
MAC ヘッダーのフィールドの種類。
HeaderField.ArpHeaderField
アドレス解決プロトコル (ARP) ヘッダーのフィールドの型。
HeaderField.IPv4HeaderField
IP バージョン 4 (IPv4) ヘッダーのフィールドの種類を指定する NDIS_IPV4_HEADER_FIELD列挙値 。
HeaderField.IPv6HeaderField
IP バージョン 6 (IPv6) ヘッダーのフィールドの種類を指定する NDIS_IPV6_HEADER_FIELD列挙値 。
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構造体は、 で指定できるフィールド テストの配列内の 1 つのフィールドのフィルター テスト条件を指定します。 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 に VLAN タグを配置 する 必要があります。
-
ミニポート ドライバーは、指定された MAC アドレスと VLAN 識別子フィールドを検査してフィルター処理するようにネットワーク アダプターを構成する必要があります。
VLAN タグが受信パケットに存在する場合、ネットワーク アダプターはパケット データから VLAN タグを削除する必要があります。 ミニポート ドライバーは、パケットのNET_BUFFER_LIST構造に関連付けられている NDIS_NET_BUFFER_LIST_8021Q_INFO に VLAN タグを配置 する 必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | NDIS 6.20 以降でサポートされています。 |
Header | ntddndis.h (Ndis.h を含む) |
こちらもご覧ください
NDIS_RECEIVE_FILTER_PARAMETERSフィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示