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) 。 当客户端设置传出呼叫或调用管理器为客户端注册的服务访问点创建 VC 时,微型端口驱动程序获取此句柄作为其 MiniportCoCreateVc 函数的输入参数, (SAP) 指示传入呼叫通知。

[in] NetBufferLists

微型端口驱动程序分配的 NET_BUFFER_LIST 结构的链接列表。

[in] NumberOfNetBufferLists

NetBufferLists 指定的结构链接列表中的NET_BUFFER_LIST结构的数目。

[in] CoReceiveFlags

定义发送操作的属性的标志。 标志可以与按位 OR 运算结合使用。 若要清除所有标志,请将此参数设置为零。 NdisMCoIndicateReceiveNetBufferLists 支持以下标志:

NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL

当前 IRQL 已DISPATCH_LEVEL。 有关此标志的详细信息,请参阅 Dispatch IRQL Tracking

NDIS_RECEIVE_FLAGS_RESOURCES

微型端口驱动程序在 NdisMCoIndicateReceiveNetBufferLists 返回后立即回收NET_BUFFER_LIST结构和任何附加NET_BUFFER结构的所有权。

返回值

备注

微型端口驱动程序通常从其 MiniportInterruptDPC 函数调用 NdisMCoIndicateReceiveNetBufferLists 函数。 当微型端口驱动程序调用 NdisMCoIndicateReceiveNetBufferLists 时,它会在 NetBufferLists 参数处指定NET_BUFFER_LIST结构列表。 然后,NDIS 将NET_BUFFER_LIST结构传递给绑定的协议驱动程序。

微型端口驱动程序必须将每个NET_BUFFER_LIST结构的 SourceHandle 成员设置为 与 NdisVcHandle 参数相同的值,以便 NDIS 可以将NET_BUFFER_LIST结构返回到正确的微型端口驱动程序。

如果微型端口驱动程序调用 NdisMCoIndicateReceiveNetBufferLists 并清除 CoReceiveFlags 参数中的NDIS_RECEIVE_FLAGS_RESOURCES标志,则 NDIS 会将 NetBufferLists 指定的NET_BUFFER_LIST结构返回到微型端口驱动程序的 MiniportReturnNetBufferLists 函数。 在这种情况下,在 NDIS 将NET_BUFFER_LIST结构返回到微型端口驱动程序的 MiniportReturnNetBufferLists 函数之前,微型端口驱动程序不得回收NET_BUFFER_LIST结构。

如果微型端口驱动程序调用 NdisMCoIndicateReceiveNetBufferLists 并在 CoReceiveFlags 参数中设置NDIS_RECEIVE_FLAGS_RESOURCES标志,则微型端口驱动程序必须立即重新获得NET_BUFFER_LIST结构的所有权。 在这种情况下,NDIS 不会调用微型端口驱动程序的 MiniportReturnNetBufferLists 函数来返回NET_BUFFER_LIST结构。 相反,当 NdisMCoIndicateReceiveNetBufferLists 返回时,NDIS 会将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 及更高版本中受支持。
目标平台 桌面
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 Irql_MCO_Function (ndis)

另请参阅

MiniportCoCreateVc

MiniportInterruptDPC

MiniportReturnNetBufferLists

NET_BUFFER

NET_BUFFER_LIST