Share via


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.

Bemerkungen

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.

Rückgabestatuscodes

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.

Requirements (Anforderungen)

Version

Unterstützt in NDIS 6.30 und höher.

Header

Ntddndis.h (include Ndis.h)

Weitere Informationen


NDIS_OID_REQUEST

NDIS_SRIOV_PROBED_BARS_INFO

NdisMQueryProbedBars