支持单根 I/O 虚拟化(SR-IOV)的网络适配器必须能够删除 NIC 交换机。 只有 SR-IOV 适配器的 PCI Express(PCIe)物理功能(PF)的微型端口驱动程序才能删除适配器上的 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 设置请求 OID_NIC_SWITCH_DELETE_SWITCH 之前,NDIS 会强制实施以下策略:
NDIS 保证从 NIC 交换机上的默认和非默认虚拟端口(VPorts)中清除所有接收筛选器。 接收筛选器将通过 OID 设置请求 OID_RECEIVE_FILTER_CLEAR_FILTER 进行清除。
NDIS 保证以前删除了在交换机上创建的所有非默认虚拟端口(VPorts)。 微型端口将通过 OID 设置请求 OID_NIC_SWITCH_DELETE_VPORT 进行删除。
NDIS 确保所有附加到 NIC 交换机的 PCIe 虚拟功能(VF)的资源此前均已被释放。 VF 将通过 OID 设置请求 OID_NIC_SWITCH_FREE_VF 得到释放。
当它收到 OID_NIC_SWITCH_DELETE_SWITCH的 OID 方法请求时,PF 微型端口驱动程序必须执行以下操作:
如果 PF 微型端口驱动程序支持静态创建和配置 NIC 交换机,则必须释放与指定 NIC 交换机关联的软件资源。 但是,调用 miniportHaltEx 时,驱动程序只能释放 NIC 交换机的硬件资源。
有关静态 NIC 交换机创建的详细信息,请参阅 NIC 交换机的静态创建。
如果 PF 微型端口驱动程序支持动态创建和配置 NIC 交换机,则必须释放与指定 NIC 交换机关联的硬件和软件资源。
有关动态 NIC 交换机创建的详细信息,请参阅 动态创建 NIC 交换机。
如果 PF 微型端口驱动程序支持动态创建 NIC 交换机,并且已在网络适配器上删除所有 NIC 交换机,则驱动程序必须通过调用 NdisMEnableVirtualization禁用适配器上的虚拟化。 若要禁用虚拟化,网络适配器必须将 EnableVirtualization 参数设置为 FALSE,并将 NumVF 参数设置为零。
NdisMEnableVirtualization 将清除网络适配器 PF 的 PCIe 配置空间中 SR-IOV 扩展功能结构中的 NumVFs 成员和 VF Enable 位。
注意:如果 PF 微型端口驱动程序支持静态创建和配置 NIC 交换机,则只有在调用 MiniportHaltEx 时才能调用 NdisMEnableVirtualization。