GET_VIRTUAL_DEVICE_LOCATION回调函数 (wdm.h)
GetLocation 例程返回 PCI Express (PCIe) 虚拟函数 (VF) 在 PCI 总线上的设备位置。 支持单根 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 结构的 上下文 成员传递的值。
[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 |