Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
übersicht über NET_RING
Ein NET_RING ist ein Zirkelpuffer von Netzwerkdaten, der zwischen NetAdapterCx und einem Clienttreiber gemeinsam genutzt wird. Jede Paketwarteschlange in einem Clienttreiber verfügt über zwei Ringe: einen Paketring für Kernpaketdeskriptoren und einen Fragmentring für die Fragmentdeskriptoren jedes Pakets.
Weitere Informationen zu Paketdeskriptoren finden Sie unter Paketdeskriptoren und Erweiterungen.
Jeder Kerndeskriptor im Paketring enthält Indizes im Fragmentring, um die Fragmentdeskriptoren dieses Pakets zu finden. Eine weitere Datenstruktur, die NET_RING_COLLECTION, gruppiert den Paketring und den Fragmentring für eine bestimmte Paketwarteschlange, wie im folgenden Diagramm dargestellt.
Jede Warteschlange hat ihre eigene NET_RING_COLLECTION-Struktur und folglich auch ihren eigenen Paketring, Fragmentring und Deskriptoren in diesen Ringen. Daher ist der Netzwerkdatenübertragungsvorgang jeder Paketwarteschlange vollständig unabhängig. Weitere Informationen zu Paketwarteschlangen finden Sie unter Übertragen und Empfangen von Warteschlangen.
Eigentum von NET_RING-Elementen
Jedes Element in einem NET_RING gehört entweder dem Clienttreiber oder netAdapterCx. Das Eigentum wird durch drei Indizes gesteuert, die die Abschnitte des NET_RINGbestimmen. Diese Indizes werden in der folgenden Tabelle beschrieben. Der Vorgang des Verschiebens dieser Indizes wird durch die Semantik post und drain beschrieben.
| NET_RING-Indexname | Beschreibung | Erforderlich für die Übertragung von Netzwerkdaten | Geändert von |
|---|---|---|---|
| BeginIndex | Der Beginn des Bereichs von Elementen im NET_RING, der dem NIC-Client-Treiber gehört. BeginIndex ist auch der Anfang des drain-Unterbereichs des NET_RING. Wenn BeginIndex inkrementiert wird, zieht der Treiber die Elemente aus dem Ring ab und überträgt die Zuständigkeit dafür an das Betriebssystem. | Ja | NIC-Clienttreiber |
| NextIndex | Der Beginn des Unterabschnitts Post des NET_RING. NextIndex teilt den Abschnitt des Rings, den der Client-Treiber besitzt, in die Unterabschnitte „post“ und „drain“ auf. Wenn NextIndex inkrementiert wird, postet der Treiber die Puffer an die Hardware und übergibt die Puffer an den Drain-Abschnitt des Rings. | Nein | NIC-Clienttreiber |
| EndIndex | Das Ende des Bereichs der Elemente im NET_RING, die dem NIC-Client-Treiber gehören. Client-Treiber besitzen Elemente bis zu EndIndex - 1 einschließlich. | Ja | NetAdapterCx |
Durch die Manipulation dieser Indizes während des EvtPacketQueueAdvance-Callbacks einer Paket-Warteschlange übertragen Client-Treiber Netzwerkdaten zwischen dem System und der Hardware der Netzwerkschnittstelle (NIC).
Client-Treiber besitzen jedes Element von BeginIndex bis EndIndex - 1 einschließlich. Wenn BeginIndex- beispielsweise 2 und EndIndex- 5 ist, besitzt der Clienttreiber drei Elemente: die Elemente mit Indexwerten 2, 3 und 4.
Wenn BeginIndex- gleich EndIndex-ist, besitzt der Clienttreiber keine Elemente.
NetAdapterCx stellt Elemente in den Ringpuffer ein, indem er EndIndex inkrementiert. Ein Clienttreiber leert die Puffer und gibt den Besitz der Elemente zurück, indem er den BeginIndex umerhöht.
NextIndex kann von Client-Treibern optional verwendet werden und dient dazu, die Unterabschnitte „post“ und „drain“ des Ringabschnitts des Client-Treibers zu trennen.
Elemente mit Indexwerten zwischen NextIndex und EndIndex - 1 einschließlich sind eigentum des Clients, wurden aber noch nicht auf die Hardware gepostet. Wenn NextIndex-BeginIndex-entspricht, verfügt der Clienttreiber über keine abgeschlossenen Puffer, die an das Betriebssystem übertragen werden sollen. Wenn NextIndex gleich EndIndexist, verfügt der Clienttreiber über keine Puffer, die an die Hardware übergeben werden.
Da der Netzring kreisförmig ist, umschließen die Indexwerte schließlich das Ende des Puffers und kehren zum Anfang zurück. NetAdapterCx kümmert sich automatisch um den Umlauf der Indexwerte um den Ring, wenn der Client-Treiber die entsprechende Methode aufruft.
Spezifische Informationen zum Verwalten der Elemente in Netzringen finden Sie unter Verwaltung von Net Ring-Elementen.
Senden und Empfangen von Netzwerkdaten mit Netzringen
Weitere Informationen und Codebeispiele zum Senden und Empfangen von Netzwerkdaten in Netzringen finden Sie in den folgenden Themen.