共用方式為


NDIS_RSS_SET_INDIRECTION_ENTRY 結構 (ntddndis.h)

警告

本主題中的某些資訊與發行前產品有關,在正式發行前可能會大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。

RSSv2 僅在 Windows 10 1803 版中是預覽版。

NDIS_RSS_SET_INDIRECTION_ENTRY 結構代表設定單一間接數據表專案的命令。 它包含在 NDIS_RSS_SET_INDIRECTION_ENTRIES 結構中,用於 OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES OID。 OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES是 RSS 第 2 版的同步 OID (RSSv2)

語法

typedef struct _NDIS_RSS_SET_INDIRECTION_ENTRY {
  NDIS_NIC_SWITCH_ID       SwitchId;
  NDIS_NIC_SWITCH_VPORT_ID VPortId;
  ULONG                    Flags;
  USHORT                   IndirectionTableIndex;
  PROCESSOR_NUMBER         TargetProcessorNumber;
  NDIS_STATUS              EntryStatus;
} NDIS_RSS_SET_INDIRECTION_ENTRY, *PNDIS_RSS_SET_INDIRECTION_ENTRY;

成員

SwitchId

NDIS_NIC_SWITCH_ID值,表示 VPort 所在的 NIC 參數。

交換器標識碼是介於零與網路適配器支持的交換器數目之間的整數。 NDIS_DEFAULT_SWITCH_ID值表示預設網路適配器交換器。

此欄位應該在原生 RSS 案例中設定為 0

VPortId

表示 VPort 識別碼的NDIS_NIC_SWITCH_VPORT_ID值。

此欄位應該在原生 RSS 案例中設定為 0

Flags

包含旗標位 OR 的 ULONG 值。 這個成員會限定這個結構中的資訊。

可能的旗標如下所示:

意義
NDIS_RSS_SET_INDIRECTION_ENTRY_FLAG_PRIMARY_PROCESSOR
表示 NDIS_RSS_SET_INDIRECTION_ENTRY 參照調整實體的主要處理器。 不會使用間接數據表。 當主要處理器為 *非作用中* (RSS 啟用) 時,迷你埠驅動程式應該追蹤此旗標設定的專案更新,因此知道當 RSS 停用時,哪個處理器會是主要處理器。
NDIS_RSS_SET_INDIRECTION_ENTRY_FLAG_DEFAULT_PROCESSOR
表示 NDIS_RSS_SET_INDIRECTION_ENTRY 參照調整實體的默認處理器。 默認處理器會處理未隱藏的封包。 不會使用間接數據表。 當預設處理器為 *非使用中* (RSS 已停用) 時,迷你埠驅動程式應該追蹤已設定此旗標的專案更新,讓它知道啟用 RSS 時,哪些處理器會是預設的。

IndirectionTableIndex

目前指向目前 CPU 的 ITE 哈希索引,正在修改為指向另一個處理器。 當間接數據表處於 非使用 中狀態 (RSS 停用) 時,迷你埠驅動程式應該追蹤間接數據表專案的更新,以便在啟用 RSS 時具有正確的間接數據表。

TargetProcessorNumber

ITE 應該在完成時指向的目標處理器編號。 迷你埠驅動程序應該會成功ITE 從目前的處理器移至目前的處理器。

EntryStatus

NDIS_STATUS程式代碼,指出這個專案移動作業的狀態。 因為 NDIS_RSS_SET_INDIRECTION_ENTRY 用於同步 OID 呼叫的內容中,所以迷你埠驅動程式無法傳回此成員 的NDIS_STATUS_PENDING

為了簡化迷你埠驅動程序的實作,上層通訊協定會將此字段初始化為NDIS_STATUS_PENDING。 迷你埠驅動程序必須以成功或失敗的 NDIS 狀態代碼覆寫NDIS_STATUS_PENDING。 如果上層偵測到此欄位在完成 OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES OID 時仍NDIS_STATUS_PENDING,則會導致系統錯誤檢查,並指出迷你埠驅動程式發生錯誤。

重要

群組中的所有 NDIS_RSS_SET_INDIRECTION_ENTRY 結構,包含在 NDIS_RSS_SET_INDIRECTION_ENTRIES 結構中,都必須使用相同的 EntryStatus 標記。

如果這個移動命令發生錯誤,請將 EntryStatus 設定為該錯誤狀況的下列其中一個狀態代碼:

狀態碼 錯誤狀況
NDIS_STATUS_INVALID_PARAMETER
  • SwitchIdVPortId 成員無效。
  • Flags 成員無效。
  • IndirectionTableIndex 成員超過目前從 NDIS_RECEIVE_SCALE_PARAMETERS_V2 結構設定的 NumberOfIndirectionTableEntries
NDIS_STATUS_INVALID_PORT_STATE VPort 未啟動,或處於防止它接受RSSv2 OID的其他狀態。
NDIS_STATUS_NOT_ACCEPTED 動作專案 CPU 無效。
NDIS_STATUS_INVALID_DATA 對於 主動 式方向參數,新的處理器不是適配卡 RSS 處理器集的一部分。 請注意,非 使用中的 參數只需要追蹤。 稍後會在 RSS 狀態轉換期間 (開啟或關閉) 進行驗證。
NDIS_STATUS_NO_QUEUES 命令專案的群組會失敗該群組所指定的 VPort 的「佇列數目」檢查。

規格需求

需求
最低支援的用戶端 NDIS 6.80 和更新版本支援。
標頭 ntddndis.h (包括 Ndis.h)

另請參閱

NDIS_RSS_SET_INDIRECTION_ENTRIES

OID_GEN_RSS_SET_INDIRECTION_TABLE_ENTRIES

接收端調整第 2 版 (RSSv2)

NDIS 6.80 中的同步 OID 要求介面