GET_VIRTUAL_FUNCTION_PROBED_BARS回调函数 (wdm.h)

GetVirtualFunctionProbedBars 例程返回支持单根 I/O 虚拟化 (SR-IOV) 接口的设备的 PCI Express (PCIe) 基址寄存器 () BA 的值。

GetVirtualFunctionProbedBars 返回设备在 PCI 总线驱动程序执行的查询后报告的 BAR 值。 此查询确定设备所需的内存或 I/O 地址空间。

语法

GET_VIRTUAL_FUNCTION_PROBED_BARS GetVirtualFunctionProbedBars;

NTSTATUS GetVirtualFunctionProbedBars(
  [in, out] PVOID Context,
  [out]     PULONG BaseRegisterValues
)
{...}

参数

[in, out] Context

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

[out] BaseRegisterValues

指向 ULONG 值数组的指针。 GetVirtualFunctionProbedBars 例程返回设备的每个 BAR 的值。

GetVirtualFunctionProbedBars 在此数组中返回最大 PCI_TYPE0_ADDRESSES 值。

返回值

GetVirtualFunctionProbedBars 例程返回以下 NTSTATUS 值之一:

返回代码 说明
STATUS_SUCCESS 操作已成功完成。
STATUS_INVALID_DEVICE_STATE 设备不支持 SR-IOV 接口。

注解

PCI 总线驱动程序。 在 Hyper-V 父分区的管理操作系统中运行,查询设备每个 BAR 的内存或 I/O 地址空间要求。 PCI 总线驱动程序在首次在总线上检测到适配器时执行此查询。

通过此 BAR 查询,PCI 总线驱动程序确定以下内容:

  • 设备是否支持 BAR。

  • 如果支持 BAR,则 BAR 需要多少内存或 I/O 地址空间。

PCI 驱动程序执行此 BAR 查询,如下所示:

  1. PCI 总线驱动程序将0xFFFFFFFF写入 BAR。

  2. PCI 总线驱动程序读取 BAR 以确定设备所需的内存或地址空间。 值为零表示设备不支持 BAR。

GetVirtualFunctionProbedBars 例程由 GUID_PCI_VIRTUALIZATION_INTERFACE 接口提供。

以下说明适用于 GetVirtualFunctionProbedBars 例程:

  • SR-IOV 接口不要求 PCIe VF 的 BA 符合用于确定 BAR 的内存块大小或 I/O 地址空间的协议。 因此,虚拟 PCI (在来宾操作系统中运行的 VPCI) 驱动程序通过使用物理设备上的 BA 中的等效大小来确定大小。 VPCI 驱动程序通过调用 GetVirtualFunctionProbedBars 例程获取此信息。

  • 物理设备启动后,VPCI 驱动程序需要每个 BAR 的内存大小或 I/O 地址空间。 此时,PCI 驱动程序无法在不更改 BAR 的当前值的情况下在设备上执行 BAR 查询。 因此,当 VPCI 驱动程序调用 GetVirtualFunctionProbedBars 例程时,PCI 驱动程序将返回它在 BAR 查询期间获取的 BAR 信息。 PCI 驱动程序在总线上首次检测到设备时执行此查询。

要求

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

另请参阅

PCI_VIRTUALIZATION_INTERFACE