发出 OID_NIC_SWITCH_FREE_VF 请求

过分驱动程序发出对象标识符 (OID) OID_NIC_SWITCH_FREE_VF 集请求,以便为 PCI Express (PCIe) Virtual Function (VF) 释放资源。 这些资源以前是通过 OID_NIC_SWITCH_ALLOCATE_VF 的 OID 方法请求分配的。

过度覆盖的驱动程序向 PCIe 物理功能 ( PF) 的微型端口驱动程序发出OID_NIC_SWITCH_FREE_VF集请求。 在发出此 OID 请求之前,overlying 驱动程序必须执行以下操作:

  1. 覆盖驱动程序必须确保 VF 未连接到网络适配器的 NIC 交换机上的任何虚拟端口 (VPort) 。 覆盖驱动程序必须发出 OID_NIC_SWITCH_DELETE_VPORT 的 OID 集请求,以删除附加到 VF 的所有 VPort。 有关详细信息,请参阅 删除虚拟端口

  2. 覆盖驱动程序初始化 NDIS_NIC_SWITCH_FREE_VF_PARAMETERS 结构。 驱动程序必须将 VFId 成员设置为在 OID_NIC_SWITCH_ALLOCATE_VF 的 OID 方法请求中返回的 VF 标识符。

过分驱动程序按照以下步骤发出 OID_NIC_SWITCH_FREE_VF 的 OID 集请求:

  1. 覆盖驱动程序初始化 OID 方法请求 的NDIS_OID_REQUEST 结构。 驱动程序将 InformationBuffer 成员设置为指向已初始化 NDIS_NIC_SWITCH_FREE_VF_PARAMETERS 结构的指针。

  2. 上层驱动程序调用 NdisOidRequest 向基础 PF 微型端口驱动程序发出 OID 请求。

在过度分配的驱动程序请求为 VF 分配资源后,该驱动程序是唯一可以请求释放同一 VF 的资源的组件。 过度分配的驱动程序必须发出 OID_NIC_SWITCH_FREE_VF 的 OID 集请求来释放 VF 资源。 在可以停止过度分配的驱动程序之前,它必须释放由驱动程序 OID_NIC_SWITCH_ALLOCATE_VF 请求分配的每个 VF 的资源。

注意 如果过度分配的驱动程序发出 OID_NIC_SWITCH_ALLOCATE_VF 的 OID 方法请求来为 VF 分配资源,该驱动程序是唯一可以请求释放同一 VF 的资源的组件。 过度分配的驱动程序必须发出 OID_NIC_SWITCH_FREE_VF 的 OID 集请求来释放 VF 资源。 在可以停止过度分配的驱动程序之前,它必须释放由驱动程序的OID_NIC_SWITCH_ALLOCATE_VF请求分配的每个 VF 的资源。