NdisMGetVirtualFunctionBusData function (ndis.h)
A miniport driver calls the NdisMGetVirtualFunctionBusData function to read data from the PCI Express (PCIe) configuration space of a specified Virtual Function (VF) on the network adapter.
Syntax
ULONG NdisMGetVirtualFunctionBusData(
[in] NDIS_HANDLE NdisMiniportHandle,
[in] NDIS_SRIOV_FUNCTION_ID VFId,
[out] PVOID Buffer,
[in] ULONG Offset,
[in] ULONG Length
);
Parameters
[in] NdisMiniportHandle
The network adapter handle that NDIS passed to the MiniportAdapterHandle parameter of MiniportInitializeEx.
[in] VFId
The identifier of the VF from which the data from the PCI configuration space is returned.
[out] Buffer
A pointer to a buffer that receives the data that is read from the VF's PCI configuration space.
[in] Offset
The offset, in units of bytes, in the VF's PCI configuration space from which data is read.
[in] Length
The length, in units of bytes, of the data to be read.
Return value
NdisMGetVirtualFunctionBusData returns the number of bytes that are read from the PCI configuration space. If the read operation fails, NdisMGetVirtualFunctionBusData returns zero.
Remarks
The PF miniport driver typically calls NdisMGetVirtualFunctionBusData when it handles an OID method request of OID_SRIOV_READ_VF_CONFIG_SPACE.
However, the driver can call this function any time after virtualization has been enabled on the network adapter through a call to NdisMEnableVirtualization.
For more information on how to query the VF's PCI configuration space, see Querying the PCI Configuration Space for a Virtual Function.
For more information about the SR-IOV interface, see Overview of Single Root I/O Virtualization (SR-IOV).
Interfacing to a Virtual Bus Driver
If an independent hardware vendor (IHV) provides a virtual bus driver (VBD) as part of its SR-IOV driver package, its miniport driver must not call NdisMGetVirtualFunctionBusData. Instead, the driver must interface with the VBD through a private communication channel, and request that the VBD call GetVirtualFunctionData. This function is exposed from the GUID_PCI_VIRTUALIZATION_INTERFACE interface that is supported by the underlying PCI bus driver.The VBD that runs in the Hyper-V parent partition's management operating system can query the GUID_PCI_VIRTUALIZATION_INTERFACE interface by issuing an IRP_MN_QUERY_INTERFACE request to its physical device object (PDO) on the PCI bus. This request must be made from IRQL = PASSIVE_LEVEL. In this request, the driver must set the InterfaceType parameter to GUID_PCI_VIRTUALIZATION_INTERFACE.
Requirements
Requirement | Value |
---|---|
Minimum supported client | None supported,Supported in NDIS 6.30 and later. |
Minimum supported server | Windows Server 2012 |
Target Platform | Universal |
Header | ndis.h (include Ndis.h) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
See also