NdisMGetVirtualFunctionBusData 函数 (ndis.h)

微型端口驱动程序调用 NdisMGetVirtualFunctionBusData 函数从 PCI Express (PCIe 读取数据,) 网络适配器上指定虚拟函数 (VF) 的配置空间。

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

语法

ULONG NdisMGetVirtualFunctionBusData(
  [in]  NDIS_HANDLE            NdisMiniportHandle,
  [in]  NDIS_SRIOV_FUNCTION_ID VFId,
  [out] PVOID                  Buffer,
  [in]  ULONG                  Offset,
  [in]  ULONG                  Length
);

参数

[in] NdisMiniportHandle

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

[in] VFId

从中返回 PCI 配置空间中的数据的 VF 的标识符。

[out] Buffer

指向缓冲区的指针,该缓冲区接收从 VF 的 PCI 配置空间读取的数据。

[in] Offset

从中读取数据的 VF PCI 配置空间中的偏移量(以字节为单位)。

[in] Length

要读取的数据的长度(以字节为单位)。

注意Buffer 引用的缓冲区的大小必须至少与 Length 参数的值一样大。
 

返回值

NdisMGetVirtualFunctionBusData 返回从 PCI 配置空间读取的字节数。 如果读取操作失败, NdisMGetVirtualFunctionBusData 返回零。

注解

PF 微型端口驱动程序通常在处理 OID_SRIOV_READ_VF_CONFIG_SPACE 的 OID 方法请求时调用 NdisMGetVirtualFunctionBusData
但是,驱动程序可以通过调用 NdisMEnableVirtualization 在网络适配器上启用虚拟化后,随时调用此函数。

有关如何查询 VF 的 PCI 配置空间的详细信息,请参阅 查询虚拟函数的 PCI 配置空间

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

与虚拟总线驱动程序交互

如果独立硬件供应商 (IHV) 提供虚拟总线驱动程序 (VBD) 作为其 SR-IOV 驱动程序包的一部分,则其微型端口驱动程序不得调用 NdisMGetVirtualFunctionBusData。 相反,驱动程序必须通过专用信道与 VBD 进行交互,并请求 VBD 调用 GetVirtualFunctionData。 此函数从基础 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 及更高版本支持。
最低受支持的服务器 Windows Server 2012
目标平台 通用
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL

另请参阅

GUID_PCI_VIRTUALIZATION_INTERFACE

GetVirtualFunctionData

NdisMEnableVirtualization

OID_NIC_SWITCH_ALLOCATE_VF

OID_SRIOV_READ_VF_CONFIG_SPACE