OID_RECEIVE_FILTER_CLEAR_FILTER
上部のドライバーは、OID_RECEIVE_FILTER_CLEAR_FILTER の OID セット要求を発行して、ネットワーク アダプターの受信フィルターをクリアします。
NDIS_OID_REQUEST 構造体の InformationBuffer メンバーには、NDIS_RECEIVE_FILTER_CLEAR_PARAMETERS 構造体へのポインターが含まれています。
解説
NDIS 受信フィルターは、次の NDIS インターフェイスで使用されます。
NDIS Packet Coalescing。 このインターフェイスで受信フィルターを使用する方法の詳細については、「パケット結合受信フィルターの管理」を参照してください。
シングル ルート I/O 仮想化 (SR-IOV)。 このインターフェイスで受信フィルターを使用する方法の詳細については、「仮想ポートでの受信フィルターの設定」を参照してください。
仮想マシン キュー (VMQ)。 このインターフェイスで受信フィルターを使用する方法の詳細については、「VMQ フィルターの設定とクリア」を参照してください。
NDIS パケット結合、SR-IOV、または VMQ インターフェイスをサポートするミニポート ドライバーには、OID_RECEIVE_FILTER_CLEAR_FILTER の OID セット要求が必須です。
上部のドライバー (NDIS プロトコルやフィルター ドライバーなど) は、OID_RECEIVE_FILTER_CLEAR_FILTER セット要求を使用して、以前に設定されたフィルターをクリアします。 受信フィルターを設定したドライバーのみがクリアできます。
上部のドライバーは、NDIS_RECEIVE_FILTER_CLEAR_PARAMETERS 構造体の FilterId メンバーをフィルターの識別子に設定することによって、受信フィルターをクリアします。 ドライバーは、OID_RECEIVE_FILTER_SET_FILTER の以前の OID メソッド要求からフィルター識別子を取得しています。
NDIS パケット結合の追加手順
次のポイントは、NDIS パケット結合をサポートするミニポートおよび上部のドライバーに適用されます。
- 上部のドライバーは、ドライバーのバインドを解除するか、デタッチする前に、ミニポート ドライバーに設定されているすべての受信フィルターをクリアする必要があります。
SR-IOV インターフェイスの追加ガイドライン
SR-IOV インターフェイスをサポートするミニポート ドライバーと上部のドライバーには、次の点が適用されます。
上部のドライバーは、VPort を解放する前に、SR-IOV VPort に設定されているすべてのフィルターをクリアする必要があります。 また、上部のドライバーは、ネットワーク アダプターへのバインディングを終了する前に、既定の VPort に設定されているすべてのフィルターをクリアする必要があります。
ミニポート ドライバーは、OID_RECEIVE_FILTER_CLEAR_FILTER の OID 要求を完了し、VPort の最後のフィルターをクリアしている場合、既定以外の VPort 上のパケットを示すことはできません。
注 ミニポート ドライバーは、OID_NIC_SWITCH_DELETE_VPORT の OID 要求を完了し、VPort を解放している場合も、既定以外の VPort 上のパケットを示すことはできません。
VMQ インターフェイスの追加ガイドライン
VMQ インターフェイスをサポートするミニポート ドライバーと上部のドライバーには、次の点が適用されます。
上部のドライバーは、キューを解放する前に、VMQ 受信キューに設定されているすべてのフィルターをクリアする必要があります。 また、上部のドライバーは、ネットワーク アダプターへのバインディングを終了する前に、既定のキューまたはドロップ キューに設定されているすべてのフィルターをクリアする必要があります。
ミニポート ドライバーは、OID_RECEIVE_FILTER_CLEAR_FILTER の OID 要求を完了し、受信キューの最後のフィルターをクリアしている場合、受信キュー上のパケットを示すことはできません。
注 ミニポート ドライバーは、OID_RECEIVE_FILTER_FREE_QUEUE の OID 要求を完了し、受信キューを解放した場合も、受信キュー上のパケットを示すことはできません。
状態コードを返す
ミニポート ドライバーの MiniportOidRequest 関数は、この要求に対して次のいずれかの値を返します。
用語 | 説明 |
---|---|
NDIS_STATUS_SUCCESS |
ミニポート ドライバーが要求を正常に完了しました。 |
NDIS_STATUS_PENDING |
ミニポート ドライバーは、非同期的に要求を完了します。 ミニポート ドライバーは、すべての処理を完了した後、NdisMOidRequestComplete 関数を呼び出して要求を成功させ、Status パラメーターの NDIS_STATUS_SUCCESS を渡す必要があります。 |
NDIS_STATUS_NOT_ACCEPTED |
ミニポート アダプターが突然削除されました。 |
NDIS は、この要求に対して次のいずれかの状態コードを返します。
NDIS_STATUS_SUCCESS
指定したフィルターが正常にクリアされました。
NDIS_STATUS_PENDING
要求の完了が保留中です。 NDIS は、要求が完了した後、呼び出し元の OID 要求完了ハンドラーに最終的な状態コードと結果を渡すことになります。
NDIS_STATUS_FILE_NOT_FOUND
フィルター識別子が有効ではありません。
NDIS_STATUS_INVALID_LENGTH
情報バッファーが小さすぎます。 NDIS は、 NDIS_OID_REQUEST 構造体の DATA.SET_INFORMATION.BytesNeeded メンバーに必要最小限のバッファー サイズを設定します。
要件
バージョン |
NDIS 6.20 以降でサポートされています。 |
ヘッダー |
Ntddndis.h (Ndis.h を含む) |