Inicialización de un controlador de minipuerto de VF
En este tema se describen las directrices para escribir una función MiniportInitializeEx para el controlador de minipuerto para una función virtual (VF) de PCI Express (PCIe). La VF se expone mediante un adaptador de red que admite la virtualización de E/S raíz única (SR-IOV).
Nota
Estas directrices solo se aplican a los controladores de minipuerto de VF del adaptador de red SR-IOV. Para obtener instrucciones de inicialización para el controlador de minipuerto de una función física (PF) de PCIe del adaptador, consulte Inicialización de un controlador de minipuerto de PF.
El controlador de minipuerto de la VF sigue los mismos pasos que cualquier controlador de minipuerto NDIS cuando se llama a su función MiniportInitializeEx. Para obtener más información sobre estos pasos, consulte Inicialización de un controlador de minipuerto.
Además de estos pasos, el controlador de minipuerto de la VF debe seguir estos pasos adicionales cuando NDIS llama a la función MiniportInitializeEx del controlador:
El controlador de minipuerto de la VF llama a la función NdisGetHypervisorInfo para comprobar que se ejecuta en la partición secundaria de Hyper-V. Esta función devuelve una estructura NDIS_HYPERVISOR_INFO que define el tipo de partición. Si el tipo de partición se notifica como NdisHypervisorPartitionMsHvChild, el controlador de minipuerto se ejecuta en una partición secundaria de Hyper-V que está conectada a la PF en el adaptador.
Nota
Si el tipo de partición se notifica como NdisHypervisorPartitionMsHvParent, el controlador de minipuerto se ejecuta en la partición primaria de Hyper-V que está conectada a la PF en el adaptador. En este caso, el controlador de minipuerto no debe inicializarse como un controlador de VF. Si es posible, el controlador debe inicializarse como un controlador de PF como se describe en Secuencia de inicialización para controladores de minipuerto de PF.
A diferencia del controlador de minipuerto de PF, el controlador de minipuerto de VF no debe instalarse con las palabras clave estandarizadas SR-IOV y no debe intentar leer estas palabras clave. Para obtener más información sobre estas palabras clave, consulte Palabras clave INF estandarizadas para SR-IOV.
El controlador de minipuerto de VF informa de las funcionalidades de hardware SR-IOV del adaptador de red virtual subyacente a través de una estructura NDIS_SRIOV_CAPABILITIES que se inicializa de la siguiente manera:
El controlador de minipuerto inicializa el miembro Header. El controlador establece el miembro Type de Header en NDIS_OBJECT_TYPE_DEFAULT.
A partir de NDIS 6.30, el controlador de minipuerto establece el miembro Revision de Header en NDIS_SRIOV_CAPABILITIES _REVISION_1 y el miembro Size en NDIS_SIZEOF_SRIOV_CAPABILITIES_REVISION_1.
El controlador de minipuerto establece la marca NDIS_SRIOV_CAPS_PF_MINIPORT en el miembro SriovCapabilities para notificar las funcionalidades de SR-IOV.
Nota
El controlador de minipuerto de VF debe establecer las marcas NDIS_SRIOV_CAPS_VF_MINIPORT y NDIS_SRIOV_CAPS_SRIOV_SUPPORTED.
El controlador de minipuerto de VF registra las funcionalidades SE-IOV del adaptador de red siguiendo estos pasos:
El controlador de minipuerto inicializa una estructura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES.
El controlador minipuerto establece los miembros HardwareSriovCapabilities y CurrentSriovCapabilities en un puntero a la estructura NDIS_SRIOV_CAPABILITIES inicializada anteriormente.
El controlador llama a NdisMSetMiniportAttributes y establece el parámetro MiniportAttributes en un puntero a la estructura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES.
El controlador de minipuerto de VF no debe anunciar funcionalidades de cola de máquinas virtuales (VMQ). Sin embargo, el controlador puede anunciar compatibilidad con otras tecnologías NDIS, como la administración de energía y el escalado del lado de recepción (RSS).
Para obtener más información acerca de RSS, vea Escalado del lado de recepción.