NdisMQueryProbedBars 函数 (ndis.h)

微型端口驱动程序调用 NdisMQueryProbedBars 函数以获取网络适配器的 PCI Express (PCIe) 基址寄存器 (BA) 的值。 此函数返回网络适配器在 PCI 总线驱动程序执行的查询后报告的 BAR 值。 此查询确定网络适配器所需的内存或 I/O 地址空间。

注意NdisMQueryProbedBars 只能由微型端口驱动程序为网络适配器的 PCIe 物理函数 (PF) 调用。
 

语法

NDIS_STATUS NdisMQueryProbedBars(
  [in]  NDIS_HANDLE NdisMiniportHandle,
  [out] PULONG      BaseRegisterValues
);

参数

[in] NdisMiniportHandle

NDIS 传递给 MiniportInitializeExMiniportAdapterHandle 参数的网络适配器句柄。

[out] BaseRegisterValues

指向 ULONG 值数组的指针。 数组包含 PCIe 网络适配器的每个 BAR 的 ULONG 值。

注意NdisMQueryProbedBars 在此数组中返回最多PCI_TYPE0_ADDRESSES值。
 

返回值

NdisMQueryProbedBars 可以返回以下状态值之一。

返回代码 说明
NDIS_STATUS_SUCCESS
查询操作已成功完成。
NDIS_STATUS_FAILURE
查询操作失败。

注解

在 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 请求期间,驱动程序可以调用 NdisMQueryProbedBars ,以获取从 PCI 驱动程序执行的 BAR 查询返回的值。

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

有关 SR-IOV 接口的详细信息,请参阅 单根 I/O 虚拟化 (SR-IOV) 概述

与虚拟总线驱动程序交互

如果独立硬件供应商 (IHV) 提供虚拟总线驱动程序 (VBD) 作为其 SR-IOV 驱动程序包的一部分,则其微型端口驱动程序不得调用 NdisMQueryProbedBars。 相反,驱动程序必须通过专用信道与 VBD 进行交互,并请求 VBD 调用 GetVirtualFunctionProbedBars。 此函数从基础 PCI 总线驱动程序支持的 GUID_PCI_VIRTUALIZATION_INTERFACE 接口公开。

在 Hyper-V 父分区的管理操作系统中运行的 VBD 可以通过在 PCI 总线上向其物理设备对象发出IRP_MN_QUERY_INTERFACE请求来查询GUID_PCI_VIRTUALIZATION_INTERFACE接口, (PDO) 。 必须从 IRQL = PASSIVE_LEVEL 发出此请求。 在此请求中,驱动程序必须将 InterfaceType 参数设置为 GUID_PCI_VIRTUALIZATION_INTERFACE。

要求

要求
最低受支持的客户端 在 NDIS 6.30 及更高版本中受支持。
目标平台 通用
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL PASSIVE_LEVEL

另请参阅

GUID_PCI_VIRTUALIZATION_INTERFACE

GetVirtualFunctionProbedBars

OID_SRIOV_PROBED_BARS