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) |