Opérations de vérification et de réinitialisation de l’adaptateur Miniport

Vue d’ensemble

Avertissement

Les opérations Check-for-Hang (CFH) et Reset sont déconseillées pour tous les pilotes NDIS 6.83 et ultérieur. Pour plus d’informations, consultez Opérations de vérification et de réinitialisation dans NDIS 6.83 et versions ultérieures.

NDIS appelle la fonction MiniportCheckForHangEx d’un pilote miniport NDIS pour case activée l’état opérationnel d’une carte NDIS qui représente une carte d’interface réseau (NIC). MiniportCheckForHangEx vérifie l’état interne de l’adaptateur et retourne TRUE s’il détecte que l’adaptateur ne fonctionne pas correctement.

Par défaut, NDIS appelle MiniportCheckForHangEx environ toutes les 2 secondes. Si MiniportCheckForHangEx retourne TRUE, NDIS appelle la fonction MiniportResetEx du pilote miniport NDIS. Si la valeur de délai d’attente par défaut de 2 secondes est trop petite, votre pilote miniport peut définir une valeur différente au moment de l’initialisation comme suit :

  1. Définissez le membre CheckForHangTimeInSeconds de la structure NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES sur une valeur différente de zéro.
  2. Transmettez la structure NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES dans le paramètre MiniportAttributes de la fonction NdisMSetMiniportAttributes .

Pour plus d’informations sur la définition des attributs de pilote, consultez Initialisation d’un adaptateur. La valeur de CheckForHangTimeInSeconds doit être supérieure à l’heure d’initialisation de votre pilote miniport. Toutefois, si l’initialisation de votre pilote prend plus de temps que CheckForHangTimeInSeconds , ce délai d’expiration expire, ce qui entraîne l’appel de la fonction MiniportCheckForHangEx de votre pilote. Si MiniportCheckForHangEx retourne TRUE, NDIS appelle alors la fonction MiniportResetEx de votre pilote. Pour cette raison, vous devez synchroniser la fonction MiniportCheckForHangEx de votre pilote avec l’initialisation du pilote afin que MiniportCheckForHangEx ne retourne pas TRUE si le pilote n’a pas terminé l’initialisation.

Si votre pilote miniport ne termine pas une requête OID dans deux appels successifs à MiniportCheckForHangEx, NDIS peut appeler la fonction MiniportResetEx du pilote. Pour certaines requêtes OID, NDIS appelle MiniportResetEx si le pilote ne termine pas la demande dans quatre appels successifs à MiniportCheckForHangEx.

L’opération de réinitialisation n’affecte pas les états opérationnels de l’adaptateur miniport. En outre, l’état de l’adaptateur peut changer pendant qu’une opération de réinitialisation est en cours. Par exemple, NDIS peut appeler la fonction MiniportPause d’un pilote lorsqu’une opération de réinitialisation est en cours. Dans ce cas, le pilote peut effectuer l’opération de réinitialisation ou de pause dans n’importe quel ordre tout en respectant les exigences normales pour chaque opération.

Pour une opération de réinitialisation, le pilote peut échouer la transmission des paquets de requête ou peut les maintenir en file d’attente et les terminer ultérieurement. Toutefois, vous devez noter qu’un pilote qui se superpose ne peut pas effectuer une opération de pause pendant que ses paquets de transmission sont en attente.

Un pilote miniport peut effectuer une demande de réinitialisation de manière synchrone en retournant un status de réussite ou d’échec. Le pilote peut effectuer une demande de réinitialisation de manière asynchrone en retournant NDIS_STATUS_PENDING. Dans ce cas, le pilote doit appeler NdisMResetComplete pour terminer l’opération.

Opérations de vérification et de réinitialisation dans NDIS 6.83 et versions ultérieures

Dans les versions de NDIS antérieures à la version 6.83, les opérations Check-for-Hang (CFH) et Reset étaient déconseillées pour les systèmes Always On, Always Connected (AOAC) en raison de problèmes d’autonomie de la batterie. Toutefois, les pilotes peuvent toujours utiliser CFH sur d’autres systèmes Windows non-AOAC en implémentant les fonctions de rappel facultatives MiniportCheckForHangEx et MiniportResetEx .

À compter de NDIS 6.83, ces fonctions de rappel sont déconseillées sur tous les systèmes Windows, quelles que soient les capacités d’alimentation. Bien qu’il ne s’agisse pas d’une violation de test de logo d’utiliser CFH dans NDIS 6.83 et versions ultérieures, les pilotes NDIS doivent utiliser le tableau suivant pour obtenir des conseils sur son utilisation.

Appelant Recommandation Notes
Pilotes ciblant les systèmes AOAC Ne doit pas implémenter Provoque des problèmes d’autonomie de la batterie en raison d’une activité périodique de case activée pour le blocage
Pilotes ciblant les systèmes Windows Server Ne doit pas implémenter Provoque des problèmes lorsque le processeur est stressé
Pilotes miniport virtuels (logiciels uniquement) Ne doit pas implémenter La réinitialisation n’est pas possible sans matériel
Autres nouveaux pilotes NDIS 6.83 et versions ultérieures Ne doit pas implémenter
Autre code NDIS 6.82 et versions antérieures Il n’est pas nécessaire de modifier, mais vous devez envisager de supprimer Check-for-Hang et Reset dans la prochaine retravailler

Réinitialisation matérielle du pilote Miniport

Fonctions de réinitialisation et d’arrêt du pilote Miniport