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_OBJECT_HEADER 结构(NDIS_HD_SPLIT_ATTRIBUTES)。 驱动程序将 类型 成员设置为 标头 指定为 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 提供的值。

注意 如果标头的长度超过 MaxHeaderSize,因为存在 IPv4 选项、IPSec 标头或 IPv6 扩展标头,则不能拆分帧。 如果包含 TCP 或 UDP 标头的标头超过 MaxHeaderSize,因为存在 TCP 标头、TCP 选项或 UDP 标头,NIC 必须在上层协议标头的开头拆分帧,或者不得拆分帧。
 

言论

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

要求

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

另请参阅

MiniportInitializeEx

NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES

NDIS_OBJECT_HEADER

NdisMSetMiniportAttributes