GET_VIRTUAL_FUNCTION_PROBED_BARS fonction de rappel (wdm.h)
La routine GetVirtualFunctionProbedBars retourne les valeurs des registres d’adresses de base (BAR) PCI Express (PCIe) d’un appareil qui prend en charge l’interface de virtualisation d’E/S racine unique (SR-IOV).
GetVirtualFunctionProbedBars retourne les valeurs BAR qui ont été signalées par l’appareil 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 l’appareil.
Syntaxe
GET_VIRTUAL_FUNCTION_PROBED_BARS GetVirtualFunctionProbedBars;
NTSTATUS GetVirtualFunctionProbedBars(
[in, out] PVOID Context,
[out] PULONG BaseRegisterValues
)
{...}
Paramètres
[in, out] Context
Pointeur vers des informations de contexte spécifiques à l’interface. L’appelant transmet la valeur qui est passée en tant que membre de contexte de la structure PCI_VIRTUALIZATION_INTERFACE pour l’interface.
[out] BaseRegisterValues
Pointeur vers un tableau de valeurs ULONG. La routine GetVirtualFunctionProbedBars retourne une valeur pour chaque BARRE d’accès de l’appareil.
GetVirtualFunctionProbedBars retourne un maximum de valeurs PCI_TYPE0_ADDRESSES dans ce tableau.
Valeur retournée
La routine GetVirtualFunctionProbedBars retourne l’une des valeurs NTSTATUS suivantes :
Code de retour | Description |
---|---|
STATUS_SUCCESS | L’opération s’est terminée avec succès. |
STATUS_INVALID_DEVICE_STATE | L’appareil ne prend pas en charge l’interface SR-IOV. |
Remarques
Pilote de bus PCI. qui s’exécute dans le système d’exploitation de gestion de la partition parente Hyper-V, interroge les besoins en mémoire ou en espace d’adressage d’E/S de chaque barre d’accès de l’appareil. 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 BAR, le pilote de bus PCI détermine les éléments suivants :
Indique si une barre d’adresses est prise en charge par l’appareil.
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 BAR comme suit :
Le pilote de bus PCI écrit 0xFFFFFFFF dans une barre d’accès.
Le pilote de bus PCI lit la barre d’accès pour déterminer la mémoire ou l’espace d’adressage dont l’appareil a besoin. La valeur zéro indique que l’appareil ne prend pas en charge la barre d’accès.
La routine GetVirtualFunctionProbedBars est fournie par l’interface GUID_PCI_VIRTUALIZATION_INTERFACE .
Les notes suivantes s’appliquent à la routine GetVirtualFunctionProbedBars :
L’interface SR-IOV n’exige pas que les RBA d’une VF PCIe soient conformes au protocole permettant de déterminer la taille du bloc de mémoire ou de l’espace d’adressage d’E/S d’une barre d’adresses. Par conséquent, le pilote PCI virtuel (VPCI), qui s’exécute dans le système d’exploitation invité, détermine la taille à l’aide de la taille équivalente des fichiers BAR sur l’appareil physique. Le pilote VPCI obtient ces informations en appelant la routine GetVirtualFunctionProbedBars .
Le pilote VPCI nécessite la taille de la mémoire ou de l’espace d’adressage d’E/S pour chaque barre d’accès après le démarrage de l’appareil physique. À ce stade, le pilote PCI ne peut pas effectuer une requête BAR sur l’appareil sans modifier la valeur actuelle de la barre d’accès. Par conséquent, lorsque la routine GetVirtualFunctionProbedBars est appelée par le pilote VPCI, le pilote PCI retourne les informations BAR qu’il a obtenues lors de la requête BAR. Le pilote PCI a effectué cette requête lorsque l’appareil a été détecté pour la première fois sur le bus.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge dans Windows Server 2012 et versions ultérieures de Windows. |
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | wdm.h (inclure Wdm.h) |
IRQL | PASSIVE_LEVEL |