GET_VIRTUAL_DEVICE_LOCATION回调函数 (wdm.h)

GetLocation 例程在 PCI 总线上返回 PCI Express (PCIe) 虚拟函数 (VF) 的设备位置。 支持单根 I/O 虚拟化 (SR-IOV) 接口的设备可以在 PCI 总线上公开一个或多个 VF。

语法

GET_VIRTUAL_DEVICE_LOCATION GetVirtualDeviceLocation;

NTSTATUS GetVirtualDeviceLocation(
  [in, out] PVOID Context,
  [in]      USHORT VirtualFunction,
  [out]     PUINT16 SegmentNumber,
  [out]     PUINT8 BusNumber,
  [out]     PUINT8 FunctionNumber
)
{...}

参数

[in, out] Context

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

[in] VirtualFunction

一个从零开始的值,该值指定为其返回设备位置的设备上的 VF

[out] SegmentNumber

指向调用方提供的变量的指针,在该变量中,此例程返回当前 PCI 段号的 UINT16 值。 此值指定设备所连接的 PCI 总线组。

[out] BusNumber

指向调用方提供的变量的指针,此例程在该变量中返回 UINT8 值。 此值指定连接的设备的当前 PCI 总线编号。

[out] FunctionNumber

指向调用方提供的变量的指针,此例程在该变量中返回 UINT8 值。 此值包含 PCI 总线上指定 VF 的函数编号。

返回值

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

返回代码 说明
STATUS_SUCCESS 操作已成功完成。
STATUS_INVALID_PARAMETER VirtualFunction 参数大于设备的 SR-IOV 扩展功能结构的 TotalVF 成员的值。

注解

GetLocation 例程返回 PCIe 层次结构中 VF 的当前设备位置。 对于使用 I/O 内存管理单元 (IOMMU) 来路由传入或传出设备的流量的虚拟化系统来说,此信息是必需的。

对 GetLocation 例程的调用成功返回后, FunctionNumber 参数包含一个值,该值表示 PCI 总线上指定 VF 的函数编号。 此值基于 PCI Express 3.0 规范的备用路由解释 (ARI) 选项。 ARI 将 PCIe 总线视为具有 8 位函数空间的单个设备,允许在总线上使用 256 个函数。

GetLocation 例程由 GUID_PCI_VIRTUALIZATION_INTERFACE 接口提供。

VF 所在的 PCI 总线编号可以更改。 建议驱动程序不要将 VF 的设备位置存储在非易失性存储(如注册表)中。

要求

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

另请参阅

PCI_VIRTUALIZATION_INTERFACE