NDIS_PD_QUEUE_PARAMETERS结构(ndis.h)

此结构用于在调用任何队列例程时保存传输或接收队列的参数。

语法

typedef struct _NDIS_PD_QUEUE_PARAMETERS {
  NDIS_OBJECT_HEADER     Header;
  ULONG                  Flags;
  NDIS_PD_QUEUE_TYPE     QueueType;
  ULONG                  QueueSize;
  ULONG                  ReceiveDataLength;
  GROUP_AFFINITY         Affinity;
  ULONG                  TrafficClassId;
  ULONG                  MaximumPartialBufferCount;
  NDIS_PD_COUNTER_HANDLE CounterHandle;
} NDIS_PD_QUEUE_PARAMETERS;

成员

Header

NDIS_PD_CONFIG 结构的 NDIS_OBJECT_HEADER 结构。 按如下所示设置此结构的成员:

  • 类型 = NDIS_OBJECT_TYPE_DEFAULT
  • 修订 = NDIS_PD_QUEUE_PARAMETERS_REVISION_1
  • 大小 = NDIS_SIZEOF_PD_QUEUE_PARAMETERS_REVISION_1

Flags

此成员是保留的,必须由提供程序设置为 0。

QueueType

队列的类型。 有关详细信息,请参阅 NDIS_PD_QUEUE_TYPE

QueueSize

此队列可以容纳的最大 PD_BUFFER 结构量,并且始终等于一些形式(2^k)-1(63、127、255、511、1023 等)。 这有利于有效的循环索引算术。

ReceiveDataLength

最小 PD_BUFFER 数据长度。

Affinity

处理器相关性是提供程序的性能优化提示。 平台主要处理此掩码指示的处理器上的队列。 提供程序必须将此值设置为派生自从 OID_GEN_RECEIVE_SCALE_PARAMETERS 配置的间接表的处理器核心

TrafficClassId

MaximumPartialBufferCount

对于传输队列,这是允许客户端链接在一起形成单个 L2 数据包的部分 PD_BUFFER 结构的最大数目。 此值必须等于 NDIS_PD_CAPABILITIES 结构中的 MaximumTxPartialBufferCount 值。

对于接收队列,这是允许提供程序链接在一起以形成具有 RSC 的单个大型 L2 数据包的最大部分 PD_BUFFER 结构数。 这必须小于或等于 NDIS_PD_CAPABILITIES 结构中的 MaximumRxPartialBufferCount 值。

注意 客户端永远不会将具有部分标志的 PD_BUFFER 结构发布到接收队列。 始终需要客户端以至少 MTU 大小的空间发布 PD_BUFFER 结构,从数据开始位置开始。 提供程序仅在 RSC 的情况下执行链接。 某些提供程序可能无法支持 RSC 链接,这些提供程序将值 1 设置为 NDIS_PD_CAPABILITIES 结构中的 MaximumRxPartialBufferCount 成员。
 

CounterHandle

这是传输队列的传输队列计数器的句柄,也是接收队列的接收队列计数器。在队列创建期间,客户端可以选择提供计数器句柄。 在这种情况下,根据队列类型,提供程序必须更新计数器值,因为队列上发生活动。 客户端负责仅在队列关闭后关闭计数器句柄。

对于客户端未直接创建的队列(例如 RSS 接收使用 NdisPDOnRssReceiveQueues例程获取的队列),提供程序必须始终具有与队列关联的计数器句柄。 也就是说,对于给定的一组 RSS 接收队列,提供程序必须为每个接收队列具有一个专用接收队列计数器。

言论

此结构必须在 8 字节边界上对齐。

要求

要求 价值
最低支持的客户端 Windows 10
支持的最低服务器 Windows Server 2016
标头 ndis.h

另请参阅

NDIS_PD_QUEUE_TYPE

NdisPDAllocateQueue