次の方法で共有


NdisFIndicateReceiveNetBufferLists 関数 (ndis.h)

フィルター ドライバー NdisFIndicateReceiveNetBufferLists を呼び出して、ネットワーク データを受信したことを示します。 詳細については、「フィルター ドライバー でデータを受信するを参照してください。

構文

void NdisFIndicateReceiveNetBufferLists(
  [in] NDIS_HANDLE      NdisFilterHandle,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] NDIS_PORT_NUMBER PortNumber,
  [in] ULONG            NumberOfNetBufferLists,
  [in] ULONG            ReceiveFlags
);

パラメーター

[in] NdisFilterHandle

このフィルター モジュールを識別する NDIS ハンドル。 NDIS は、FilterAttach 関数の呼び出しでフィルター ドライバーにハンドルを渡しました。

[in] NetBufferLists

NET_BUFFER_LIST 構造体のリンクされたリスト。 各 NET_BUFFER_LIST 構造体には、1 つの NET_BUFFER 構造体が含まれています。

[in] PortNumber

ミニポート アダプターのポートを識別するポート番号。 ミニポート アダプターのポート番号は、NdisMAllocatePort 関数を呼び出すことによって割り当てられます。 0 の値は、ミニポート アダプターの既定のポートを識別します。

[in] NumberOfNetBufferLists

NetBufferLists にある構造体のリンクされたリストにある NET_BUFFER_LIST 構造体の数。

[in] ReceiveFlags

受信インジケーターの属性を定義するフラグ。 フラグは OR 操作と組み合わせることができます。 すべてのフラグをクリアするには、このメンバーを 0 に設定します。 この関数は、次のフラグをサポートしています。

NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL

現在の IRQL が DISPATCH_LEVELされていることを指定します。 このフラグの詳細については、「ディスパッチ IRQL 追跡」を参照してください。

NDIS_RECEIVE_FLAGS_RESOURCES

NdisFIndicateReceiveNetBufferLists が返す呼び出しの直後に、フィルター ドライバーが NET_BUFFER_LIST 構造体とアタッチされている NET_BUFFER 構造体の所有権 再利用することを指定します。

NDIS_RECEIVE_FLAGS_SINGLE_ETHER_TYPE

NetBufferLists のリスト内のすべての NET_BUFFER_LIST 構造体 同じプロトコルの種類 (EtherType) を持っていることを指定します。

NDIS_RECEIVE_FLAGS_SINGLE_VLAN

NetBufferLists のリスト内のすべての NET_BUFFER_LIST 構造体 同じ VLAN に属することを指定します。

NDIS_RECEIVE_FLAGS_PERFECT_FILTERED

NetBufferLists リスト内のすべての NET_BUFFER_LIST 構造体に、ミニポート アダプターに割り当てられているパケット フィルターとマルチキャスト アドレス一覧に一致するデータのみを含める 指定します。

NDIS_RECEIVE_FLAGS_SINGLE_QUEUE

NetBufferLists にあるリスト内のすべての NET_BUFFER_LIST 構造体が同じ VM キューに属することを指定します。 ミニポート ドライバーは、NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION フラグが、フラグのメンバーに設定されている場合は、キューのすべての受信通知に対してこのフラグ 設定する必要があります。 NDIS_RECEIVE_QUEUE_PARAMETERS そのキューが割り当てられた場合の構造です。

NDIS_RECEIVE_FLAGS_SHARED_MEMORY_INFO_VALID

NetBufferLists のリスト内のすべての NET_BUFFER_LIST 構造体に、有効な共有メモリ情報 含まれる 指定します。 このフラグが受信した NET_BUFFER_LISTに設定されている場合、NDIS は共有メモリ情報を有効として扱います。 このフラグが設定されていない場合、NDIS とドライバーは共有メモリ情報を無視します。 たとえば、パケット データを変更する中間ドライバーは、このフラグを使用して、データをコピーする必要があるかどうかを判断できます。 ミニポート ドライバーは、フラグを使用して、キューが削除されたときに VM キューに関連付けられているメモリを解放する方法を決定できます。

NDIS_RECEIVE_FLAGS_MORE_NBLS

引っ込み思案。

NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE

このフラグが設定されている場合、NET_BUFFER_LIST 構造体のリンクされたリスト内のすべてのパケットは、同じ Hyper-V 拡張可能スイッチのソース ポートから送信されます。

