OID_RECEIVE_FILTER_SET_FILTER
基になるドライバーは、ネットワーク アダプターにフィルターを設定するOID_RECEIVE_FILTER_SET_FILTERの OID メソッド要求を発行します。
NDIS_OID_REQUEST 構造体の InformationBuffer メンバーには、呼び出し元によって割り当てられたバッファーへのポインターが含まれています。 このバッファーは、次のように書式設定されます。
NDIS 受信フィルターのパラメーターを指定する NDIS_RECEIVE_FILTER_PARAMETERS 構造体。
ネットワーク パケット ヘッダー内のフィールドのフィルター テスト条件を指定する NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 構造体の配列。
OID メソッド要求から正常に戻った後、NDIS_OID_REQUEST 構造体の InformationBuffer メンバーには、NDIS_RECEIVE_FILTER_PARAMETERS 構造体へのポインターが含まれます。 上にあるドライバーが新しい受信フィルターを作成している場合、NDIS は、新しいフィルター識別子でこの構造体を更新します。
備考
NDIS 受信フィルターは、次の NDIS インターフェイスで使用されます。
NDIS パケット結合。 このインターフェイスで受信フィルターを使用する方法の詳細については、「パケット結合受信フィルターの管理を参照してください。
シングル ルート I/O 仮想化 (SR-IOV)。 このインターフェイスで受信フィルターを使用する方法の詳細については、「仮想ポート で受信フィルターを設定するを参照してください。
仮想マシン キュー (VMQ) をします。 このインターフェイスで受信フィルターを使用する方法の詳細については、「VMQ フィルターの設定とクリア」を参照してください。
NDIS パケット結合、SR-IOV、または VMQ インターフェイスをサポートするミニポート ドライバーには、OID_RECEIVE_FILTER_SET_FILTERの OID メソッド要求が必須です。
基になるドライバーは、要求されたフィルター構成を使用して NDIS_RECEIVE_FILTER_PARAMETERS 構造体を初期化します。 NDIS は、NDIS_RECEIVE_FILTER_PARAMETERS構造体のメンバー FilterId のフィルター識別子を割り当て、基になるミニポート ドライバーにメソッド要求を渡します。
受信キューに設定された各フィルターには、ネットワーク アダプターの一意のフィルター識別子があります。 つまり、フィルター識別子は、ネットワーク アダプターが管理する異なるキューでは重複しません。 NDIS は、受信キューにフィルターを設定する OID 要求を受信すると、フィルター パラメーターを検証します。 NDIS は、必要なリソースとフィルター識別子を割り当てた後、基になるネットワーク アダプターに OID 要求を送信します。 ネットワーク アダプターは、フィルターに必要なソフトウェアとハードウェア リソースを正常に割り当てることができる場合は、NDIS_STATUS_SUCCESSの戻り値の状態で OID 要求を完了します。
注 NDIS 6.30 以降では、パケット結合受信フィルターは、ネットワーク アダプターの既定の受信キューでのみサポートされます。 この受信キューには、NDIS_DEFAULT_RECEIVE_QUEUE_IDの識別子があります。
ミニポート ドライバーは、割り当てられた受信フィルターのフィルター識別子を保持する必要があります。 NDIS は、受信フィルター パラメーターを変更したり、受信フィルターをクリアしたりするために、後の OID 要求でフィルターの識別子を使用します。
ミニポート ドライバーは、OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE 要求を受信し、キューに設定されているフィルターを持つ後、キューは 実行中 状態です。 この状態では、ミニポート ドライバーは、NdisMIndicateReceiveNetBufferLists呼び出すことによって、キュー内のパケットの表示を開始できます。
SR-IOV インターフェイスの追加ガイドライン
次の点は、SR-IOV インターフェイスをサポートするミニポート ドライバーに適用されます。
SR-IOV インターフェイスの場合、既定または既定以外の仮想ポート (VPort) に受信キューが作成されます。
注 Windows Server 2012 以降では、SR-IOV インターフェイスは VPort の既定の受信キューのみをサポートします。
OID_NIC_SWITCH_CREATE_VPORTの OID セット要求を通じて SR-IOV VPort が割り当てられた後、上にあるドライバーは、OID_RECEIVE_FILTER_SET_FILTERの OID 要求を使用して VPort にフィルターを設定できます。
注 VPort を割り当てた上にあるドライバーのみが、その VPort にフィルターを設定できます。
既定の VPort は常に存在するため、基になるドライバーは常に既定の VPort にフィルターを設定できます。
VPort が作成されると、受信フィルターは設定されません。 この場合、ミニポート ドライバーは、ミニポート ドライバーは、VPort のOID_RECEIVE_FILTER_SET_FILTERの OID 要求を受信する前に、その VPort の受信パケットを示す必要があります。 この OID 要求が発行された後、ミニポート ドライバーは、その VPort 上のパケットを示すことができます。
注 ミニポート ドライバーが、OID_RECEIVE_FILTER_SET_FILTERの OID 要求の処理中に VPort 上のパケットを示す場合は、OID 要求を完了し、NDIS_STATUS_SUCCESS状態コードを返す必要があります。
VMQ インターフェイスの追加ガイドライン
次の点は、VMQ インターフェイスをサポートするミニポート ドライバーに適用されます。
VMQ 受信キューが割り当てられた後、上にあるドライバーは、OID_RECEIVE_FILTER_SET_FILTERの OID 要求を使用して受信キューにフィルターを設定できます。
受信キューを割り当てたプロトコル ドライバーのみが、そのキューにフィルターを設定できることに注意してください。
既定のキューは常に存在するため、基になるドライバーは常に既定のキューにフィルターを設定できます。 ネットワーク アダプターがドロップ キューをサポートしている場合、上にあるドライバーはドロップ キューにフィルターを設定できます。
基になるドライバーは、既定のキューまたはドロップ キューを所有していません。 そのため、ネットワーク アダプターにバインドされているすべてのプロトコル ドライバーは、既定のキューまたはドロップ キューを使用します。
受信キューが作成されると、受信フィルターは設定されません。 この場合、ミニポート ドライバーは、ミニポート ドライバーが受信キューのOID_RECEIVE_FILTER_SET_FILTERの OID 要求を受信する前に、その受信キューの受信パケットを示す必要があります。 この OID 要求が発行された後、ミニポート ドライバーは、その受信キューのパケットを示すことができます。
注 ミニポート ドライバーがOID_RECEIVE_FILTER_SET_FILTERの OID 要求の処理中にキュー上のパケットを示す場合は、OID 要求を完了し、NDIS_STATUS_SUCCESS状態コードを返す必要があります。
戻り値の状態コード
ミニポート ドライバーは、OID_RECEIVE_FILTER_SET_FILTERの OID メソッド要求の次の状態コードのいずれかを返します。
NDIS_STATUS_SUCCESS
フィルターがキューに正常に設定されました。 情報バッファーには、更新された NDIS_RECEIVE_FILTER_PARAMETERS 構造体が含まれています。
NDIS_STATUS_PENDING
要求の完了が保留中です。 最終的な状態コードと結果は、呼び出し元の OID 要求完了ハンドラーに渡されます。
NDIS_STATUS_INVALID_PARAMETER
基になるドライバーが指定した 1 つ以上のパラメーターが無効でした。
NDIS_STATUS_INVALID_LENGTH
情報バッファーが短すぎます。 NDIS は、データを設定します。METHOD_INFORMATION。BytesNeededNDIS_OID_REQUEST 構造体のメンバーを、必要な最小バッファー サイズに設定します。
NDIS_STATUS_NOT_SUPPORTED
ミニポート ドライバーの NDIS バージョンは、6.20 より前のバージョンです。
NDIS_STATUS_FAILURE
その他の理由で要求が失敗しました。
必要条件
バージョン |
NDIS 6.20 以降でサポートされています。 |
ヘッダ |
Ntddndis.h (Ndis.h を含む) |
関連項目
NdisMIndicateReceiveNetBufferListsの
NDIS_RECEIVE_FILTER_PARAMETERS
NET_BUFFER_LIST_RECEIVE_FILTER_ID