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 拡張可能スイッチの送受信フラグを参照してください。
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 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 以降でサポートされています。 |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | ndis.h (Ndis.h を含む) |
ライブラリ | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 を する | Irql_Filter_Driver_Function(ndis) |
関連項目
NdisMAllocatePort の
フィルター ドライバー でデータを受信する