次の方法で共有


OID_RECEIVE_FILTER_ALLOCATE_QUEUE

基になるドライバーは、構成パラメーターの初期セットを持つキューを割り当てるために、OID_RECEIVE_FILTER_ALLOCATE_QUEUEのオブジェクト識別子 (OID) メソッド要求を発行します。

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

備考

NDIS 6.20 以降のミニポート ドライバーのOID_RECEIVE_FILTER_ALLOCATE_QUEUEの OID メソッド要求は省略可能です。 仮想マシン キュー (VMQ) インターフェイスをサポートするミニポート ドライバーには必須です。

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

メモ 上にあるドライバーは、NDIS_RECEIVE_QUEUE_PARAMETERS 構造体の Flags メンバーに NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION フラグと 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 要求を設定 OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE を発行する必要があります受信キューの現在のバッチです。

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

基になるドライバーは、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 は、DATAを設定します。METHOD_INFORMATION.BytesNeeded メンバーを、必要な最小バッファー サイズに NDIS_OID_REQUEST 構造体に格納します。

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