Fortgeschrittene Treiberzurücksetzungsvorgänge
Ein Zwischentreiber muss bereit sein, die Situation zu bewältigen, in der seine ausstehenden Senden an eine Bindung an einen zugrunde liegenden Treiber gelöscht werden können, weil die zugrunde liegende NIC zurückgesetzt wird.
Ein zugrunde liegender Treiber setzt in der Regel eine NIC zurück, da NDIS die MiniportResetEx-Funktion des Miniport-Treibers aufruft, wenn das NDIS-Zeitüberschreitungsüberschreitung bei Gesendeten oder Anforderungen in der Warteschlange auftritt, die für die NIC gebunden sind. Wenn eine zugrunde liegende NIC zurückgesetzt wird, ruft NDIS die ProtocolStatusEx(oder ProtocolCoStatusEx)-Funktion jedes gebundenen Protokolls und Zwischentreibers mit einer status von NDIS_STATUS_RESET_START auf. Wenn der Miniporttreiber das Zurücksetzen abgeschlossen hat, ruft NDIS erneut ProtocolStatusEx(oder ProtocolCoStatusEx) mit einer status von NDIS_STATUS_RESET_END auf.
Wenn eine Netzwerkkarte zurückgesetzt wird und ein gebundener Zwischentreiber über Übertragungsnetzwerkdaten verfügt, die für diese Netzwerkkarte ausstehen, vervollständigt NDIS diese Netzwerkdaten mit einem entsprechenden status zurück an den Zwischentreiber. Der Zwischentreiber muss diese Netzwerkdaten nach Abschluss des Zurücksetzens erneut übermitteln.
Wenn ein zwischengeschalteter Treiber eine status NDIS_STATUS_RESET_START empfängt, sollte er Folgendes ausführen:
Halten Sie alle Netzwerkdaten bereit, um übertragen zu werden, bis ProtocolStatusEx oder ProtocolCoStatusEx eine NDIS_STATUS_RESET_END Benachrichtigung erhält.
Halten Sie alle empfangenen Netzwerkdaten, die bereit sind, bis zum nächsthöheren Treiber angezeigt zu werden, bis ProtocolStatusEx(oder ProtocolCoStatusEx) eine NDIS_STATUS_RESET_END Benachrichtigung erhält.
Bereinigen Sie jeden internen Zustand, der für laufende Vorgänge und NIC-status verwaltet wird.
Nachdem ProtocolStatusEx(oder ProtocolCoStatusEx) NDIS_STATUS_RESET_END empfangen hat, kann der zwischengeschaltete Treiber das Senden von Netzwerkdaten fortsetzen, Anforderungen stellen und Hinweise an Treiber auf höherer Ebene senden.
Ein Zwischentreiber stellt keine MiniportResetEx-Funktion bereit.