Freigeben über


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 Speicher- oder E/A-Adressraum, der vom Netzwerkadapter benötigt wird.

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

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 jede LEISTE des PCIe-Netzwerkadapters.

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

Rückgabewert

NdisMQueryProbedBars können einen der folgenden Statuswerte zurückgeben.

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

Bemerkungen

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

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

  • Gibt an, ob eine PCI-LEISTE vom Netzwerkadapter unterstützt wird.
  • Wenn eine LEISTE unterstützt wird, wie viel Arbeitsspeicher oder E/A-Adressraum für die LEISTE erforderlich ist.
Der virtuelle PCI-Bustreiber (CHILDI) wird im Gastbetriebssystem einer Hyper-V untergeordneten Partition ausgeführt. Wenn eine VIRTUELLE PCI Express (PCIe) Virtual Function (VF) an die untergeordnete Partition angeschlossen ist, macht der BUStreiber DES SERVERSI einen virtuellen Netzwerkadapter für den VF (VF-Netzwerkadapter) verfügbar. Bevor dies geschieht, muss der ASSEMBLYI-Bustreiber eine PCI BAR-Abfrage ausführen, um den erforderlichen Arbeitsspeicher oder Adressraum zu ermitteln, der vom VF-Netzwerkadapter benötigt wird.

Da der Zugriff auf den PCI-Konfigurationsraum ein privilegierter Vorgang ist, kann er nur von Komponenten ausgeführt werden, die im Verwaltungsbetriebssystem einer Hyper-V übergeordneten Partition ausgeführt werden. Wenn der BUStreiber DER PCI BARs abfragt, gibt NDIS eine OID-Abfrageanforderung (Object Identifier) von OID_SRIOV_PROBED_BARS an den PF Miniport-Treiber aus. Die ergebnisse, die von dieser OID-Abfrageanforderung zurückgegeben werden, werden an den BUStreiber ZUR VERFÜGUNG gestellt, damit sie bestimmen kann, wie viel Speicherplatz vom VF-Netzwerkadapter benötigt wird.

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

Weitere Informationen zum Abfragen von PCI BAR-Registern für einen VF finden Sie unter Abfragen der PCI-Basisadressregister einer virtual Function.

Weitere Informationen zur SR-IOV-Schnittstelle finden Sie unter Übersicht über die Single Root I/O Virtualization (SR-IOV).

Interoperabilität mit einem virtuellen Bustreiber

Wenn ein unabhängiger Hardwareanbieter (IHV) einen virtuellen Bustreiber (VBD) als Teil seines SR-IOV Treiberpaketsbereitstellt, darf sein Miniporttreiber nicht NdisMQueryProbedBarsaufrufen. Stattdessen muss der Treiber über einen privaten Kommunikationskanal mit der VBD kommunizieren und anfordern, dass der VBD-Aufruf GetVirtualFunctionProbedBars. Diese Funktion wird von der GUID_PCI_VIRTUALIZATION_INTERFACE Schnittstelle verfügbar gemacht, die vom zugrunde liegenden PCI-Bustreiber unterstützt wird.

Die VBD, die im Verwaltungsbetriebssystem der Hyper-V übergeordneten Partition ausgeführt wird, kann die GUID_PCI_VIRTUALIZATION_INTERFACE Schnittstelle abfragen, indem sie eine IRP_MN_QUERY_INTERFACE Anforderung an das physische Geräteobjekt (PDO) auf dem PCI-Bus ausgibt. Diese Anforderung muss von IRQL = PASSIVE_LEVEL erfolgen. In dieser Anforderung muss der Treiber den parameter InterfaceType auf GUID_PCI_VIRTUALIZATION_INTERFACE festlegen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Unterstützt in NDIS 6.30 und höher.
Zielplattform- Universal
Header- ndis.h (include Ndis.h)
Library Ndis.lib
IRQL- PASSIVE_LEVEL

Siehe auch

GUID_PCI_VIRTUALIZATION_INTERFACE

GetVirtualFunctionProbedBars

OID_SRIOV_PROBED_BARS