NdisMSetVirtualFunctionBusData 函数 (ndis.h)

微型端口驱动程序调用 NdisMSetVirtualFunctionBusData 函数将数据写入网络适配器上的虚拟函数 (VF) 的 PCI Express (PCIe) 配置空间。

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

语法

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

参数

[in] NdisMiniportHandle

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

[in] VFId

将数据写入其 PCI 配置空间的 VF 的标识符。

[in] Buffer

指向包含要写入 PCI 配置空间的数据的缓冲区的指针。

[in] Offset

写入数据的 PCI 配置空间中的偏移量(以字节为单位)。

[in] Length

要写入的数据的长度(以字节为单位)。

返回值

NdisMSetVirtualFunctionBusData 返回写入 PCI 配置空间的字节数。 如果写入作失败,NdisMSetVirtualFunctionBusData 返回零。

言论

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

有关单根 I/O 虚拟化(SR-IOV)接口中的反向通道通信的详细信息,请参阅 SR-IOV PF/VF 反向通道通信

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

虚拟总线驱动程序的交互

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

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

要求

要求 价值
最低支持的客户端 NDIS 6.30 及更高版本不支持。
支持的最低服务器 Windows Server 2012
目标平台 普遍
标头 ndis.h (包括 Ndis.h)
Ndis.lib
IRQL <= DISPATCH_LEVEL

另请参阅

GUID_PCI_VIRTUALIZATION_INTERFACE

NdisMEnableVirtualization

OID_NIC_SWITCH_ALLOCATE_VF

OID_SRIOV_WRITE_VF_CONFIG_SPACE

SetVirtualFunctionData