Partager via


SRIOV_GET_VENDOR_AND_DEVICE_IDS fonction de rappel (pcivirt.h)

Fournit l’ID de fournisseur et d’appareil d’une fonction virtuelle PCI Express SR-IOV (VF) à utiliser pour générer un ID Plug-and-Play plus générique pour la VF. Ces ID ne peuvent pas être lus directement à partir de l’espace de configuration de la VF.

Syntaxe

SRIOV_GET_VENDOR_AND_DEVICE_IDS SriovGetVendorAndDeviceIds;

void SriovGetVendorAndDeviceIds(
  [in]  PVOID Context,
  [in]  USHORT VfIndex,
  [out] PUSHORT VendorId,
  [out] PUSHORT DeviceId
)
{...}

Paramètres

[in] Context

Pointeur vers un contexte défini par le pilote.

[in] VfIndex

Index de base zéro de la VF à laquelle cette opération d’écriture s’applique.

[out] VendorId

Pointeur vers une variable USHORT remplie avec l’ID de fournisseur de la VF.

[out] DeviceId

Pointeur vers une variable USHORT remplie avec l’ID d’appareil de la VF.

Valeur de retour

None

Remarques

Cette fonction de rappel est implémentée par le pilote de fonction physique (PF). Il est appelé lorsque le système souhaite récupérer les identificateurs de fournisseur et d’appareil de la VF spécifiée.

La spécification PCI Express SR-IOV exige que toutes les machines virtuelles aient les mêmes ID de fournisseur et d’appareil. Il s’agit d’une exigence de matériel conforme. Toutefois, il est possible de provisionner des machines virtuelles de telle sorte que leurs capacités diffèrent les unes des autres et qu’il est souvent utile de charger différents pilotes sur différents matériels. Windows permet donc au pilote PF de fournir des ID d’appareil et de fournisseur distincts (avec des codes de classe différents, via les interfaces d’espace de configuration) de sorte que chaque VF puisse apparaître avec les ID Plug-and-Play les plus appropriés pour son utilisation.

Le pilote PF inscrit son implémentation en définissant le membre GetVendorAndDevice du SRIOV_DEVICE_INTERFACE_STANDARD, en configurant une structure WDF_QUERY_INTERFACE_CONFIG et en appelant WdfDeviceAddQueryInterface.

Voici un exemple d’implémentation de cette fonction de rappel.

Virtualization_GetVendorAndDevice (
    _In_    PVOID           Context,
    _In_    USHORT          VfIndex,
    _Out_   PUSHORT         VendorId,
    _Out_   PUSHORT         DeviceId
    )
{
    PDEVICE_CONTEXT deviceContext;

    UNREFERENCED_PARAMETER(VfIndex);
    PAGED_CODE();

    deviceContext = (PDEVICE_CONTEXT)Context;

    *VendorId = deviceContext->VendorId;
    *DeviceId = deviceContext->DeviceId;
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10
Serveur minimal pris en charge Windows Server 2016
Plateforme cible Windows
En-tête pcivirt.h
IRQL PASSIVE_LEVEL