NdisMGetVirtualFunctionLocation 函数 (ndis.h)
微型端口驱动程序调用 NdisMGetVirtualFunctionLocation 函数,以在 PCI 总线上查询 PCI Express (PCIe) 虚拟函数(VF)的设备位置。 驱动程序使用设备位置为 VF 构造 PCIe 请求程序 ID (RID)。
语法
void NdisMGetVirtualFunctionLocation(
[in] NDIS_HANDLE NdisMiniportHandle,
[in] NDIS_SRIOV_FUNCTION_ID VFId,
[out] PUSHORT SegmentNumber,
[out] PUCHAR BusNumber,
[out] PUCHAR FunctionNumber
);
参数
[in] NdisMiniportHandle
传递给 MiniportInitializeEx的 MiniportAdapterHandle 参数的网络适配器句柄。
[in] VFId
为其返回设备位置的 VF 的标识符。
[out] SegmentNumber
指向调用方提供的变量的指针,在此变量中,此函数返回当前 PCI 段编号的 USHORT 值。 此值指定附加设备的 PCI 总线组。
[out] BusNumber
指向调用方提供的变量的指针,在此变量中,此函数返回 UCHAR 值。 此值指定设备附加的当前 PCI 总线号。
[out] FunctionNumber
指向调用方提供的变量的指针,在此变量中,此函数返回 UCHAR 值。 此值指定设备上的逻辑设备的函数号。
返回值
没有
言论
当它处理 OID_NIC_SWITCH_ALLOCATE_VF的方法请求时,PF 微型端口驱动程序必须返回驱动程序已成功在网络适配器上分配的 VF 的 RID。 驱动程序通过以下方式生成 RID:
- 驱动程序首先调用 NdisMGetVirtualFunctionLocation 函数来获取 VF 与总线相关的位置信息。
- 然后,驱动程序使用与总线相关的位置信息调用 NDIS_MAKE_RID 宏以生成 RID。
有关如何分配 VF 资源的详细信息,请参阅 虚拟函数初始化序列。
有关 SR-IOV 接口的详细信息,请参阅 单根 I/O 虚拟化(SR-IOV)概述。
虚拟总线驱动程序的交互
如果独立硬件供应商(IHV)在其 SR-IOV 驱动程序包中提供虚拟总线驱动程序(VBD),则其微型端口驱动程序不得调用 NdisMGetVirtualFunctionLocation。 相反,驱动程序必须通过专用信道与 VBD 接口,并请求 VBD 调用 GetLocation。 此函数从基础 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 | PASSIVE_LEVEL |
另请参阅