NDIS_RECEIVE_QUEUE_PARAMETERS 结构 (ntddndis.h)
NDIS_RECEIVE_QUEUE_PARAMETERS 结构包含接收队列的配置参数。
语法
typedef struct _NDIS_RECEIVE_QUEUE_PARAMETERS {
NDIS_OBJECT_HEADER Header;
ULONG Flags;
NDIS_RECEIVE_QUEUE_TYPE QueueType;
NDIS_RECEIVE_QUEUE_ID QueueId;
NDIS_RECEIVE_QUEUE_GROUP_ID QueueGroupId;
GROUP_AFFINITY ProcessorAffinity;
ULONG NumSuggestedReceiveBuffers;
ULONG MSIXTableEntry;
ULONG LookaheadSize;
NDIS_VM_NAME VmName;
NDIS_QUEUE_NAME QueueName;
ULONG PortId;
ULONG InterruptCoalescingDomainId;
NDIS_QOS_SQ_ID QosSqId;
} NDIS_RECEIVE_QUEUE_PARAMETERS, *PNDIS_RECEIVE_QUEUE_PARAMETERS;
成员
Header
NDIS_RECEIVE_QUEUE_PARAMETERS 结构的类型、修订和大小。 此成员的格式设置为 NDIS_OBJECT_HEADER 结构。
微型端口驱动程序必须将 Header 的 Type 成员设置为 NDIS_OBJECT_TYPE_DEFAULT。 若要指定 NDIS_NIC_SWITCH_CAPABILITIES 结构的版本,驱动程序必须将 Header 的 Revision 成员设置为以下值之一:
NDIS_NIC_SWITCH_VPORT_PARAMETERS_REVISION_3
为 NDIS 6.50 添加了 QosSqId 字段。
将 Size 成员设置为 NDIS_SIZEOF_NIC_SWITCH_VPORT_PARAMETERS_REVISION_3。
NDIS_RECEIVE_QUEUE_PARAMETERS_REVISION_2
为 NDIS 6.30 添加了其他成员。
将 Size 成员设置为 NDIS_SIZEOF_RECEIVE_QUEUE_PARAMETERS_REVISION_2。
NDIS_RECEIVE_QUEUE_PARAMETERS_REVISION_1
NDIS 6.20 的原始版本。
将 Size 成员设置为 NDIS_SIZEOF_RECEIVE_QUEUE_PARAMETERS_REVISION_1。
Flags
包含以下标志的按位 OR 的 ULONG 值。 以下标志对 OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID 和 OID_RECEIVE_FILTER_QUEUE_PARAMETERS 集和查询 OID 有效:
NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION
在对 NdisMIndicateReceiveNetBufferLists 函数的单个调用中,微型端口驱动程序不得将其他接收队列的网络数据包与此队列的数据包混合。
NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED
网络适配器必须在等于或大于请求的查找头大小的偏移量处拆分收到的数据包,并使用 DMA 传输 lookahead 数据和后查找数据以分隔共享内存段。
注意
从 NDIS 6.30 开始,不再支持将数据包数据拆分到单独的观察头缓冲区。 支持 NDIS 6.30 或更高版本的微型端口驱动程序必须忽略此标志。
以下标志对 OID_RECEIVE_FILTER_QUEUE_PARAMETERS 集 OID 和 NDIS_STATUS_RECEIVE_FILTER_QUEUE_PARAMETERS 状态指示有效:
NDIS_RECEIVE_QUEUE_PARAMETERS_FLAGS_CHANGED
Flags 成员中的设置已更改。
NDIS_RECEIVE_QUEUE_PARAMETERS_PROCESSOR_AFFINITY_CHANGED
ProcessorAffinity 成员中的设置已更改。
NDIS_RECEIVE_QUEUE_PARAMETERS_SUGGESTED_RECV_BUFFER_NUMBERS_CHANGED
NumSuggestedReceiveBuffers 成员中的设置已更改。
NDIS_RECEIVE_QUEUE_PARAMETERS_NAME_CHANGED
QueueName 成员中的设置已更改。
注意
驱动程序通过在 NDIS_RECEIVE_QUEUE_PARAMETERS_CHANGE_MASK 定义与 Flags 成员中的值之间执行按位 AND 操作来确定哪些接收队列参数已更改。 如果结果为零,则未更改任何接收队列参数。
QueueType
一个NDIS_RECEIVE_QUEUE_TYPE枚举值,该值指定接收队列的类型。
QueueId
包含接收队列标识符 的NDIS_RECEIVE_QUEUE_ID 类型值。 此标识符是介于零和网络适配器支持的队列数之间的整数值。 值 NDIS_DEFAULT_RECEIVE_QUEUE_ID 指定默认接收队列。
QueueGroupId
此成员是为 NDIS 保留的。
ProcessorAffinity
一个GROUP_AFFINITY值,该值指定组号和此队列可以与之关联的 CPU 的位图。 必须至少指定一个处理器。 因此,该值不得为零。
NumSuggestedReceiveBuffers
一个 ULONG 值,该值包含网络适配器应用于支持队列的接收缓冲区数的建议值。 此数字可以相对于微型端口驱动程序可用的资源进行调整,也可以与网络适配器用于其他队列的数量成比例进行调整。 例如,实际接收缓冲区数可以是此建议值的两倍或一半。
MSIXTableEntry
此成员是为 NDIS 保留的。
LookaheadSize
此队列的头大小要求的大小(以字节为单位)的 ULONG 值。 在 VM 队列中支持 lookahead 的网络适配器在等于或大于请求的 lookahead 大小的偏移量处拆分收到的数据包,并使用 DMA 传输 lookahead 数据和后查找头数据来分隔共享内存段。 如果 LookaheadSize 为零,微型端口驱动程序不得拆分数据包。
当 NDIS 在 Flags 成员中设置NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED标志时,LookaheadSize 有效。 也就是说,如果还设置了标志,微型端口驱动程序必须以指定的观察头大小拆分数据包。 如果标志为清除, 则 LookaheadSize 的非零值无效。
注意
从 NDIS 6.30 开始,不再支持将数据包数据拆分到单独的观察头缓冲区。 此成员的值必须为零。
VmName
一个NDIS_VM_NAME值,该值包含用户读取的虚拟机的说明。
QueueName
一个NDIS_QUEUE_NAME值,该值包含用户读取的队列的说明。
PortId
一个 ULONG 值,该值包含 VM 队列附加到的 Hyper-V 可扩展交换机上的端口的唯一标识符。
InterruptCoalescingDomainId
此成员是为 NDIS 保留的。
QosSqId
将虚拟机队列 (VMQ) 与计划程序队列 (SQ) 相关联。 对于没有 SQ 关联,请将此字段设置为 零 。 有关 NDIS_QOS_SQ_ID的详细信息,请参阅 OID_QOS_OFFLOAD_CREATE_SQ。
不需要对旧 VMQ 的硬件服务质量 (QoS) 支持。 如果 QosSqId 为非零,微型端口驱动程序可能会返回NDIS_STATUS_NOT_SUPPORTED。
注解
NDIS_RECEIVE_QUEUE_PARAMETERS结构用于 OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID 和 OID_RECEIVE_FILTER_QUEUE_PARAMETERS OID。
在 NDIS 6.30 中, NDIS_RECEIVE_QUEUE_PARAMETERS 结构也用于 NDIS_STATUS_RECEIVE_FILTER_QUEUE_PARAMETERS 状态指示。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.20 及更高版本中受支持。 |
最低受支持的服务器 | Windows Server 2022 |
标头 | ntddndis.h (包括 Ndis.h) |
另请参阅
NDIS_STATUS_RECEIVE_FILTER_QUEUE_PARAMETERS
NdisMIndicateReceiveNetBufferLists