Partager via


NdisMQueryProbedBars, fonction (ndis.h)

Un pilote miniport appelle la fonction NdisMQueryProbedBars pour obtenir les valeurs des registres d’adresses de base PCI Express (PCIe) d’une carte réseau. Cette fonction retourne les valeurs BAR signalées par la carte réseau après une requête effectuée par le pilote de bus PCI. Cette requête détermine l’espace d’adressage de mémoire ou d’E/S requis par la carte réseau.

RemarqueNdisMQueryProbedBars ne doit être appelé que par le pilote miniport pour la fonction physique PCIe de la carte réseau (PF).
 

Syntaxe

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

Paramètres

[in] NdisMiniportHandle

La carte réseau handle que NDIS a passée 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.

RemarqueNdisMQueryProbedBars retourne un maximum de valeurs PCI_TYPE0_ADDRESSES dans ce tableau.
 

Valeur de retour

NdisMQueryProbedBars pouvez retourner l’une des valeurs d’état suivantes.

Retourner le code Description
NDIS_STATUS_SUCCESS
L’opération de requête s’est terminée avec succès.
NDIS_STATUS_FAILURE
Échec de l’opération de requête.

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 les exigences d’espace d’adressage de mémoire ou d’E/S de chaque registre d’adresses de base PCI (BAR) de la carte réseau. Le pilote de bus PCI effectue cette requête lorsqu’il détecte d’abord l’adaptateur sur le bus.

Grâce à 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 est prise en charge, la quantité d’espace d’adressage d’E/S ou de mémoire requise pour la BARRE.
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 machine virtuelle (carte réseau VF). Avant cela, le pilote de bus VPCI doit effectuer une requête PCI BAR pour déterminer l’espace de mémoire ou 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 RBA PCI, NDIS émet une requête de requête d’identificateur d’objet (OID) de OID_SRIOV_PROBED_BARS au pilote miniport PF. Les résultats retournés par cette demande de requête OID sont transférés au pilote de bus VPCI afin qu’il puisse déterminer la quantité d’espace d’adressage de mémoire nécessaire par la carte réseau VF.

Pendant la gestion de cette requête OID, le pilote peut appeler NdisMQueryProbedBars pour obtenir les valeurs retournées par la requête BAR effectuée par le pilote PCI.

Pour plus d’informations sur la façon d’interroger des registres PCI BAR pour une machine virtuelle, 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).

Interfacing à 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 interagir avec le VBD via un canal de communication privé et demander que l’appel VBD 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 d’appareil physique (PDO) sur le bus PCI. Cette demande doit être effectuée à partir d’IRQL = PASSIVE_LEVEL. Dans cette requête, le pilote doit définir le paramètre InterfaceType sur GUID_PCI_VIRTUALIZATION_INTERFACE.

Exigences

Exigence Valeur
client minimum pris en charge Prise en charge dans NDIS 6.30 et versions ultérieures.
plateforme cible Universel
d’en-tête ndis.h (include Ndis.h)
bibliothèque Ndis.lib
IRQL PASSIVE_LEVEL

Voir aussi

GUID_PCI_VIRTUALIZATION_INTERFACE

GetVirtualFunctionProbedBars

OID_SRIOV_PROBED_BARS