Esecuzione di query sui registri degli indirizzi di base PCI di una funzione virtuale

Nota Questo metodo può essere usato solo tramite driver eccessivamente eseguiti nel sistema operativo di gestione della partizione padre Hyper-V.

Il driver del bus PCI, che viene eseguito nel sistema operativo di gestione della partizione padre Hyper-V, esegue una query sui requisiti dello spazio di indirizzi di memoria o I/O di ogni scheda di rete PCI Base Address Register (BAR). Il driver del bus PCI esegue questa query quando rileva per la prima volta l'adattatore sul bus.

Tramite questa query PCI BAR, il driver del bus PCI determina quanto segue:

  • Indica se una barra PCI è supportata dalla scheda di rete.

  • Se è supportata una barra, la quantità di memoria o spazio di indirizzi di I/O necessaria per la barra.

Il driver PCI esegue questa query PCI BAR nel modo seguente:

  1. Il driver PCI scrive prima tutti quelli in un BAR.

  2. Il driver PCI legge quindi la barra per determinare la memoria o lo spazio di indirizzi richiesto dalla barra. Il valore zero indica che la barra non è supportata dalla scheda di rete.

Il driver bus PCI virtuale (VPCI) viene eseguito nel sistema operativo guest di una partizione figlio Hyper-V. Quando una funzione virtuale PCI Express (PCIe) è collegata alla partizione figlio, il driver del bus VPCI espone una scheda di rete virtuale per la scheda di rete VF (VF). Prima di eseguire questa operazione, il driver del bus VPCI deve eseguire una query PCI BAR per determinare la memoria o lo spazio di indirizzi richiesto dalla scheda di rete VF.

Poiché l'accesso allo spazio di configurazione PCI è un'operazione con privilegi, può essere eseguito solo da componenti eseguiti nel sistema operativo di gestione di una partizione padre Hyper-V. Quando il driver del bus VPCI esegue una query su PCI BARs, NDIS invia una richiesta di query OID (Object Identifier) di OID_SRIOV_PROBED_BARS al driver miniport PF. I risultati restituiti da questa richiesta di query OID vengono inoltrati al driver del bus VPCI in modo che possa determinare la quantità di spazio di indirizzi di memoria necessaria dalla scheda di rete VF.

Nota Le richieste OID di OID_SRIOV_BAR_RESOURCES possono essere emesse solo da NDIS. La richiesta OID non deve essere eseguita tramite driver eccessivamente diversi, ad esempio driver di protocollo o filtro.

La richiesta di query OID_SRIOV_PROBED_BARS contiene una struttura NDIS_SRIOV_PROBED_BARS_INFO . Quando il driver miniport PF gestisce questo OID, il driver deve restituire i valori PCI BAR all'interno della matrice a cui fa riferimento il membro BaseRegisterValuesOffset della struttura NDIS_SRIOV_PROBED_BARS_INFO . Per ogni offset all'interno della matrice, il driver miniport PF deve impostare l'elemento matrice sul valore ULONG della barra con lo stesso offset all'interno dello spazio di configurazione PCI della scheda di rete fisica.

Ogni valore BAR restituito dal driver deve essere lo stesso valore che segue una query PCI BAR eseguita dal driver PCI eseguito nel sistema operativo di gestione. Il driver miniport PF può chiamare NdisMQueryProbedBars per determinare queste informazioni.

Per altre informazioni sui registri degli indirizzi di base di un dispositivo PCI, vedere la specifica del bus locale PCI.