GET_VIRTUAL_DEVICE_RESOURCES回调函数 (wdm.h)

GetResources 例程返回 PCI Express (PCIe) 物理函数 (PF) 所需的资源,以便在支持单根 I/O 虚拟化 (SR-IOV) 接口的设备上启用虚拟化。

语法

GET_VIRTUAL_DEVICE_RESOURCES GetVirtualDeviceResources;

void GetVirtualDeviceResources(
  [in, out] PVOID Context,
  [out]     PUINT8 CapturedBusNumbers
)
{...}

参数

[in, out] Context

指向特定于接口的上下文信息的指针。 调用方传递作为接口PCI_VIRTUALIZATION_INTERFACE结构的上下文成员传递的值。

[out] CapturedBusNumbers

指向调用方提供的变量的指针,在此变量中,此例程返回 UINT8 值。 此值指定已捕获供设备 SR-IOV PF 使用的 PCIe 总线数。

返回值

备注

PCIe 设备通常消耗单个 PCI 总线上的资源。 PCI 驱动程序通过将总线号写入上游网桥端口中的辅助总线号寄存器和从属总线号寄存器,将设备分配给 PCI 总线。 此端口是 PCIe 根端口或 PCIe 交换机端口内的 PCI 到 PCI 桥。

支持 SR-IOV 接口的设备可能会创建比连接到设备的 PCI 总线上的虚拟功能更多。 在这些情况下,必须将上游桥端口配置为捕获一个或多个未使用的 PCI 总线。 通过将更大的值写入端口的从属总线编号寄存器来完成。

支持 SR-IOV 接口的设备必须捕获 PCI 总线(如果以下至少一个为 true):

  • 设备 (PF 和 VF) 具有 8 个以上的功能,设备不支持 PCI Express 3.0 规范的“替代路由解释” (ARI) 选项。

  • 设备支持 ARI,具有 8 个以上的总功能,但上游桥端口不支持 ARI。

  • 设备支持 ARI,具有 256 个以上的功能,上游桥端口支持 ARI。

注意

无论 ARI 支持如何,每个捕获的总线都可以支持 256 个函数。

如果设备需要更多 PCIe 请求程序 ID (RID) 才能启用其所有 VF,则 PCI 总线驱动程序执行以下操作:

  1. 将设备的总线号写入 PCIe 辅助总线号码寄存器。

  2. 将大于设备的总线号的值写入 PCIe 从属总线编号寄存器。

这两个寄存器值之间的差异表示捕获的总线数。

GetResources 例程由GUID_PCI_VIRTUALIZATION_INTERFACE接口提供。

要求

   
最低受支持的客户端 Windows Server 2012及更高版本的 Windows 中受支持。
目标平台 桌面
Header wdm.h (包括 Wdm.h)
IRQL PASSIVE_LEVEL

请参阅

PCI_VIRTUALIZATION_INTERFACE