枚举网络适配器上的虚拟功能

过度部署的驱动程序或用户应用程序可以在支持单根 I/O 虚拟化 (SR-IOV) 的网络适配器上获取所有 PCI Express (PCIe) Virtual Functions (VF) 的列表。 驱动程序或应用程序发出对象标识符 (OID) 方法请求OID_NIC_SWITCH_ENUM_VFS 以获取此列表。

在驱动程序或应用程序发出 OID 请求之前,它必须初始化随请求一起传递的 NDIS_NIC_SWITCH_VF_INFO_ARRAY 结构。 驱动程序或应用程序在初始化 NDIS_NIC_SWITCH_VF_INFO_ARRAY 结构时必须遵循以下准则:

  • 如果在 Flags 成员中设置了NDIS_NIC_SWITCH_VF_INFO_ARRAY_ENUM_ON_SPECIFIC_SWITCH标志,则过度的驱动程序或应用程序必须将 SwitchId 成员设置为 SR-IOV 网络适配器上 NIC 交换机的标识符。 通过以这种方式设置这些成员,仅针对 SR-IOV 网络适配器上的指定 NIC 交换机返回 VF 信息。

    注意 过度分配的驱动程序和用户模式应用程序可以通过发出 OID_NIC_SWITCH_ENUM_SWITCHES的 OID 查询请求来获取 NIC 交换机标识符。

  • 如果 Flags 成员设置为零,驱动程序或应用程序必须将 SwitchId 成员设置为零。 通过以这种方式设置这些成员,将返回 SR-IOV 网络适配器上所有 NIC 交换机的 VF 信息。

    注意从Windows Server 2012开始,Windows 仅支持网络适配器上的默认 NIC 开关。 无论 Flags 成员中设置的标志如何, SwitchId 成员都必须设置为 NDIS_DEFAULT_SWITCH_ID。

成功从此 OID 查询请求返回后,NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向缓冲区的指针,其中包含以下内容:

NDIS 处理微型端口驱动程序 的OID_NIC_SWITCH_ENUM_VFS 请求。 NDIS 从它通过检查以下源维护的数据的内部缓存中返回信息: