Freigeben über


NdisMIndicateStatus-Funktion (ndis.h)

Hinweis NDIS 5. x ist veraltet und wird durch NDIS 6 ersetzt. x. Informationen zur Entwicklung neuer NDIS-Treiber finden Sie unter Netzwerktreiber ab Windows Vista. Informationen zum Portieren von NDIS 5. x Treiber für NDIS 6. x, siehe Portieren von NDIS 5.x-Treibern zu NDIS 6.0.

NdisMIndicateStatus gibt Änderungen im status einer NIC zu übergeordneten NDIS-Treibern an.

Syntax

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

Parameter

[in] MiniportHandle

Gibt das Handle an, das ursprünglich für MiniportInitialize eingegeben wurde.

[in] GeneralStatus

Gibt den NDIS_STATUS_ XXX-Wert an, der die allgemeine Änderung in status für die NIC angibt.

[in] StatusBuffer

Zeiger auf einen vom Aufrufer zugewiesenen Puffer, der Daten enthält, die mittelspezifisch sind und vom Wert von GeneralStatus abhängig sind. Sie enthält detaillierte Informationen zur Änderung in status.

[in] StatusBufferSize

Gibt die Größe des Puffers in Bytes bei StatusBuffer an.

Rückgabewert

Keine

Bemerkungen

Wenn ein Miniporttreiber NdisMIndicateStatus aufruft, ruft NDIS die ProtocolStatus-Funktion jedes gebundenen Protokolls auf. Dadurch kann ein gebundener Protokolltreiber oder möglicherweise der Konfigurations-Manager die Änderung in status einer zugrunde liegenden NIC protokollieren oder Korrekturmaßnahmen ergreifen. Ein Protokoll kann beispielsweise NdisReset aufrufen, abhängig von der angegebenen NDIS_STATUS_ XXX .

Wenn ein Miniporttreiber NdisMIndicateStatus aufruft, um eine Änderung der NIC-status zu melden, kann NDIS die MiniportReset-Funktion aufrufen, um zu versuchen, die NIC in eine Funktionierende Bedingung wiederherzustellen. Unter diesen Umständen kann NDIS gebundene Protokolle nur mit NDIS_STATUS_RESET_START und später mit NDIS_STATUS_RESET_END aufrufen und nicht mit dem vom Miniporttreiber angegebenen GeneralStatus .

NdisMIndicateStatus bietet zwei Informationen:

  • Ein gesamter status Wert, der die allgemeine Änderung der status angibt.
  • Ein spezifischer Grund für die allgemeine Änderung, die netzwerkspezifisch sein kann. Beispielsweise sind Ringeinfügungsfehler für Token Ring-Netzwerke (802.5) besonders, aber für Ethernet-Netzwerkkarten (802.3) und deren Treiber irrelevant.

Ein Miniporttreiber kann auch NdisMIndicateStatus aufrufen, um Probleme anzuzeigen, z. B. Kabel, die versehentlich entfernt und dann wieder eingefügt wurden, oder einen Ring, der vorübergehend ausgefallen ist. Angenommen, es treten die beiden folgenden Bedingungen auf:

  • Der Miniporttreiber ruft NdisMIndicateStatus mit NDIS_STATUS_RING_STATUS auf.

  • StatusBuffer enthält einen der folgenden status Werte:

    • NDIS_RING_LOBE_WIRE_FAULT
    • NDIS_RING_HARD_ERROR NDIS_RING_SIGNAL_LOSS

Nachdem eine solche Änderung in status mit einem Hinweis signalisiert wurde, bleiben alle zugeordneten Schwellenwerte oder Statistikindikatoren unverändert.

Ein Miniporttreiber kann NdisMIndicateStatus nicht im Kontext seiner Funktion MiniportISR, MiniportHalt oder MiniportShutdown aufrufen. Nur ein deserialisierter Miniporttreiber kann NdisMIndicateStatus im Kontext seiner MiniportInitialize-Funktion aufrufen.

Ein Miniporttreiber muss jede Spinsperre freigeben, die er hält, bevor er NdisMIndicateStatus aufruft.

Serialisierte Aufrufer von NdisMIndicateStatus müssen unter IRQL = DISPATCH_LEVEL ausgeführt werden. Deserialisierte Aufrufer von NdisMIndicateStatus müssen unter IRQL <= DISPATCH_LEVEL ausgeführt werden.

Angeben des Verlusts und der Wiederherstellung einer Netzwerkverbindung

Wenn ein Miniporttreiber erkennt, dass die Netzwerkverbindung verloren gegangen ist, sollte er NdisMIndicateStatus mit NDIS_STATUS_MEDIA_DISCONNECT aufrufen. Wenn die Verbindung wiederhergestellt wird, sollte der Miniporttreiber NdisMIndicateStatus mit NDIS_STATUS_MEDIA_CONNECT aufrufen.

