NDIS 发出OID_SRIOV_BAR_RESOURCES的对象标识符(OID)方法请求,以确定分配给 PCIe 虚拟函数(VF)PCI Express(PCIe)基址寄存器(BAR)的内存资源。
NDIS 向网络适配器的 PCIe 物理功能(PF)的微型端口驱动程序发出此 OID 方法请求。 支持单根 I/O 虚拟化(SR-IOV)接口的 PF 微型端口驱动程序需要此 OID 方法请求。
InformationBufferNDIS_OID_REQUEST 结构的成员包含指向缓冲区的指针。 此缓冲区包含以下结构:
NDIS_SRIOV_BAR_RESOURCES_INFO 结构,指定 PF 微型端口驱动程序返回资源信息的 VF 和 BAR。
遵循 NDIS_SRIOV_BAR_RESOURCES_INFO 结构的 CM_PARTIAL_RESOURCE_DESCRIPTOR 结构。 CM_PARTIAL_RESOURCE_DESCRIPTOR 结构包含有关分配给指定 BAR 的内存资源的信息。
言论
NDIS 发出 OID_SRIOV_BAR_RESOURCES的 OID 方法请求,以获取分配给 VF BAR 的系统物理地址和内存资源的长度。 在发出 OID 方法请求之前,NDIS 采用以下方式设置 NDIS_SRIOV_BAR_RESOURCES_INFO 结构的格式:
NDIS 将 NDIS_SRIOV_BAR_RESOURCES_INFO 结构的 VFId 成员设置为与 VF 关联的标识符。
NDIS 将 NDIS_SRIOV_BAR_RESOURCES_INFO 结构的 BarIndex 成员设置为指定 VF 的 BAR 索引。 BAR 索引是 PCI 配置空间中 BAR 表中寄存器的偏移量。
NDIS 将 BarResourcesOffsetNDIS_SRIOV_BAR_RESOURCES_INFO 结构的成员设置为从 NDIS_SRIOV_BAR_RESOURCES_INFO 结构的开头到 CM_PARTIAL_RESOURCE_DESCRIPTOR 结构的偏移量(以字节为单位)。
注意, 过度应用驱动程序(如协议或筛选器驱动程序)无法向 PF 微型端口驱动程序发出 OID 方法请求OID_SRIOV_BAR_RESOURCES。
当 PF 微型端口驱动程序收到 OID 方法请求时,驱动程序通过在 NDIS_OID_REQUEST 结构 InformationBuffer 成员中设置 CM_PARTIAL_RESOURCE_DESCRIPTOR 结构的格式来返回指定 BAR 的资源。 驱动程序使用与指定的 VF 的 BAR 关联的系统硬件资源设置 CM_PARTIAL_RESOURCE_DESCRIPTOR 结构的格式。
注释 驱动程序必须为 CmResourceTypeMemory的资源类型设置结构的格式。
返回状态代码
PF 微型端口驱动程序为OID_SRIOV_BAR_RESOURCES的方法请求返回以下状态代码之一。
状态代码 | 描述 |
---|---|
NDIS_STATUS_SUCCESS |
OID 请求已成功完成。 |
NDIS_STATUS_NOT_SUPPORTED |
PF 微型端口驱动程序要么不支持单个根 I/O 虚拟化(SR-IOV)接口,要么未启用该接口。 |
NDIS_STATUS_INVALID_PARAMETER |
NDIS_SRIOV_BAR_RESOURCES_INFO 结构的一个或多个成员具有无效值。 |
NDIS_STATUS_INVALID_LENGTH |
信息缓冲区小于 (sizeof(NDIS_SRIOV_BAR_RESOURCES_INFO) + sizeof(CM_PARTIAL_RESOURCE_DESCRIPTOR)。 PF 微型端口驱动程序必须设置 数据。METHOD_INFORMATION。NDIS_OID_REQUEST 结构中的 BytesNeeded 成员达到所需的最小缓冲区大小。 |
NDIS_STATUS_FAILURE |
由于其他原因,请求失败。 |
要求
版本 |
NDIS 6.30 及更高版本中受支持。 |
页眉 |
Ntddndis.h (包括 Ndis.h) |