SRIOV_GET_VENDOR_AND_DEVICE_IDS funzione di callback (pcivirt.h)
Fornisce l'ID fornitore e dispositivo per una funzione virtuale (VF) PCI Express SR-IOV da usare per generare un ID Plug and Play più generico per VF. Questi ID non possono essere letti direttamente dallo spazio di configurazione di VF.
Sintassi
SRIOV_GET_VENDOR_AND_DEVICE_IDS SriovGetVendorAndDeviceIds;
void SriovGetVendorAndDeviceIds(
[in] PVOID Context,
[in] USHORT VfIndex,
[out] PUSHORT VendorId,
[out] PUSHORT DeviceId
)
{...}
Parametri
[in] Context
Puntatore a un contesto definito dal driver.
[in] VfIndex
Indice in base zero dell'oggetto VF a cui si applica questa operazione di scrittura.
[out] VendorId
Puntatore a una variabile USHORT compilata con l'ID fornitore della funzione VF.
[out] DeviceId
Puntatore a una variabile USHORT compilata con l'ID dispositivo della funzione VF.
Valore restituito
Nessuno
Osservazioni
Questa funzione di callback viene implementata dal driver pf (Physical Function). Viene richiamato quando il sistema vuole recuperare gli identificatori fornitore e dispositivo del VF specificato.
La specifica di PCI Express SR-IOV richiede che tutte le macchine virtuali abbiano gli stessi ID fornitore e dispositivo. Si tratta di un requisito di hardware conforme. Tuttavia, è possibile effettuare il provisioning di VFS in modo che le relative funzionalità differiscano l'una dall'altra ed è spesso utile caricare driver diversi in hardware diverso. Windows consente quindi al driver PF di fornire ID dispositivo e fornitore separati (con codici di classe diversi, tramite le interfacce dello spazio di configurazione) in modo che ogni VF possa apparire con gli ID Plug and Play più appropriati per l'uso.
Il driver PF registra l'implementazione impostando il membro GetVendorAndDevice delSRIOV_DEVICE_INTERFACE_STANDARD, configurando una struttura WDF_QUERY_INTERFACE_CONFIG e chiamando WdfDeviceAddQueryInterface.
Di seguito è riportato un esempio di implementazione di questa funzione di callback.
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;
}
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 10 |
server minimo supportato | Windows Server 2016 |
piattaforma di destinazione | Finestre |
intestazione | pcivirt.h |
IRQL | PASSIVE_LEVEL |