Fonction NdisMQueryProbedBars (ndis.h)
Un pilote miniport appelle la fonction NdisMQueryProbedBars pour obtenir les valeurs des registres d’adresses de base (BAR) PCI Express (PCIe) d’une carte réseau. Cette fonction retourne les valeurs BAR qui ont été signalées par la carte réseau à la suite d’une requête effectuée par le pilote de bus PCI. Cette requête détermine l’espace d’adressage mémoire ou E/S requis par la carte réseau.
Syntaxe
NDIS_STATUS NdisMQueryProbedBars(
[in] NDIS_HANDLE NdisMiniportHandle,
[out] PULONG BaseRegisterValues
);
Paramètres
[in] NdisMiniportHandle
La carte réseau gère que NDIS a passé au paramètre MiniportAdapterHandle de MiniportInitializeEx.
[out] BaseRegisterValues
Pointeur vers un tableau de valeurs ULONG. Le tableau contient une valeur ULONG pour chaque BARRE de la carte réseau PCIe.
Valeur retournée
NdisMQueryProbedBars peut retourner l’une des valeurs status suivantes.
Code de retour | Description |
---|---|
|
L’opération de requête s’est terminée avec succès. |
|
L’opération de requête a échoué. |
Remarques
Le pilote de bus PCI, qui s’exécute dans le système d’exploitation de gestion de la partition parente Hyper-V, interroge la mémoire ou l’espace d’adressage d’E/S de chaque registre d’adresses de base (BAR) PCI de la carte réseau. Le pilote de bus PCI effectue cette requête lorsqu’il détecte pour la première fois l’adaptateur sur le bus.
Par le biais de cette requête PCI BAR, le pilote de bus PCI détermine les éléments suivants :
- Indique si une BARRE PCI est prise en charge par la carte réseau.
- Si une barre d’accès est prise en charge, la quantité de mémoire ou d’espace d’adressage des E/S est requise pour la barre d’adresses.
Étant donné que l’accès à l’espace de configuration PCI est une opération privilégiée, il ne peut être effectué que par les composants qui s’exécutent dans le système d’exploitation de gestion d’une partition parente Hyper-V. Lorsque le pilote de bus VPCI interroge les bars PCI, NDIS émet une requête de requête d’identificateur d’objet (OID) de OID_SRIOV_PROBED_BARS au pilote PF miniport. Les résultats retournés par cette requête OID sont transférés au pilote de bus VPCI afin qu’il puisse déterminer la quantité d’espace d’adressage mémoire nécessaire à la carte réseau VF.
Pendant la gestion de cette requête OID, le pilote peut appeler NdisMQueryProbedBars pour obtenir les valeurs retournées à partir de la requête BAR effectuée par le pilote PCI.
Pour plus d’informations sur l’interrogation des registres PCI BAR pour une VF, consultez Interrogation des registres d’adresses de base PCI d’une fonction virtuelle.
Pour plus d’informations sur l’interface SR-IOV, consultez Vue d’ensemble de la virtualisation d’E/S racine unique (SR-IOV).
Interfaçage vers un pilote de bus virtuel
Si un fournisseur de matériel indépendant (IHV) fournit un pilote de bus virtuel (VBD) dans le cadre de son package de pilotes SR-IOV, son pilote miniport ne doit pas appeler NdisMQueryProbedBars. Au lieu de cela, le pilote doit s’interfacer avec le VBD via un canal de communication privé et demander au VBD d’appeler GetVirtualFunctionProbedBars. Cette fonction est exposée à partir de l’interface GUID_PCI_VIRTUALIZATION_INTERFACE prise en charge par le pilote de bus PCI sous-jacent.Le VBD qui s’exécute dans le système d’exploitation de gestion de la partition parente Hyper-V peut interroger l’interface GUID_PCI_VIRTUALIZATION_INTERFACE en émettant une requête IRP_MN_QUERY_INTERFACE à son objet de périphérique physique (PDO) sur le bus PCI. Cette demande doit être effectuée à partir de IRQL = PASSIVE_LEVEL. Dans cette requête, le pilote doit définir le paramètre InterfaceType sur GUID_PCI_VIRTUALIZATION_INTERFACE.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge dans NDIS 6.30 et versions ultérieures. |
Plateforme cible | Universal |
En-tête | ndis.h (inclure Ndis.h) |
Bibliothèque | Ndis.lib |
IRQL | PASSIVE_LEVEL |
Voir aussi