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 查询,如下所示:
PCI 总线驱动程序将0xFFFFFFFF写入 BAR。
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 |