Compartir a través de


Función NdisMGetVirtualFunctionLocation (ndis.h)

Un controlador de minipuerto llama a la función NdisMGetVirtualFunctionLocation para consultar la ubicación del dispositivo de una función virtual PCI Express (PCIe) en un bus PCI. El controlador usa la ubicación del dispositivo para construir el identificador del solicitante PCIe (RID) para el VF.

NotaNdisMGetVirtualFunctionLocation solo debe llamarlo el controlador de minipuerto para la función física PCIe (PF) del adaptador de red.
 

Sintaxis

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

Parámetros

[in] NdisMiniportHandle

Identificador del adaptador de red que NDIS pasó al parámetro MiniportAdapterHandle de MiniportInitializeEx.

[in] VFId

Identificador del VF para el que se devuelve la ubicación del dispositivo.

[out] SegmentNumber

Puntero a una variable proporcionada por el autor de la llamada en la que esta función devuelve un valor de USHORT para el número de segmento PCI actual. Este valor especifica el grupo de buses PCI en los que está conectado el dispositivo.

[out] BusNumber

Puntero a una variable proporcionada por el autor de la llamada en la que esta función devuelve un valor UCHAR. Este valor especifica el número de bus PCI actual en el que está conectado el dispositivo.

[out] FunctionNumber

Puntero a una variable proporcionada por el autor de la llamada en la que esta función devuelve un valor UCHAR. Este valor especifica el número de función de un dispositivo lógico en el dispositivo.

Valor devuelto

None

Observaciones

Cuando controla una solicitud de método de OID_NIC_SWITCH_ALLOCATE_VF, el controlador de miniporte PF debe devolver el RID para el VF que el controlador ha asignado correctamente en el adaptador de red. El controlador genera el RID de la siguiente manera:

  1. El controlador llama primero a la función NdisMGetVirtualFunctionLocation para obtener la información de ubicación relacionada con el bus para el VF.
  2. A continuación, el controlador llama a la macro NDIS_MAKE_RID con la información de ubicación relacionada con el bus para generar el RID.

Para obtener más información sobre cómo asignar recursos de VF, consulte Secuencia de inicialización de funciones virtuales.

Para obtener más información sobre la interfaz SR-IOV, vea Información general sobre la virtualización de E/S raíz única (SR-IOV).

Interacción con un controlador de bus virtual

Si un proveedor de hardware independiente (IHV) proporciona un controlador de bus virtual (VBD) como parte de su paquete de controladores SR-IOV, su controlador de minipuerto no debe llamar a NdisMGetVirtualFunctionLocation. En su lugar, el controlador debe interactuar con VBD a través de un canal de comunicación privado y solicitar que el VBD llame a GetLocation. Esta función se expone desde la interfaz de GUID_PCI_VIRTUALIZATION_INTERFACE compatible con el controlador de bus PCI subyacente.

El VBD que se ejecuta en el sistema operativo de administración de la partición primaria de Hyper-V puede consultar la interfaz de GUID_PCI_VIRTUALIZATION_INTERFACE mediante la emisión de una solicitud de IRP_MN_QUERY_INTERFACE a su objeto de dispositivo físico (PDO) en el bus PCI. Esta solicitud se debe realizar desde IRQL = PASSIVE_LEVEL. En esta solicitud, el controlador debe establecer el parámetro InterfaceType en GUID_PCI_VIRTUALIZATION_INTERFACE.

Requisitos

Requisito Value
Cliente mínimo compatible Ninguno compatible, compatible con NDIS 6.30 y versiones posteriores.
Servidor mínimo compatible Windows Server 2012
Plataforma de destino Universal
Encabezado ndis.h (incluya Ndis.h)
Library Ndis.lib
IRQL PASSIVE_LEVEL

Consulte también

GUID_PCI_VIRTUALIZATION_INTERFACE

GetLocation

NDIS_MAKE_RID

OID_NIC_SWITCH_ALLOCATE_VF