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 來傳輸外觀數據和後置外觀數據,以分隔共用記憶體區段。
注意
從 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 的網路適配器會分割接收的封包,其位移等於或大於要求的外觀大小,並使用 DMA 來傳輸外觀數據和後置外觀數據來分隔共用記憶體區段。 如果 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