Freigeben über


Zwischen-Treiber-Reset-Operationen

Ein Zwischentreiber muss bereit sein, die Situation zu behandeln, in der seine ausstehenden Sendedaten an eine Bindung an einen zugrunde liegenden Treiber gelöscht werden können, da die zugrunde liegende NIC zurückgesetzt wird.

Ein zugrunde liegender Treiber setzt in der Regel eine NIC zurück, da NDIS die Miniport-Treiber MiniportResetEx-Funktion aufruft, wenn NDIS Sende- oder Anforderungen in die Warteschlange stellt, die für die NIC gebunden sind. Wenn eine zugrunde liegende NIC zurückgesetzt wird, ruft NDIS die ProtocolStatusEx(oder ProtocolCoStatusEx)-Funktion der einzelnen gebundenen Protokolle und Zwischentreiber mit dem Status NDIS_STATUS_RESET_START auf. Wenn der Miniporttreiber das Zurücksetzen abgeschlossen hat, ruft NDIS erneut ProtocolStatusEx(oder ProtocolCoStatusEx) mit dem Status NDIS_STATUS_RESET_END auf.

Wenn eine NIC zurückgesetzt wird, wenn ein gebundener Zwischentreiber Überleitungsdaten aufweist, die für diese NIC ausstehen, schließt NDIS diese Netzwerkdaten wieder mit einem entsprechenden Status an den Zwischentreiber zurück. Der Zwischentreiber muss diese Netzwerkdaten erneut übermitteln, wenn die Zurücksetzung abgeschlossen ist.

Wenn ein Zwischentreiber einen Status von NDIS_STATUS_RESET_START erhält, sollte folgendes ausgeführt werden:

  • Halten Sie alle Netzwerkdaten bereit, damit sie übertragen werden können, bis ProtocolStatusEx oder ProtocolCoStatusEx eine NDIS_STATUS_RESET_END Benachrichtigung empfängt.

  • Halten Sie alle empfangenen Netzwerkdaten, die bereit sind, an die nächste höhere Treiberinstanz weitergegeben zu werden, bis ProtocolStatusEx(oder ProtocolCoStatusEx) eine NDIS_STATUS_RESET_END-Benachrichtigung empfängt.

  • Bereinigen Sie alle internen Zustände, die für laufende Vorgänge und den NIC-Status beibehalten werden.

Nachdem ProtocolStatusEx(oder ProtocolCoStatusEx) NDIS_STATUS_RESET_END empfängt, kann der Zwischentreiber das Senden von Netzwerkdaten fortsetzen, Anforderungen stellen und Hinweise auf Treiber höherer Ebene machen.

Ein Zwischentreiber stellt keine MiniportResetEx-Funktion bereit.