上層驅動程式或用戶應用可以在支援單一根 I/O 虛擬化(SR-IOV)的網路適配器的 NIC 交換器上獲取所有虛擬埠(VPorts)的列表。 驅動程式或應用程式發出 OID_NIC_SWITCH_ENUM_VPORTS 的物件識別碼 (OID) 方法要求,以取得此清單。
在這個 OID 查詢要求成功返回後,NDIS_OID_REQUEST 結構的 InformationBuffer 成員包含一個指向緩衝區的指標,該緩衝區包含以下內容:
定義陣列內元素數目的 NDIS_NIC_SWITCH_VPORT_INFO_ARRAY 結構。
NDIS_NIC_SWITCH_VPORT_INFO 結構的陣列。 每個結構都包含網路適配器 NIC 交換器上 VPort 的相關信息。
附註 如果未在網路適配器上建立 VPorts,驅動程式會將 NumElementsNDIS_NIC_SWITCH_VPORT_INFO_ARRAY 結構的成員設定為零,而且不會傳回任何 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 交換器上創建的所有 VPorts 的資訊。 NIC 開關是由該結構中的 SwitchId 成員指定的。
注意 從 Windows Server 2012 開始,SR-IOV 介面僅支援網路適配器上的一個 NIC 交換器。 這個交換器稱為 預設 NIC 交換器,並由 NDIS_DEFAULT_SWITCH_ID 識別符參考。 不論在 Flags 成員中設定的旗標為何,SwitchId 成員都必須設定為 NDIS_DEFAULT_SWITCH_ID。
如果在 旗標 成員中設定 NDIS_NIC_SWITCH_VPORT_INFO_ARRAY_ENUM_ON_SPECIFIC_FUNCTION 旗標,則會傳回連接至指定 PCI Express (PCIe) 實體功能 (PF) 或虛擬功能 (VF) 的所有 VPort 在網路介面卡上的資訊。 PF 或 VF 是由該結構的 AttachedFunctionId 成員所指定。
如果將 AttachedFunctionId 成員設為 NDIS_PF_FUNCTION_ID,則會返回所有 VPorts 的資訊。 這包括連結至 PF 的預設 VPort。 如果 AttachedFunctionId 成員設定為有效的 VF 標識符,則會傳回與指定 VF 相連的所有 VPorts 資訊。
注意 從 Windows Server 2012 開始,只能將一個非預設的 VPort 附加至 VF。 不過,可以將多個 VPorts (包括預設 VPort) 附加至 PF。
如果 旗標 成員設定為零,則會傳回網路適配器上連結至 PF 或 VF 的所有 VPorts 資訊。 在此情況下,會忽略 SwitchId 和 AttachedFunctionId 的值。
NDIS 會處理迷你埠驅動程式 OID_NIC_SWITCH_ENUM_VPORTS 要求。 NDIS 從其根據檢查下列來源維護的資料內部快取中傳回資訊。
OID_NIC_SWITCH_CREATE_VPORT的 OID 方法要求。
OID_NIC_SWITCH_VPORT_PARAMETERS的 OID 集合要求。