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)。 微型端口驱动程序获取此句柄作为其 MiniportCoCreateVc 函数的输入参数,无论是在客户端设置传出呼叫时,还是当调用管理器为客户端注册的服务访问点(SAP)创建 VC 以指示传入呼叫通知时。
[in] NetBufferLists
微型端口驱动程序分配的 NET_BUFFER_LIST 结构的链接列表。
[in] NumberOfNetBufferLists
netBufferLists 指定 结构链接列表中的NET_BUFFER_LIST结构数。
[in] CoReceiveFlags
定义发送作的属性的标志。 标志可以与按位 OR作结合使用。 若要清除所有标志,请将此参数设置为零。 NdisMCoIndicateReceiveNetBufferLists 支持以下标志:
NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL
当前 IRQL DISPATCH_LEVEL。 有关此标志的详细信息,请参阅 调度 IRQL 跟踪。
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 函数。 在这种情况下,微型端口驱动程序不得回收NET_BUFFER_LIST结构,直到 NDIS 将NET_BUFFER_LIST结构返回到微型端口驱动程序的 MiniportReturnNetBufferLists 函数。
如果微型端口驱动程序调用 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) |
库 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | Irql_MCO_Function(ndis) |