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.
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.
Rückgabewert
NdisMQueryProbedBars kann einen der folgenden status-Werte zurückgeben.
Rückgabecode | Beschreibung |
---|---|
|
Der Abfragevorgang wurde erfolgreich abgeschlossen. |
|
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.
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