NDIS_TCP_OFFLOAD_SEND_COMPLETE回调函数 (ndischimney.h)

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

卸载目标调用 NdisTcpOffloadSendComplete 函数来完成向卸载目标的 MiniportTcpOffloadSend 函数发出的一个或多个发送请求。

语法

NDIS_TCP_OFFLOAD_SEND_COMPLETE NdisTcpOffloadSendComplete;

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

参数

[in] NdisMiniportHandle

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

[in] NetBufferList

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

返回值

没有

言论

为了提高系统性能,卸载目标可以创建一个链接列表,其中包含从对 MiniportTcpOffloadSend 函数的多个调用 NET_BUFFER_LIST 结构。 然后,驱动程序可以在对 NdisTcpOffloadSendComplete 函数的单个调用中传递此类链接列表。

在完成一个或多个发送请求之前,卸载目标必须针对传递给 NdisTcpOffloadSendComplete 函数的每个NET_BUFFER_LIST结构执行以下作:

  • 将状态值写入 状态 成员:
    • NDIS_STATUS_SUCCESS指示与NET_BUFFER_LIST关联的所有数据都由卸载目标成功发送,并且从远程主机接收的卸载目标已确认所有传输的数据。 请注意,这与非卸载发送函数不同, MiniportSendNetBufferLists,它不监视确认。
    • 非NDIS_STATUS_SUCCESS的状态值(例如,状态值NDIS_STATUS_REQUEST_ABORTED或NDIS_STATUS_UPLOAD_IN_PROGRESS)指示发送数据未成功确认。 卸载目标可能或可能尚未发送数据。 卸载目标应使链接列表中所有后续NET_BUFFER_LIST结构的发送作失败,而不会发送与这些结构关联的更多数据。 卸载目标在终止要发送数据的 TCP 连接的卸载时写入状态值NDIS_STATUS_UPLOAD_IN_PROGRESS。 在这种情况下,主机堆栈会排队并处理 TCP 数据。 如果卸载目标在要向其发送数据的 TCP 连接上收到 RST 段,则卸载目标将写入状态值 NDIS_STATUS_REQUEST_ABORTED。 在这种情况下,主机堆栈不会处理 TCP 数据。
    • 卸载目标最多应完成链接列表中的一个NET_BUFFER_LIST结构的部分发送。 卸载目标将非NDIS_STATUS_SUCCESS的状态值(例如,状态值NDIS_STATUS_ABORTED或NDIS_STATUS_UPLOAD_IN_PROGRESS)写入到此类NET_BUFFER_LIST结构。
    • 如果中间驱动程序无法分配内存以将发送作传播到基础卸载目标,则会将状态值NDIS_STATUS_REQUEST_UPLOAD写入链接列表中的第一个NET_BUFFER_LIST结构,并将NDIS_STATUS_UPLOAD_REQUESTED到链接列表中所有后续NET_BUFFER_LIST结构。 中间驱动程序不得将NET_BUFFER_LIST结构传播到基础卸载目标。 主机堆栈将执行发送作。
  • 指定发送的数据字节数。 卸载目标通过调用 IDTcpOffloadBytesTransferred调用 NET_BUFFER_LIST_INFO 宏来执行此作。
  • 调用 与NET_BUFFER_LIST结构关联的每个NET_BUFFER结构的 NdisAdvanceNetBufferDataStart 函数。 传递给 NdisAdvanceNetBufferDataStart 函数的 NetBuffer 参数应指向NET_BUFFER结构。 DataOffsetDelta 参数应指定NET_BUFFER结构中的数据字节数,这些结构由卸载目标传输,并由远程主机确认。 FreeMdl 参数 NULL

要求

要求 价值
目标平台 普遍
标头 ndischimney.h (包括 Ndischimney.h)
IRQL 任何级别

另请参阅

MiniportSendNetBufferLists

MiniportTcpOffloadSend

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart

NdisMRegisterMiniportDriver