Gestion de la suppression surprise d’une carte réseau
Une suppression surprise se produit lorsqu’un utilisateur supprime une interface réseau carte d’un système en cours d’exécution sans en informer le système au préalable via l’interface utilisateur.
Les pilotes miniport pour Windows Vista et les versions ultérieures du système d’exploitation doivent être en mesure de gérer les suppressions surprises. En particulier, les pilotes miniportS NDIS avec un bord inférieur du modèle de pilote Windows (WDM) doivent être en mesure de gérer de tels événements. Si un pilote miniport NDIS-WDM ne gère pas une suppression surprise, les IIP en attente que le pilote miniport a envoyés au pilote de bus sous-jacent avant la suppression surprise ne peuvent pas être terminés.
Pour Windows Vista et les versions ultérieures, un pilote miniport (tel qu’un pilote miniport avec un bord inférieur WDM) qui ne contrôle pas directement le matériel doit définir l’indicateur d’attribut NDIS_MINIPORT_ATTRIBUTES_SURPRISE_REMOVE_OK lors de l’appel de NdisMSetMiniportAttributes. La définition de cet indicateur empêche l’affichage d’un avertissement lorsqu’un utilisateur effectue une suppression surprise d’une carte réseau. Un pilote miniport qui ne peut pas gérer une suppression surprise ne doit pas définir cet indicateur.
Un pilote de miniport qui prend en charge la suppression de surprises doit lui-même tenter de détecter une suppression surprise pendant des opérations normales, en dehors du contexte de MiniportDevicePnPEventNotify. Une fois une carte réseau supprimée, une tentative de lecture des ports d’E/S d’une carte réseau entraîne généralement des valeurs de retour dont tous les bits sont définis sur un. Si un pilote miniport lit une telle valeur, il doit case activée pour la présence du matériel avec un test plus concluant. Par exemple, le pilote miniport peut écrire une valeur dans un port d’E/S, puis essayer de lire la valeur à partir de ce port. Le pilote miniport peut également case activée des valeurs valides dans les registres d’E/S de la carte réseau. La détection d’une suppression surprise de cette manière empêche le pilote miniport de se suspendre dans une boucle infinie lorsqu’il tente de lire les registres d’une carte réseau supprimée dans un DPC d’interruption.. Un pilote miniport qui cesse de répondre de cette façon empêche NDIS d’appeler la fonction MiniportDevicePnPEventNotify du pilote.