次の方法で共有


NDIS_RECEIVE_FILTER_PARAMETERS 構造体 (ntddndis.h)

NDIS_RECEIVE_FILTER_PARAMETERS構造体は、NDIS 受信フィルターのパラメーターを指定します。

NDIS 受信フィルターは、次の NDIS インターフェイスで使用されます。

構文

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 の値は、既定の受信キューを指定します。

メモNDIS パケット結合または SR-IOV インターフェイスをサポートするミニポート ドライバーは、QueueId メンバーをNDIS_DEFAULT_RECEIVE_QUEUE_IDに設定する必要があります。
 

FilterId

受信フィルター識別子。 フィルター識別子は、1 からネットワーク アダプターがサポートする受信フィルターの数までの整数です。 0 の値が無効です。

FieldParametersArrayOffset

この構造体に続く要素の配列内の最初の要素へのオフセット (バイト単位)。 オフセットは、 NDIS_RECEIVE_FILTER_PARAMETERS 構造体の先頭から最初の要素の先頭まで測定されます。 配列内の各要素は 、NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 構造体です。

メモFieldParametersArrayNumElements が 0 に設定されている場合、このメンバーは無視されます。
 

FieldParametersArrayNumElements

配列の要素数。

FieldParametersArrayElementSize

配列の各要素のサイズ (バイト単位)。

RequestedFilterIdBitCount

フィルター識別子のビット数。 ミニポート ドライバーは、 netBufferListFilteringInfo 帯域外 (OOB) データ内のフィルター識別子にこのビット数 NET_BUFFER_LIST 構造体を使用します。 このメンバーが 0 の場合、ミニポート ドライバーは OOB NetBufferListFilteringInfo データでフィルター識別子を指定する必要があります。

NDIS 6.20 以降では、このメンバーを 0 に設定する必要があります。

MaxCoalescingDelay

この受信フィルターに一致する最初のパケットが、ネットワーク アダプターのハードウェア結合バッファー内に保存される最大時間 (ミリ秒単位)。

フィルターに一致する最初のパケットが受信されるとすぐに、ネットワーク アダプターによってパケットが結合されます。 アダプターは、有効期限が MaxCoalescingDelay メンバーの値に設定されているハードウェア タイマーも開始します。 ハードウェア タイマーをリセットして再起動せずに、同じフィルターに一致する追加のパケットをアダプターで結合する必要があります。

ハードウェア タイマーが期限切れになると、アダプターは受信フィルターに一致する結合パケットについてホストに通知する受信割り込みを生成する必要があります。

メモNDIS パケット結合をサポートしていないミニポート ドライバーは、このメンバーを無視する必要があります。
 

VPortId

受信フィルターを構成する VPort 識別子。 NDIS_DEFAULT_VPORT_ID の値は、ネットワーク アダプターの PCI Express (PCIe) 物理機能 (PF) に接続されている既定の VPort を指定します。

メモ このメンバーは、SR-IOV インターフェイスに対してのみ有効です。
 

注釈

NDIS_RECEIVE_FILTER_PARAMETERS構造体は、 の OID 要求で使用されます。
OID_RECEIVE_FILTER_PARAMETERS
OID_RECEIVE_FILTER_SET_FILTER。 これらの OID 要求は、フィルターの構成パラメーターを指定します。 フィルター仕様には、ネットワーク パケット内の複数のフィールドのテストを含めることができます。

NDIS_RECEIVE_FILTER_PARAMETERS構造体の FieldParametersArrayOffsetFieldParametersArrayNumElementsおよび 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_OBJECT_HEADER

NDIS_RECEIVE_FILTER_FIELD_PARAMETERS

NET_BUFFER_LIST

OID_RECEIVE_FILTER_PARAMETERS

OID_RECEIVE_FILTER_SET_FILTER