NDIS_HD_SPLIT_ATTRIBUTES 结构 (ndis.h)

NDIS_HD_SPLIT_ATTRIBUTES 结构定义与微型端口适配器关联的标头数据拆分属性(如果有)。

语法

typedef struct _NDIS_HD_SPLIT_ATTRIBUTES {
  NDIS_OBJECT_HEADER Header;
  ULONG              HardwareCapabilities;
  ULONG              CurrentCapabilities;
  ULONG              HDSplitFlags;
  ULONG              BackfillSize;
  ULONG              MaxHeaderSize;
} NDIS_HD_SPLIT_ATTRIBUTES, *PNDIS_HD_SPLIT_ATTRIBUTES;

成员

Header

提供程序特征结构 (NDIS_HD_SPLIT_ATTRIBUTES) 的NDIS_OBJECT_HEADER结构。 驱动程序将 Header 指定的结构的 Type 成员设置为NDIS_OBJECT_TYPE_HD_SPLIT_ATTRIBUTES,将 Revision 成员设置为NDIS_OBJECT_HD_SPLIT_ATTRIBUTES_REVISION_1,并将 Size 成员设置为NDIS_SIZEOF_HD_SPLIT_ATTRIBUTES_REVISION_1。

HardwareCapabilities

微型端口适配器支持的标头数据拆分硬件功能。 这些功能应包括当前由 INF 文件设置或通过 “高级 属性”页禁用的功能。 HardwareCapabilities 的值是以下标志的按位 OR:

NDIS_HD_SPLIT_CAPS_SUPPORTS_HEADER_DATA_SPLIT

微型端口适配器可以将标头和数据拆分为满足标头数据拆分支持要求的单独 MDL。

NDIS_HD_SPLIT_CAPS_SUPPORTS_IPV4_OPTIONS

微型端口适配器可以拆分包含 IPv4 选项的 IPv4 以太网帧。 微型端口适配器可以支持拆分某些 IPv4 选项,而不支持拆分其他选项。

注意 NIC 不得拆分包含不受支持的 IPv4 选项的 IPv4 帧。 如果拆分 IPv4 帧,则拆分帧的标头部分必须包含整个 IPv4 标头和存在的所有 IPv4 选项。
 

NDIS_HD_SPLIT_CAPS_SUPPORTS_IPV6_EXTENSION_HEADERS

微型端口适配器可以拆分包含 IPv6 扩展标头的 IPv6 以太网帧。 微型端口适配器可以支持某些 IPv6 扩展标头,而不支持其他标头。

注意 NIC 不得拆分包含不受支持的 IPv6 扩展标头的 IPv6 帧。 如果拆分了 IPv6 帧,则拆分帧的标头部分必须包含整个 IPv6 标头和存在的所有 IPv6 扩展标头。
 

NDIS_HD_SPLIT_CAPS_SUPPORTS_TCP_OPTIONS

除了时间戳选项之外,微型端口适配器还可以使用其他 TCP 选项拆分 TCP 帧。 微型端口适配器可以支持某些 TCP 选项,而不支持其他选项。

注意 如果帧中唯一的 TCP 选项是时间戳选项,则数据拆分提供程序必须能够拆分帧。
 
注意 如果 TCP 标头包含不受支持的 TCP 选项,则 NIC 必须拆分 TCP 标头开头的帧,或不得拆分该帧。
 

CurrentCapabilities

微型端口适配器支持的当前标头数据拆分功能。 微型端口驱动程序使用为 HardwareCapabilities 成员定义的相同标志。 在这种情况下,将设置标志以指示依赖于当前配置设置的当前功能。

HDSplitFlags

一组标志,用于控制微型端口适配器的标头数据拆分状态。 微型端口驱动程序应在调用 之前将此成员设置为零 NdisMSetMiniportAttributes 函数。 在 NdisMSetMiniportAttributes 成功返回后,驱动程序必须检查标志并相应地配置硬件。 NDIS 使用以下标志的按位 OR 设置此成员:

NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT

如果设置了此标志,微型端口驱动程序应在硬件中启用标头数据拆分。 否则,将禁用标头数据拆分。 如果计算机使用标头数据拆分,并且微型端口驱动程序还在 CurrentCapabilities 成员中设置了NDIS_HD_SPLIT_CAPS_SUPPORTS_HEADER_DATA_SPLIT标志,则 NDIS 将NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT。

BackfillSize

拆分帧的数据部分的回填大小(以字节为单位)。 微型端口驱动程序应设置
在调用 NdisMSetMiniportAttributes 之前,BackfillSize 为零。 如果微型端口驱动程序必须在拆分帧的数据部分中预先分配回填存储,则 NDIS 将设置此成员。 NdisMSetMiniportAttributes 成功返回后,驱动程序必须使用 NDIS 设置的 BackfillSize 值来预分配数据缓冲区。

MaxHeaderSize

拆分帧的标头部分的最大大小(以字节为单位)。 微型端口驱动程序应在调用 NdisMSetMiniportAttributes 之前将 MaxHeaderSize 设置为零。 NDIS 将此成员设置为拆分帧的标头缓冲区的最大大小。 NdisMSetMiniportAttributes 成功返回后,驱动程序必须使用 NDIS 提供的值。

注意 如果由于存在 IPv4 选项、IPSec 标头或 IPv6 扩展标头而使标头的长度超过 MaxHeaderSize ,则不得拆分该帧。 如果包含 TCP 或 UDP 标头的标头由于存在 TCP 标头、TCP 选项或 UDP 标头而超出 MaxHeaderSize ,则 NIC 必须在上层协议标头的开头拆分帧,否则不得拆分该帧。
 

注解

为了支持标头数据拆分,微型端口驱动程序将指针传递给 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTESMiniportAttributes 参数中的结构 NdisMSetMiniportAttributes 函数。 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 的 HDSplitAttributes 成员包含指向 NDIS_HD_SPLIT_ATTRIBUTES 结构的指针。 微型端口驱动程序在初始化期间从其 MiniportInitializeEx 函数调用 NdisMSetMiniportAttributes

要求

要求
最低受支持的客户端 在 NDIS 6.1 及更高版本中受支持。
标头 ndis.h (包括 Ndis.h)

另请参阅

MiniportInitializeEx

NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES

NDIS_OBJECT_HEADER

NdisMSetMiniportAttributes