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_STANDARDGetVendorAndDevice 成员、配置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