OID_SRIOV_READ_VF_CONFIG_BLOCK
覆盖驱动程序发出对象标识符 (OID) 方法请求,OID_SRIOV_READ_VF_CONFIG_BLOCK从指定的 PCI Express (PCIe) Virtual Function (VF) 配置块读取数据。
过度分配驱动程序向网络适配器的 PCIe 物理功能 (PF) 的微型端口驱动程序发出此 OID 方法请求。 支持单根 I/O 虚拟化 (SR-IOV) 接口的 PF 微型端口驱动程序需要此 OID 方法请求。
NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向调用方分配的缓冲区的指针。 此缓冲区的格式设置为包含以下内容:
一个NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS结构,包含从此结构的开头到包含从 VF 配置块读取的数据的缓冲区内位置的偏移量(以字节为单位)。
用于从指定的 VF 配置块读取数据的额外缓冲区空间。
注解
VF 配置块用于 PF 和 VF 微型端口驱动程序之间的反向通道通信。 IHV 可以为微型端口驱动程序定义一个或多个 VF 配置块。 每个 VF 配置块都有 IHV 定义的格式、长度和块 ID。
注意 每个 VF 配置块中的数据仅由 PF 和 VF 微型端口驱动程序使用。
在发出 OID_SRIOV_READ_VF_CONFIG_BLOCK 的 OID 方法请求之前,过度分配的驱动程序必须按以下方式设置 NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS 结构的成员:
将 VFId 成员设置为要从中读取信息的 VF 的标识符。
将 BlockId 成员设置为要从中读取信息的 VF 配置块的标识符。
将 Length 成员设置为要从配置块读取的字节数。
将 BufferOffset 成员设置为 由 InformationBuffer 成员引用的缓冲区 (偏移量) ,该成员将包含从指定的 VF 配置块读取的数据。 此偏移量以 NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS结构开头 的字节为单位指定。
处理 OID_SRIOV_READ_VF_CONFIG_BLOCK 的 OID 方法请求时,PF 微型端口驱动程序必须遵循以下准则:
PF 微型端口驱动程序必须验证由NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS结构的 VFId 成员指定的 VF 是否具有先前已分配的资源。 PF 微型端口驱动程序在OID_NIC_SWITCH_ALLOCATE_VF的 OID 方法请求期间为 VF 分配资源。 如果尚未分配指定 VF 的资源,驱动程序必须使 OID 请求失败。
PF 微型端口驱动程序必须验证 NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS 结构的 BlockId 成员是否指定了有效的 VF 配置块。 否则,驱动程序必须使 OID 请求失败。
有关单根 I/O 虚拟化 (SR-IOV) 接口内反向通道通信的详细信息,请参阅 SR-IOV PF/VF 反向通道通信。
返回状态代码
PF 微型端口驱动程序为 OID_SRIOV_READ_VF_CONFIG_BLOCK 的方法请求返回以下状态代码之一。
状态代码 | 说明 |
---|---|
NDIS_STATUS_SUCCESS |
OID 请求已成功完成。 |
NDIS_STATUS_NOT_SUPPORTED |
微型端口驱动程序不支持单根 I/O 虚拟化 (SR-IOV) 接口,或者未启用该接口。 |
NDIS_STATUS_INVALID_PARAMETER |
NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS 结构的一个或多个成员具有无效值。 |
NDIS_STATUS_INVALID_LENGTH |
信息缓冲区太短。 微型端口驱动程序必须设置 DATA。METHOD_INFORMATION。NDIS_OID_REQUEST结构中的 BytesNeeded 成员达到所需的最小缓冲区大小。 |
NDIS_STATUS_FAILURE |
请求因其他原因而失败。 |
要求
版本 |
在 NDIS 6.30 及更高版本中受支持。 |
标头 |
Ntddndis.h (包括 Ndis.h) |