Freigeben über


GET_VIRTUAL_FUNCTION_PROBED_BARS Rückruffunktion (wdm.h)

Die GetVirtualFunctionProbedBars-Routine gibt die Werte der PCI Express (PCIe) Base Address Registers (BARs) eines Geräts zurück, das die Single Root I/O Virtualization (SR-IOV)-Schnittstelle unterstützt.

GetVirtualFunctionProbedBars gibt die BAR-Werte zurück, die vom Gerät nach einer Abfrage gemeldet wurden, die vom PCI-Bustreiber ausgeführt wurde. Diese Abfrage bestimmt den Arbeitsspeicher oder den E/A-Adressraum, der vom Gerät benötigt wird.

Syntax

GET_VIRTUAL_FUNCTION_PROBED_BARS GetVirtualFunctionProbedBars;

NTSTATUS GetVirtualFunctionProbedBars(
  [in, out] PVOID Context,
  [out]     PULONG BaseRegisterValues
)
{...}

Parameter

[in, out] Context

Ein Zeiger auf schnittstellenspezifische Kontextinformationen. Der Aufrufer übergibt den Wert, der als Context-Member der PCI_VIRTUALIZATION_INTERFACE-Struktur für die Schnittstelle übergeben wird.

[out] BaseRegisterValues

Ein Zeiger auf ein Array von ULONG-Werten. Die GetVirtualFunctionProbedBars-Routine gibt einen Wert für jeden BAR-Wert des Geräts zurück.

GetVirtualFunctionProbedBars gibt ein Maximum von PCI_TYPE0_ADDRESSES Werten innerhalb dieses Arrays zurück.

Rückgabewert

Die GetVirtualFunctionProbedBars-Routine gibt einen der folgenden NTSTATUS-Werte zurück:

Rückgabecode Beschreibung
STATUS_SUCCESS Der Vorgang wurde erfolgreich abgeschlossen.
STATUS_INVALID_DEVICE_STATE Das Gerät unterstützt die SR-IOV-Schnittstelle nicht.

Hinweise

Der PCI-Bustreiber. , das im Verwaltungsbetriebssystem der übergeordneten Hyper-V-Partition ausgeführt wird, fragt die Speicher- oder E/A-Adressraumanforderungen der einzelnen BALKEN des Geräts ab. Der PCI-Bustreiber führt diese Abfrage aus, wenn er den Adapter auf dem Bus zum ersten Mal erkennt.

Mit dieser BAR-Abfrage bestimmt der PCI-Bustreiber Folgendes:

  • Gibt an, ob ein BAR vom Gerät unterstützt wird.

  • Wenn ein BAR unterstützt wird, gibt an, wie viel Arbeitsspeicher oder E/A-Adressraum für den BAR erforderlich ist.

Der PCI-Treiber führt diese BAR-Abfrage wie folgt aus:

  1. Der PCI-Bustreiber schreibt 0xFFFFFFFF in eine BAR.

  2. Der PCI-Bustreiber liest die LEISTE, um den Speicher oder Adressraum zu bestimmen, den das Gerät benötigt. Der Wert 0 (null) gibt an, dass das Gerät den BAR-Wert nicht unterstützt.

Die GetVirtualFunctionProbedBars-Routine wird von der GUID_PCI_VIRTUALIZATION_INTERFACE-Schnittstelle bereitgestellt.

Die folgenden Hinweise gelten für die GetVirtualFunctionProbedBars-Routine :

  • Die SR-IOV-Schnittstelle erfordert nicht, dass die BARs einer PCIe VF dem Protokoll zum Bestimmen der Größe des Speicherblocks oder des E/A-Adressraums eines BAR entsprechen. Daher bestimmt der virtuelle PCI-Treiber (VPCI), der im Gastbetriebssystem ausgeführt wird, die Größe anhand der entsprechenden Größe aus den BARs auf dem physischen Gerät. Der VPCI-Treiber ruft diese Informationen durch Aufrufen der GetVirtualFunctionProbedBars-Routine ab.

  • Der VPCI-Treiber erfordert die Größe des Arbeitsspeichers oder des E/A-Adressraums für jeden BAR, nachdem das physische Gerät gestartet wurde. Zu diesem Zeitpunkt kann der PCI-Treiber keine BAR-Abfrage auf dem Gerät ausführen, ohne den aktuellen Wert des BAR zu ändern. Wenn die GetVirtualFunctionProbedBars-Routine vom VPCI-Treiber aufgerufen wird, gibt der PCI-Treiber daher die BAR-Informationen zurück, die er während der BAR-Abfrage erhalten hat. Der PCI-Treiber hat diese Abfrage ausgeführt, als das Gerät zum ersten Mal im Bus erkannt wurde.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in Windows Server 2012 und höheren Versionen von Windows.
Zielplattform Desktop
Kopfzeile wdm.h (wdm.h einschließen)
IRQL PASSIVE_LEVEL

Weitere Informationen

PCI_VIRTUALIZATION_INTERFACE