NdisMQueryProbedBars-Funktion (ndis.h)

Ein Miniporttreiber ruft die NdisMQueryProbedBars-Funktion auf, 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 Arbeitsspeicher oder E/A-Adressraum, der für den Netzwerkadapter erforderlich ist.

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

Syntax

NDIS_STATUS NdisMQueryProbedBars(
  [in]  NDIS_HANDLE NdisMiniportHandle,
  [out] PULONG      BaseRegisterValues
);

Parameter

[in] NdisMiniportHandle

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

[out] BaseRegisterValues

Ein Zeiger auf ein Array von ULONG-Werten. Das Array enthält einen ULONG-Wert für jeden BALKEN des PCIe-Netzwerkadapters.

HinweisNdisMQueryProbedBars gibt maximal PCI_TYPE0_ADDRESSES Werte innerhalb dieses Arrays zurück.
 

Rückgabewert

NdisMQueryProbedBars kann einen der folgenden status-Werte zurückgeben.

Rückgabecode Beschreibung
NDIS_STATUS_SUCCESS
Der Abfragevorgang wurde erfolgreich abgeschlossen.
NDIS_STATUS_FAILURE
Fehler beim Abfragevorgang.

Hinweise

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

Durch diese PCI BAR-Abfrage bestimmt der PCI-Bustreiber Folgendes:

  • Gibt an, ob eine PCI-LEISTE vom Netzwerkadapter 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 VIRTUELLE PCI-Bustreiber (VPCI) wird im Gastbetriebssystem einer untergeordneten Hyper-V-Partition ausgeführt. Wenn eine VIRTUELLE PCI Express-Funktion (PCIe) (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-Konfigurationsbereich 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, gibt NDIS eine OID-Abfrageanforderung (Object Identifier) von OID_SRIOV_PROBED_BARS an den PF-Miniporttreiber aus. Die von dieser OID-Abfrageanforderung zurückgegebenen Ergebnisse werden an den VPCI-Bustreiber weitergeleitet, um zu bestimmen, wie viel Arbeitsspeicheradressraum der VF-Netzwerkadapter benötigt.

Während der Behandlung dieser OID-Anforderung kann der Treiber NdisMQueryProbedBars aufrufen, um die Werte abzurufen, die von der vom PCI-Treiber ausgeführten BAR-Abfrage zurückgegeben werden.

Weitere Informationen zum Abfragen von PCI BAR-Registern für eine VF finden Sie unter Abfragen der PCI-Basisadressregister einer virtuellen Funktion.

Weitere Informationen zur SR-IOV-Schnittstelle finden Sie unter Übersicht über single root E/O Virtualization (SR-IOV).

Interfacing to a Virtual Bus Driver

Wenn ein unabhängiger Hardwareanbieter (IHV) einen virtuellen Bustreiber (VBD) als Teil seines SR-IOV-Treiberpakets bereitstellt, darf sein Miniporttreiber NdisMQueryProbedBars nicht aufrufen. Stattdessen muss der Treiber über einen privaten Kommunikationskanal mit dem VBD kommunizieren und anfordern, dass der VBD GetVirtualFunctionProbedBars 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 das objekt des physischen Geräts (PDO) auf dem PCI-Bus ausgibt. Diese Anforderung muss über 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) Unterstützt in NDIS 6.30 und höher.
Zielplattform Universell
Header ndis.h (include Ndis.h)
Bibliothek Ndis.lib
IRQL PASSIVE_LEVEL

Weitere Informationen

GUID_PCI_VIRTUALIZATION_INTERFACE

GetVirtualFunctionProbedBars

OID_SRIOV_PROBED_BARS