Fonction NdisMIndicateStatus (ndis.h)

Note NDIS 5. x a été déconseillé et est remplacé par NDIS 6. x. Pour le développement de nouveaux pilotes NDIS, consultez Pilotes réseau à partir de Windows Vista. Pour plus d’informations sur le portage de NDIS 5. x pilotes dans NDIS 6. x, consultez Portage des pilotes NDIS 5.x vers NDIS 6.0.

NdisMIndicateStatus indique les modifications apportées à la status d’une carte réseau vers des pilotes NDIS de niveau supérieur.

Syntaxe

void NdisMIndicateStatus(
  [in] NDIS_HANDLE MiniportHandle,
  [in] NDIS_STATUS GeneralStatus,
  [in] PVOID       StatusBuffer,
  [in] UINT        StatusBufferSize
);

Paramètres

[in] MiniportHandle

Spécifie le handle entré à l’origine dans MiniportInitialize.

[in] GeneralStatus

Spécifie la valeur xxx NDIS_STATUS_ qui indique la modification générale de status pour la carte réseau.

[in] StatusBuffer

Pointeur vers une mémoire tampon allouée à l’appelant contenant des données spécifiques au moyen et dépendantes de la valeur de GeneralStatus. Il indique des informations détaillées sur le changement de status.

[in] StatusBufferSize

Spécifie la taille en octets de la mémoire tampon dans StatusBuffer.

Valeur de retour

None

Remarques

Lorsqu’un pilote miniport appelle NdisMIndicateStatus, NDIS appelle la fonction ProtocolStatus de chaque protocole lié. Cela permet à un pilote de protocole lié ou, éventuellement, au gestionnaire de configuration d’enregistrer la modification de status d’une carte réseau sous-jacente ou de prendre des mesures correctives. Par exemple, un protocole peut appeler NdisReset, en fonction du NDIS_STATUS_ XXX indiqué.

Lorsqu’un pilote miniport appelle NdisMIndicateStatus pour signaler une modification de la carte réseau status, NDIS peut appeler la fonction MiniportReset pour essayer de restaurer la carte réseau à une condition de fonctionnement. Dans ces circonstances, NDIS peut appeler des protocoles liés uniquement avec NDIS_STATUS_RESET_START et versions ultérieures avec NDIS_STATUS_RESET_END, plutôt qu’avec le GeneralStatus indiqué par le pilote miniport.

NdisMIndicateStatus fournit deux informations :

  • Valeur status globale indiquant la modification générale de status.
  • Raison spécifique de la modification générale, qui peut être spécifique au réseau. Par exemple, les échecs d’insertion d’anneau sont propres aux réseaux Token Ring (802.5), mais ne sont pas pertinents pour les cartes réseau Ethernet (802.3) et leurs pilotes.

Un pilote miniport peut également appeler NdisMIndicateStatus pour indiquer des problèmes tels que des câbles qui ont été accidentellement supprimés puis réinsérés ou un anneau qui a temporairement échoué. Par exemple, supposons que les deux conditions suivantes se produisent :

  • Le pilote miniport appelle NdisMIndicateStatus avec NDIS_STATUS_RING_STATUS.

  • StatusBuffer contient l’une des valeurs status suivantes :

    • NDIS_RING_LOBE_WIRE_FAULT
    • NDIS_RING_HARD_ERROR NDIS_RING_SIGNAL_LOSS

Une fois qu’une telle modification de status a été signalée avec une indication, les seuils ou compteurs de statistiques associés restent inchangés.

Un pilote miniport ne peut pas appeler NdisMIndicateStatus dans le contexte de sa fonction MiniportISR, MiniportHalt ou MiniportShutdown . Seul un pilote miniport désérialisé peut appeler NdisMIndicateStatus dans le contexte de sa fonction MiniportInitialize .

Un pilote miniport doit libérer tout verrou de rotation qu’il tient avant d’appeler NdisMIndicateStatus.

Les appelants sérialisés de NdisMIndicateStatus doivent s’exécuter à IRQL = DISPATCH_LEVEL. Les appelants désérialisés de NdisMIndicateStatus doivent s’exécuter à IRQL <= DISPATCH_LEVEL.

Indiquant la perte et la restauration d’une connexion réseau

Lorsqu’un pilote miniport détecte que la connexion réseau a été perdue, il doit appeler NdisMIndicateStatus avec NDIS_STATUS_MEDIA_DISCONNECT. Lorsque la connexion est restaurée, le pilote miniport doit appeler NdisMIndicateStatus avec NDIS_STATUS_MEDIA_CONNECT.

