Interrogation des registres d’adresses de base PCI d’une fonction virtuelle

Note Cette méthode ne peut être utilisée qu’en superposant les pilotes qui s’exécutent dans le système d’exploitation de gestion de la partition parente Hyper-V.

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.

Le pilote PCI effectue cette requête PCI BAR de la manière suivante :

  1. Le pilote PCI écrit tout d’abord dans une barre d’accès.

  2. Le pilote PCI lit ensuite la barre d’adresses pour déterminer la mémoire ou l’espace d’adressage requis par la barre d’adresses. La valeur zéro indique que la barre d’adresses n’est pas prise en charge par la carte réseau.

Le pilote de bus PCI virtuel (VPCI) s’exécute dans le système d’exploitation invité d’une partition enfant Hyper-V. Lorsqu’une fonction virtuelle PCI Express (PCIe) est attachée à la partition enfant, le pilote de bus VPCI expose une carte réseau virtuelle pour la VF (carte réseau VF). Avant cela, le pilote de bus VPCI doit effectuer une requête PCI BAR pour déterminer la mémoire ou l’espace d’adressage requis par la carte réseau VF.

É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.

Note Les requêtes OID de OID_SRIOV_BAR_RESOURCES ne peuvent être émises que par NDIS. La requête OID ne doit pas être émise par des pilotes qui se superposent, tels que des pilotes de protocole ou de filtre.

La requête de requête OID_SRIOV_PROBED_BARS contient une structure NDIS_SRIOV_PROBED_BARS_INFO . Lorsque le pilote PF miniport gère cet OID, le pilote doit retourner les valeurs PCI BAR dans le tableau référencé par le membre BaseRegisterValuesOffset de la structure NDIS_SRIOV_PROBED_BARS_INFO . Pour chaque décalage dans le tableau, le pilote pf miniport doit définir l’élément tableau sur la valeur ULONG de la barre d’accès au même décalage dans l’espace de configuration PCI de la carte réseau physique.

Chaque valeur BAR retournée par le pilote doit être la même valeur que celle qui suivrait une requête PCI BAR effectuée par le pilote PCI qui s’exécute dans le système d’exploitation de gestion. Le pilote pf miniport peut appeler NdisMQueryProbedBars pour déterminer ces informations.

Pour plus d’informations sur les registres d’adresses de base d’un appareil PCI, consultez spécification du bus local PCI.