OID_SRIOV_PROBED_BARS
NDIS gibt eine Objektbezeichnerabfrageanforderung (Object Identifier, OID) von OID_SRIOV_PROBED_BARS aus, um die Werte der PCI Express (PCIe) Base Address Registers (BARs) eines Netzwerkadapters abzurufen. Diese Funktion gibt die BAR-Werte zurück, die vom Netzwerkadapter nach einer Abfrage des PCI-Bustreibers gemeldet wurden. Diese Abfrage bestimmt den Speicher- oder E/A-Adressraum, der vom Netzwerkadapter benötigt wird.
NDIS gibt OID-Abfrageanforderungen von OID_SRIOV_PROBED_BARS an den Miniporttreiber für die PCIe Physical Function (PF) des Netzwerkadapters aus. Diese OID-Abfrageanforderung ist für PF-Miniporttreiber erforderlich, die die SR-IOV-Schnittstelle (Single Root E/O Virtualization) unterstützen.
Das InformationBuffer-Element der NDIS_OID_REQUEST-Struktur enthält einen Zeiger auf einen Puffer. Dieser Puffer ist so formatiert, dass er Folgendes enthält:
Eine NDIS_SRIOV_PROBED_BARS_INFO-Struktur , die die Parameter für einen Lesevorgang auf den PCI-BARs eines Netzwerkadapters enthält.
Ein Array von ULONG-Werten für jeden BAR des PCIe-Netzwerkadapters. Die maximale Anzahl von Elementen innerhalb dieses Arrays ist PCI_TYPE0_ADDRESSES.
Der PCI-Bustreiber, der im Verwaltungsbetriebssystem der übergeordneten Hyper-V-Partition ausgeführt wird, fragt die Speicher- oder E/A-Adressraumanforderungen jedes PCI-Basisadressregisters (BAR) des Netzwerkadapters ab. Der PCI-Bustreiber führt diese Abfrage aus, wenn er den Adapter auf dem Bus zum ersten Mal erkennt.
Mit dieser PCI BAR-Abfrage bestimmt der PCI-Bustreiber Folgendes:
Gibt an, ob eine PCI-BAR vom Netzwerkadapter unterstützt wird.
Wenn eine BAR unterstützt wird, wie viel Arbeitsspeicher oder E/A-Adressraum für die BAR benötigt wird.
Der virtuelle PCI-Bustreiber (VPCI) wird im Gastbetriebssystem einer untergeordneten Hyper-V-Partition ausgeführt. Wenn eine PCI Express (PCIe) Virtual Function (VF) an die untergeordnete Partition angefügt ist, macht der VPCI-Bustreiber einen virtuellen Netzwerkadapter für den VF (VF-Netzwerkadapter) verfügbar. Zuvor muss der VPCI-Bustreiber eine PCI BAR-Abfrage ausführen, um den erforderlichen Arbeitsspeicher oder Adressraum zu ermitteln, der für den VF-Netzwerkadapter erforderlich ist.
Da der Zugriff auf den PCI-Konfigurationsraum ein privilegierter Vorgang ist, kann er nur von Komponenten ausgeführt werden, die im Verwaltungsbetriebssystem einer übergeordneten Hyper-V-Partition ausgeführt werden. Wenn der VPCI-Bustreiber die PCI-BARs abfragt, stellt NDIS eine OID-Abfrageanforderung von OID_SRIOV_PROBED_BARS an den PF-Miniporttreiber aus. Die von dieser OID-Abfrageanforderung zurückgegebenen Ergebnisse werden an den VPCI-Bustreiber weitergeleitet, damit er bestimmen kann, wie viel Arbeitsspeicheradressraum vom VF-Netzwerkadapter benötigt wird.
Hinweis OID-Anforderungen von OID_SRIOV_PROBED_BARS können nur von NDIS ausgestellt werden. Die OID-Anforderung darf nicht durch überlastende Treiber ausgegeben werden, z. B. das Protokoll von Filtertreibern.
Die OID_SRIOV_PROBED_BARS Abfrageanforderung enthält eine NDIS_SRIOV_PROBED_BARS_INFO-Struktur . Wenn der PF-Miniporttreiber diese OID verarbeitet, muss der Treiber die PCI BAR-Werte innerhalb des Arrays zurückgeben, auf das vom BaseRegisterValuesOffset-Member der NDIS_SRIOV_PROBED_BARS_INFO-Struktur verwiesen wird. Für jeden Offset innerhalb des Arrays muss der PF-Miniporttreiber das Arrayelement auf den ULONG-Wert des BAR-Werts im gleichen Offset innerhalb des PCI-Konfigurationsraums des physischen Adapters festlegen.
Jeder vom Treiber zurückgegebene BAR-Wert muss derselbe Wert sein, der einer PCI BAR-Abfrage folgen würde, die vom PCI-Treiber ausgeführt wird, der im Verwaltungsbetriebssystem ausgeführt wird. Der PF-Miniporttreiber kann NdisMQueryProbedBars aufrufen, um diese Informationen zu ermitteln.
Weitere Informationen zu den BARs eines PCI-Geräts finden Sie in der PCI Local Bus-Spezifikation.
Weitere Informationen zum Abfragen von PCI BAR-Registern für eine VF finden Sie unter Abfragen der PCI-Basisadressregister einer virtuellen Funktion.
Der PF-Miniporttreiber gibt einen der folgenden status Codes für die Abfrageanforderung von OID_SRIOV_PROBED_BARS zurück:
Statuscode | BESCHREIBUNG |
---|---|
NDIS_STATUS_SUCCESS |
Die OID-Anforderung wurde erfolgreich abgeschlossen. |
NDIS_STATUS_NOT_SUPPORTED |
Der PF-Miniporttreiber unterstützt entweder nicht die SR-IOV-Schnittstelle (Single Root E/O Virtualization) oder ist für die Verwendung der Schnittstelle nicht aktiviert. |
NDIS_STATUS_INVALID_PARAMETER |
Mindestens ein Member der NDIS_SRIOV_PROBED_BARS_INFO-Struktur weisen ungültige Werte auf. |
NDIS_STATUS_INVALID_LENGTH |
Der Informationspuffer ist kleiner als (sizeof(NDIS_SRIOV_PROBED_BARS_INFO) + PCI_TYPE0_ADDRESSES). Der PF-Miniporttreiber muss die DATA festlegen. QUERY_INFORMATION. BytesNeed-Member in der NDIS_OID_REQUEST-Struktur auf die erforderliche Mindestpuffergröße. |
NDIS_STATUS_FAILURE |
Die Anforderung ist aus anderen Gründen fehlgeschlagen. |
Version |
Unterstützt in NDIS 6.30 und höher. |
Header |
Ntddndis.h (include Ndis.h) |