Freigeben über


Remote-NDIS-Konzepte und -Definitionen

In diesem Abschnitt finden Sie eine Übersicht über die Remote-NDIS-Anforderungen für den Kommunikationskanal und Treiber niedrigerer Ebenen, die für die Kommunikation zwischen dem Host und dem Remote-NDIS-Gerät verwendet werden. Gerätezustandsübergänge und wichtige Vorgänge wie Initialisierung, Anhalten und Zurücksetzen werden in diesem Abschnitt ebenfalls beschrieben.

  • Steuerungskanal

    Der Steuerungskanal muss zuverlässig sein und eine sequenzierte Übermittlung sicherstellen. Es wird für die gesamte Kommunikation mit Ausnahme der Übertragung von Netzwerkdatenpaketen verwendet. Alle erforderlichen Steuernachrichten mit Ausnahme von REMOTE_NDIS_HALT_MSG und REMOTE_NDIS_INDICATE_STATUS_MSG sind vom Host initiierte Anforderungs- und Antwortaustausche. Das Gerät muss innerhalb des für jeden Bus angegebenen Timeoutzeitraums reagieren.

  • Datenkanal

    Der Datenkanal wird ausschließlich für die Übertragung von Netzwerkdatenpaketen verwendet. Sie kann aus mehreren Unterkanälen (z. B. für unterschiedliche Dienstqualität) bestehen, wie für den entsprechenden Bus definiert.

  • Initialisierung und Abbruch

    Die Steuerungs- und Datenkanäle werden initialisiert und so eingerichtet, wie für den entsprechenden Bus angegeben. Der Host sendet eine REMOTE_NDIS_INITIALIZE_MSG-Nachricht an das Remote-NDIS-Gerät. Das Remote-NDIS-Gerät stellt Informationen zu seinem Typ (verbindungslos oder verbindungsorientiert), dem unterstützten Medium und der Version in der Antwortnachricht REMOTE_NDIS_INITIALIZE_CMPLT bereit.

    Entweder der Host oder das Remote-NDIS-Gerät kann den Kommunikationskanal über die REMOTE_NDIS_HALT_MSG Nachricht abreißen. Alle ausstehenden Anforderungen und Pakete werden beim Empfang dieser Nachricht verworfen.

  • Gerätestatusdefinitionen

    Nach der Initialisierung auf Busebene soll sich das Gerät im RNDIS-nicht initialisierten Zustand befinden. Wenn ein REMOTE_NDIS_INITIALIZE_MSG empfangen und mit einem REMOTE_NDIS_INITIALIZE_CMPLT mit einem status RNDIS_STATUS_SUCCESS reagiert, wechselt das Gerät in den RNDIS-initialisierten Zustand.

    Beim Empfang REMOTE_NDIS_SET_MSG Angabe eines Filterwerts ungleich null für OID_GEN_CURRENT_PACKET_FILTER wechselt das Gerät in den RNDIS-dateninitialisierten Zustand.

    Wenn sich der Zustand RNDIS-data-initialisiert befindet, erzwingt der Empfang einer REMOTE_NDIS_SET_MSG die Angabe eines Null-Filterwerts für OID_GEN_CURRENT_PACKET_FILTER das Gerät in den RNDIS-initialisierten Zustand zurück.

    Der Empfang von REMOTE_NDIS_HALT_MSG oder eine Trennung auf Busebene oder ein festes Zurücksetzen zu einem beliebigen Zeitpunkt erzwingt das Gerät in den RNDIS-nicht initialisierten Zustand.

  • Stopp

    Zu jedem Zeitpunkt, zu dem sich das Gerät im RNDIS-initialisierten oder RNDIS-dateninitialisierten Zustand befindet, kann der Hostcomputer die Remote-NDIS-Funktionalität des Geräts beenden, indem er REMOTE_NDIS_HALT_MSG an das Gerät sendet.

  • Zurücksetzen des Kommunikationskanals

    Der Kommunikationskanal wird zurückgesetzt, wenn ein Fehler auftritt, z. B. ein Nachrichtentimeout. Der Host kann jederzeit eine Zurücksetzung initiieren, wenn sich das Gerät im RNDIS-initialisierten Zustand befindet, indem er die Nachricht REMOTE_NDIS_RESET_MSG an das Gerät sendet, und das Gerät muss nach Abschluss des Zurücksetzens eine Antwortnachricht senden. Beispielsweise kann der Host eine Zurücksetzung initiieren, wenn ein Fehler, z. B. ein Meldungstimeout, aufgetreten ist.

    Beachten Sie, dass dies ein vorläufiges Zurücksetzen in dem Sinne ist, dass alle Handles (z. B. VCs für verbindungsorientierte Geräte) nach dem Zurücksetzen weiterhin gültig sind. Das Remote-NDIS-Gerät verwirft alle ausstehenden Anforderungen und Pakete im Rahmen des Zurücksetzungsprozesses. Das Remotegerät setzt möglicherweise einige seiner Hardwarekomponenten zurück, behält jedoch den Kommunikationskanal bei.

    Wenn das Remote-NDIS-Gerät einen Neustart durchführt, entspricht dieses Ereignis "Entfernen" gefolgt von "Hinzufügen" Plug & Play Ereignissen. Der Host-NDIS-Miniporttreiber wird angehalten und entfernt, und eine neue instance wird hinzugefügt und gestartet. Alle Busebenen- und Remote-NDIS-Initialisierungen werden erneut ausgeführt. Ein Remote-NDIS-Gerät kann sich im Falle eines kritischen Gerätefehlers selbst neu starten.

  • Ablaufsteuerung

    Das Remote-NDIS-Gerät muss möglicherweise eine Ablaufsteuerung ausüben, um zu verhindern, dass der Host seine Datenpuffer mit Paketen überläuft. Alle Bestimmungen oder Anforderungen zur Flusssteuerung sind busspezifisch.

  • Numerische Bytereihenfolge

    Alle numerischen Werte in Remote-NDIS-Nachrichten müssen im Little-Endian-Format codiert werden (zuerst byte mit der geringsten Bedeutung).

  • NDIS-Nachrichtenkapselung

    Es gibt keine Remote-NDIS-Spezifikation für die Art und Weise, wie NDIS-Nachrichten in native Busnachrichten oder Primitiven gekapselt werden.