Partager via


Suppression d’un port virtuel

Un pilote supérieur émet une requête de définition d’identificateur d’objet (OID) de OID_NIC_SWITCH_DELETE_VPORT pour supprimer un port virtuel (VPort) non par défaut sur le commutateur NIC d’un adaptateur réseau. Le pilote supérieur ne peut supprimer qu’un VPort qu’il a précédemment créé en émettant une requête de méthode OID de OID_NIC_SWITCH_CREATE_VPORT.

Le membre InformationBuffer de la structure NDIS_OID_REQUEST contient un pointeur vers la structure NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS.

Un pilote supérieur, tel que la pile de virtualisation, peut supprimer un VPort non par défaut qu’il a précédemment créé. Le pilote supérieur crée un VPort en émettant une requête de méthode OID de OID_NIC_SWITCH_CREATE_VPORT.

Avant d’émettre la requête de définition d’OID de OID_NIC_SWITCH_DELETE_VPORT, le pilote supérieur doit faire ce qui suit :

  • Les pilotes supérieurs doivent effacer ou déplacer tous les filtres de réception que le pilote a précédemment définis sur le VPort avant de supprimer le VPort. Les filtres de réception sont définis par des requêtes OID de OID_RECEIVE_FILTER_SET_FILTER et sont déplacés par des requêtes OID de OID_RECEIVE_FILTER_MOVE_FILTER.

  • Le pilote supérieur définit le membre VPortId de la structure NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS sur l’identifiant du VPort non par défaut à supprimer.

    Remarque : Le pilote supérieur ne doit pas définir le membre VPortId sur NDIS_DEFAULT_PORT_NUMBER. Cet identifiant de VPort est réservé pour le VPort par défaut qui est attaché à la fonction physique (PF) PCI Express (PCIe) sur l’adaptateur réseau. Le VPort par défaut existe toujours et n’est pas supprimé explicitement par une requête de définition d’OID de OID_NIC_SWITCH_DELETE_VPORT.

Le pilote supérieur appelle NdisOidRequest pour émettre la requête OID_NIC_SWITCH_DELETE_VPORT au pilote miniport PF sous-jacent. Lorsque le pilote miniport reçoit la requête OID_NIC_SWITCH_DELETE_VPORT, il doit faire ce qui suit :

  • Le pilote doit libérer les ressources matérielles et logicielles qui ont été allouées pour le VPort spécifié.

  • Le pilote doit détacher le VPort spécifié de la PF ou d’une fonction virtuelle (VF) PCIe.

    Si le VPort est attaché à un VF, la pile de virtualisation s’assure que le pilote miniport VF qui s’exécute dans le système d’exploitation invité a été préalablement mis en pause et arrêté. En conséquence, tous les paquets de réception précédemment indiqués par le VPort devraient avoir été retournés au pilote miniport VF.

    Si le VPort est attaché à la PF, le pilote miniport PF doit arrêter tout DMA supplémentaire vers la mémoire partagée associée au VPort. Le pilote miniport PF doit s’assurer que tous les paquets de réception précédemment indiqués par le VPort sont retournés au miniport. Le pilote miniport PF ne doit faire aucune indication de réception supplémentaire à NDIS qui spécifie l’identifiant du VPort dans la structure NET_BUFFER_LIST du paquet. Après que tous les paquets de réception indiqués par le VPort sont retournés au pilote miniport PF, il doit libérer la mémoire partagée associée au VPort en appelant NdisFreeSharedMemory.

Les points suivants s’appliquent à la suppression des VPorts :

  • Le pilote de protocole supérieur doit supprimer tous les VPorts non par défaut qu’il a créés avant d’appeler NdisCloseAdapterEx.

  • Le pilote de filtre supérieur doit supprimer tous les VPorts non par défaut qu’il a créés dans sa fonction FilterDetach.

  • Avant que NDIS n’émette une requête de définition de OID_NIC_SWITCH_DELETE_SWITCH pour supprimer un commutateur NIC sur l’adaptateur réseau, il garantit que tous les VPorts non par défaut sont supprimés de ce commutateur.

  • Seuls les VPorts non par défaut peuvent être explicitement supprimés par des requêtes OID de OID_NIC_SWITCH_DELETE_SWITCH. Le VPort par défaut est implicitement supprimé lorsque le pilote miniport PF supprime le commutateur NIC par défaut. Pour plus d’informations, veillez consulter la section Suppression d’un commutateur NIC.