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

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

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

注解

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

要求

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

另请参阅

NDIS_PD_QUEUE_TYPE

NdisPDAllocateQueue