Remarque 802.11 les pilotes miniport doivent suivre les instructions relatives aux status multimédias pour les réseaux locaux sans fil lors de la génération d’indications de connexion réseau. Pour plus d’informations sur ces recommandations, consultez Indications d’état des médias pour les réseaux 802.11.

802.11 Appels de pilotes miniport lan sans fil à NdisMIndicateStatus

Les pilotes miniport sans fil 802.11 LAN (WLAN) peuvent fournir différentes indications spécifiques au support WLAN. Par exemple, le pilote miniport peut émettre une indication spécifique au WLAN lorsque les éléments suivants se produisent :

  • Le pilote détecte que la puissance du signal reçu de son association BSS actuelle a changé.
  • Le pilote détecte une défaillance DU MIC TKIP sur un paquet reçu.

Les types d’indications spécifiques au WLAN suivants peuvent être effectués par des pilotes miniport 802.11 avec NdisMIndicateStatus :

Pour plus d’informations sur ces indications spécifiques aux médias, consultez 802.11 Media-Specific Status Indications.

Appels de pilotes wan miniport à NdisMIndicateStatus

La plupart des pilotes de carte réseau WAN indiquent status avec des codes status spéciaux et du contenu de la mémoire tampon. Ces status indications sont générées par les pilotes de carte réseau WAN, et les pilotes de protocole NDIS liés à un tel pilote miniport peuvent ignorer ces indications. Toutefois, le traitement correct de ces indications entraîne généralement une amélioration des performances pour les protocoles et pour les pilotes de carte réseau WAN.

Les quatre types d’indications spécifiques au WAN suivants peuvent être envoyés aux pilotes de protocole liés avec NdisMIndicateStatus :

  • Ligne précédente
  • Ligne suivante
  • Fragment
  • Événement de ligne TAPI

NDIS_STATUS_WAN_LINE_UP

Un pilote de miniport WAN effectue une indication de ligne chaque fois qu’un nouveau lien devient actif. Tant que cela ne se produit pas, la carte réseau accepte les trames et les laisse réussir ou échouer, mais il est peu probable qu’elles soient réellement reçues par un nœud distant. Jusqu’à ce que cela se produise, les protocoles doivent réduire leurs minuteurs et le nombre de nouvelles tentatives afin d’échouer rapidement toutes les tentatives de connexion sortantes.

Le pilote miniport WAN effectue cette indication avec NdisMIndicateStatus avant qu’il ne retourne à partir de la requête OID_TAPI_GET_ID .

Le code status pour l’indication de ligne est NDIS_STATUS_WAN_LINE_UP. La mémoire tampon dans StatusBuffer est mise en forme en tant que structure NDIS_MAC_LINE_UP .

NDIS_STATUS_WAN_LINE_DOWN

Un pilote de miniport WAN effectue une indication de ligne vers le bas chaque fois qu’un lien tombe en panne. Dans ce cas, les protocoles liés doivent réduire leurs minuteurs et le nombre de nouvelles tentatives jusqu’à l’indication de ligne suivante.

Le code status pour l’indication de ligne vers le bas est NDIS_STATUS_WAN_LINE_DOWN. La mémoire tampon dans StatusBuffer est mise en forme en tant que structure NDIS_MAC_LINE_DOWN .

NDIS_STATUS_WAN_FRAGMENT

Un pilote de miniport WAN émet une indication de fragment chaque fois qu’il reçoit un paquet partiel du nœud distant. Dans ce cas, un protocole lié doit envoyer des trames au nœud distant qui l’avertira de cette situation, plutôt que d’attendre qu’un délai d’attente se produise.

Le code status pour l’indication de fragment est NDIS_STATUS_WAN_FRAGMENT. La mémoire tampon de StatusBuffer est mise en forme en tant que structure NDIS_MAC_FRAGMENT .

NDISWAN surveille les paquets supprimés en comptant le nombre d’indications de fragments sur chaque lien.

NDIS_TAPI_EVENT

Un pilote miniport WAN doit utiliser une valeur GeneralStatus de NDIS_STATUS_TAPI_INDICATION pour les indications tapi status . La mémoire tampon dans StatusBuffer est mise en forme en tant que structure de NDIS_TAPI_EVENT.

  • Plateforme cible : universelle
  • Version : non pris en charge pour les pilotes NDIS 6.0 dans Windows Vista. Utilisez NdisMIndicateStatusExà la place. Pris en charge pour les pilotes NDIS 5.1 dans Windows Vista et Windows XP.

Configuration requise

Condition requise Valeur
En-tête ndis.h (inclure Ndis.h)
Bibliothèque Ndis.lib

Voir aussi