Partager via


NdisMGetVirtualFunctionLocation, fonction (ndis.h)

Un pilote miniport appelle la fonction NdisMGetVirtualFunctionLocation pour interroger l’emplacement de l’appareil d’une fonction virtuelle PCI Express (PCIe) sur un bus PCI. Le pilote utilise l’emplacement de l’appareil pour construire l’ID de demandeur PCIe (RID) pour la machine virtuelle.

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

Syntaxe

void NdisMGetVirtualFunctionLocation(
  [in]  NDIS_HANDLE            NdisMiniportHandle,
  [in]  NDIS_SRIOV_FUNCTION_ID VFId,
  [out] PUSHORT                SegmentNumber,
  [out] PUCHAR                 BusNumber,
  [out] PUCHAR                 FunctionNumber
);

Paramètres

[in] NdisMiniportHandle

La carte réseau handle que NDIS a passée au paramètre MiniportAdapterHandle de MiniportInitializeEx.

[in] VFId

Identificateur de la machine virtuelle pour laquelle l’emplacement de l’appareil est retourné.

[out] SegmentNumber

Pointeur vers une variable fournie par l’appelant dans laquelle cette fonction retourne une valeur USHORT pour le numéro de segment PCI actuel. Cette valeur spécifie le groupe de bus PCI sur lesquels l’appareil est attaché.

[out] BusNumber

Pointeur vers une variable fournie par l’appelant dans laquelle cette fonction retourne une valeur UCHAR. Cette valeur spécifie le numéro de bus PCI actuel sur lequel l’appareil est attaché.

[out] FunctionNumber

Pointeur vers une variable fournie par l’appelant dans laquelle cette fonction retourne une valeur UCHAR. Cette valeur spécifie le numéro de fonction d’un appareil logique sur l’appareil.

Valeur de retour

Aucun

Remarques

Lorsqu’il gère une demande de méthode de OID_NIC_SWITCH_ALLOCATE_VF, le pilote PF miniport doit retourner le RID pour la machine virtuelle que le pilote a correctement allouée sur la carte réseau. Le pilote génère le RID de la manière suivante :

  1. Le pilote appelle d’abord la fonction NdisMGetVirtualFunctionLocation pour obtenir les informations d’emplacement liées au bus pour la fonction VF.
  2. Le pilote appelle ensuite la macro NDIS_MAKE_RID avec les informations d’emplacement liées au bus pour générer le RID.

Pour plus d’informations sur l’allocation de ressources VF, consultez séquence d’initialisation de 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 NdisMGetVirtualFunctionLocation. Au lieu de cela, le pilote doit interagir avec le VBD via un canal de communication privé et demander que l’appel VBD GetLocation. 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 Aucune prise en charge, prise en charge dans NDIS 6.30 et versions ultérieures.
serveur minimum pris en charge Windows Server 2012
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

GetLocation

NDIS_MAKE_RID

OID_NIC_SWITCH_ALLOCATE_VF