OID_SRIOV_PROBED_BARS

NDIS (OID) 查询请求OID_SRIOV_PROBED_BARS发出对象标识符,以获取网络适配器的 PCI Express (PCIe) 基址寄存器 (BA) 的值。 此函数返回网络适配器在 PCI 总线驱动程序执行的查询后报告的 BAR 值。 此查询确定网络适配器所需的内存或 I/O 地址空间。

NDIS 向网络适配器的 PCIe 物理功能 (PF) 的微型端口驱动程序发出OID_SRIOV_PROBED_BARS的 OID 查询请求。 对于支持单根 I/O 虚拟化 (SR-IOV) 接口的 PF 微型端口驱动程序,需要此 OID 查询请求。

NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向缓冲区的指针。 此缓冲区的格式设置为包含以下内容:

  • 一个NDIS_SRIOV_PROBED_BARS_INFO结构,包含用于对网络适配器的 PCI BA 执行读取操作的参数。

  • PCIe 网络适配器的每个 BAR 的 ULONG 值的数组。 此数组中的最大元素数为PCI_TYPE0_ADDRESSES。

注解

在 Hyper-V 父分区的管理操作系统中运行的 PCI 总线驱动程序查询网络适配器的每个 PCI 基址寄存器 (BAR) 的内存或 I/O 地址空间要求。 PCI 总线驱动程序在首次在总线上检测到适配器时执行此查询。

通过此 PCI BAR 查询,PCI 总线驱动程序确定以下内容:

  • 网络适配器是否支持 PCI BAR。

  • 如果支持 BAR,则 BAR 需要多少内存或 I/O 地址空间。

虚拟 PCI (VPCI) 总线驱动程序在 Hyper-V 子分区的来宾操作系统中运行。 将 PCI Express (PCIe) Virtual Function (VF) 附加到子分区时,VPCI 总线驱动程序将为 VF (VF 网络适配器) 公开虚拟网络适配器 。 在执行此操作之前,VPCI 总线驱动程序必须执行 PCI BAR 查询,以确定 VF 网络适配器所需的内存或地址空间。

由于对 PCI 配置空间的访问是一种特权操作,因此只能由 Hyper-V 父分区的管理操作系统中运行的组件执行。 当 VPCI 总线驱动程序查询 PCI BA 时,NDIS 向 PF 微型端口驱动程序发出OID_SRIOV_PROBED_BARS的 OID 查询请求。 此 OID 查询请求返回的结果将转发到 VPCI 总线驱动程序,以便它可以确定 VF 网络适配器需要多少内存地址空间。

注意 OID_SRIOV_PROBED_BARS的 OID 请求只能由 NDIS 发出。 OID 请求不得由过度分配驱动程序(例如筛选器驱动程序的协议)发出。

OID_SRIOV_PROBED_BARS查询请求包含 NDIS_SRIOV_PROBED_BARS_INFO 结构。 当 PF 微型端口驱动程序处理此 OID 时,驱动程序必须返回由 NDIS_SRIOV_PROBED_BARS_INFO 结构的 BaseRegisterValuesOffset 成员引用的数组中的 PCI BAR 值。 对于数组中的每个偏移量,PF 微型端口驱动程序必须将 array 元素设置为 BAR 的 ULONG 值,该偏移量与物理适配器的 PCI 配置空间中的偏移量相同。

驱动程序返回的每个 BAR 值必须与在管理操作系统中运行的 PCI 驱动程序执行的 PCI BAR 查询后面的值相同。 PF 微型端口驱动程序可以调用 NdisMQueryProbedBars 来确定此信息。

有关 PCI 设备的 BA 的详细信息,请参阅 PCI 本地总线规范

有关如何查询 VF 的 PCI BAR 寄存器的详细信息,请参阅 查询虚拟函数的 PCI 基址寄存器

返回状态代码

PF 微型端口驱动程序为OID_SRIOV_PROBED_BARS的查询请求返回以下状态代码之一:

状态代码 说明

NDIS_STATUS_SUCCESS

OID 请求已成功完成。

NDIS_STATUS_NOT_SUPPORTED

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

NDIS_STATUS_INVALID_PARAMETER

NDIS_SRIOV_PROBED_BARS_INFO 结构的一个或多个成员具有无效值。

NDIS_STATUS_INVALID_LENGTH

信息缓冲区小于 (NDIS_SRIOV_PROBED_BARS_INFO) + PCI_TYPE0_ADDRESSES) (大小。 PF 微型端口驱动程序必须设置 DATA。QUERY_INFORMATION。NDIS_OID_REQUEST结构中的 BytesNeeded 成员达到所需的最小缓冲区大小。

NDIS_STATUS_FAILURE

请求因其他原因而失败。

要求

版本

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

标头

Ntddndis.h (包括 Ndis.h)

另请参阅


NDIS_OID_REQUEST

NDIS_SRIOV_PROBED_BARS_INFO

NdisMQueryProbedBars