OID_SRIOV_READ_VF_CONFIG_SPACE

过度驱动程序向 OID_SRIOV_READ_VF_CONFIG_SPACE 发送对象标识符 (OID) 方法请求,以从网络适配器上指定的 PCIe 虚拟函数 (VF) 的 PCI Express (PCIe) 配置空间中读取数据。

从此 OID 方法请求成功返回后,NDIS_OID_REQUEST结构的 InformationBuffer 成员包含指向调用方分配的缓冲区的指针。 此缓冲区的格式设置为包含以下内容:

注解

VF 微型端口驱动程序在 Hyper-V 子分区的来宾操作系统中运行。 因此,VF 微型端口驱动程序无法直接访问硬件资源,例如 VF 的 PCI 配置空间。 只有 PCIe Physical Function (PF) 微型端口驱动程序可以访问 VF 的 PCI 配置空间。 PF 微型端口驱动程序在 Hyper-V 父分区的管理操作系统中运行,并拥有对 VF 资源的特权访问权限。

为了读取 VF PCI 配置空间,在管理操作系统中运行的过度驱动程序向 PF 微型端口驱动程序OID_SRIOV_READ_VF_CONFIG_SPACE OID 方法请求。 对于支持 SR-IOV 接口的单根 I/O 虚拟化的 PF 微型端口驱动程序 (此 OID) 请求。

例如,当 VF 微型端口驱动程序调用 NdisMGetBusData 从 VF PCI 配置空间读取时,在管理操作系统中运行的虚拟化堆栈将发送 OID_SRIOV_READ_VF_CONFIG_SPACE 的 OID 方法请求。

当 PF 微型端口驱动程序处理 OID_SRIOV_READ_VF_CONFIG_SPACE 的 OID 方法请求时,必须遵循以下准则:

  • 微型端口驱动程序必须验证由 NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS 结构的 VFId 成员 指定的 VF 是否具有以前分配的资源。 微型端口驱动程序通过 OID 方法请求为 VF 分配资源,OID_NIC_SWITCH_ALLOCATE_VF。 如果尚未分配指定 VF 的资源,则驱动程序必须使 OID 请求失败。

  • 微型端口驱动程序必须验证 NDIS_OID_REQUEST 结构的 InformationBuffer (引用的缓冲区) 足以返回请求的 PCIe 配置空间数据。 如果此情况不成立,则驱动程序必须使 OID 请求失败。

  • 微型端口驱动程序通常调用 NdisMGetVirtualFunctionBusData 来查询请求的 PCIe 配置空间。 但是,微型端口驱动程序还可以返回驱动程序从 PCIe 配置空间的以前读取或写入操作中缓存的 VF 的 PCIe 配置空间数据。

    注意 如果独立硬件供应商 (IHV) 在其 SR-IOV 驱动程序包中提供虚拟总线驱动程序 (VBD) ,则其微型端口驱动程序不得调用 NdisMGetVirtualFunctionBusData。 相反,驱动程序必须通过专用信道与 VBD 交互,并请求 VBD 调用 ReadVfConfigBlock。 此函数从基础虚拟 PCI GUID_VPCI_INTERFACE_STANDARD VPCI 驱动程序支持的 (接口) 公开。

如果 PF 微型端口驱动程序可以成功完成 OID 请求,则驱动程序必须将请求的 PCI 配置空间数据复制到该结构的信息缓冲区NDIS_OID_REQUEST缓冲区。 驱动程序将数据复制到缓冲区,偏移量由 NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS 的BufferOffset 成员指定。

有关详细信息,请参阅 查询虚拟函数的 PCI 配置数据

返回状态代码

PF 微型端口驱动程序返回以下 OID 方法请求的状态代码之一OID_SRIOV_READ_VF_CONFIG_SPACE。

状态代码 说明

NDIS_STATUS_SUCCESS

OID 请求已成功完成。

NDIS_STATUS_NOT_SUPPORTED

微型端口驱动程序不支持单根 I/O 虚拟化 (SR-IOV) 接口,或者不支持使用该接口。

NDIS_STATUS_INVALID_PARAMETER

结构中的一个或多个 成员NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS 无效值。

NDIS_STATUS_INVALID_LENGTH

信息缓冲区太短。 微型端口驱动程序必须设置 DATA。METHOD_INFORMATION。BytesNeeded成员NDIS_OID_REQUEST到 所需的最小缓冲区大小。

NDIS_STATUS_FAILURE

由于其他原因,请求失败。

要求

版本

在 NDIS 6.30 及更高版本中受支持。

标头

Ntddndis.h (包括 Ndis.h)

请参阅


GUID_VPCI_INTERFACE_STANDARD

NDIS_OID_REQUEST

NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS

NdisMGetBusData

NdisMGetVirtualFunctionBusData

OID_NIC_SWITCH_ALLOCATE_VF

ReadVfConfigBlock