OID_SRIOV_READ_VF_CONFIG_SPACE

Un pilote overlying émet une demande de méthode d’identificateur d’objet (OID) de OID_SRIOV_READ_VF_CONFIG_SPACE pour lire des données à partir de l’espace de configuration PCI Express (PCIe) pour une fonction virtuelle PCIe (VF) spécifiée sur la carte réseau.

Après un retour réussi de cette demande de méthode OID, le membre InformationBuffer de la structure NDIS_OID_REQUEST contient un pointeur vers une mémoire tampon allouée par l’appelant. Cette mémoire tampon est mise en forme pour contenir les éléments suivants :

  • Structure NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS qui contient les paramètres d’une opération de lecture de l’espace de configuration PCI d’une machine virtuelle.

  • Espace tampon supplémentaire pour les données à lire à partir de l’espace de configuration PCI.

Notes

Le pilote VF miniport s’exécute dans le système d’exploitation invité d’une partition enfant Hyper-V. Pour cette raison, le pilote miniport VF ne peut pas accéder directement aux ressources matérielles, telles que l’espace de configuration PCI de la VF. Seul le pilote miniport pour la fonction physique (PF) PCIe peut accéder à l’espace de configuration PCI pour une VF. Le pilote pf miniport s’exécute dans le système d’exploitation de gestion d’une partition parente Hyper-V et dispose d’un accès privilégié aux ressources VF.

Pour lire l’espace de configuration PCI VF, les pilotes qui s’exécutent trop dans le système d’exploitation de gestion émettent la demande de méthode OID de OID_SRIOV_READ_VF_CONFIG_SPACE au pilote pf miniport. Cette demande de méthode OID est requise pour les pilotes pf miniport qui prennent en charge l’interface de virtualisation d’E/S racine unique (SR-IOV).

Par exemple, la pile de virtualisation qui s’exécute dans le système d’exploitation de gestion émet la demande de méthode OID de OID_SRIOV_READ_VF_CONFIG_SPACE lorsque le pilote miniport VF appelle NdisMGetBusData pour lire à partir de son espace de configuration PCI VF.

Lorsqu’il gère la demande de méthode OID de OID_SRIOV_READ_VF_CONFIG_SPACE, le pilote pf miniport doit suivre les instructions suivantes :

  • Le pilote miniport doit vérifier que le VF, spécifié par le membre VFId de la structure NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS , dispose de ressources qui ont été précédemment allouées. Le pilote miniport alloue des ressources à une machine virtuelle via une requête de méthode OID de OID_NIC_SWITCH_ALLOCATE_VF. Si les ressources pour le VF spécifié n’ont pas été allouées, le pilote doit échouer la requête OID.

  • Le pilote miniport doit vérifier que la mémoire tampon (référencée par le membre InformationBuffer de la structure NDIS_OID_REQUEST ) est suffisamment grande pour renvoyer les données d’espace de configuration PCIe demandées. Si ce n’est pas le cas, le pilote doit échouer à la requête OID.

  • Le pilote miniport appelle généralement NdisMGetVirtualFunctionBusData pour interroger l’espace de configuration PCIe demandé. Toutefois, le pilote miniport peut également retourner des données d’espace de configuration PCIe pour la VF mise en cache par le pilote à partir des opérations de lecture ou d’écriture précédentes de l’espace de configuration PCIe.

    Note 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 NdisMGetVirtualFunctionBusData. Au lieu de cela, le pilote doit s’interfacer avec le VBD via un canal de communication privé et demander au VBD d’appeler ReadVfConfigBlock. Cette fonction est exposée à partir de l’interface GUID_VPCI_INTERFACE_STANDARD prise en charge par le pilote de bus PCI virtuel (VPCI) sous-jacent.

Si le pilote pf miniport peut terminer correctement la requête OID, il doit copier les données d’espace de configuration PCI demandées dans la mémoire tampon référencée par le membre InformationBuffer de la structure NDIS_OID_REQUEST . Le pilote copie les données dans la mémoire tampon au décalage spécifié par le membre BufferOffset de NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS structure.

Pour plus d’informations, consultez Interrogation des données de configuration PCI d’une fonction virtuelle.

Codes d’état de retour

Le pilote pf miniport retourne l’un des codes status suivants pour la demande de méthode OID de OID_SRIOV_READ_VF_CONFIG_SPACE.

Code d’état Description

NDIS_STATUS_SUCCESS

La requête OID s’est terminée avec succès.

NDIS_STATUS_NOT_SUPPORTED

Le pilote miniport ne prend pas en charge l’interface de virtualisation d’E/S racine unique (SR-IOV) ou n’est pas activé pour utiliser l’interface.

NDIS_STATUS_INVALID_PARAMETER

Un ou plusieurs des membres de la structure NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS ont des valeurs non valides.

NDIS_STATUS_INVALID_LENGTH

La mémoire tampon d’informations était trop courte. Le pilote miniport doit définir les données. METHOD_INFORMATION. Le membre BytesNeeded dans le NDIS_OID_REQUEST structure à la taille de mémoire tampon minimale requise.

NDIS_STATUS_FAILURE

La demande a échoué pour d’autres raisons.

Spécifications

Version

Pris en charge dans NDIS 6.30 et versions ultérieures.

En-tête

Ntddndis.h (inclure Ndis.h)

Voir aussi


GUID_VPCI_INTERFACE_STANDARD

NDIS_OID_REQUEST

NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS

NdisMGetBusData

NdisMGetVirtualFunctionBusData

OID_NIC_SWITCH_ALLOCATE_VF

ReadVfConfigBlock