Freigeben über


NdisMGetVirtualFunctionLocation-Funktion (ndis.h)

Ein Miniporttreiber ruft die NdisMGetVirtualFunctionLocation-Funktion auf, um den Gerätestandort einer PCI Express (PCIe) Virtual Function (VF) auf einem PCI-Bus abzufragen. Der Treiber verwendet den Gerätespeicherort, um die PCIe-Anforderungs-ID (RID) für den VF zu erstellen.

HinweisNdisMGetVirtualFunctionLocation darf nur vom Miniporttreiber für die PCIe Physical Function (PF) des Netzwerkadapters aufgerufen werden.
 

Syntax

void NdisMGetVirtualFunctionLocation(
  [in]  NDIS_HANDLE            NdisMiniportHandle,
  [in]  NDIS_SRIOV_FUNCTION_ID VFId,
  [out] PUSHORT                SegmentNumber,
  [out] PUCHAR                 BusNumber,
  [out] PUCHAR                 FunctionNumber
);

Parameter

[in] NdisMiniportHandle

Das Netzwerkadapterhandle, das NDIS an den MiniportAdapterHandle-Parameter von MiniportInitializeEx übergeben hat.

[in] VFId

Der Bezeichner des VF, für den der Gerätestandort zurückgegeben wird.

[out] SegmentNumber

Ein Zeiger auf eine vom Aufrufer bereitgestellte Variable, in der diese Funktion einen USHORT-Wert für die aktuelle PCI-Segmentnummer zurückgibt. Dieser Wert gibt die Gruppe von PCI-Bussen an, an die das Gerät angefügt ist.

[out] BusNumber

Ein Zeiger auf eine vom Aufrufer bereitgestellte Variable, in der diese Funktion einen UCHAR-Wert zurückgibt. Dieser Wert gibt die aktuelle PCI-Busnummer an, an die das Gerät angeschlossen ist.

[out] FunctionNumber

Ein Zeiger auf eine vom Aufrufer bereitgestellte Variable, in der diese Funktion einen UCHAR-Wert zurückgibt. Dieser Wert gibt die Funktionsnummer eines logischen Geräts auf dem Gerät an.

Rückgabewert

Keine

Bemerkungen

Wenn er eine Methodenanforderung von OID_NIC_SWITCH_ALLOCATE_VF verarbeitet, muss der PF-Miniporttreiber die RID für den VF zurückgeben, den der Treiber erfolgreich auf dem Netzwerkadapter zugeordnet hat. Der Treiber generiert die RID auf folgende Weise:

  1. Der Treiber ruft zuerst die NdisMGetVirtualFunctionLocation-Funktion auf, um die busbezogenen Standortinformationen für die VF abzurufen.
  2. Der Treiber ruft dann das makro NDIS_MAKE_RID mit den busbezogenen Standortinformationen auf, um die RID zu generieren.

Weitere Informationen zum Zuweisen von VF-Ressourcen finden Sie unter Initialisierungssequenz für virtuelle Funktionen.

Weitere Informationen zur SR-IOV-Schnittstelle finden Sie unter Overview of Single Root E/O Virtualization (SR-IOV).

Interfacing to a Virtual Bus Driver

Wenn ein unabhängiger Hardwareanbieter (Independent Hardware Vendor, IHV) als Teil des SR-IOV-Treiberpakets einen virtuellen Bustreiber (VBD) bereitstellt, darf sein Miniporttreiber NdisMGetVirtualFunctionLocation nicht aufrufen. Stattdessen muss der Treiber über einen privaten Kommunikationskanal mit dem VBD kommunizieren und anfordern, dass der VBD GetLocation aufruft. Diese Funktion wird über die GUID_PCI_VIRTUALIZATION_INTERFACE-Schnittstelle verfügbar gemacht, die vom zugrunde liegenden PCI-Bustreiber unterstützt wird.

Die VBD, die im Verwaltungsbetriebssystem der übergeordneten Hyper-V-Partition ausgeführt wird, kann die GUID_PCI_VIRTUALIZATION_INTERFACE-Schnittstelle abfragen, indem sie eine IRP_MN_QUERY_INTERFACE Anforderung an ihr physisches Geräteobjekt (PDO) auf dem PCI-Bus ausgibt. Diese Anforderung muss von IRQL = PASSIVE_LEVEL erfolgen. In dieser Anforderung muss der Treiber den Parameter InterfaceType auf GUID_PCI_VIRTUALIZATION_INTERFACE festlegen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Keine unterstützt, wird in NDIS 6.30 und höher unterstützt.
Unterstützte Mindestversion (Server) Windows Server 2012
Zielplattform Universell
Header ndis.h (einschließlich Ndis.h)
Bibliothek Ndis.lib
IRQL PASSIVE_LEVEL

Weitere Informationen

GUID_PCI_VIRTUALIZATION_INTERFACE

Getlocation

NDIS_MAKE_RID

OID_NIC_SWITCH_ALLOCATE_VF