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 構造体。 ドライバーは、ヘッダー がNDIS_OBJECT_TYPE_DEFAULTに指定 構造体の 型 メンバーを設定します。
NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 構造体のバージョンを示すために、ドライバーは、リビジョン メンバーを次のいずれかの値に設定します。
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 以降でサポートされています。 |
ヘッダー | ntddndis.h (Ndis.h を含む) |