列舉網路介面卡上的虛擬埠
過度配置驅動程式或使用者應用程式可以在支援單一根目錄 I/O 虛擬化 (SR-IOV) 之網路介面卡的 NIC 交換器上,取得 VPort) s (VPorts 的所有虛擬埠清單。 驅動程式或應用程式會發出物件識別碼, (OID) 方法要求 OID_NIC_SWITCH_ENUM_VPORTS 以取得此清單。
從這個 OID 查詢要求成功傳回之後,NDIS_OID_REQUEST結構的InformationBuffer成員會包含緩衝區的指標,其中包含下列專案:
定義陣列內專案數目 的NDIS_NIC_SWITCH_VPORT_INFO_ARRAY 結構。
NDIS_NIC_SWITCH_VPORT_INFO結構的陣列。 每個結構都包含網路介面卡 NIC 交換器上 VPort 的相關資訊。
注意如果網路介面卡上未建立 VPorts,驅動程式會將NDIS_NIC_SWITCH_VPORT_INFO_ARRAY結構的NumElements成員設定為零,而且不會傳回任何NDIS_NIC_SWITCH_VPORT_INFO結構。
在過度處理驅動程式或使用者應用程式發出 OID_NIC_SWITCH_ENUM_VPORTS 要求之前,它必須先初始化與要求一起傳遞 的NDIS_NIC_SWITCH_VPORT_INFO_ARRAY 結構。 初始化 NDIS_NIC_SWITCH_VPORT_INFO_ARRAY 結構時,驅動程式或應用程式必須遵循下列指導方針:
如果在 Flags 成員中設定NDIS_NIC_SWITCH_VPORT_INFO_ARRAY_ENUM_ON_SPECIFIC_SWITCH旗標,則會針對在指定的 NIC 交換器上建立的所有 VPort 傳回信息。 NIC 參數是由該結構的 SwitchId 成員所指定。
注意從 Windows Server 2012 開始,SR-IOV 介面僅支援網路介面卡上的一個 NIC 交換器。 此參數稱為 預設 NIC 參數,並由NDIS_DEFAULT_SWITCH_ID識別碼參考。 不論 Flags 成員中設定的旗標為何, SwitchId 成員都必須設定為 NDIS_DEFAULT_SWITCH_ID。
如果在 Flags 成員中設定NDIS_NIC_SWITCH_VPORT_INFO_ARRAY_ENUM_ON_SPECIFIC_FUNCTION旗標,則會傳回附加至指定 PCI Express (PCIe) 實體函式 (PF) 或虛擬函式 (網路介面卡上 VF) 的所有 VPorts 資訊。 PF 或 VF 是由該結構的 AttachedFunctionId 成員所指定。
如果 AttachedFunctionId 成員設定為 NDIS_PF_FUNCTION_ID,則會傳回所有 VPorts 的資訊。 這包括連結至 PF 的預設 VPort。 如果 AttachedFunctionId 成員設定為有效的 VF 識別碼,則會針對附加至指定 VF 的所有 VPort 傳回信息。
注意從 Windows Server 2012 開始,只有一個非預設 VPort 可以附加至 VF。 不過,多個 VPorts (包括預設 VPort) 可以附加至 PF。
如果 Flags 成員設定為零,則會針對連接至網路介面卡上 PF 或 VF 的所有 VPort 傳回信息。 在此情況下, 會忽略 SwitchId 和 AttachedFunctionId 的值。
NDIS 會處理迷你埠驅動程式 的OID_NIC_SWITCH_ENUM_VPORTS 要求。 NDIS 會從其維護之資料的內部快取傳回信息,以檢查下列來源:
OID_NIC_SWITCH_CREATE_VPORT的 OID 方法要求。
OID_NIC_SWITCH_VPORT_PARAMETERS的 OID 集合要求。