Freigeben über


Multiplex-ID-Verwaltung

RDBSS definiert eine Multiplex-ID (MID), einen 16-Bit-Wert, der sowohl vom Netzwerkclient (Mini-Redirector) als auch vom Server verwendet werden kann, um zwischen den gleichzeitig aktiven Anforderungen für jede Verbindung zu unterscheiden. Ein Netzwerkumleitungsor kann einen MID jedem beliebigen Kontext oder jeder internen Datenstruktur zuordnen, die er verwendet. Es ist völlig frei vom Netzwerkumleitungsor, ob MIDs zugeordnet und verwendet werden.

Ein MID, wie von RDBSS definiert, ist Teil einer MID_ATLAS Datenstruktur, die für die Erfüllung mehrerer Kriterien konzipiert wurde. Einer MID_ATLAS Datenstruktur zugeordnet sind eine Reihe von mindestens einer MID_MAP Datenstrukturen, die zum Zuordnen von MIDs zu zugeordneten Kontexten verwendet werden.

Die MID_ATLAS Datenstruktur, die MID_MAP-Struktur und MIDs sollten gut skaliert werden, um die unterschiedlichen Funktionen verschiedener Remoteserver zu verarbeiten. Beispielsweise lässt der typische LAN Manager-Server unter Windows 50 ausstehende Anforderungen für jede Verbindung zu. Einige Arten von Servern unterstützen möglicherweise nur eine einzige ausstehende Anforderung, während Gatewayserver möchten, dass diese Anzahl sehr hoch ist (in der Reihenfolge tausender ausstehender Verbindungen).

Die beiden primären Vorgänge, die gut behandelt werden müssen, sind:

  • Zuordnen eines MID-Werts zum zugeordneten Kontext. Diese Routine wird aufgerufen, um jedes Paket zu verarbeiten, das über eine beliebige Verbindung sowohl auf dem Client als auch auf dem Server empfangen wird (vorausgesetzt, die Server verwenden MIDs).

  • Generieren eines neuen MID zum Senden von Anforderungen an den Server. Diese Routine wird auf dem Client zum Erzwingen der maximalen Verbindungsgrenzwerte und zum Markieren jeder gleichzeitigen Anforderung mit einer eindeutigen ID verwendet.

Mid muss in der Lage sein, die eindeutige Kennzeichnung und Identifizierung einer Anzahl von MIDs (in der Regel 50) aus einer möglichen Kombination von 65.536 Werten effizient zu verwalten. In einigen Fällen kann es sinnvoll sein, eine kleine MID_ATLAS-Struktur zu erstellen, um den von der MID_MAP-Struktur verwendeten Kernelspeicher zu speichern und bei Bedarf die Größe der MID_ATLAS-Struktur zu erweitern, um eine höhere Auslastung effizient zu bewältigen. Um einen angemessenen Zeit-Raum-Kompromiss sicherzustellen, wird die Suche als dreistufige Hierarchie organisiert. Die 16 Bits, die zum Darstellen einer MID verwendet werden, werden in Drei-Bit-Felder aufgeteilt. Die Länge des rechtssten Felds (am wenigsten signifikant) wird durch die maximale Anzahl von MIDs bestimmt, die im anfänglichen Atlas zulässig sind. Dieser Maximalwert ist ein Parameter, der an die RxCreateMidAtlas-Routine übergeben wird, wenn die MID_ATLAS Datenstruktur zum ersten Mal erstellt wird. Dieser Maximalwert bestimmt die anfängliche Größe der MID_ATLAS Datenstruktur, die erstellt wird, und wie viele MID_MAP Datenstrukturen untergebracht werden können. Die verbleibende Länge wird gleichmäßig auf die nächsten beiden Felder aufgeteilt, die die maximale Größe möglicher untergeordneter MID_ATLAS Strukturen bestimmen, die definiert werden können, um eine vorhandene MID_ATLAS in eine dreistufige Hierarchie mit MID_MAP Datenstrukturen zu erweitern und zu erweitern. Daher kann jede MID_ATLAS Datenstruktur die maximale Anzahl von MID_MAP Strukturen oder einen Zeiger auf eine untergeordnete MID_ATLAS und die MID_MAP-Strukturen enthalten.

Wenn beispielsweise bei der Erstellung maximal 50 MIDs zugeordnet werden, beträgt die Länge des ersten Felds 6 (64 ( 2 ** 6 ) ist größer als 50 ). Die verbleibende Länge ist in zwei Felder mit jeweils 5 Bit für die zweite und dritte Hierarchieebene unterteilt, sodass eine vorhandene MID_ATLAS Datenstruktur erweitert werden kann, um mehr MID_MAP Einträge aufzunehmen.

RDBSS bietet die folgenden Routinen zum Erstellen und Bearbeiten einer MID_ATLAS Datenstruktur, zugeordneten MID_MAP Datenstrukturen und Multiplex-IDs.

-Routine zurückgegebener Wert BESCHREIBUNG

RxAssociateContextWithMid

Diese Routine ordnet den bereitgestellten undurchsichtigen Kontext einem verfügbaren MID aus einer MID_ATLAS-Struktur zu.

RxCreateMidAtlas

Diese Routine weist eine neue instance der MID_ATLAS-Datenstruktur zu und initialisiert sie.

RxDestroyMidAtlas

Diese Routine zerstört eine vorhandene instance einer MID_ATLAS Datenstruktur und gibt den ihr zugewiesenen Arbeitsspeicher frei. Als Nebeneffekt wird der übergebene Kontextdestruktor für jeden gültigen Kontext in der MID_ATLAS-Struktur aufgerufen.

RxMapMidToContext

Diese Routine ordnet einen MID dem zugeordneten Kontext in einer MID_ATLAS-Struktur zu.

RxMapAndDissociateMidFromContext

Diese Routine ordnet einen MID dem zugeordneten Kontext in einer MID_ATLAS-Struktur zu und löst dann die Zuordnung des MID aus dem Kontext.

RxReassociateMid

Diese Routine ordnet einen MID einem alternativen Kontext neu zu.