共用方式為


處理 OID_NIC_SWITCH_CREATE_SWITCH 的請求

NDIS 發出物件識別碼(OID)OID_NIC_SWITCH_CREATE_SWITCH 方法要求,以執行以下動作:

  • 在由迷你埠驅動程式靜態建立、供 PCI Express(PCIe)實體函式(PF)使用的網路介面卡上啟用 NIC 切換器。 PF 是網路適配器的硬體元件,可支援單根 I/O 虛擬化(SR-IOV)。

    NIC 交換器是由 PF 迷你埠驅動程式在呼叫 MiniportInitializeEx的上下文內靜態地建立。 驅動程式會配置資源,並根據從登錄設定讀取的參數來建立交換器。

  • 在網路適配器上動態建立 NIC 交換器。

    如果 PF 迷你埠驅動程式不支援靜態 NIC 交換器建立,迷你埠驅動程式會配置資源,並根據 OID 要求中指定的參數建立交換器。

PF 迷你埠驅動程式會在 NDIS 呼叫驅動程式的 MiniportInitializeEx 函式時,公告其對 SR-IOV 介面的支援。 如果 PF 迷你埠驅動程序支援 SR-IOV,NDIS 會從登錄讀取 NIC 交換器組態。 在 NDIS 向 PF 迷你端口驅動程式發出 OID_NIC_SWITCH_CREATE_SWITCH 的 OID 方法要求之前,NDIS 會以下列方式將 NDIS_NIC_SWITCH_PARAMETERS 結構格式化為登錄資訊:

  • NDIS 會將 SwitchType 成員設定為 NIC 交換器的類型。

    從 Windows Server 2012 開始,Windows 僅支援 NdisNicSwitchTypeExternal類型的交換器。 外部交換器指定連線至此類型交換器的虛擬埠 (VPorts) 可以透過網路適配器上的實體埠存取外部網路。

    如需有關 NIC 交換器的詳細資訊,請參閱 SR-IOV 架構

  • NDIS 會將 SwitchId 成員設定為 NIC 交換器的識別碼值。 交換器標識碼是介於零和網路適配器所支援之交換器數目之間的整數。 NDIS_DEFAULT_SWITCH_ID值指示預設的NIC交換器。

    注意 從 Windows Server 2012 開始,SR-IOV 介面僅支援網路適配器上的預設 NIC 交換器。

  • NDIS 會設定 NumVFs 成員,指定可在 NIC 交換器上配置之 PCIe 虛擬函式 (VFs) 的數目。

當它收到 OID_NIC_SWITCH_CREATE_SWITCH的 OID 方法要求時,PF 迷你埠驅動程式必須執行下列動作:

  1. 如果 PF 迷你埠驅動程式支援靜態交換器建立和設定,當 NDIS 呼叫 MiniportInitializeEx時,它會建立 NIC 參數。 當驅動程式處理此 OID 要求時,它必須確認 NDIS_NIC_SWITCH_PARAMETERS 結構中的組態參數。 參數必須與驅動程式用來在呼叫 MiniportInitializeEx期間建立切換時使用的參數相同。 如果這不是 true,驅動程式必須拒絕 OID 請求。

    如需詳細資訊,請參閱 靜態建立 NIC 交換器

  2. 如果 PF 迷你埠驅動程式支援動態交換器建立和設定,驅動程式必須驗證 NDIS_NIC_SWITCH_PARAMETERS 結構的組態值,並根據這些值建立 NIC 交換器。

    如需詳細資訊,請參閱 動態建立 NIC 交換器

  3. PF 迷你埠驅動程序必須為 NIC 交換器上的預設 VPort 配置必要的硬體和軟體資源。

    附註 預設的 VPort 總是透過 OID 要求來建立,使用 OID_NIC_SWITCH_CREATE_SWITCH,並透過 OID 要求來刪除,使用 OID_NIC_SWITCH_DELETE_SWITCH。 OID 要求 OID_NIC_SWITCH_CREATE_VPORTOID_NIC_SWITCH_DELETE_VPORT 用於在 NIC 交換器上建立和刪除非預設 VPorts。

  4. 支援動態交換器建立和設定的 PF 迷你埠驅動程式必須呼叫 NdisMEnableVirtualization,在交換器上啟用 SR-IOV 虛擬化。 此呼叫會在適配器 PCI Express(PCIe)組態空間的 SR-IOV 擴充功能結構中設定 NumVFs 成員和 VF Enable 位元。

    如需 SR-IOV 配置空間的詳細資訊,請參閱 PCI-SIG 單根 I/O 虛擬化與共享 1.1 規範。

    注意 如果 PF 迷你埠驅動程式支援靜態交換器創建,則會在其創建交換器後呼叫 MiniportInitializeEx 時啟用 SR-IOV 虛擬化。

如果 PF 迷你埠驅動程式順利完成 OID_NIC_SWITCH_CREATE_SWITCH 的 OID 方法要求,則會允許發生下列情況:

  • VF 可以透過 OID_NIC_SWITCH_ALLOCATE_VF的 OID 方法要求,在 NIC 交換器上配置。

  • 您可以透過 OID_NIC_SWITCH_CREATE_VPORT的 OID 方法要求,在 NIC 交換器上建立非預設 VPorts。

    迷你端口驅動程式負責管理其非預設的 VPort 池。 驅動程式會透過 NDIS_NIC_SWITCH_INFO 結構的 NumVPorts 成員,指定其集區中非預設 VPorts 的數目。 驅動程式會透過 OID_NIC_SWITCH_ENUM_SWITCHES的 OID 查詢要求傳回此結構。

    附註 網路適配器必須一律從 PF 的集區建立預設 VPort。