Funzione NdisMGetVirtualFunctionLocation (ndis.h)

Un driver miniport chiama la funzione NdisMGetVirtualFunctionLocation per eseguire una query sulla posizione del dispositivo di una funzione virtuale PCI Express (PCIe) in un bus PCI. Il driver usa la posizione del dispositivo per costruire l'ID del richiedente PCIe (RID) per il VF.

NotaNdisMGetVirtualFunctionLocation deve essere chiamato solo dal driver miniport per la funzione fisica PCIe (PF).
 

Sintassi

void NdisMGetVirtualFunctionLocation(
  [in]  NDIS_HANDLE            NdisMiniportHandle,
  [in]  NDIS_SRIOV_FUNCTION_ID VFId,
  [out] PUSHORT                SegmentNumber,
  [out] PUCHAR                 BusNumber,
  [out] PUCHAR                 FunctionNumber
);

Parametri

[in] NdisMiniportHandle

L'handle della scheda di rete passato al parametro MiniportAdapterHandle di MiniportInitializeEx.

[in] VFId

Identificatore del VF per il quale viene restituita la posizione del dispositivo.

[out] SegmentNumber

Puntatore a una variabile fornita dal chiamante in cui questa funzione restituisce un valore USHORT per il numero di segmento PCI corrente. Questo valore specifica il gruppo di bus PCI in cui è collegato il dispositivo.

[out] BusNumber

Puntatore a una variabile fornita dal chiamante in cui questa funzione restituisce un valore UCHAR. Questo valore specifica il numero di bus PCI corrente in cui è collegato il dispositivo.

[out] FunctionNumber

Puntatore a una variabile fornita dal chiamante in cui questa funzione restituisce un valore UCHAR. Questo valore specifica il numero di funzione di un dispositivo logico nel dispositivo.

Valore restituito

nessuno

Osservazioni

Quando gestisce una richiesta di metodo di OID_NIC_SWITCH_ALLOCATE_VF, il driver miniport PF deve restituire rid per il VF che il driver ha allocato correttamente nella scheda di rete. Il driver genera il rid nel modo seguente:

  1. Il driver chiama prima la funzione NdisMGetVirtualFunctionLocation per ottenere le informazioni sulla posizione relative al bus per il VF.
  2. Il driver chiama quindi la macro NDIS_MAKE_RID con le informazioni sulla posizione relative al bus per generare l'RID.

Per altre informazioni su come allocare le risorse VF, vedere Sequenza di inizializzazione della funzione virtuale.

Per altre informazioni sull'interfaccia SR-IOV, vedere Panoramica di Single Root I/O Virtualization (SR-IOV).

Interfaccia a un driver del bus virtuale

Se un fornitore hardware indipendente (IHV) fornisce un driver del bus virtuale (VBD) come parte del pacchetto driver SR-IOV, il driver miniport non deve chiamare NdisMGetVirtualFunctionLocation. Il driver deve invece interfacciarsi con VBD tramite un canale di comunicazione privato e richiedere che la chiamata DI VBD a GetLocation. Questa funzione viene esposta dall'interfaccia GUID_PCI_VIRTUALIZATION_INTERFACE supportata dal driver del bus PCI sottostante.

Il VBD eseguito nel sistema operativo della partizione padre Hyper-V può eseguire query sull'interfaccia di GUID_PCI_VIRTUALIZATION_INTERFACE eseguendo una richiesta di IRP_MN_QUERY_INTERFACE al relativo oggetto dispositivo fisico (PDO) nel bus PCI. Questa richiesta deve essere effettuata da IRQL = PASSIVE_LEVEL. In questa richiesta, il driver deve impostare il parametro InterfaceType su GUID_PCI_VIRTUALIZATION_INTERFACE.

Requisiti

Requisito Valore
Client minimo supportato Nessuna supportata, supportata in NDIS 6.30 e versioni successive.
Server minimo supportato Windows Server 2012
Piattaforma di destinazione Universale
Intestazione ndis.h (includere Ndis.h)
Libreria Ndis.lib
IRQL PASSIVE_LEVEL

Vedi anche

GUID_PCI_VIRTUALIZATION_INTERFACE

GetLocation

NDIS_MAKE_RID

OID_NIC_SWITCH_ALLOCATE_VF