詳細については、「Hyper-V 拡張可能スイッチの送受信フラグを参照してください。

NET_BUFFER_LIST 構造体のリンクされたリスト内の各パケットが同じソース ポートを使用する場合、拡張機能は、受信要求の完了時に FilterReturnNetBufferListsReturnFlags パラメーターに NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE フラグを設定する必要があります。 NdisFReturnNetBufferLists を呼び出 して、ReturnFlags パラメーターでこのフラグを設定して、生成または複製されなかったパケットを返す必要があります。
 

NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP

このフラグが設定されている場合、NET_BUFFER_LIST 構造体のリンクされたリスト内のすべてのパケットは、同じ拡張可能スイッチの宛先ポートに転送されます。

詳細については、「Hyper-V 拡張可能スイッチの送受信フラグを参照してください。

戻り値

何一つ

備考

フィルター ドライバーは、NdisFIndicateReceiveNetBufferLists 関数を呼び出すときに、NetBufferLists パラメーター内の NET_BUFFER_LIST 構造体の一覧を指定します。 NDIS は、上にあるドライバーに NET_BUFFER_LIST 構造体を渡します。

フィルター ドライバー NdisFIndicateReceiveNetBufferLists を呼び出して受信通知を発信できます。

フィルター ドライバーは、基になるドライバーによって発生したインジケーターを受信してフィルター処理することもできます。 NDIS 呼び出し、 FilterReceiveNetBufferLists 関数を使用して、このような受信インジケーターをフィルター処理します。

フィルター ドライバーは、NdisFilterHandle パラメーターと同じ値に由来する各 NET_BUFFER_LIST 構造体の SourceHandle メンバーを設定する必要があります。 フィルター ドライバーは、SourceHandle メンバーを、生成されなかった NET_BUFFER_LIST 構造体で変更してはなりません。

フィルター ドライバーは、NET_BUFFER_LIST 構造体、アタッチされた NET_BUFFER 構造体、およびアタッチされている MDL を適切に初期化する必要があります。

フィルター ドライバーが NdisFIndicateReceiveNetBufferLists 関数を呼び出し、ReceiveFlags パラメーターの NDIS_RECEIVE_FLAG_RESOURCES フラグをクリアする場合、NDIS は指定された NET_BUFFER_LIST 構造体をフィルター ドライバーに返します。FilterReturnNetBufferLists 関数を します。 この場合、フィルター ドライバーは、NDIS FilterReturnNetBufferListsNET_BUFFER_LIST 構造体を返すまで、NET_BUFFER_LIST 構造体を再利用しないでください。

フィルター ドライバーが NdisFIndicateReceiveNetBufferLists 呼び出し、ReceiveFlags パラメーターに NDIS_RECEIVE_FLAG_RESOURCES フラグを設定する場合、これは、フィルター ドライバーが NET_BUFFER_LIST 構造体の所有権を直ちに回復する必要があることを示します。 この場合、NDIS は、フィルター ドライバーの FilterReturnNetBufferLists 関数を呼び出して、NET_BUFFER_LIST 構造体を返しません。 代わりに、NDIS は、NdisFIndicateReceiveNetBufferListsから戻ると、NET_BUFFER_LIST 構造体をフィルター ドライバーに返します。 フィルター ドライバーは、NdisFIndicateReceiveNetBufferLists が返 直後に NET_BUFFER_LIST 構造体を再利用する必要があります。 NET_BUFFER_LIST 構造体を再利用するために、フィルター ドライバーは独自の FilterReturnNetBufferLists 関数を呼び出すことができます。

ReceiveFlags パラメーターに NDIS_RECEIVE_FLAG_RESOURCES フラグを設定すると、上にあるドライバーがネットワーク データをコピーし、NET_BUFFER_LIST 構造体をフィルター ドライバーに解放するように強制されます。

必要条件

要件 価値
サポートされる最小クライアント NDIS 6.0 以降でサポートされています。
ターゲット プラットフォーム デスクトップ
ヘッダー ndis.h (Ndis.h を含む)
ライブラリ Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 する Irql_Filter_Driver_Function(ndis)

関連項目

FilterAttach

FilterReceiveNetBufferLists

FilterReturnNetBufferLists

NDIS_RECEIVE_QUEUE_PARAMETERS

NET_BUFFER

NET_BUFFER_LIST

NdisMAllocatePort

フィルター ドライバー でデータを受信する