NIC 交换机的动态创建

支持单根 I/O 虚拟化 (SR-IOV) 的网络适配器必须能够创建 NIC 交换机。 对于某些适配器,可以在微型端口驱动程序从 MiniportInitializeEx 的调用返回后动态创建 NIC 开关。

只有 PCI Express (PCIe) 物理功能 (PF) SR-IOV 适配器的微型端口驱动程序才能在适配器上创建 NIC 开关。

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

NDIS 发出对象标识符 (OID) 方法请求,OID_NIC_SWITCH_CREATE_SWITCH 在 SR-IOV 网络适配器上创建 NIC 交换机。 NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向包含开关参数的 NDIS_NIC_SWITCH_PARAMETERS 结构的指针。

如果 PF 微型端口驱动程序支持动态 NIC 交换机创建,则在处理此 OID 请求时,它必须遵循以下步骤:

  1. PF 微型端口驱动程序根据这些参数为 NIC 交换机分配必要的硬件和软件资源。 驱动程序还使用这些参数配置网络适配器。

    注意支持动态 NIC 交换机创建的 PF 微型端口驱动程序不必通过注册表中的标准化 SR-IOV 关键字 (keyword) 设置读取交换机参数。 NDIS 读取这些关键字以在发出 OID_NIC_SWITCH_CREATE_SWITCH 请求之前初始化 NDIS_NIC_SWITCH_PARAMETERS 结构。 有关这些关键字的详细信息,请参阅 SR-IOV 的标准化 INF 关键字

  2. 微型端口驱动程序调用 NdisMEnableVirtualization 以启用 SR-IOV 并设置网络适配器上的 VF 数。 此函数在适配器的 PCI 配置空间中配置 SR-IOV 扩展功能。 如果此函数返回NDIS_STATUS_SUCCESS,则启用 SR-IOV,并且 VF 通过 PCIe 接口公开。

有关如何处理 OID_NIC_SWITCH_CREATE_SWITCH 请求的详细信息,请参阅 处理OID_NIC_SWITCH_CREATE_SWITCH请求