设置 NIC 交换机的参数

覆盖驱动程序可以更改在支持单根 I/O 虚拟化 (SR-IOV) 的网络适配器上创建的 NIC 交换机的参数。 驱动程序发出对象标识符 (OID) OID_NIC_SWITCH_PARAMETERS 的集合请求来更改这些参数。 只有 PCI Express (PCIe) 物理功能 (PF) SR-IOV 适配器的微型端口驱动程序处理此 OID 集请求。

在过度分配的驱动程序发出此 OID 集请求之前,它必须使用要在 NIC 开关上更改的参数初始化 NDIS_NIC_SWITCH_PARAMETERS 结构。 然后,驱动程序为 OID 请求初始化 NDIS_OID_REQUEST 结构,并将 InformationBuffer 成员设置为 NDIS_NIC_SWITCH_PARAMETERS 结构的指针。

只能更改 NIC 交换机的有限配置参数子集。 overlying 驱动程序通过设置 NDIS_NIC_SWITCH_PARAMETERS 结构的以下成员来指定要更改的参数:

  • SwitchId 成员设置为将更改其参数的 NIC 交换机的标识符。

    注意从 Windows Server 2012 开始,SR-IOV 接口仅支持网络适配器上的一个 NIC 交换机。 此开关称为 默认 NIC 开关SwitchId 成员必须设置为 NDIS_DEFAULT_SWITCH_ID。

  • Flags 成员中设置相应的 NDIS_NIC_SWITCH_PARAMETERS_Xxx_CHANGED 标志。 只有在 Ntddndis.h 中定义了相应的 NDIS_NIC_SWITCH_PARAMETERS_Xxx_CHANGED 标志时,才能更改 NDIS_NIC_SWITCH_PARAMETERS 结构的成员

  • NDIS_NIC_SWITCH_PARAMETERS 结构的成员(对应于 Flags 成员中设置的 NDIS_NIC_SWITCH_PARAMETERS_Xxx_CHANGED 标志)使用要更改的 NIC 交换机配置参数进行设置。

    注意从 Windows Server 2012 开始,只有 NDIS_NIC_SWITCH_PARAMETERS 结构的 SwitchName 成员可以通过OID_NIC_SWITCH_PARAMETERS的 OID 集请求进行更改。

PF 微型端口驱动程序在收到 OID_NIC_SWITCH_PARAMETERS 的 OID 集请求时必须遵循这些准则

  • 如果 PF 微型端口驱动程序无需重新初始化网络适配器即可应用更改,则驱动程序会将更改应用于硬件,并通过NDIS_STATUS_SUCCESS完成 OID 请求。

    如果返回此状态代码,NDIS 将更新注册表中的 NIC 交换机配置信息。

  • 如果 PF 微型端口驱动程序需要重新初始化网络适配器才能应用更改,驱动程序会通过NDIS_STATUS_REINIT_REQUIRED完成 OID 请求。

    如果返回此状态代码,NDIS 还会更新注册表中的 NIC 交换机配置信息。 但是,发出 OID 集请求的过度驱动程序必须重新初始化网络适配器,以便更改生效。

    注意 支持静态 NIC 创建和配置的 PF 微型端口驱动程序可以返回NDIS_STATUS_REINIT_REQUIRED,以确保重新初始化适配器,使新参数生效。

  • 如果 PF 微型端口驱动程序无法应用 OID 中请求的更改,则必须使 OID 失败并返回相应的 NDIS_STATUS_Xxx 代码。

    在这种情况下,NDIS 不会更新注册表中的 NIC 交换机配置信息。