OID_SRIOV_READ_VF_CONFIG_SPACE
过度的驱动程序发出OID_SRIOV_READ_VF_CONFIG_SPACE的对象标识符(OID)方法请求,以从网络适配器上的指定 PCIe 虚拟函数 (VF) 的 PCI Express (PCIe) 配置空间读取数据。
从此 OID 方法请求成功返回后,InformationBufferNDIS_OID_REQUEST 结构的成员包含指向调用方分配的缓冲区的指针。 此缓冲区的格式设置为包含以下内容:
包含 VF PCI 配置空间读取作的参数的 NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS 结构。
要从 PCI 配置空间中读取数据的其他缓冲区空间。
言论
VF 微型端口驱动程序在 Hyper-V 子分区的来宾作系统中运行。 因此,VF 微型端口驱动程序无法直接访问硬件资源,例如 VF 的 PCI 配置空间。 只有 PCIe 物理函数(PF)的微型端口驱动程序才能访问 VF 的 PCI 配置空间。 PF 微型端口驱动程序在 Hyper-V 父分区的管理作系统中运行,并具有对 VF 资源的特权访问权限。
为了读取 VF PCI 配置空间,在管理作系统中运行的过度驱动程序向 PF 微型端口驱动程序发出 OID 方法请求OID_SRIOV_READ_VF_CONFIG_SPACE。 支持单根 I/O 虚拟化(SR-IOV)接口的 PF 微型端口驱动程序需要此 OID 方法请求。
例如,当 VF 微型端口驱动程序调用 NdisMGetBusData 从其 VF PCI 配置空间读取时,在管理作系统中运行的虚拟化堆栈会发出OID_SRIOV_READ_VF_CONFIG_SPACE的 OID 方法请求。
当它处理OID_SRIOV_READ_VF_CONFIG_SPACE的 OID 方法请求时,PF 微型端口驱动程序必须遵循以下准则:
微型端口驱动程序必须验证由 VFIdNDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS 结构的成员指定的 VF 是否具有以前分配的资源。 微型端口驱动程序通过 OID_NIC_SWITCH_ALLOCATE_VF的 OID 方法请求为 VF 分配资源。 如果未分配指定 VF 的资源,驱动程序必须失败 OID 请求。
微型端口驱动程序必须验证缓冲区(由 InformationBufferNDIS_OID_REQUEST 结构的成员引用)是否足够大,无法返回请求的 PCIe 配置空间数据。 如果这不是 true,驱动程序必须失败 OID 请求。
微型端口驱动程序通常调用 NdisMGetVirtualFunctionBusData 来查询请求的 PCIe 配置空间。 但是,微型端口驱动程序还可以返回驱动程序从 PCIe 配置空间的先前读取或写入作中缓存的 VF 的 PCIe 配置空间数据。
注意 如果独立的硬件供应商(IHV)在其 SR-IOV 驱动程序包中提供虚拟总线驱动程序(VBD),则其微型端口驱动程序不得调用 NdisMGetVirtualFunctionBusData。 相反,驱动程序必须通过专用信道与 VBD 接口,并请求 VBD 调用 ReadVfConfigBlock。 此函数从基础虚拟 PCI (VRI) 总线驱动程序支持的 GUID_VPCI_INTERFACE_STANDARD 接口公开。
如果 PF 微型端口驱动程序可以成功完成 OID 请求,驱动程序必须将请求的 PCI 配置空间数据复制到 NDIS_OID_REQUEST 结构 InformationBuffer 成员引用的缓冲区。 驱动程序将数据复制到 NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS 结构 BufferOffset 成员指定的偏移量处的缓冲区。
有关详细信息,请参阅 查询虚拟函数的 PCI 配置数据。
返回状态代码
PF 微型端口驱动程序为 OID_SRIOV_READ_VF_CONFIG_SPACE 的 OID 方法请求返回以下状态代码之一。
状态代码 | 描述 |
---|---|
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 |
信息缓冲区太短。 微型端口驱动程序必须设置 数据。METHOD_INFORMATION。NDIS_OID_REQUEST 结构中的 BytesNeeded 成员达到所需的最小缓冲区大小。 |
NDIS_STATUS_FAILURE |
由于其他原因,请求失败。 |
要求
版本 |
NDIS 6.30 及更高版本中受支持。 |
页眉 |
Ntddndis.h (包括 Ndis.h) |
另请参阅
NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS