Condividi tramite


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