支援單一根 I/O 虛擬化(SR-IOV)的網路適配器必須能夠支援下列硬體元件:
一個PCI Express (PCIe) 物理功能 (PF)。 PF 一律存在於網路適配器上,並附加至 Hyper-V 父分割區。
如需此硬體元件的詳細資訊,請參閱 SR-IOV 實體函式 (PF)。
一或多個 PCIe 虛擬函式 (VF)。 每個 VF 都必須初始化並附加至 Hyper-V 子分割區,客體作系統的網路元件才能透過 VF 傳送或接收封包。
如您需要此硬體元件的詳細資訊,請參閱 SR-IOV 虛擬函式 (VFs)。
PF 迷你埠驅動程式會在 Hyper-V 父磁碟分區的管理作系統中執行,為 SR-IOV 網路適配器上的 PF 和每個 VF 配置資源。 此驅動程式會針對 PF 配置資源,就像任何網路適配器一樣。 不過,驅動程式會以下列方式為每個 VF 配置資源:
當驅動程式在網路適配器上建立網路介面卡 (NIC) 時,PF 迷你埠驅動程式會為每個 VF 配置硬體資源。 驅動程式會呼叫 NdisMEnableVirtualization來完成 VF 的硬體資源配置。 如您需要此程序的詳細資訊,請參閱 建立 NIC 交換器。
當驅動程式處理 OID_NIC_SWITCH_ALLOCATE_VF的物件標識碼 (OID) 方法要求時,PF 迷你埠驅動程式會配置 VF 的軟體資源。 即使已為 VF 配置硬體資源,但在 PF 迷你端口驅動程式成功完成 OID_NIC_SWITCH_ALLOCATE_VF 之前,仍被視為尚未運作。
上層驅動程式可以發出 OID_NIC_SWITCH_ALLOCATE_VF的 OID方法呼叫,以請求為VF分配軟體資源。 InformationBuffer 成員隸屬於用於 OID 要求的 NDIS_OID_REQUEST 結構,內含指向 NDIS_NIC_SWITCH_VF_PARAMETERS 結構的指標。
在成功地從 OID 要求返回後,NDIS_OID_REQUEST 結構的 InformationBuffer 成員包含指向 NDIS_NIC_SWITCH_VF_PARAMETERS 結構的指標。 此結構具有配接器唯一的 VF 識別碼和 PCI 要求者識別碼 (RID)。 這些識別碼會以下列方式使用:
上層驅動程式會在與 VF 相關的操作中使用 VF 識別碼,例如:
透過 OID_NIC_SWITCH_VF_PARAMETERS的 OID 方法要求取得目前的 VF 參數。
透過 OID_NIC_SWITCH_FREE_VF的 OID 設定請求釋放 VF 先前分配的資源。
透過 OID_SRIOV_RESET_VF的 OID 集合要求,向 VF 發出 PCI 重設。
虛擬化堆疊使用 RID 來將 DMA 和中斷在 PF 和 VF 之間重新映射。 RID 也可讓硬體輸入/輸出記憶體管理單元 (IOMMU) 將客體實體位址轉換為主機實體位址。
如需有關高層驅動程式如何處理 OID_NIC_SWITCH_ALLOCATE_VF 方法請求的更多資訊,請參閱 發出 OID_NIC_SWITCH_ALLOCATE_VF 請求。
如需有關 PF 迷你埠驅動程式如何處理 OID_NIC_SWITCH_ALLOCATE_VF 方法要求的詳細資訊,請參閱 處理 OID_NIC_SWITCH_ALLOCATE_VF 要求。
注意 VF 的資源已透過 OID_NIC_SWITCH_ALLOCATE_VF的 OID 方法要求配置之後,就無法動態變更 VF 的資源參數。