次の方法で共有


NdisMCoIndicateReceiveNetBufferLists 関数 (ndis.h)

NdisMCoIndicateReceiveNetBufferLists 関数は、ミニポート ドライバーがネットワークからデータを受信したことを示します。

構文

void NdisMCoIndicateReceiveNetBufferLists(
  [in] IN NDIS_HANDLE      NdisVcHandle,
  [in] IN PNET_BUFFER_LIST NetBufferLists,
  [in] IN ULONG            NumberOfNetBufferLists,
  [in] IN ULONG            CoReceiveFlags
);

パラメーター

[in] NdisVcHandle

仮想接続 (VC) を識別するハンドル。 ミニポート ドライバーは、クライアントが発信呼び出しを設定したとき、または呼び出しマネージャーが着信呼び出し通知を示すためにクライアント登録済みサービス アクセス ポイント (SAP) の VC を作成したときに、 その MiniportCoCreateVc 関数への入力パラメーターとしてこのハンドルを取得しました。

[in] NetBufferLists

ミニポート ドライバーが割り当てた NET_BUFFER_LIST 構造体のリンクされた一覧。

[in] NumberOfNetBufferLists

NetBufferLists が指定する構造体のリンクリストにあるNET_BUFFER_LIST構造体の数。

[in] CoReceiveFlags

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

NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL

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

NDIS_RECEIVE_FLAGS_RESOURCES

ミニポート ドライバーは、 NdisMCoIndicateReceiveNetBufferLists が返された直後に、NET_BUFFER_LIST構造体とアタッチされているNET_BUFFER構造体の所有権を再利用します。

戻り値

なし

解説

ミニポート ドライバーは通常、そのミニポートInterruptDPC 関数から NdisMCoIndicateReceiveNetBufferLists 関数を呼び出します。 ミニポート ドライバーが NdisMCoIndicateReceiveNetBufferLists を呼び出すとき、NetBufferLists パラメーターでNET_BUFFER_LIST構造体の一覧を指定します。 NDIS は、バインドされたプロトコル ドライバーにNET_BUFFER_LIST構造体を渡します。

ミニポート ドライバーは、NDIS が正しいミニポート ドライバーにNET_BUFFER_LIST構造体を返すことができるように、各NET_BUFFER_LIST構造体の SourceHandle メンバーを NdisVcHandle パラメーターと同じ値に設定する必要があります。

ミニポート ドライバーが NdisMCoIndicateReceiveNetBufferLists を呼び出し、 CoReceiveFlags パラメーターのNDIS_RECEIVE_FLAGS_RESOURCES フラグをクリアする場合、NDIS は NetBufferLists がミニポート ドライバーに指定するNET_BUFFER_LIST構造体を返します MiniportReturnNetBufferLists 関数。 この場合、ミニポート ドライバーは、NDIS がミニポート ドライバーの ミニポートReturnNetBufferLists 関数にNET_BUFFER_LIST構造体を返すまで、NET_BUFFER_LIST構造体を再利用することはできません。

ミニポート ドライバーが NdisMCoIndicateReceiveNetBufferLists を呼び出し、 CoReceiveFlags パラメーターでNDIS_RECEIVE_FLAGS_RESOURCES フラグを設定する場合、ミニポート ドライバーは、NET_BUFFER_LIST構造体の所有権を直ちに回復する必要があります。 この場合、NDIS はミニポート ドライバーの ミニポートReturnNetBufferLists 関数を呼び出して、NET_BUFFER_LIST構造体を返しません。 代わりに、NDIS は NdisMCoIndicateReceiveNetBufferLists が返されるときに、ミニポート ドライバーにNET_BUFFER_LIST構造体を返します。 ミニポート ドライバーは、 NdisMCoIndicateReceiveNetBufferLists が返された直後に、NET_BUFFER_LIST構造体を再利用する必要があります。 NET_BUFFER_LIST構造体を再利用するには、ミニポート ドライバーは、独自のを呼び出すことができます。 MiniportReturnNetBufferLists 関数。

ミニポート ドライバーが CoReceiveFlags パラメーターでNDIS_RECEIVE_FLAGS_RESOURCES フラグを設定する場合、プロトコル ドライバーは、ネットワーク データをコピーし、ミニポート ドライバーにNET_BUFFER_LIST構造体を解放する必要があります。 不要なコピーを回避するために、十分な事前割り当て済みNET_BUFFER_LIST構造体を使用してミニポート ドライバーを設計する必要があります。

NdisMCoIndicateReceiveNetBufferLists の呼び出し元は、NET_BUFFER_LIST構造体、アタッチされたNET_BUFFER構造体、およびアタッチされたメモリ記述子リスト (MDL) を適切に初期化する必要があります。

要件

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

こちらもご覧ください

MiniportCoCreateVc

MiniportInterruptDPC

MiniportReturnNetBufferLists

NET_BUFFER

NET_BUFFER_LIST