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 |