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 类型变量的指针,该变量接收客户端应用程序使用的字节数。

返回值

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

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

注解

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

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

要求

要求
目标平台 Windows
标头 ndischimney.h (包括 Ndischimney.h)

另请参阅

MDL

NDIS_OFFLOAD_HANDLE

NET_BUFFER

NET_BUFFER_LIST

NdisInitiateOffload

NdisOffloadTcpReceiveReturn

NdisTcpOffloadReceiveHandler