Enumeración de puertos virtuales en un adaptador de red
Una aplicación de usuario o controlador de exceso puede obtener una lista de todos los puertos virtuales (VPorts) en un conmutador NIC de un adaptador de red que admita la virtualización de E/S raíz única (SR-IOV). El controlador o la aplicación emite una solicitud de método de identificador de objeto (OID) de OID_NIC_SWITCH_ENUM_VPORTS para obtener esta lista.
Después de una devolución correcta de esta solicitud de consulta de OID, el miembro InformationBuffer de la estructura NDIS_OID_REQUEST contiene un puntero a un búfer que contiene lo siguiente:
Estructura NDIS_NIC_SWITCH_VPORT_INFO_ARRAY que define el número de elementos de la matriz.
Matriz de estructuras de NDIS_NIC_SWITCH_VPORT_INFO . Cada una de estas estructuras contiene información sobre una VPort en el conmutador NIC del adaptador de red.
Nota Si no se ha creado ningún VPorts en el adaptador de red, el controlador establece el miembro NumElements de la estructura de NDIS_NIC_SWITCH_VPORT_INFO_ARRAY en cero y no se devuelve ninguna estructura NDIS_NIC_SWITCH_VPORT_INFO .
Antes de que la aplicación de usuario o controlador sobreaplicación emite la solicitud de OID_NIC_SWITCH_ENUM_VPORTS , debe inicializar una estructura de NDIS_NIC_SWITCH_VPORT_INFO_ARRAY que se pasa junto con la solicitud. El controlador o la aplicación deben seguir estas directrices al inicializar la estructura de NDIS_NIC_SWITCH_VPORT_INFO_ARRAY :
Si la marca de NDIS_NIC_SWITCH_VPORT_INFO_ARRAY_ENUM_ON_SPECIFIC_SWITCH se establece en el miembro Flags , se devuelve información para todas las VPorts creadas en un conmutador NIC especificado. El modificador de NIC se especifica mediante el miembro SwitchId de esa estructura.
Nota A partir de Windows Server 2012, la interfaz SR-IOV solo admite un conmutador NIC en el adaptador de red. Este modificador se conoce como el conmutador NIC predeterminado y el identificador de NDIS_DEFAULT_SWITCH_ID hace referencia a este. Independientemente de las marcas establecidas en el miembro Flags , el miembro SwitchId debe establecerse en NDIS_DEFAULT_SWITCH_ID.
Si la marca de NDIS_NIC_SWITCH_VPORT_INFO_ARRAY_ENUM_ON_SPECIFIC_FUNCTION se establece en el miembro Flags , se devuelve información para todas las VPorts conectadas a una función física (PF) o función física (PF) de PCI Express (PCIe) especificada en el adaptador de red. El miembro AttachedFunctionId de esa estructura especifica el PF o VF.
Si el miembro AttachedFunctionId se establece en NDIS_PF_FUNCTION_ID, se devuelve información para todas las VPorts. Esto incluye el VPort predeterminado que está asociado al PF. Si el miembro AttachedFunctionId se establece en un identificador VF válido, se devuelve información para todas las VPorts asociadas al VF especificado.
Nota A partir de Windows Server 2012, solo se puede asociar una VPort no predeterminada a una VF. Sin embargo, se pueden conectar varias VPorts (incluida la VPort predeterminada) al PF.
Si el miembro Flags está establecido en cero, se devuelve información para todas las VPort conectadas al PF o VF en el adaptador de red. En este caso, se omiten los valores de SwitchId y AttachedFunctionId .
NDIS controla la solicitud de OID_NIC_SWITCH_ENUM_VPORTS para los controladores de minipuerto. NDIS devuelve la información de una memoria caché interna de los datos que mantiene al inspeccionar los siguientes orígenes:
Solicitudes de método OID de OID_NIC_SWITCH_CREATE_VPORT.
Solicitudes de conjunto de OID de OID_NIC_SWITCH_VPORT_PARAMETERS.