NdisCoSendNetBufferLists 関数 (ndis.h)

NdisCoSendNetBufferLists 関数は、指定したNET_BUFFER_LIST構造体の一覧に含まれるネットワーク データ送信します。

構文

void NdisCoSendNetBufferLists(
  [in] NDIS_HANDLE      NdisVcHandle,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG            SendFlags
);

パラメーター

[in] NdisVcHandle

送信要求のターゲットを識別する仮想接続 (VC) へのハンドル。

[in] NetBufferLists

NET_BUFFER_LIST構造体のリンクされたリストへのポインター。 各NET_BUFFER_LIST構造体は、 NET_BUFFER 構造体の一覧を記述します。

[in] SendFlags

送信操作の属性を定義するフラグ。 フラグは、ビットごとの OR 演算と組み合わせることができます。 すべてのフラグをクリアするには、このパラメーターを 0 に設定します。 NdisCoSendNetBufferLists では、 次のフラグがサポートされています。

NDIS_SEND_FLAGS_DISPATCH_LEVEL

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

NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK

NDIS はループバックをチェックする必要があります。 既定では、NDIS は送信要求を送信したドライバーにデータをループ バックしません。 基になるドライバーは、NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACKを設定することで、この動作をオーバーライドできます。 このフラグが設定されている場合、NDIS は、バインドの受信条件に一致するデータを含むすべてのNET_BUFFER構造体を識別します。 NDIS は、基になるドライバー NET_BUFFER条件に一致する構造体を示します。 このフラグは、他のバインディングでのループバックまたはループ バックのチェックには影響しません。

戻り値

なし

解説

CoNDIS プロトコル ドライバーが NdisCoSendNetBufferLists を呼び出した後、NDIS は、NetBufferLists パラメーターが基になるドライバーに指定するNET_BUFFER_LIST構造体を送信します MiniportCoSendNetBufferLists 関数。

プロトコル ドライバーは、次のいずれかの関数を呼び出すことによって、プールから各NET_BUFFER_LIST構造体を割り当てる必要があります。

プロトコル ドライバーは、 driverEntry ルーチンなど、NET_BUFFER_LIST構造体を事前に割り当てることができます。 または、プロトコル ドライバーは、 NdisCoSendNetBufferLists を呼び出す直前に構造体を割り当て、送信操作が完了したときにそれらを解放できます。 NDIS が にNET_BUFFER_LIST構造体を返す場合 ProtocolCoSendNetBufferListsComplete 関数を使用すると、プロトコル ドライバーは、NET_BUFFER_LIST構造と関連するリソースを再利用できるように準備できます。 NET_BUFFER_LIST構造体を再利用すると、構造体をプールに返してから、別の送信操作のために再割り当てするよりもパフォーマンスが向上します。

プロトコル ドライバーは、各NET_BUFFER_LIST構造体の SourceHandle メンバーを NdisVcHandle パラメーターで渡すのと同じ値に設定する必要があります。 ソース ハンドルは、基になるミニポート ドライバーが を呼び出した後、NDIS がプロトコル ドライバーにNET_BUFFER_LIST構造体を返すために必要な情報を提供します。 NdisMCoSendNetBufferListsComplete 関数。

プロトコル ドライバーが NdisCoSendNetBufferLists を呼び出す前に、ドライバーは、 NET_BUFFER_LIST_INFO マクロで送信要求に付随する情報を設定できます。 基になるドライバーは、NET_BUFFER_LIST_INFO マクロを使用してこの情報を取得できます。

プロトコル ドライバーは、NET_BUFFER_LIST構造体の一覧を使用して NdisCoSendNetBufferLists を呼び出す前に、プロトコル ドライバーは、ネットワーク データを送信する順序でNET_BUFFER_LIST構造体が設定されていることを確認する必要があります。

プロトコル ドライバーが NdisCoSendNetBufferLists を呼び出すとすぐに、NET_BUFFER_LIST構造体と関連付けられているすべてのリソースが所有されなくなります。 NDIS は ProtocolCoSendNetBufferListsComplete 関数を呼び出して、構造体とデータをプロトコル ドライバーに返します。 NDIS では、 ProtocolCoSendNetBufferListsComplete にリストを渡す前に、複数の送信要求から、NET_BUFFER_LIST構造体の 1 つのリンクされたリストに構造体とデータを収集できます。

NDIS が ProtocolCoSendNetBufferListsComplete を呼び出すまで、プロトコル ドライバーによって開始される送信の現在の状態は、プロトコル ドライバーでは使用できません。 プロトコル ドライバーは、 NdisCoSendNetBufferLists を呼び出すときに送信要求に割り当てられたすべてのリソースの所有権を一時的に解放します。 プロトコル ドライバーは、 ドライバーが NdisCoSendNetBufferLists を呼び出した後、NET_BUFFER_LIST構造体または関連付けられているデータを調べようとしないでください。

要件

要件
サポートされている最小のクライアント Windows Vista の NDIS 6.0 ドライバーでサポートされています。
対象プラットフォーム デスクトップ
Header ndis.h (Ndis.h を含む)
Library Ndis.lib
IRQL <=DISPATCH_LEVEL
DDI コンプライアンス規則 Irql_Connection_Function(ndis)

こちらもご覧ください

DriverEntry

MiniportCoSendNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisAllocateCloneNetBufferList NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisMCoSendNetBufferListsComplete ProtocolCoSendNetBufferListsComplete