pcivirt.h (SRIOV_GET_VENDOR_AND_DEVICE_IDS 回调函数)
为 PCI Express SR-IOV 虚拟函数提供供应商和设备 ID, (VF) 用于为 VF 生成更通用的即插即用 ID。 无法直接从 VF 的配置空间读取这些 ID。
语法
SRIOV_GET_VENDOR_AND_DEVICE_IDS SriovGetVendorAndDeviceIds;
void SriovGetVendorAndDeviceIds(
[in] PVOID Context,
[in] USHORT VfIndex,
[out] PUSHORT VendorId,
[out] PUSHORT DeviceId
)
{...}
参数
[in] Context
指向驱动程序定义的上下文的指针。
[in] VfIndex
此写入操作应用到的 VF 的从零开始的索引。
[out] VendorId
指向使用 VF 的供应商 ID 填充的 USHORT 变量的指针。
[out] DeviceId
指向使用 VF 的设备 ID 填充的 USHORT 变量的指针。
返回值
无
备注
此回调函数由 PF) 驱动程序 (物理函数实现。 当系统想要检索指定 VF 的供应商和设备标识符时,将调用它。
PCI Express SR-IOV 规范要求所有 VF 具有相同的供应商 ID 和设备 ID。 这是合规硬件的要求。 但是,可以预配 VF,使其功能彼此不同,并且在不同的硬件上加载不同的驱动程序通常很有用。 因此,Windows 允许 PF 驱动程序通过配置空间接口) 提供具有不同类代码的单独设备和供应商 ID (,以便每个 VF 可能随最适合其使用的即插即用 ID 一起显示。
PF 驱动程序通过设置SRIOV_DEVICE_INTERFACE_STANDARD的 GetVendorAndDevice 成员、配置WDF_QUERY_INTERFACE_CONFIG结构以及调用 WdfDeviceAddQueryInterface 来注册其实现。
下面是此回调函数的示例实现。
Virtualization_GetVendorAndDevice (
_In_ PVOID Context,
_In_ USHORT VfIndex,
_Out_ PUSHORT VendorId,
_Out_ PUSHORT DeviceId
)
{
PDEVICE_CONTEXT deviceContext;
UNREFERENCED_PARAMETER(VfIndex);
PAGED_CODE();
deviceContext = (PDEVICE_CONTEXT)Context;
*VendorId = deviceContext->VendorId;
*DeviceId = deviceContext->DeviceId;
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 |
最低受支持的服务器 | Windows Server 2016 |
目标平台 | Windows |
标头 | pcivirt.h |
IRQL | PASSIVE_LEVEL |