共用方式為


初始化 VF Miniport 驅動程式

本主題描述為PCI Express (PCIe) 虛擬函式 (VF) 迷你埠驅動程式撰寫 MiniportInitializeEx 函式的指導方針。 VF 是由支援單一根目錄 I/O 虛擬化的網路適配器公開(SR-IOV)。

注意

 這些指導方針僅適用於 SR-IOV 網路適配器的 VF 迷你埠驅動程式。 如需適配卡 PCIe 實體函式 (PF) 迷你埠驅動程式的初始化指導方針,請參閱 初始化 PF Miniport Driver。 

當 VF 的迷你埠驅動程式的 MiniportInitializeEx 函式被呼叫時,會遵循與任何 NDIS 迷你埠驅動程式相同的步驟。 如需這些步驟的詳細資訊,請參閱 初始化Miniport Driver

除了這些步驟之外,當 NDIS 呼叫驅動程式的 MiniportInitializeEx 函式時,VF 迷你埠驅動程式必須遵循下列額外步驟:

  • VF 迷你埠驅動程式會呼叫 NdisGetHypervisorInfo 函式,以確認它正在 Hyper-V 子分割中執行。 此函式會傳回定義數據分割類型的 NDIS_HYPERVISOR_INFO 結構。 如果分割區類型回報為 NdisHypervisorPartitionMsHvChild,迷你埠驅動程式會在附加至適配卡上 PF 的 Hyper-V 子分割中執行。

    注意

    如果分割區類型回報為 NdisHypervisorPartitionMsHvParent,迷你埠驅動程式就會在附加至適配卡上 PF 的 Hyper-V 父分割區中執行。 在此情況下,迷你埠驅動程式不得初始化為 VF 驅動程式。 如果可能,驅動程式必須按照 PF 小型埠驅動程式初始化順序 中所述,初始化為 PF 驅動程式。

  • 不同於 PF 迷你埠驅動程式,VF 迷你埠驅動程式不得與 SR-IOV 標準化關鍵詞一起安裝,而且不得嘗試讀取這些關鍵詞。 如需這些關鍵詞的詳細資訊,請參閱 SR-IOV 的標準化 INF 關鍵詞

  • VF 迷你埠驅動程式會透過下列方式初始化的 NDIS_SRIOV_CAPABILITIES 結構,報告基礎虛擬網路適配器 SR-IOV 硬體功能:

    1. 迷你埠驅動程式會初始化 Header 成員。 驅動程式會將 Type 成員的 Header 設定為 NDIS_OBJECT_TYPE_DEFAULT。

      從 NDIS 6.30 開始,迷你埠驅動程式會將 Revision 成員的 Header 設定為 NDIS_SRIOV_CAPABILITIES_REVISION_1,並將 Size 成員設定為 NDIS_SIZEOF_SRIOV_CAPABILITIES_REVISION_1。

    2. 迷你埠驅動程式會在 SriovCapabilities 成員中設定NDIS_SRIOV_CAPS_PF_MINIPORT旗標,以報告 SR-IOV 功能。

      注意

      VF 迷你埠驅動程序必須同時設定NDIS_SRIOV_CAPS_VF_MINIPORT旗標和NDIS_SRIOV_CAPS_SRIOV_SUPPORTED旗標。

    VF 迷你埠驅動程式會遵循下列步驟來註冊網路適配器的 SR-IOV 功能:

    1. 迷你埠驅動程式會初始化 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 結構。

      迷你埠驅動程式會將 HardwareSriovCapabilitiesCurrentSriovCapabilities 成員設定為先前初始化之 NDIS_SRIOV_CAPABILITIES 結構的指標。

    2. 驅動程式會呼叫 NdisMSetMiniportAttributes,並將 MiniportAttributes 參數設定為 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 結構的指標。

  • VF 迷你埠驅動程式不得公告虛擬機佇列 (VMQ) 功能。 不過,驅動程式可以公告支援其他 NDIS 技術,例如電源管理和接收端調整(RSS)。

    如需有關 RSS 的詳細資訊,請參閱 接收端縮放