RSC 驱动程序的编程注意事项

以下部分介绍在实现接收段合并 (支持 RSC) 的微型端口驱动程序时要考虑的问题。

响应 RSC 统计信息查询

NDIS、覆盖驱动程序和用户模式应用程序使用 OID_TCP_RSC_STATISTICS OID 获取微型端口适配器的 RSC 统计信息。 支持 RSC 的微型端口驱动程序必须支持此 OID。

转发的 TCP 数据包

微型端口驱动程序不应对 TCP 数据包中的段执行 RSC,这些段不是用于主机,而是在另一个接口上转发。

主机 TCP/IP 堆栈将在已启用转发的任何接口上禁用 RSC。 弱主机转发不会影响 RSC。

对轻型筛选器和 MUX 中间驱动程序的 RSC 支持

所有 NDIS 6.30 轻型筛选器驱动程序都必须支持大于链路最大传输单元 (MTU) 的接收数据包。 有关段大小限制的详细信息,请参阅 指示合并段

如果主机堆栈中的任何轻型筛选器驱动程序或 MUX 中间驱动程序为 NDIS 6.20 或更低版本,NDIS 将在接口上禁用 RSC。

即使接口的 NDIS 版本为 6.30 或更高版本,MUX 中间驱动程序也可以在接口上禁用 RSC。

Windows 筛选平台 (WFP) 检查和标注驱动程序

WFP 标注驱动程序通过将自定义标注函数添加到一个或多个内核模式筛选层的筛选器引擎来提供额外的筛选功能。 标注支持深度检查和数据包以及流修改。

WFP 标注驱动程序可能支持处理大于链接 MTU 的支持接收数据包。 (有关数据包大小限制的详细信息,请参阅 跟踪和指示合并段。) 此类 WFP 标注驱动程序应执行以下操作:

  • 在注册期间选择加入以处理大型数据包。

  • 按照 FWPS_CALLOUT2 结构的引用页中的指定设置标注驱动程序标志。

每当注册未选择加入处理大型数据包的标注驱动程序时,WFP 都会在注册上下文中通知 TCP/IP。 作为处理此通知的一部分,TCP/IP 将在接口上禁用 RSC。

如果在标注注册期间存在活动的 TCP 流量,TCP/IP 将通知 WFP。 WFP 将延迟调用已注册的筛选器,直到禁用 RSC。 这将保护标注驱动程序免受大型数据包的防护。