Die NET_ROOT-Struktur
Eine Netzwerkstammstruktur, NET_ROOT, enthält Informationen für jede bestimmte Netzwerkserver-Freigabeverbindung, die von einem Netzwerkminiumleitungsor verwaltet wird.
Ein NET_ROOT ist das, was der RDBSS und ein Netzwerk-Miniumleitungstreiber behandeln möchten, nicht ein Server. Entsprechend erstellt und öffnet RDBSS normalerweise eine NET_ROOT-Struktur und ruft den Netzwerk-Miniumleitungstreiber auf, der für das Öffnen des Servers verantwortlich ist. Es wird erwartet, dass der Netzwerkminiumleitungstreiber die entsprechenden Felder in der übergebenen NET_ROOT-Struktur auffüllt.
Eine Liste der NET_ROOT-Strukturen wird von RDBSS für jede SRV_CALL verwaltet. Jede NET_ROOT-Struktur enthält einige Elemente, die mit anderen RDBSS-Strukturen gemeinsam sind, sowie Elemente, die für eine NET_ROOT Struktur eindeutig sind. Die RDBSS-Routinen, die NET_ROOT Strukturen verwalten, ändern nur die folgenden Elemente:
Signatur- und Verweisanzahl
Ein Name und zugeordnete Tabelleninformationen
Ein Rückzeiger auf die zugeordnete SRV_CALL-Struktur
Größeninformationen für die verschiedenen Unterstrukturen
Eine Nachschlagetabelle mit zugeordneten FCB-Strukturen
Unabhängig davon, welcher zusätzliche Speicher vom Netzwerk-Mini-Redirector (oder dem Ersteller der NET_ROOT Datenstruktur) verlangt wird
Eine NET_ROOT-Struktur enthält auch eine Liste RX_CONTEXT Strukturen, die auf den Abschluss des NET_ROOT Übergangs warten, bevor die IRP-Verarbeitung wieder aufgenommen wird. Dies geschieht in der Regel, wenn gleichzeitige Anforderungen an einen Server gerichtet werden. Eine dieser Anforderungen wird initiiert, während die anderen Anforderungen in die Warteschlange gestellt werden. Der zusätzliche Speicherplatz, der für die Verwendung durch den Netzwerkminiumleitungsor reserviert ist, beginnt am Ende der bekannten NET_ROOT Datenstruktur, sodass ein Netzwerkminiumleitungsor einfach mithilfe von Kontextfeldern aus einer Includedatei auf diesen zusätzlichen Speicherplatz verweisen kann.
Die Fertigstellung einer NET_ROOT-Struktur besteht aus zwei Teilen:
Zerstören der Zuordnung mit allen V_NET_ROOTS
Freigeben des Arbeitsspeichers
Zwischen diesen beiden Aktionen kann es zu einer Verzögerung kommen, und ein Feld in der NET_ROOT-Struktur verhindert, dass der erste Schritt dupliziert wird.