NDIS_RECEIVE_FILTER_PARAMETERS 構造体 (ntddndis.h)
NDIS_RECEIVE_FILTER_PARAMETERS構造体は、NDIS 受信フィルターのパラメーターを指定します。
NDIS 受信フィルターは、次の NDIS インターフェイスで使用されます。
-
NDIS パケット結合。 このテクノロジで受信フィルターを使用する方法の詳細については、「 パケット結合受信フィルターの管理」を参照してください。
-
単一ルート I/O 仮想化 (SR-IOV)。 このテクノロジで受信フィルターを使用する方法の詳細については、「 仮想ポートでの受信フィルターの設定」を参照してください。
-
バーチャル マシン キュー (VMQ)。 このインターフェイスで受信フィルターを使用する方法の詳細については、「 VMQ フィルターの設定とクリア」を参照してください。
構文
typedef struct _NDIS_RECEIVE_FILTER_PARAMETERS {
NDIS_OBJECT_HEADER Header;
ULONG Flags;
NDIS_RECEIVE_FILTER_TYPE FilterType;
NDIS_RECEIVE_QUEUE_ID QueueId;
NDIS_RECEIVE_FILTER_ID FilterId;
ULONG FieldParametersArrayOffset;
ULONG FieldParametersArrayNumElements;
ULONG FieldParametersArrayElementSize;
ULONG RequestedFilterIdBitCount;
ULONG MaxCoalescingDelay;
NDIS_NIC_SWITCH_VPORT_ID VPortId;
} NDIS_RECEIVE_FILTER_PARAMETERS, *PNDIS_RECEIVE_FILTER_PARAMETERS;
メンバー
Header
NDIS_RECEIVE_FILTER_PARAMETERS構造体のNDIS_OBJECT_HEADER構造体。 ドライバーは、Header がNDIS_OBJECT_TYPE_DEFAULTに指定する構造体の Type メンバーを設定します。
NDIS_RECEIVE_FILTER_PARAMETERS構造体のバージョンを示すために、ドライバーは Revision メンバーを次のいずれかの値に設定します。
NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_2
NDIS 6.30 の VPortId および MaxCoalescingDelay メンバーを追加しました。
ドライバーは 、Size メンバーをNDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_2に設定します。
NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_1
NDIS 6.20 の元のバージョン。
ドライバーは 、Size メンバーをNDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_1に設定します。
Flags
次のフラグのビットごとの OR。
バージョン | 値 | 意味 |
---|---|---|
NDIS 6.50 以降 | NDIS_RECEIVE_FILTER_PACKET_ENCAPSULATION 0x00000002 | このフラグが受信フィルターに設定されている場合、ネットワーク アダプターは、カプセル化されたパケット内の内部イーサネット フレーム内のこの MAC アドレスと一致する必要があります。 |
NDIS 6.20 から NDIS 6.40 | NDIS_RECEIVE_FILTER_PACKET_ENCAPSULATION_GRE 0x00000002 | このフラグが受信フィルターに設定されている場合、ネットワーク アダプターは GRE カプセル化されたパケットの内部イーサネット フレーム内のこの MAC アドレスと一致する必要があります。 |
FilterType
受信フィルターの種類。
QueueId
受信キュー識別子。 この識別子は、0 からネットワーク アダプターがサポートするキューの数までの整数です。 NDIS_DEFAULT_RECEIVE_QUEUE_ID の値は、既定の受信キューを指定します。
FilterId
受信フィルター識別子。 フィルター識別子は、1 からネットワーク アダプターがサポートする受信フィルターの数までの整数です。 0 の値が無効です。
FieldParametersArrayOffset
この構造体に続く要素の配列内の最初の要素へのオフセット (バイト単位)。 オフセットは、 NDIS_RECEIVE_FILTER_PARAMETERS 構造体の先頭から最初の要素の先頭まで測定されます。 配列内の各要素は 、NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 構造体です。
FieldParametersArrayNumElements
配列の要素数。
FieldParametersArrayElementSize
配列の各要素のサイズ (バイト単位)。
RequestedFilterIdBitCount
フィルター識別子のビット数。 ミニポート ドライバーは、 netBufferListFilteringInfo 帯域外 (OOB) データ内のフィルター識別子にこのビット数 NET_BUFFER_LIST 構造体を使用します。 このメンバーが 0 の場合、ミニポート ドライバーは OOB NetBufferListFilteringInfo データでフィルター識別子を指定する必要があります。
NDIS 6.20 以降では、このメンバーを 0 に設定する必要があります。
MaxCoalescingDelay
この受信フィルターに一致する最初のパケットが、ネットワーク アダプターのハードウェア結合バッファー内に保存される最大時間 (ミリ秒単位)。
フィルターに一致する最初のパケットが受信されるとすぐに、ネットワーク アダプターによってパケットが結合されます。 アダプターは、有効期限が MaxCoalescingDelay メンバーの値に設定されているハードウェア タイマーも開始します。 ハードウェア タイマーをリセットして再起動せずに、同じフィルターに一致する追加のパケットをアダプターで結合する必要があります。
ハードウェア タイマーが期限切れになると、アダプターは受信フィルターに一致する結合パケットについてホストに通知する受信割り込みを生成する必要があります。
VPortId
受信フィルターを構成する VPort 識別子。 NDIS_DEFAULT_VPORT_ID の値は、ネットワーク アダプターの PCI Express (PCIe) 物理機能 (PF) に接続されている既定の VPort を指定します。
注釈
NDIS_RECEIVE_FILTER_PARAMETERS構造体は、 の OID 要求で使用されます。
OID_RECEIVE_FILTER_PARAMETERS と
OID_RECEIVE_FILTER_SET_FILTER。 これらの OID 要求は、フィルターの構成パラメーターを指定します。 フィルター仕様には、ネットワーク パケット内の複数のフィールドのテストを含めることができます。
NDIS_RECEIVE_FILTER_PARAMETERS構造体の FieldParametersArrayOffset、FieldParametersArrayNumElements、および FieldParametersArrayElementSize メンバーは、 の配列を定義します。 NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 構造体。 配列 内の各NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 構造体は、ネットワーク ヘッダー内の 1 つのフィールドのフィルター テスト条件を設定します。
ネットワーク アダプターは、すべてのフィールド テストの結果を論理 AND 操作と組み合わせます。 つまり、 NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 構造体の配列に含まれるフィールド テストが失敗した場合、ネットワーク パケットは指定されたフィルター条件を満たしません。
ネットワーク アダプターは、これらのフィルター条件に対して受信パケットをテストするときに、テスト条件が指定されていないパケット内のすべてのフィールドを無視する必要があります。
パケットがフィルター条件を満たす場合、ネットワーク アダプターは次のいずれかを実行する必要があります。
-
ネットワーク アダプターが NDIS 受信パケット結合をサポートしている場合、アダプターはフィルターに一致するパケットを結合する必要があります。 アダプターは、同じまたは異なる受信フィルターに一致する受信パケットを結合する必要もあります。 アダプターは、次のような別のハードウェア イベントが発生するまで、受信割り込みの生成を保留する必要があります。
- 有効期限が MaxCoalescingDelay メンバーの値に設定されているハードウェア タイマーの有効期限。
- ハードウェア結合バッファー内の使用可能な領域は、アダプター固有の低ウォーター マークに達します。
詳細については、「 パケット結合受信フィルターの処理」を参照してください。
-
ネットワーク アダプターが SR-IOV インターフェイスをサポートしている場合、アダプターは既定または既定以外の VPort の受信キューにパケットを転送する必要があります。 受信キューは QueueId メンバーによって指定され、VPort は VPortId メンバーによって指定されます。
メモWindows Server 2012以降、SR-IOV インターフェイスでは、既定と既定以外の両方の VPort で既定の受信キューのみがサポートされます。 既定の受信キューは、 QueueId メンバーを NDIS_DEFAULT_RECEIVE_QUEUE_ID に設定することによって指定されます。
- ネットワーク アダプターが VMQ インターフェイスをサポートしている場合、アダプターは QueueId メンバーによって指定された受信キューにパケットを転送する必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | NDIS 6.20 以降でサポートされています。 |
Header | ntddndis.h (Ndis.h を含む) |
こちらもご覧ください
NDIS_RECEIVE_FILTER_FIELD_PARAMETERSフィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示