NdisMQueryProbedBars 函数 (ndis.h)
微型端口驱动程序调用 NdisMQueryProbedBars 函数以获取网络适配器的 PCI Express (PCIe) 基址寄存器 (BA) 的值。 此函数返回网络适配器在 PCI 总线驱动程序执行的查询后报告的 BAR 值。 此查询确定网络适配器所需的内存或 I/O 地址空间。
语法
NDIS_STATUS NdisMQueryProbedBars(
[in] NDIS_HANDLE NdisMiniportHandle,
[out] PULONG BaseRegisterValues
);
参数
[in] NdisMiniportHandle
NDIS 传递给 MiniportInitializeEx 的 MiniportAdapterHandle 参数的网络适配器句柄。
[out] BaseRegisterValues
指向 ULONG 值数组的指针。 数组包含 PCIe 网络适配器的每个 BAR 的 ULONG 值。
返回值
NdisMQueryProbedBars 可以返回以下状态值之一。
返回代码 | 说明 |
---|---|
|
查询操作已成功完成。 |
|
查询操作失败。 |
注解
在 Hyper-V 父分区的管理操作系统中运行的 PCI 总线驱动程序查询网络适配器的每个 PCI 基址寄存器 (BAR) 的内存或 I/O 地址空间要求。 PCI 总线驱动程序在首次在总线上检测到适配器时执行此查询。
通过此 PCI BAR 查询,PCI 总线驱动程序确定以下内容:
- 网络适配器是否支持 PCI BAR。
- 如果支持 BAR,则 BAR 需要多少内存或 I/O 地址空间。
由于对 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 |
另请参阅