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 函数的调用中获得了这些结构。

返回值

备注

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

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

  • 将状态值写入 Status 成员:
    • NDIS_STATUS_SUCCESS卸载目标已成功发送与 NET_BUFFER_LIST 关联的所有数据,并且从远程主机接收的卸载目标确认所有传输的数据。 请注意,这不同于不监视确认的非卸载发送函数 MiniportSendNetBufferLists
    • 除 NDIS_STATUS_SUCCESS 状态值(例如,状态值 NDIS_STATUS_REQUEST_ABORTED 或 NDIS_STATUS_UPLOAD_IN_PROGRESS)指示发送数据未成功确认。 卸载目标可能发送数据,也可能未发送数据。 卸载目标应使链接列表中所有后续NET_BUFFER_LIST发送操作失败,而不会发送与这些结构关联的任何其他数据。 卸载目标在终止要NDIS_STATUS_UPLOAD_IN_PROGRESS的 TCP 连接的卸载时写入状态值 。 在这种情况下,主机堆栈将排队并处理 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传播到基础卸载目标。 主机堆栈将执行发送操作。
  • 指定发送的数据字节数。 卸载目标通过调用 id NET_BUFFER_LIST_INFO TcpOffloadBytesTransferred 的 NET_BUFFER_LIST_INFO 宏来达到此目标
  • 为与结构关联的每个NET_BUFFER结构调用 NdisAdvanceNetBufferDataStart NET_BUFFER_LIST函数。 传递给 NdisAdvanceNetBufferDataStart 函数的 NetBuffer 参数应指向NET_BUFFER结构。 DataOffsetDelta 参数应指定卸载目标传输NET_BUFFER远程主机确认的远程结构中的数据字节数。 FreeMdl 参数为 NULL

要求

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

请参阅

MiniportSendNetBufferLists

MiniportTcpOffloadSend

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart

NdisMRegisterMiniportDriver