NdisMReadConfigBlock 函数 (ndis.h)

PCI Express (PCIe) Virtual Function (VF 的微型端口驱动程序) 调用 NdisMReadConfigBlock 函数以从 VF 配置块读取数据。 VF 配置块的读取操作由网络适配器的 PCIe 物理功能 (PF) 的微型端口驱动程序处理。

注意NdisMReadConfigBlock 只能由 VF 微型端口驱动程序调用。
 

语法

NDIS_STATUS NdisMReadConfigBlock(
  [in]  NDIS_HANDLE NdisMiniportHandle,
  [in]  ULONG       BlockId,
  [out] PVOID       Buffer,
  [in]  ULONG       Length
);

参数

[in] NdisMiniportHandle

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

[in] BlockId

一个 ULONG 值,该值指定要读取的 VF 配置块的标识符。 此标识符是独立硬件供应商 (IHV) 专有的,仅供 PF 和 VF 微型端口驱动程序使用。

[out] Buffer

指向调用方分配的缓冲区的指针,该缓冲区将包含请求的配置数据。

[in] Length

要从 VF 配置块读取的字节数。

返回值

NdisMReadConfigBlock 可以返回以下状态值之一:

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

注解

VF 微型端口驱动程序调用 NdisMReadConfigBlock ,以启动 PF 微型端口驱动程序对 VF 配置数据的反向通道读取请求。 通知此请求后,PF 驱动程序将从指定的 VF 配置块返回数据。

VF 配置块用于 PF 和 VF 微型端口驱动程序之间的反向通道通信。 IHV 可以为设备定义一个或多个 VF 配置块。 每个 VF 配置块都有 IHV 定义的格式、长度和块 ID。

注意 每个 VF 配置块中的数据仅由 PF 和 VF 微型端口驱动程序使用。
 
有关单根 I/O 虚拟化 (SR-IOV) 接口中的反向通道通信的详细信息,请参阅 SR-IOV PF/VF 反向通道通信

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

与虚拟总线驱动程序交互

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

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

要求

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

另请参阅

GUID_VPCI_INTERFACE_STANDARD

ReadVfConfigBlock