NdisMTerminateOffloadComplete 函数 (ndischimney.h)

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

卸载目标调用 NdisMTerminateOffloadComplete 函数,以完成由上一次调用 启动的终止卸载操作 卸载目标的 MiniportTerminateOffload 函数。

语法

void NdisMTerminateOffloadComplete(
  [in] IN NDIS_HANDLE                       NdisMiniportHandle,
  [in] IN PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList
);

参数

[in] NdisMiniportHandle

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

[in] OffloadBlockList

指向 的指针 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 结构。 卸载目标获取此指针作为其输入参数 MiniportTerminateOffload 函数。

返回值

备注

在调用 NdisMTerminateOffloadComplete 函数之前,卸载目标必须将以下任一NDIS_STATUS值写入状态树中每个NDIS_MINIPORT_OFFLOAD_BLOCK_LIST结构的 Status 成员:

  • NDIS_STATUS_SUCCESS

    卸载目标已成功终止NDIS_MINIPORT_OFFLOAD_BLOCK_LIST结构引用的状态对象的卸载。 如果NDIS_MINIPORT_OFFLOAD_BLOCK_LIST结构后跟委托状态结构 (XXX_OFFLOAD_STATE_DELEGATED) ,则卸载目标会将该状态对象的委托变量值成功写入委托状态结构。

  • NDIS_STATUS_FAILURE

    终止操作未成功。 此类故障是由灾难性故障引起的,该故障导致要终止的状态对象丢失。 在这种情况下,卸载目标硬件可能没有响应。 主机堆栈可能必须中止连接。

在调用 NdisMTerminateOffloadComplete 函数之前,卸载目标还必须: 如果在正在终止的 TCP 连接上存在未完成的发送数据,则卸载目标会在 net 缓冲区中打包此类数据,并将打包的数据传递到 NET_BUFFER_LIST 结构链接列表中的主机堆栈。 在这种情况下,卸载目标为该连接的 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 结构的 NetBufferListChain 成员指定非 NULL 值。 (NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 结构位于 OffloadBlockList 指针指向的链接列表中。) NetBufferListChain 成员指向与发送数据关联的 NET_BUFFER_LIST 结构的链接列表。

将未完成的发送数据传递到主机堆栈时,卸载目标还必须为要终止的连接指定以下委派 TCP 变量的非 NULL 值:

  • SndUna
  • SndNxt
  • SndMax
有关传递未完成的发送数据的详细信息,请参阅 在卸载操作期间和之后处理未完成的发送数据

如果正在终止的 TCP 连接上没有未完成的发送数据,则卸载目标必须为 NetBufferListChain 成员指定 NULL 值。

正在上传的 TCP 连接上可能存在未完成的接收数据。 这是卸载目标从网络接收、处理和确认的数据。 有关处理此类数据的详细信息,请参阅 在终止卸载操作期间处理缓冲接收数据

卸载目标释放与终止状态对象关联的所有资源,例如内存。

要求

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

另请参阅

MiniportTerminateOffload

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST

NdisMRegisterMiniportDriver

TCP_OFFLOAD_STATE_DELEGATED