NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE回调函数 (ndischimney.h)

[TCP 烟囱卸载功能已弃用,不应使用。]

卸载目标调用 NdisTcpOffloadReceiveComplete 函数以返回已发布的接收请求 (接收缓冲区) 到主机堆栈。 卸载目标以前在对其的一个或多个调用中收到了接收请求 MiniportTcpOffloadReceive 函数。

语法

NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE NdisTcpOffloadReceiveComplete;

void NdisTcpOffloadReceiveComplete(
  [in] IN NDIS_HANDLE NdisMiniportHandle,
  [in] IN PNET_BUFFER_LIST NetBufferList
)
{...}

参数

[in] NdisMiniportHandle

卸载目标在上一次调用中获取的句柄 NdisMRegisterMiniportDriver 函数。

[in] NetBufferList

指向 NET_BUFFER_LIST 结构的指针。 此结构可以是独立结构,也可以是NET_BUFFER_LIST结构链接列表中的第一个结构。 卸载目标在对其的一个或多个调用中获取了这些结构 MiniportTcpOffloadReceive 函数。

返回值

备注

卸载目标应按照请求发布到 的顺序使用 并返回预先发布的接收请求 卸载目标的 MiniportTcpOffloadReceive 函数。 也就是说,卸载目标应使用 ,并按先入先出 (FIFO) 顺序返回预先发布的接收请求。

卸载目标必须序列化对 NdisTcpOffloadReceiveComplete 函数和 的调用 NdisTcpOffloadReceiveHandler 函数基于每个连接。

卸载目标的 MiniportTcpOffloadReceive 函数可以在卸载目标对 NdisTcpOffloadReceiveComplete 函数的调用上下文中调用。 在这种情况下,在返回 对 NdisTcpOffloadReceiveComplete 的上一次调用之前,卸载目标不得再次调用 NdisTcpOffloadReceiveComplete 函数。

为了提高系统性能,卸载目标可以创建一个链接列表,其中包含从对其的多个调用 NET_BUFFER_LIST 结构 MiniportTcpOffloadReceive 函数。 卸载目标可以在对 NdisTcpOffloadReceiveComplete 函数的单个调用中传递此类链接列表。 请注意,卸载目标可以分发在对 的单个调用中发布的接收请求只要卸载目标按照发送到 MiniportTcpOffloadReceive 函数的相同顺序完成接收请求,即可跨多个完成调用的 MiniportTcpOffloadReceive 函数。

在调用 NdisTcpOffloadReceiveComplete 函数之前,卸载目标对传递给函数的每个NET_BUFFER_LIST结构执行以下操作:

  • 将以下状态值之一写入 Status 成员:
    NDIS_STATUS_SUCCESS
    卸载目标接收了与 NetBufferList 参数引用的NET_BUFFER_LIST结构关联的所有数据。 卸载目标还针对 TCP 连接在 TCP 委托状态中推进 了 RcvNxtRcvWnd 变量。 卸载目标可能已为接收的数据生成确认,也可能未生成确认,具体取决于卸载目标是否正在等待发送延迟确认。
    NDIS_STATUS_REQUEST_ABORTED
    卸载目标处理接收的数据时出错。 如果卸载目标使用 NetBufferList 参数指向的NET_BUFFER_LIST结构提供一些有效数据,则卸载目标通过调用 NET_BUFFER_LIST_INFO 宏来指定有效数据字节数。 卸载目标可能已确认也可能未确认已接收数据的某些部分。
    NDIS_STATUS_UPLOAD_IN_PROGRESS
    正在上传发布缓冲区的连接。
    NDIS_STATUS_INVALID_STATE
    接收请求是在卸载目标通过调用指示断开连接后发布的 NdisTcpOffloadEventHandler
  • 指定通过调用 idTcpOffloadBytesTransferredNET_BUFFER_LIST_INFO 宏返回的数据字节数。
  • 调用 NdisAdvanceNetBufferDataStart 函数。 NetBufferList 参数应指向与 NET_BUFFER_LIST 结构关联的 NET_BUFFER 结构。 DataOffsetDelta 参数应指定卸载目标放置在内存描述符中列出的 (MDL) 与NET_BUFFER结构关联的数据字节数。 FreeMdl 参数应为 NULL

要求

要求
目标平台 通用
标头 ndischimney.h (包括 Ndischimney.h)
IRQL 任何级别

另请参阅

MiniportTcpOffloadReceive

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart

NdisMRegisterMiniportDriver