Compartir a través de


Eliminación de un puerto virtual

Un controlador superpuesto emite una solicitud de conjunto de identificadores de objeto (OID) de OID_NIC_SWITCH_DELETE_VPORT para eliminar un puerto virtual no predeterminado (VPort) en el conmutador NIC de un adaptador de red. El controlador superpuesto solo puede eliminar un VPort que ha creado anteriormente mediante la emisión de una solicitud de método OID de OID_NIC_SWITCH_CREATE_VPORT.

El miembro InformationBuffer de la estructura NDIS_OID_REQUEST contiene un puntero a la estructura NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS.

Un controlador superpuesto, como la pila de virtualización, puede eliminar una instancia de VPort no predeterminada que haya creado anteriormente. El controlador superpuesto crea un VPort mediante la emisión de una solicitud de método OID de OID_NIC_SWITCH_CREATE_VPORT.

Antes de que emita la solicitud de conjunto de OID de OID_NIC_SWITCH_DELETE_VPORT, el controlador superpuesto debe hacer lo siguiente:

  • Los controladores superpuestos deben borrar o mover todos los filtros de recepción que el controlador estableció previamente en VPort antes de eliminar el VPort. Los filtros de recepción se establecen a través de solicitudes OID de OID_RECEIVE_FILTER_SET_FILTER y se mueven a través de solicitudes OID de OID_RECEIVE_FILTER_MOVE_FILTER.

  • El controlador superpuesto establece el miembro VPortId de la estructura NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS en el identificador del VPort no predeterminado que se va a eliminar.

    Nota El controlador superpuesto no debe establecer el miembro VPortId en NDIS_DEFAULT_PORT_NUMBER. Este identificador VPort está reservado para el VPort predeterminado que está conectado a la función física PCI Express (PCIe) en el adaptador de red. El VPort predeterminado siempre existe y no se elimina explícitamente a través de una solicitud de conjunto de OID de OID_NIC_SWITCH_DELETE_VPORT.

El controlador superpuesto llama a NdisOidRequest para emitir la solicitud OID_NIC_SWITCH_DELETE_VPORT al controlador de minipuerto PF subyacente. Cuando el controlador de minipuerto recibe la solicitud de OID_NIC_SWITCH_DELETE_VPORT, el controlador debe hacer lo siguiente:

  • El controlador debe liberar los recursos de hardware y software que se asignaron para el VPort especificado.

  • El controlador debe desasociar el VPort especificado de la PF o una función virtual PCIe (VF).

    Si el VPort está conectado a una VF, la pila de virtualización garantiza que el controlador de minipuerto VF que se ejecuta en el sistema operativo invitado se haya pausado y detenido previamente. Como resultado, todos los paquetes de recepción indicados anteriormente de VPort deben haberse devuelto al controlador de minipuerto VF.

    Si el VPort está conectado al PF, el controlador de minipuerto PF debe detener cualquier DMA adicional a la memoria compartida asociada a VPort. El controlador de minipuerto PF debe asegurarse de que todos los paquetes de recepción indicados previamente de VPort se devuelven al minipuerto. El controlador de minipuerto PF no debe realizar ninguna indicación de recepción adicional a NDIS que especifique el identificador de VPort en la estructura NET_BUFFER_LIST del paquete. Después de que todos los paquetes de recepción indicados de VPort se devuelvan al controlador de minipuerto PF, debe liberar la memoria compartida asociada con VPort llamando a NdisFreeSharedMemory.

Los puntos siguientes se aplican a la eliminación de VPorts:

  • El controlador de protocolo superpuesto debe eliminar todos los VPort no predeterminados que creó antes de llamar a NdisCloseAdapterEx.

  • El controlador de filtro superpuesto debe eliminar todos los VPorts no predeterminados que creó dentro de su función FilterDetach.

  • Antes de que NDIS emita una solicitud establecida de OID_NIC_SWITCH_DELETE_SWITCH para eliminar un conmutador NIC en el adaptador de red, garantiza que todos los VPorts no predeterminados se eliminen de ese conmutador.

  • Solo los VPorts no predeterminados se pueden eliminar explícitamente a través de solicitudes OID de OID_NIC_SWITCH_DELETE_SWITCH. El VPort predeterminado se elimina implícitamente cuando el controlador de minipuerto PF elimina el conmutador NIC predeterminado. Para obtener más información, consulte Eliminación de un conmutador NIC.