TCP_OFFLOAD_RECEIVE_INDICATE_HANDLER回调函数 (ndischimney.h)

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

NDIS 调用协议驱动程序或中间驱动程序 ProtocolTcpOffloadReceiveIndicate 函数来传递基础驱动程序或卸载目标指示的接收数据。

语法

TCP_OFFLOAD_RECEIVE_INDICATE_HANDLER TcpOffloadReceiveIndicateHandler;

NDIS_STATUS TcpOffloadReceiveIndicateHandler(
  [in]  IN PVOID OffloadContext,
  [in]  IN PNET_BUFFER_LIST NetBufferList,
  [in]  IN NDIS_STATUS Status,
  [out] OUT PULONG BytesConsumed
)
{...}

参数

[in] OffloadContext

指向要对其发出指示的 TCP 连接的协议或中间驱动程序 NDIS_OFFLOAD_HANDLE 结构的指针。 在卸载连接时,协议或中间驱动程序将此指针作为输入参数提供给 NdisInitiateOffload 函数。

[in] NetBufferList

指向 NET_BUFFER_LIST 结构的指针。 每个 NET_BUFFER_LIST 结构描述 NET_BUFFER 结构的列表。 列表中的每个 NET_BUFFER 结构都映射到 内存描述符列表(MDL)链。 MDL 包含收到的数据。 MDL 已锁定,以便它们保持驻留状态,但不会映射到系统内存中。

NetBufferList 指定的 NET_BUFFER_LIST 结构必须是独立结构,不能是 NET_BUFFER_LIST 结构链接列表中的第一个结构。 卸载目标可以通过将尽可能多的 MDL 链接到卸载接收指示中的相同 NET_BUFFER 来解决此问题。

[in] Status

在调用时,中间驱动程序应传播此状态 NdisTcpOffloadReceiveHandler

[out] BytesConsumed

指向 ULONG 类型的变量的指针,该变量接收客户端应用程序使用的字节数。

返回值

ProtocolTcpOffloadReceiveIndicate 函数可以返回以下值之一:

返回代码 描述
NDIS_STATUS_SUCCESS
客户端应用程序使用所有指示的接收数据。
NDIS_STATUS_OFFLOAD_DATA_NOT_ACCEPTED
客户端应用程序拒绝了所有指示的接收数据。
NDIS_STATUS_OFFLOAD_DATA_PARTIALLY_ACCEPTED
客户端应用程序使用了所指示接收数据的子集。 客户端应用程序使用的数据量(以字节为单位)在 BytesConsumed 参数指定的变量中返回。

言论

若要将指示传播到过度的驱动程序或主机堆栈,中间驱动程序调用 NdisTcpOffloadReceiveHandler 函数。 中间驱动程序将以下参数传递给 NdisTcpOffloadReceiveHandler 函数:

  • NdisOffloadHandle 卸载目标存储在卸载 TCP 连接的上下文中。 有关详细信息,请参阅 通过中间驱动程序引用卸载状态。
  • NetBufferList NDIS 传递给中间驱动程序的 protocolTcpOffloadReceiveIndicate 函数 的指针。
  • NDIS 传递给中间驱动程序的 ProtocolTcpOffloadReceiveIndicate 函数的 状态

要求

要求 价值
目标平台 窗户
标头 ndischimney.h (包括 Ndischimney.h)

另请参阅

MDL

NDIS_OFFLOAD_HANDLE

NET_BUFFER

NET_BUFFER_LIST

NdisInitiateOffload

NdisOffloadTcpReceiveReturn

NdisTcpOffloadReceiveHandler