删除 NIC 交换机

支持单根 I/O 虚拟化 (SR-IOV) 的网络适配器必须能够删除 NIC 交换机。 只有 PCI Express (PCIe) 物理功能 (PF) SR-IOV 适配器的微型端口驱动程序可以删除适配器上的 NIC 开关。

注意从 Windows Server 2012 中的 NDIS 6.30 开始,SR-IOV 接口仅支持网络适配器上的一个 NIC 开关。 此开关称为 默认 NIC 开关,由NDIS_DEFAULT_SWITCH_ID标识符引用。

在停止 PF 微型端口驱动程序之前,NDIS 通过发出对象标识符 (OID) OID_NIC_SWITCH_DELETE_SWITCH集请求来删除 NIC 开关。 NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向NDIS_NIC_SWITCH_DELETE_SWITCH_PARAMETERS 结构的指针,该结构指定要删除的开关的标识符。

在向 PF 微型端口驱动程序发出 OID_NIC_SWITCH_DELETE_SWITCH 的 OID 集请求之前,NDIS 强制实施以下策略:

  • NDIS 保证已从 NIC 交换机上的默认和非默认虚拟端口 (VPorts) 清除所有接收筛选器。 接收筛选器通过 OID_RECEIVE_FILTER_CLEAR_FILTER的 OID 集请求清除。

  • NDIS 保证先前已删除在交换机上创建的 VPorts) (所有非默认虚拟端口。 VPort 通过 OID_NIC_SWITCH_DELETE_VPORT的 OID 集请求删除。

  • NDIS 保证以前已释放附加到 NIC 交换机的 PCIe 虚拟函数 (VF 的所有资源) 。 VF 通过 OID_NIC_SWITCH_FREE_VF的 OID 集请求释放。

当它收到 OID_NIC_SWITCH_DELETE_SWITCH 的 OID 方法请求时,PF 微型端口驱动程序必须执行以下操作:

  1. 如果 PF 微型端口驱动程序支持静态创建和配置 NIC 交换机,则必须释放与指定 NIC 交换机关联的软件资源。 但是,在调用 MiniportHaltEx 时,驱动程序只能释放 NIC 交换机的硬件资源。

    有关静态 NIC 交换机创建的详细信息,请参阅 静态创建 NIC 开关

  2. 如果 PF 微型端口驱动程序支持动态创建和配置 NIC 交换机,则必须释放与指定 NIC 交换机关联的硬件和软件资源。

    有关动态 NIC 交换机创建的详细信息,请参阅 动态创建 NIC 交换机

  3. 如果 PF 微型端口驱动程序支持动态创建 NIC 交换机,并且已在网络适配器上删除所有 NIC 交换机,则驱动程序必须通过调用 NdisMEnableVirtualization 来禁用适配器上的虚拟化。 若要禁用虚拟化,网络适配器必须将 EnableVirtualization 参数设置为 FALSE,并将 NumVFs 参数设置为零。

    NdisMEnableVirtualization 在网络适配器的 PF 的 PCIe 配置空间中清除 SR-IOV 扩展功能结构中的 NumVFs 成员和 VF Enable 位。

    注意如果 PF 微型端口驱动程序支持静态创建和配置 NIC 交换机,则它只能在调用 MiniportHaltEx 时调用 NdisMEnableVirtualization