Hinweis 802.11 Miniporttreiber müssen beim Generieren von Netzwerkverbindungsanzeigen die Medien-status Richtlinien für drahtlose LANs befolgen. Weitere Informationen zu diesen Richtlinien finden Sie unter Medienstatusanzeigen für 802.11-Netzwerke.

802.11 Wireless LAN Miniport-Treiberanrufe an NdisMIndicateStatus

802.11 Wlan-Miniporttreiber können verschiedene spezifisch auf die WLAN-Medien hinweisen. Der Miniporttreiber kann beispielsweise einen WLAN-spezifischen Hinweis geben, wenn Folgendes auftritt:

  • Der Treiber erkennt, dass sich die empfangene Signalstärke seiner aktuellen BSS-Zuordnung geändert hat.
  • Der Treiber erkennt einen TKIP MIC-Fehler für ein empfangenes Paket.

Die folgenden Arten von WLAN-spezifischen Indikationen können von 802.11-Miniporttreibern mit NdisMIndicateStatus gemacht werden:

Weitere Informationen zu diesen medienspezifischen Indikationen finden Sie unter 802.11 Media-Specific Statusanzeigen.

WAN-Miniporttreiberaufrufe an NdisMIndicateStatus

Die meisten WAN-NIC-Treiber weisen auf status mit einigen speziellen status Codes und Pufferinhalten hin. Diese status Hinweise werden von WAN-NIC-Treibern generiert, und NDIS-Protokolltreiber, die an einen solchen Miniporttreiber gebunden sind, können diese Hinweise ignorieren. Die korrekte Verarbeitung dieser Indikationen führt jedoch in der Regel zu einer verbesserten Leistung für Protokolle und WAN-NIC-Treiber.

Die folgenden vier Wan-spezifischen Indikationstypen können mit NdisMIndicateStatus an gebundene Protokolltreiber gesendet werden:

  • Zeile auf
  • Zeile ab
  • Fragment
  • TAPI-Zeilenereignis

NDIS_STATUS_WAN_LINE_UP

Ein WAN-Miniporttreiber gibt einen Line-Up-Hinweis aus, wenn eine neue Verbindung aktiv wird. Bis dies geschieht, akzeptiert die NIC Frames und lässt sie erfolgreich oder fehlschlagen. Es ist jedoch unwahrscheinlich, dass sie tatsächlich von einem Remoteknoten empfangen werden. Bis dies geschieht, sollten Protokolle ihre Timer reduzieren und die Anzahl der Wiederholungen wiederholen, damit ausgehende Verbindungsversuche schnell fehlschlagen.

Der WAN-Miniporttreiber gibt diese Angabe mit NdisMIndicateStatus aus, bevor er von der OID_TAPI_GET_ID-Anforderung zurückgibt.

Der status Code für die Zeilenanzeige ist NDIS_STATUS_WAN_LINE_UP. Der Puffer bei StatusBuffer ist als NDIS_MAC_LINE_UP-Struktur formatiert.

NDIS_STATUS_WAN_LINE_DOWN

Ein WAN-Miniporttreiber gibt einen Linedown-Hinweis aus, wenn ein Link ausfällt. In diesem Fall sollten gebundene Protokolle ihre Timer reduzieren und die Anzahl der Wiederholungen bis zur nächsten Line-Up-Anzeige wiederholen.

Der status Code für die Zeilenangabe ist NDIS_STATUS_WAN_LINE_DOWN. Der Puffer bei StatusBuffer ist als NDIS_MAC_LINE_DOWN-Struktur formatiert.

NDIS_STATUS_WAN_FRAGMENT

Ein WAN-Miniporttreiber gibt einen Fragmenthinweis aus, wenn er ein Teilpaket vom Remoteknoten empfängt. In diesem Fall sollte ein gebundenes Protokoll Frames an den Remoteknoten senden, der ihn über diese Situation benachrichtigt, anstatt auf ein Timeout zu warten.

Der status Code für die Fragmentangabe ist NDIS_STATUS_WAN_FRAGMENT. Der Puffer bei StatusBuffer ist als NDIS_MAC_FRAGMENT-Struktur formatiert.

NDISWAN überwacht gelöschte Pakete, indem die Anzahl der Fragmentanzeigen für jeden Link gezählt wird.

NDIS_TAPI_EVENT

Ein WAN-Miniporttreiber muss den GeneralStatus-Wert NDIS_STATUS_TAPI_INDICATION für TAPI status Indikationen verwenden. Der Puffer bei StatusBuffer ist als NDIS_TAPI_EVENT-Struktur formatiert.

Anforderungen

Anforderung Wert
Header ndis.h (einschließlich Ndis.h)
Bibliothek Ndis.lib

Weitere Informationen