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:
Der PCI-Bustreiber schreibt 0xFFFFFFFF in eine BAR.
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 |