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 キューに属することを指定します。 ミニポート ドライバーは、 の Flags メンバーで 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 拡張可能スイッチの送受信フラグ」を参照してください。
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 メンバーを設定する必要があります。 フィルター ドライバーは、ソースではないNET_BUFFER_LIST構造体の SourceHandle メンバーを変更することはできません。
フィルター ドライバーは、 NET_BUFFER_LIST 構造体、アタッチされた NET_BUFFER 構造体、およびアタッチされている MCTL を適切に初期化する必要があります。
フィルター ドライバーが NdisFIndicateReceiveNetBufferLists 関数を呼び出し、ReceiveFlags パラメーターのNDIS_RECEIVE_FLAG_RESOURCES フラグをクリアした場合、NDIS は、指定されたNET_BUFFER_LIST構造体をフィルター ドライバーに返します。 FilterReturnNetBufferLists 関数。 この場合、フィルター ドライバーは、NDIS が FilterReturnNetBufferLists にNET_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 以降でサポートされています。 |
対象プラットフォーム | デスクトップ |
Header | ndis.h (Ndis.h を含む) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 | Irql_Filter_Driver_Function(ndis) |