OID_RECEIVE_FILTER_ALLOCATE_QUEUE

上部のドライバーは、OID_RECEIVE_FILTER_ALLOCATE_QUEUE のオブジェクト識別子 (OID) メソッド要求を発行して、構成パラメーターの初期セットが含まれているキューを割り当てます。

NDIS_OID_REQUEST 構造体の InformationBuffer メンバーには、NDIS_RECEIVE_QUEUE_PARAMETERS 構造体へのポインターが含まれています。 OID メソッド要求から正常に戻った後、InformationBuffer メンバー (NDIS_OID_REQUEST 構造のメンバー) には、新しいキュー識別子を持つ NDIS_RECEIVE_QUEUE_PARAMETERS 構造体へのポインターが含まれます。

解説

OID_RECEIVE_FILTER_ALLOCATE_QUEUE の OID メソッド要求は、NDIS 6.20 およびこれ以降のミニポート ドライバーではオプションになります。 これは、仮想マシン キュー (VMQ) インターフェイスをサポートするミニポート ドライバーには必須のものです。

上位ドライバーは、要求されたキュー構成を使用して NDIS_RECEIVE_QUEUE_PARAMETERS 構造体を初期化します。 NDIS は NDIS_RECEIVE_QUEUE_PARAMETERS 構造体の QueueId メンバー内のキュー識別子を割り当て、ミニポート ドライバーにメソッド要求を渡します。

上部のドライバーは、NDIS_RECEIVE_QUEUE_PARAMETERS 構造体の Flags メンバー内の NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION and NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED フラグを設定できます。 その他のフラグは、キューの割り当てには使用されません。

ミニポート ドライバーが OID_RECEIVE_FILTER_ALLOCATE_QUEUE の OID 要求を発行し、正常に処理した後、キューは一時停止状態になります。

上部のドライバーは、たとえば、キューパラメーターを変更したり、キューを解放したりするために、後続の OID 要求で NDIS が提供するキュー識別子を使用する必要があります。 キュー識別子は、キューに関連付けられているすべての NET_BUFFER_LIST 構造の帯域外 (OOB) データにも含まれます。 ドライバーは、NET_BUFFER_LIST_RECEIVE_QUEUE_ID マクロを使用して、NET_BUFFER_LIST 構造体のキュー識別子を取得します。

NDIS は、受信キューを割り当てるための OID 要求を受信すると、キューのパラメーターを検証します。 NDIS は、必要なリソースとキュー識別子を割り当てた後、基になるミニポート ドライバーに OID 要求を送信します。 キュー識別子は、関連付けられているネットワーク アダプターに対して一意です。

ミニポート ドライバーは、受信キューに必要なソフトウェアとハードウェア リソースを正常に割り当てることができる場合は、NDIS_STATUS_SUCCESS を実行して OID 要求を完了します。

ミニポート ドライバーは、割り当てられた受信キューのキュー識別子を保持する必要があります。 NDIS は、受信キューの受信フィルターの設定、受信キューのパラメーターの変更、または受信キューの解放を行うために、ミニポート ドライバーへの後続の呼び出しの受信キューのキュー識別子を使用します。

上部のドライバーは、1 つ以上の受信キューを割り当て、必要に応じて初期フィルターを設定した後、OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE を発行して、受信キューの現在のバッチへの割り当てが完了したことをミニポート ドライバーに通知するように OID 要求を設定する必要があります。

ミニポート ドライバーは、そのキューに設定されているフィルターがない場合は、受信キュー内のパケットを保持してはなりません。 キューにフィルターが一度も設定されていない場合、またはすべてのフィルターがクリアされた場合は、キューを空にし、パケットを破棄する必要があります。 つまり、パケットは、ドライバー スタックに示されたり、キューに保持されたりしません。

上部のドライバーは、OID_RECEIVE_FILTER_FREE_QUEUE OID 要求を使用して、割り当てるキューを解放します。

状態コードを返す

NDIS またはミニポート ドライバーは、OID_RECEIVE_FILTER_ALLOCATE_QUEUE の OID メソッド要求の次の状態コードのいずれかを返します。

状態コード 説明

NDIS_STATUS_SUCCESS

キューが正常に割り当てられました。 情報バッファーには、更新 された NDIS_RECEIVE_QUEUE_PARAMETERS 構造体が含まれています。

NDIS_STATUS_PENDING

要求の完了が保留中です。 最終的な状態コードと結果は、呼び出し元の OID 要求完了ハンドラーに渡されます。

NDIS_STATUS_INVALID_PARAMETER

上位ドライバーが指定した 1 つ以上のパラメーターが無効でした。

NDIS_STATUS_INVALID_LENGTH

情報バッファーが短すぎました。 NDIS は、NDIS_OID_REQUEST 構造体の DATA.METHOD_INFORMATION.BytesNeeded メンバーを必要な最小バッファー サイズに設定します。

NDIS_STATUS_NOT_SUPPORTED

ミニポート ドライバーの NDIS バージョンは、バージョン 6.20 以前のものです。

NDIS_STATUS_FAILURE

その他の理由で要求に失敗しました。

要件

バージョン

NDIS 6.20 以降でサポートされています。

ヘッダー

Ntddndis.h (Ndis.h を含む)

関連項目

NDIS_OID_REQUEST

NET_BUFFER_LIST

NET_BUFFER_LIST_RECEIVE_QUEUE_ID

OID_RECEIVE_FILTER_FREE_QUEUE

OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE

NDIS_RECEIVE_QUEUE_PARAMETERS