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 |