Übersicht - DSpace at ICSY

Werbung
Windows NT Netzwerkstruktur
Studienarbeit
Thema:
Protokolltreiber-Architektur von Windows NT
Autor: Sebastian Sehr
Betreuer: Dipl.-Informatiker Bernd Reuther
Kurs: TIT 97 A
Fachrichtung: Projektengineering
Studienarbeit von Sebastian Sehr
Seite 1 von 23
Windows NT Netzwerkstruktur
ERKLÄRUNG
Hiermit erkläre ich, daß ich die vorliegende Arbeit selbständig und ohne fremde Hilfe verfaßt
und keine anderen als die angegebenen Hilfsmittel verwendet habe.
Insbesondere versichere ich, daß ich alle wörtlichen und sinngemäßen Übernahmen aus
anderen Werken als solche kenntlich gemacht habe.
76646 Bruchsal, __________________________
Sebastian Sehr
Studienarbeit von Sebastian Sehr
Seite 2 von 23
Windows NT Netzwerkstruktur
INHALTSVERZEICHNIS
1
MOTIVATION ............................................................................................. 4
1.1 WAS IST VIAA? .............................................................................................................. 4
1.2 EINLEITUNG ............................................................................................... 5
2
ÜBERSICHT................................................................................................. 5
3
TREIBER-TYPEN ....................................................................................... 8
3.1 NDIS............................................................................................................................... 8
3.1.1 Miniport Driver ...................................................................................................... 9
3.1.2 Intermediate Driver .............................................................................................. 10
3.1.3 Upper Level Protocol Driver ................................................................................ 10
3.2 ANDERE AUSGABESCHNITTSTELLEN ............................................................................. 10
3.3 PROTOKOLL-TREIBER.................................................................................................... 10
3.3.1 Detaillierter Aufbau eines NDIS-Protokoll-Treiber ............................................. 11
4
SCHNITTSTELLEN.................................................................................. 11
4.1 NDIS (NETWORK DRIVER INTERFACE SPECIFICATION) ................................................ 11
4.2 TDI (TANSPORT DRIVER INTERFACE) ........................................................................... 12
4.3 SPI (SERVICE PROVIDER INTERFACE) ........................................................................... 14
5
ZUGRIFF AUF DIE TRANSPORT-PROVIDERS ................................ 15
5.1 ANWENDUNGEN FÜR DIE WINSOCK ............................................................................... 15
5.2 ANWENDUNGENZUGRIFF ÜBER DEN REDIRECTOR ......................................................... 16
6
REGISTRIERUNG .................................................................................... 17
6.1 NDIS PROTOCOL DRIVER ............................................................................................. 17
6.1.1 Öffnen eines unterliegenden Adapters ................................................................. 17
7
RÉSUMEÉ .................................................................................................. 18
8
ABBILDUNGSVERZEICHNIS ............................................................... 18
9
ABKÜRZUNGSVERZEICHNIS .............................................................. 19
10 QUELLENANGABE ................................................................................. 19
10.1 REFERENZIERTE QUELLEN DIESER ARBEIT ................................................................ 19
10.2 WEITERE QUELLENANGABEN .................................................................................... 20
10.2.1 Grundlagen und Übersicht für die Programmierung ............................................ 20
10.2.2 Winsock................................................................................................................ 21
10.3 WEITERE INTERNET LINKS ........................................................................................ 21
11 ANHANG A ................................................................................................ 22
11.1
PROTOCOLXXX-FUNCTIONS ...................................................................................... 22
Studienarbeit von Sebastian Sehr
Seite 3 von 23
Windows NT Netzwerkstruktur
1
1.1
Motivation
Was ist ViAA?
ViAA ist ein Projekt der Universität Kaiserslautern und steht für Virtuelle ATM API. Ziel
dieses Projektes ist es, neuen multimedialen Anwendungen eine nahtlose ende zu ende
Kommunikation zu ermöglichen. Das besondere dabei, - diesen Anwendungen sollen die
ATM Quality-of-Service (QoS) Merkmale bereitgestellt werden, obwohl diese über keinen
direkten ATM Zugang verfügen.
In den meisten Fällen sind Endsysteme dediziert über nicht QoS fähiges Ethernet
angeschlossen. Die QoS fähige ATM Technik steht oft erst im Backbone bzw. WAN Bereich
zur Verfügung. Die Abbildung 1 verdeutlicht die geschilderte Situation. Das Projekt ViAA
bietet hier die Möglichkeit den QoS des Backbone/WAN zu steuern und zu nutzen.
Abbildung 1:ViAA Szenario1
Voraussetzung hierfür ist, das die Ethernetstrecke zum Endgerät über ausreichende
Bandbreite verfügt und somit auf dieser Strecke keine Ressourcenreservierung notwendig ist.
Im Backbone bzw. im WAN Bereich ist jedoch eine Ressourcenreservierung zur
Aufrechterhaltung bestimmter Qualitätsansprüche wünschenswert, weil sich die
Anwendungen hier die verfügbare und teure Bandbreite mit vielen anderen Anwendungen
teilen müssen.
Die ATM Funktionalität wird für Applikationen über eine virtuelle ATM API (API =
Application Programming Interface) basierend auf der Ethernet Hardware im Endsystem
angeboten. Die Umsetzung der QoS Parameter erfolgt am ersten bzw. letzten EdgeDevice der
ATM Backbone/WAN Verbindung. Demzufolge sind nur solche Anwendungen betroffen die
auf eine solche API aufsetzen und QoS-Parameter setzen können. TCP/IP basierte
Anwendungen bleiben hiervon unberührt.“
Die Umsetzung des ViAA-Konzepts soll für die Anwendung transparent bleiben, d.h. die
Anwendung erfährt nicht, welches Protokoll benutzt wird, um ihre Daten zu versenden.
Das ViAA-Konzept realisiert der ViAA-Treiber, der unter anderem dafür sorgt, daß die QoS
ATM Merkmale, die im Backbone bzw. WAN Bereich genutzt werden, in die Ethernetframes
eingebunden und versendet werden. Dieser Treiber soll zudem einen geringst möglichen
Overhead haben und braucht nicht routingfähig zu sein, was bedeutet, das die
Adressenumsetzung ohne IP erfolgt.
1
Quelle Abbildung: Universität Kaiserslautern
Studienarbeit von Sebastian Sehr
Seite 4 von 23
Windows NT Netzwerkstruktur
In dieser Arbeit werden die technischen Anforderungen und Rahmenbedingungen für die
Erstellung eines solchen Treibermoduls erarbeitet. Dazu werden die benötigten Schnittstellen
und das Zusammenspiel der dazugehörigen Treiber erklärt. Dabei wird auch der Datenfluß
von der Applikation bis zur Netzwerkkarte dargestellt.
Weiterhin werden alle Notwendigen Schritte für die Programmierung eines solchen
Treibermoduls beschrieben.
1.2 Einleitung
Die für Windows NT herausgearbeiteten Ergebnisse gelten auch für die Microsoft
Betriebssysteme Windows 98 und Windows 2000. Dies gelten jedoch nur für den Aufbau,
nicht aber für Algorithmen der Treiber. Für diese Arbeit wird vorrausgesetzt, das
Grundlagenkenntnisse im Bereich Rechnernetze vorhanden sind. Der Leser sollte zum
Beispiel das ISO/OSI-Referenzmodell kennen.
Auf diesem Wege möchte ich mich bei Herrn Bernd Reuther, Herrn Michael Schneider und
Herrn Karl-Heinz Waldmann bedanken, die mir für Verständnisfragen immer offen gegenüber
standen und ihr Wissen gerne preis gegeben haben.
2
Übersicht
Dieses Kapitel gibt einen Einblick in den Aufbau von Windows NT und ordnet die für das
ViAA-Projekt wichtigen Schittstellen ein. Es beschriebt den prinzipiellen Aufbau der
Netzwerk-Treiberschichten und zeigt Vergleiche, zwischen dem ISO/OSI-Referenz-Modell
und Windows NT.
Abbildung 2 gibt eine Übersicht, um die Einordnung der benötigten Module zu erleichtern.
Die Architektur der Intel-Prozesoren 80386 und höher definieren vier Ebenen, sogenannte
Ringe. Diese Architektur soll den Systemcode und die Systemdaten vor überschreiben mit
weniger Rechten ausgestatteten Ebenen schützen. Dieser Aufbau wurde auch als IntelSchutzmodell bekannt.
Das Microsoft Betriebssystems Windows NT nutzt diesen Aufbau aus den gleichen Gründen.
Windows NT definiert zwei dieser Ebenen, den Kernel- und den User-Mode, wobei der
Kernel-Mode als Ring0, der User-Mode als Ring3 bezeichnet wird. Ring1 und Ring2 des
Intel-Schutzmodell finden keine Verwendung.
Der Kernel-Mode ist ein geschützter Bereich, in dem sich auch, die für das ViAA-Projekt
wichtigen Netzwerkschnittstellen befinden.
Studienarbeit von Sebastian Sehr
Seite 5 von 23
Windows NT Netzwerkstruktur
Windows
Sockets
Application
Win32
Wnet/WinIne
t Applicaton
RPC
Applicaton
NetBIOS
Application
Applications and User Mode
Services
Application
Interfaces
WinInet
WNet
RPC
Windows
Sockets
NetBIOS
Support
User
Kernel
Named
Pipes
Redirector
Server
NetBT
AFD
TDI
TCP
Packet
Classifier
ICMP
IP Forwarder
IP
IGMP
IP Filtering
ARP
Packet
Traffic
Control
Packet Queue
Packet Queue
Packet Queue Scheduler
Packet Queue
Packet Queue
Driver
Interfaces
NDIS Wrapper
NDIS WAN Miniport
Wrapper
PPTP
Asynch
X.25
X.25
Frame Relay
ATM
Ethernet
FDDI
Token Ring
NDIS
IIntIn
terfac
e
ISDN
Abbildung 2: The Windows 2000 TCP/IP network model 2
Die Abbildung 2 kennzeichnet User- und Kernel-Mode mit den dazugehörigen Modulen. Im
Kernel-Mode, zwischen Redirector und dem TCP-Modul liegt die TDI (Transport Driver
Interface).
Der NDIS (Network Driver Interface Specification) Wrapper (engl. Wrapper = Hülle,
Umschlag) abstrahiert die Netzwerkkarte von den darüberliegenden Transport Protokollen,
wie TCP/IP und UDP. Der NDIS-Wrapper ist mit den in Windows NT enthaltenen NDISFunktionen realisiert und definiert so eine Schnittstelle (NDIS) zu den Protokoll-Treibern.
Über der TDI liegen die Redirectoren und Server, die die Bindeglieder zwischen Kernel- und
User- Mode sind. Im User-Mode befinden sich die Windows Sockets, die die Schnittstelle für
die Windows Sockets Applikationen bildet. Im Vergleich dazu, gehört die RPC-Schnittstelle
im User-Mode zu den RPC Applikationen und die Wnet zu den Win32 Wnet Applikationen
usw.
Die folgende Abbildung 3 vergleicht das Windows NT Netzwerk-Modell mit dem ISO/OSIReferenz-Modell. „[RL99] Die unteren vier Schichten bilden das Transportsystem, dass die
transparente Übermittlung von Daten ermöglicht. Die drei oberen Schichten bilden die
Anwendungsdienste, welche die Übermittlung von Informationen realisieren“.
QuelleAbbildung: Dave Mac Donald „TCP/IP Implementation Details for Windows 2000 RC1“, White Paper:
July 16, 1999
2
Studienarbeit von Sebastian Sehr
Seite 6 von 23
Windows NT Netzwerkstruktur
Abbildung 3: Windows NT layered architecture 3
Im Vergleich ISO/OSI-Referenz-Modell mit Windows NT, ist in der Übertragungsschicht
(Physikal Layer) die Netzwerkkarte NIC (Network Interface Karte) einzuordnen.
In der Leitungsschicht (Data Link Layer) befindet sich auf der MAC-Ebene (Media Access
Control) der Netzwerkkarten-Treiber (NIC Driver), auf LLC–Ebene (Logical Link Control) der
Protokoll-Treiber (Upper Level Protocol Driver), der die NDIS-Funktionen nutzt .
Der Protokoll-Treiber muss auch Aufgaben der Netzwerkschicht (Network Layer) und der
Transportschicht (Transport Layer) übernehmen.
Die Protokoll-Treiber der LLC-Ebene, der Netzwerkschicht und der Transportschicht sind
bei Windows NT als Software-Treiber realisiert. Diese Treiber sind als Transport Driver
bekannt, oder werden auch als Protocols, Protocol Driver oder Protocol Modules bezeichnet.4
Die Sitzungsschicht (Session Layer), die Darstellungsschicht (Presentation Layer) und die
Anwendungsschicht (Application Layer) repräsentieren bei Windows NT die sogenannten
Network Providers, Installable File Systems (IFS) Manager und die Redirectoren.
Wie das Bild auch zeigt, ist es möglich Tranport-Protokolle in Streams einzubetten. Streams
haben neben ihren Vorteilen5 einen große Overhead. Ab der Version 3.51 verzichtet Windows
NT für TCP/IP auf Streams, aufgrund des Overheads.
Microsoft bezeichnet Treiber, die unterhalb der TDI liegen, im Vergleich mit OSI die
Schichten 1 bis 4, als Netzwerk-Treiber (Network Driver). Sie unterteilen sich nochmals in
Protokoll-Treiber (z.B. TCP/IP ), die zwischen der NDIS und der TDI liegen und NDISDriver, die als Miniport NIC Driver (NIC= Network Interface Card), Intermediate Driver oder
Upper Level Protocol Driver realisiert sein können.
3
Quelle Abbildung: Windows Layered Architecture, MSDN Library July 1999 (Verzeichnis : DDK
Documentation, Windows Ressource Kits, Windows NT 4.0 Ressource Kit, Chapter 1: ….
4
[Vgl.] MSDN_ND1
5
[Vgl.] MSDN_RK1
Studienarbeit von Sebastian Sehr
Seite 7 von 23
Windows NT Netzwerkstruktur
Es ist möglich, gleiche oder unterschiedliche Treiberarten aufeinander aufbauend zu
realisieren. Diese bilden dann eine „Treiberkette“. Eine Treiberkette kann intern eigene
Schnittstellen haben, die der Programmierer selbst bestimmt (Private Interface). Es ist aber
wichtig, das die Funktionen der Schnittstellen von NDIS und TDI an den jeweiligen
Außengliedern der Kette genutzt werden, um mit anderen bereits bestehenden Treibern
kommunizieren zu können.
Netzwerk-Treiber
Protokoll-Treiber
Private Interface
Private Interface
upper level Protocol Driver
Protokoll-Treiber
... ...
TDI
NDIS
NDIS-Driver:
Int ermediat e Driver
Miniport Driver
Netzwerkkarte (NIC)
Abbildung 4:Treiberarten unterhalb der TDI6
Abbildung 4 verdeutlicht, das bestimmte Treiber-Typen, wie zum Beispiel der Inermediate
Driver (siehe Kapitel 3.1.2), nicht unbedingt benötigt werden. So sieht man, wenn man den
Weg der rechten Pfeile nimmt, dass der Miniport Driver direkt mit dem Upper Level Protocol
Driver kommunizieren kann, der wiederum direkt die TDI anbietet. Eine andere Möglichkeit
wäre es, wenn der Upper Level Driver nicht die TDI anbietet, sondern über interne
Schnittstellen andere Protokoll-Funktionen. Diese können wiederum interne Schnittstellen
anbieten, wobei der oberste Protokoll-Treiber die TDI anbieten muss.
3
Treiber-Typen
3.1 NDIS
Microsoft stellt mit der NDIS-Schnittstelle definierte Funktionen in der NDIS-Library
ndis.sys zur Verfügung. Die NDIS-Treiber nutzen diese Funktionen und kommunizieren über
diese miteinander. Durch die NDIS-Funktionen sind Protokoll-Treiber unabhängig von den
Netzwerkkartentreibern.
6
Abbildung 4:„Eigene Zeichnung“ ; Quelle: MSDN Library
Studienarbeit von Sebastian Sehr
Seite 8 von 23
Windows NT Netzwerkstruktur
Es gibt drei NDIS Driver Typen (siehe Abbildung 5):
1. Upper Level Protocol Drivers
2. Intermediate Drivers
3. NDIS Miniport Driver (oder Miniport NIC Driver)
Abbildung 5: Supported Intermediate Driver Configurations7
Wie die Abbildung 5 zeigt, kommuniziert der NIC-Treiber an der unteren Schnittstelle mit der
Netzwerkkarte (NIC= Network Interface Card). An der oberen Schnittstelle bedient er
entweder den Intermediate Driver oder direkt den Upper Level Protocol Driver (Transport
Driver). In dieser Abbildung ist auch dargestellt, dass der Transport Driver sowie der
Intermediate Driver an der unteren Schnittstelle ProtocolXxxx-Funktionen (siehe Kapitel
3.3.1) anbieten. Der NIC Driver, wie auch der Intermediate Driver bieten Miniport XxxxFunktionen an deren oberen Schnittstelle an.
3.1.1 Miniport Driver
Der Miniport Driver, auch als Miniport NIC Driver oder einfach nur NIC Driver bezeichnet,
ist der Netzwerkkarten-Treiber und wird vom Netzwerkkartenhersteller mit der
Netzwerkkarte mitgeliefert. Windows NT enthält auch schon Miniport Driver bekannter
Netzwerkkartenhersteller.
7
Quelle Abbildung: NDIS Intermediate Drivers, MSDN Library July 1999 (Verzeichnis : DDK Documentation,
Windows NT 4.0 DDK, Network Drivers. Design Guide, Part 3: Intermediate NDIS Drivers and TDI Drivers,…
Studienarbeit von Sebastian Sehr
Seite 9 von 23
Windows NT Netzwerkstruktur
NDIS Miniport Driver haben zwei wichtige Funktionen:
1. Die Netzwerkkarte (NIC) zu managen (senden und empfangen der Daten über die
Netzwerkkarte)
2. Über ihm liegende Driver (Intermediate Driver oder Transport Protocol Driver) mit Daten
zu beliefern
3.1.2 Intermediate Driver
Intermediate Driver liegen zwischen den Miniport Drivers und den Transport und nutzen
ebenfalls die NDIS-Funktionen. Eine typische Aufgabe der Intermediate Driver sind
Medienumsetzungen. So gibt es zum Beispiel einen WAN Intermediate Driver, der LANProtokolle auf WAN emuliert und diese Daten dann an den Miniport NIC Driver weitergibt.
Intermediate Driver kommunizieren zur unteren Schnittstelle mit dem Miniport Driver, nach
oben hin mit dem Upper Level Protocol Driver.
3.1.3 Upper Level Protocol Driver
Ein Upper Level Protocol Driver bildet die unterste Ebene einer Protokoll-Treiber-Kette und
wird oft als Transport-Protokoll-Stack implementiert, wie es bei TCP/IP oder IPX/SPX der
Fall ist.
Dieser Transport-Protkoll-Treiber bietet seine Dienste mit Hilfe der NDIS-Funktionen einem
oder mehreren Intermediate Drivers oder Netzwerkkarten-Treibern an. Nach oben hin kann
der NDIS-Treiber die TDI-Funktionen anbieten, oder er bildet die unterste Ebene eine
Netzwerkprotokoll-Kette und bietet interne Schnittstellen (Private Interface) zu höher
gelegenen Protokoll- Treibern.
Ein Upper Level Protocol Driver hat folgende Aufgaben:
 Daten der Anwendung entgegen nehmen
 Daten der sendenden Applikation in Pakete packen
 Pakete an einem niedergelegenen Treiber senden (mit Hilfe der NDIS-Funktionen)
 Ankommende Datenpakete entgegen nehmen und an die gewünschte Applikation
weiterleiten
3.2 Andere Ausgabeschnittstellen
Bis hierher wurde verdeutlicht, dass Datenpakete über das Transport-Protokoll an den
darunterliegenden Kartentreiber übermittelt werden und von dort aus zu einem entfernten
Rechner. Es ist auch möglich diese Daten nicht über die Netzwerkkarte, sondern über die
serielle Schnittstelle COM- Port, oder andere Schnittstellen auszugeben. Hierfür wird anstelle
des NIC Drivers, der Treiber für den COM- Port aufgerufen (siehe Abbildung 2).
3.3 Protokoll-Treiber
Protokoll-Treiber nehmen wie zuvor schon erwähnt im Vergleich mit dem ISO/OSI-ReferenzModell die LLC Ebene, die Schicht 3 und die Schicht 4 war. Es ist möglich in einem
Netzwerkprotokoll-Modul Protokoll-Treiber in einer Kette übereinander zu reihen. Hierbei
muss das untere Aussenglied der Kette als NDIS Protokoll-Treiber (Upper Level Protocol
Driver) realisiert sein. Da alle Windows NT Transport Treiber die TDI anbieten müssen,
muss auch das oberer Aussenglied der Protokoll-Treiber-Kette die TDI-Funktionen anbieten.
Dazwischen ist es dem Programmierer freigestellt eigene Schnittstellen (Private Interfaces) zu
definieren.
“[MSDN_ND3] Requiring that all Windows NT transport drivers expose a single common
interface (TDI) simplifies the task of developing transport drivers because only that interface
needs to be coded.”
Studienarbeit von Sebastian Sehr
Seite 10 von 23
Windows NT Netzwerkstruktur
3.3.1 Detaillierter Aufbau eines NDIS-Protokoll-Treiber
Da für das ViAA-Projekt ein NDIS-Protokoll-Treiber realisiert werden muss, wird dieser
Treiber hier nochmals genauer erörtert.
Dieser Protokoll Treiber muss als unterer Schnittstelle NDIS-Funktionen nutzen, um Daten zu
senden, zu lesen und um Informationen, die die niederen Treiber bereitstellen, aufrecht zu
erhalten. Um ein Daten-Paket oder -Pakete zur Netzwerkkarte zu senden, nutzt er NdisSend
oder NdisSendPackets.
Oder er ruft NdisInitializeEvent auf, um ein Event zu kreieren und synchronisieren. Der
Protocol Driver kann auch Betriebssystem spezifische Kernel-Mode Funktionen aufrufen, wie
KeInitializeEvent, die auch ein Event kreiert und synchronisiert.
Der Protokolltreiber stellt der NDIS eine Anzahl Eintrittspunkte (ProtocolXxx Functions8) zur
Verfügung, die von der NDIS aufgerufen werden. Die NDIS nutzt die ProtocolXxx Functions
zum Beispiel, um auf eingehende Pakete zu verweisen, den Status niederer Treiber (Miniport
Driver) zu kennen, oder um mit dem Protokolltreiber zu kommunizieren.
Notwendige ProtocolXxx Funktionen sind:
ReceiveHandler
ReceiveCompleteHandler
TransferCompleteHandler
SendCompleteHandler (abeitet mit NdisSend und NdisSendPackets)
ResetCompleteHandler (arbeitet mit NdisReset)
RequestCompleteHandler (arbeitet mit NdisRequest)
StatusHandler
StatuscompleteHandler
Optionale Funktionen sind:
BindAdapterHandler (wird aber empfohlen zu nutzen)
UnbindAdapterHandler
ReceivePacketHandler
Eine Beschreibung der NDIS ProtokollXxxx Funktionen sind im Anhang A beigefügt.
Ein NDIS Protokoll-Treiber kann auch als Netzwerkprotokoll-Treiber realisiert werden, der
direkt die Funktionen der TDI anbietet. Einen solchen Treiber, der alle protokoll-treiberspezifischen Eigenschaften besitzt, wird auch als monolithischer Protokoll-Treiber
bezeichnet. Da für das ViAA-Projekt keine mehrstufige Implementierung notwendig ist und
ein geringst möglicher Overhead angestrebt wird, wird ein monolithischer Protokoll-Treiber
zu dem gewünschten Ziel führen.
4
Schnittstellen
4.1 NDIS (Network Driver Interface Specification)
Die NDIS stellt eine definierte Anzahl von NdisXxxx-Funktionen zur Verfügung, zum
Beispiel NdisSend oder NdisSendPackets, wobei die Implementierung-Details verborgen
bleiben. Die NDIS gibt es bereits in der Version 5.0. Das bedeutet, das zu älteren Versionen
neue Funktionen hinzugekommen sind. Die Version 5.0 unterstützt zum Beispiel auch
verbindungsorientierte Netzwerke, wie ATM oder ISDN. Die NDIS-Funktionen befinden sich
in der Library ndis.sys.
8
ProtocolXxx-Functions siehe Anhang A
Studienarbeit von Sebastian Sehr
Seite 11 von 23
Windows NT Netzwerkstruktur
Jeder Ndis3.0 kompatible Protokolltreiber, der für Windows NT geschrieben wird, kann über
ein Netzwerk mit anderen Rechnern kommunizieren.9
Wie die Abbildung 6 zeigt, bildet die NDIS-Schnittstelle eine Hülle um die NDIS-Treiber.
Sie abstrahiert die Netzwerkhardware von den Netzwerktreibern und spezifiziert zudem eine
Standardschnittstelle zwischen den verschiedenen Treiberschichten. Dadurch sind die unteren
Netzwerkkartentreiber
(Miniport NIC Driver), von den höheren Transporttreibern
unabhängig. Egal ob der Kartentreiber mit dem Transporttreiber oder dem Betriebssystem
kommuniziert oder Hardwareinterrupts auslöst, er benutzt immer dazu die NDIS-Funktionen.
Es ist auch möglich mehrere Netzwerkkarten nebeneinander in einem Rechner zu installieren,
ohne dass man sich um deren Verwaltung kümmern muss.
TDI
Abbildung 6: NDIS-Interface10
4.2 TDI (Tansport Driver Interface)
Die TDI stellt die einheitliche Schnittstelle für alle Transport-Protokolle dar. Sie findet bereits
bei Windows 95 für das TCP/IP-Protokoll Verwendung. Im Gegensatz zur NDIS, gibt es
keine TDI-Treiber. Die TDI beschreibt vielmehr die Kommunikation zwischen
Netzwerkprotokollen und den darüber liegenden Schichten, wie zum Beispiel Redirectoren
und Server.
Wie die Abbildung 7 zeigt, liegen über dem TDI-Interface die TDI Clients, wie z.B. der
Socket Emulator, oder die Redirectoren und Server. Diese TDI Clients stellen das Bindeglied
zwischen Transportprotokoll und Anwendung dar.
Da alle Transport-Protokolle (auch Transport Providers genannt) die TDI anbieten, müssen
Anwendungen, die eine andere Schittstelle benötigen (zum Beispiel Winsock- oder NetBIOSSchnittstelle), Zugang zur TDI haben.
9
[Vgl.] SDB97
Quelle Abbildung: MSDN Library July 1999
10
Studienarbeit von Sebastian Sehr
Seite 12 von 23
Windows NT Netzwerkstruktur
Für zwei bekannte Schnittstellen, die Winsock- und die NetBIOS-Schnittstelle enthält
Windows NT Emulatoren, die die Daten über die TDI an das benötigte Transport-Protokoll
bindet.
Abbildung 7: TDI Clients and Transport Providers11
Programme, welche die NetBIOS- oder die Windows Sockets -Schnittstelle benutzen, können
nur mit Protokolltreibern kommunizieren, die das TDI unterstützen. Der Grund liegt darin,
dass die Winsock nur mit Protokoll-Treibern kommunzieren, die die TDI anbieten. Dies wird
in den Kapiteln 4.3 und 5.1 noch genauer erörtert.
Die TDI12 beinhaltet:

Für Intermediate Driver, eine definierte Anzahl von Windows NT Standard kernelmode Routinen, die über ihr liegende Clients nutzen, um I/O Requests (IRPs) zu
senden. Diese können über die Support Routinen Zw..File -Routinen und/oder
IoCallDriver aufgerufen werden.

Callback Routinen, die jeder TDI Client nutzen kann, um Meldungen vom
unterliegenden Tranport Treiber zu bekommen, sollten diese anstehen.

TdiXxx-Funktionen, über die Tranport Driver und TDI Clients kommunizieren.

TdiBuildXxxx Macros und Funktionen, die TDI Clients nutzen, um Anfragen an die
Tranport Protkolle zu senden.
11
Abbildung Quelle: The Transport Driver Interface, MSDN Library July 1999 (Verzeichnis : DDK
Documentation, Windows NT 4.0 DDK, Network Drivers, Design Guide, Part 3: Intermediate NDIS Driver and
TDI Drivers, TDI Drivers and their Clients
12
[Vgl.] MSDN_ND5
Studienarbeit von Sebastian Sehr
Seite 13 von 23
Windows NT Netzwerkstruktur
4.3 SPI (Service Provider Interface)
Was von der Anwendungssicht aus die API (Application Programmer Interface) für die
Winsock ist, ist von den Service Providern aus die SPI. Sie bietet wie die API definierte
Funktionen und liegt im User-Mode (Ring3). Zu fast jeder API-Funktion gibt es eine
entsprechende SPI-Funktion.
Die Abbildung 8 zeigt den Zusammenhang zwischen API, SPI und den TransportProtokollen. Als Base Protocol werden Transport-Protkolle bezeichnet, die fähig sind eine
Netzwerk-Verbindung einzugehen und somit alleine stehen können. Wie TCP und SPX
solche Base Protocol sind, wird auch der ViAA-Treiber, als NDIS Upper Level Protocol
Driver implementiert, ein Base Protocol sein. Dieses Base Protocol kann direkt über die SPI
mit der Winsock kommunizieren oder es bauen Layered Protocols auf ihm auf.
Ein Layered Protocol, auch als Service Provider bezeichnet, hat die Eigenschaft, dass es
alleine keine Vollständige Kommunikation aufbauen kann. Security Manager werden zum
Beispiel als Layered Protocol realisiert. Es ist möglich mehrere Layered Protocols in eine
Kette übereinander zu schichten, wobei das oberste Layered Protocol der Kette mit der
Winsock kommuniziert.
Es ist möglich einen Layered Protocol zu programmieren und diesen in eine bereits
bestehende Transport-Kette einzubetten. Die Protokoll-Reihenfolge steht in der
WSAProtocol_INFOW, wo auch das „neue“ Layered Protcoll registriert werden muss.
Die Protokolle sind als DLLs realisiert, die erst beim Aufruf durch die Anwendung in den
Speicher geladen werden. Neuere Bezeichnungen werden statt xxxx.dll als xxxx.WSP
bezeichnet, wobei dies keinen Einfluss auf die Funktion des Service Provider hat.
Abbildung 8: Service Provider Interface
Anmerkung: Layered Protocols werden auch als Layered Service Provider oder als Transport
Service Provider bezeichnet. Der Winsock- Emulator ist zum Beispiel ein solcher Service
Provider.
Base Protocols werden als Base Transport Service Provider oder einfach nur als Transport
Service Provider bezeichnet. Wichtig bleibt: ein Service Provider, der im Stande ist ein
remote Verbindung einzugehen, ist ein Base Protocol. Weitere Informationen sind unter
MSDN_SPI zu finden.
Studienarbeit von Sebastian Sehr
Seite 14 von 23
Windows NT Netzwerkstruktur
5
Zugriff auf die Transport-Providers
5.1
Anwendungen für die Winsock
Abbildung 9: Windows Sockets Helper DLL Architecture13
Möchte eine Anwendung über die Winsock Daten versenden, wird der angeforderte Transport
Service mit Hilfe des Socket Service Provider Msafd.dll gebunden. Die Msafd.dll ist bereits
in Windows NT enthalten.
Um diese Bindung einzugehen, wird für jeden Transport Provider, eine eigene Socket-HelperDLL benötigt. Für TCP/IP heißt sie WSHTCPIP.DLL.
Wird ein Transport Protocol Driver mit der dazugehörigen Helper-DLL (WSH DLL)
installiert wird, wird das Netzwerk Setup automatisch Msafd.Dll als Service Provider für die
WSH DLL konfigurieren.
Manche Winsock Sockets Funktionen benötigen nicht die WSH DLL. Sendende und
ankommende Daten kommunizieren zum Beispiel direkt über die Msafd.dll mit dem
Transport Protocol, wenn die Verbindung erst einmal besteht.
Möchte man den ViAA-Treiber für die Winsock zugänglich machen, wird neben dem ViAATransport Treiber noch eine Helper-DLL benötigt, die zum Beispiel WSHViAA.Dll heißen
könnte.
Die Helper Dlls sind in MSDN_ND7 beschrieben.
13
Quelle Abbildung MSDN Library July 1999
Studienarbeit von Sebastian Sehr
Seite 15 von 23
Windows NT Netzwerkstruktur
5.2 Anwendungenzugriff über den Redirector
Da Windows NT Workstations Server-, wie auch Client-Funktionen übernehmen können,
enthält Windows NT zum Datenaustausch zwei Module, Server und Redirectoren.
Die Server, so wie die Redirectoren gehören zur Gruppe der TDI-Clients. Über den Redirector
gelangen die Daten an den Transport Provider, in diesem speziellen Fall an den ViAATreiber.
Applikationen, die sich über den Redirektoren und Server befinden, liegen im User-Mode.
Wie auch bei allen anderen Treiberschichten der Windows NT Architektur, existiert eine
einheitliche Schnittstelle, um den Zugang zu den Netzwerk-Ressourcen zugänglich zu
machen, die für alle installierten Redirektoren unabhängig ist. Netzwerk Ressourcen sind über
zwei Komponenten möglich; den Multiple Universal Naming Convention Provider (MUP)
und den Multi-Provider Router (MPR)14.
Soetwas muß man nicht zitieren, bitte in eigenen Worten wiedergeben.
Da verschiedene Netzwerk-Anbieter, verschiedene Schnittstellen zur Kommunikation mit
ihren Redirectoren haben, bedarf es einer Provider DLL, die im Stande ist, mit dem MPR und
dem Redirector zu kommunizieren. Der Redirector und die dazugehörige Provider DLL wird
von jeweiligen Netzwerkanbieter mitgeliefert. Abbildung 10 verdeutlicht den Zusammenhang
zwischen Anwendung und Transport-Protokoll. Anwendungen, die das WNet API
(Applikation Programmer Interface) nutzen, fordern mit Hilfe der API-Funktionen eine
Verbindung an. Diese wird an den unter ihr liegenden MUP weitergeleitet, der den passenden
Redirector aussucht.
Abbildung 10: Multi-Provider Router
Bei der Installation eines Transport-Protokolls, wird dieser in eine „Rang-Liste“ eingetragen.
Der Redirector arbeitet die Liste aller ihm verfügbaren Transport-Protokolle ab und versucht
eine Probe-Verbindung aufzubauen. Der Redirector bekommt nach einer gewissen Zeit
14
[Vgl.] MSDN_RK7
Studienarbeit von Sebastian Sehr
Seite 16 von 23
Windows NT Netzwerkstruktur
Meldungen, welches Transport-Protokol eine erfolgreiche Kommunikation eingehen kann
und nimmt von diesen den, mit der höchsten Priorität.
6
Registrierung
6.1 NDIS Protocol Driver
Die folgende Darstellung gibt nur einen Einblick und kann unter MSDN_ND_9 nachgelesen
werden.
Jeder Protocol Driver muss die Eintrittsfunktion DriverEntry besitzen und diese explizit
aufrufen, damit der Loader sie identifizieren kann. Die Definition von DriverEntry ist bei
jedem Windows NT kernel-mode Driver die selbe. DriverEntry kann auch sogenannte Spin
Locks initialisieren, die die Synchronisation der Threads unterstützen.
Damit der Protokoll-Driver die NDIS-Funktionen nutzen kann und er als Protocol Driver auch
registriert wird, muss dieser NdisRegisterProtocol aufrufen. NdisRegisterProtocol gibt unter
anderem den NdisProtocolHandle zurück, der gepeichert werden muss, da er für weitere
Ndis-Funktionsaufrufe benötigt wird.
Bevor jedoch NdisRegisterProtcol aufgerufen werden kann, müssen folgende Bedingungen
erfüllt sein:
1. Mögliche Eintrittspunkte anderer Treiber müssen mit Null initialisiert werden. Diese
haben die Struktur NDIS_PROTOCOL_CHARACTERRISTICS und können zum
Beispiel mit Hilfe von NdisZeroMemory auf Null gesetzt werden.
2. Die Adressen verwendeter ProtocolXxxx-Funktionen müssen gespeichert werden.
6.1.1 Öffnen eines unterliegenden Adapters
Die Registry beinhaltet unter anderem Informationen über mögliche Adapter, an die sich der
Protocol Driver binden kann. Bei jeder Installation werden neue Einträge in die Registry
eingefügt.
Diese Informationen werden von DriverEntry aus der Registry in HKEY_LOCAL_
MACHINE\SYSTEM\CurrentControlSet\Services\ProtocolComponentName\Linkage
gelesen.
NdisOpenProtocolConfiguration gibt den Handle für den Registry-Key HKEY_LOCAL_
MACHINE\ SYSTEM\CurrentControlSet\Services\DeviceInstance\Parameters\Protcol
Name zurück, wo der Protocl Driver Adapter spezifische Informationen speichern kann. Um
diese Inforamtionen zu speichern, kann nur eben angegebene Pfad genutzt werden und es
müssen zu dem noch die NDIS- Funktionen NdisRead/WriteConfiguration genutzt werden.
Nachdem der Protocol Driver die benötigten Informationen hat und er NdisRegisterProtocol
aufgerufen hat, muss er sich noch an einen oder mehrere Netzwerkkarten binden, bevor er
Daten senden und empfangen kann. Dafür nutzt er NdisOpenAdapter.
Bei diesem Funktionsaufruf übergibt der Protocol Driver der NDIS unter anderem seinen
Handle, den die NDIS für spätere Funktionsaufrufe nutzt, wie ProtocolReceive oder
ProtocolStatus. Die NDIS ihrerseits gibt dem Protocol Driver ihr Handle zurück, den der
Protocol Driver bei Funktionsaufrufen wie NdisSend benötigt.
Mit NdisOpenAdapter übergibt der Protocol Driver auch den Adapter-Namen, den er zuvor
von der Registry gelesen hat und ein MediumArray. Ist der Funktionsaufruf erfolgreich, wählt
Studienarbeit von Sebastian Sehr
Seite 17 von 23
Windows NT Netzwerkstruktur
der NIC Driver ein Medium von dem MediumArray aus. Damit ist der Protocol Driver an die
Netzwerkkarte gebunden und im Stande Daten zu versenden.
Protocol Driver
Registrierung
NdisRegisterProtocol
Netzwerkkarte(n) binden
NdisOpenAdapter
(1) Protocol Driver Handle
Abbildung 11 veranschaulicht die Vorgehensweise.
Protocol Driver
(2) NDIS Handle
NDIS
Daten Senden
NdisSend
Abbildung 11: Reihenfolge der Initialisierung des Protocol Drivers 15
7
Résumeé
Für die Realisierung des ViAA-Projekts wird ein NDIS Upper Level Protocol Driver benötigt,
der zur unteren Schnittstelle die NDIS-Funktionen wahrnimmt und nach oben hin die TDIFunktionen anbietet. In diesem Treiber müssen die ViAA-spezifischen Anforderungen
implementiert werden (Netzwerkkarten-Anbindung über die MAC-Adresse und
Frameumsetzung).
Möchte man die Winsock für den ViAA-Treiber anbieten, wird eine Helper-DLL benötigt
(siehe Kapitel 5.1).
8
Abbildungsverzeichnis
Abbildung 1:ViAA Szenario ................................................................................................................................... 4
Abbildung 2: The Windows 2000 TCP/IP network model ..................................................................................... 6
Abbildung 3: Windows NT layered architecture .................................................................................................... 7
Abbildung 4:Treiberarten unterhalb der TDI .......................................................................................................... 7
Abbildung 5: Supported Intermediate Driver Configurations ................................................................................. 9
Abbildung 6: NDIS-Interface ................................................................................................................................ 12
Abbildung 7: TDI Clients and Transport Providers .............................................................................................. 13
Abbildung 8: Service Provider Interface ............................................................................................................... 14
Abbildung 9: Windows Sockets Helper DLL Architecture .................................................................................. 15
Abbildung 10: Multi-Provider Router ................................................................................................................... 16
Abbildung 11: Reihenfolge der Initialisierung des Protocol Drivers .................................................................... 18
15
Abbildung: Eigene Zeichnung
Studienarbeit von Sebastian Sehr
Seite 18 von 23
Windows NT Netzwerkstruktur
9
Abkürzungsverzeichnis
API
ATM
FAQ
IP
IRPs
IRQL
ISO
LLC
MAC
MPR
MUP
NDIS
NIC
NT
OSI
QoS
TCP
TDI
UDP
WAN
Application Programming Interface
Asynchronous Transfer Mode
Frequently Asked Questions
Internet Protocol
I/O Request Packets
Interrupt Request Level
International Organisation of Standardisation
Logical Link Control
Media Access Control
Multi-Provider Router
Multiple Universal Naming Convention Provider
Network Driver Interface Specification
I/O Requests
New Technology
Open System Interconection
Quality of Service
Transmission Control Protocol
Transport Driver Interface
User Datagram Protocol
Wide Area Network
10 Quellenangabe
10.1 Referenzierte Quellen dieser Arbeit
RL99
ULRICH REMBOLD/ PAUL LEVI: „Einführung in die Informatik für
Naturwissenschaftler und Ingenieure“, HanserVerlag
SDB97
Siemens AG, Windows NT-Kurs Unterlagen SBD-NTCOMP, Stand
09/97
MSDN Library July 1999 (Verzeichnis : DDK Documentation, Windows NT 4.0 DDK,
Network Drivers, Design Guide, …)
MSDN_ND1
Verzeichnis: …, Part 1: Network Drivers, Chapter 1: General Network
Architecture of Windows, Windows Network Architecture and the OSI
Modell
MSDN_ND3
Verzeichnis: …, Part 1: Network Drivers, Chapter 1: General Network
Architecture of Windows, 1.2 Types of NDIS Drivers, 1.2.2 Transpoer
Driver
MSDN_ND5
Verzeichnis: Verzeichnis: …,Part 3: Intermediate Drivers and TDI
Drivers, Chapter 3 TDI Transports and their Clients
Studienarbeit von Sebastian Sehr
Seite 19 von 23
Windows NT Netzwerkstruktur
MSDN_ND9
Verzeichnis: Verzeichnis: …,Part 3: Intermediate Drivers and TDI
Drivers, Chapter 2 NDIS Protocol Drivers
MSDN_ND7
…,Part 3: Intermediate Drivers and TDI Drivers, Chapter 6: Transport
Helper Dlls for Windows Sockets
MSDN_ND12
… Part 3: Intermediate NDIS Driver and TDI Drivers, TDI Drivers and
their Clients, The Transport Driver Interface
MSDN_ND10
… Part3: Intermediate NDIS Driver and TDI Drivers, Chapter 2: NDIS
Protocol Drivers, 2.1 Protocol Driver Entry and Inizialization, 2.1.1.
Registering as an NDIS Protocol Drivers
MSDN Library July 1999 (Verzeichnis Windows Ressource Kits, Windows NT Server 4.0
Ressource Kit, Windows NT Server 4.0 Networking Guide, Chapter 1: Windows NT
Networking Architecture,…
MSDN_RK1
…, The Windows NT Networking Architecture, Streams
MSDN_RK7
…, The Windows NT Networking Architecture, Network Ressource
Access
MSDN_SPI
http://msdn.microsoft.com/library/default.asp
Verzeichnis: Platform SDK, Networking and Directory Services, windows
sockets Version 2, Windows Sockets Version 2 SPI, Overviews, Windows
sockets 2 Architectural Overviews,...
..., Function Interface Modul
..., Windows Sockets 2 Service Provider
..., Data Transport Providers
10.2 Weitere Quellenangaben
MSDN Library July 1999 (Verzeichnis : DDK Documentation, Windows NT 4.0 DDK,
Network Drivers, Design Guide,...
10.2.1 Grundlagen und Übersicht für die Programmierung
..., Part 1: Network Drivers,
Chapter 1: General Network Architecture of Windows, 1.2 Types of NDIS Drivers,
Chapter 2: Network Driver Programming Considerations
NDIS-Protokoll-Treiber
Verzeichnis: ..., Part 3: Intermediate Drivers and TDI Drivers, Chapter 2: NDIS Protocol
Drivers
TDI-Funktionen und Helper Dll:
Verzeichnis: ..., Part 3: Intermediate Drivers and TDI Drivers, Chapter 3-6
Verzeichnis: ..., Network References, Part 2: TDI,...
Studienarbeit von Sebastian Sehr
Seite 20 von 23
Windows NT Netzwerkstruktur
10.2.2 Winsock
Ausführliche Internet-Seite über die Winsock
http://www.stardust.com/winsock/ws_vers.htm#WS2Arch
Übersicht Seite über ein Buch „Windows Sockets Network Programming“
http://www.sockets.com/toc.htm
10.3 Weitere Internet Links
MSDN online:
http://msdn.microsoft.com/library/default.asp
DDK-Dokumente für Windows 2000:
http://www.microsoft.com/ddk/ddkdocs/win2K/default.htm
Netzwerk-Implementierung-Details sind bei Microsoft in den “White Papers” veröffentlicht:
http://www.microsoft.com/hwdev/network/
Übersicht und FAQs über TDI und NDIS mit Beispielcode:
http://www.pcausa.com/search.htm
Ein Glossar für Netzwerke:
http://www.whatis.com/
Netzwerk-Implementierung-Details sind in den für Microsoft White Papers veröffentlicht:
http://www.microsoft.com/hwdev/network/
DDK-Dokumente für Windows 2000:
http://www.microsoft.com/ddk/ddkdocs/win2K/default.htm
Studienarbeit von Sebastian Sehr
Seite 21 von 23
Windows NT Netzwerkstruktur
11 Anhang A
11.1 Protocolxxx-Functions16
Before making this call, DriverEntry must do the following:
1. Zero-initialize a structure of type NDIS_PROTOCOL_CHARACTERISTICS, for
instance with a call to NdisZeroMemory. This assures that unused members for
optional entry points are set to NULL. If the structure is not zeroed, any unused
members must be set to NULL before calling NdisRegisterProtocol.
2. Store the addresses of the mandatory ProtocolXxx functions, as well as any optional
ProtocolXxx functions the driver exports, in the characteristics structure members, as
follows:
BindAdapterHandler
This is an optional function in protocol drivers. A PnP-ready protocol driver specifies
this entry point so it can be called by NDIS at the ProtocolBindAdapter function when
an adapter is available. Specifying this entry point requires a V4.0 structure at
ProtocolCharacteristics.
UnbindAdapterHandler
This is a required function if the protocol driver registered a ProtocolBindAdapter
function. Specifying this entry point also requires a V4.0 structure at
ProtocolCharacteristics.
OpenAdapterCompleteHandler
This is a required function. If a protocol driver’s call to NdisOpenAdapter returns
NDIS_STATUS_PENDING, ProtocolOpenAdapterComplete is subsequently called to
complete the binding operation.
CloseAdapterCompleteHandler
This is a required function. If a protocol driver’s call to NdisCloseAdapter returns
NDIS_STATUS_PENDING, ProtocolCloseAdapterComplete is subsequently called
to complete the unbinding operation.
ReceiveHandler
This is a required function. ProtocolReceive is called with a pointer to a lookahead
buffer. If this buffer contains less than the full, received network packet,
ProtocolReceive calls NdisTransferData with a protocol-allocated packet descriptor
specifiying protocol-allocated buffer(s) to obtain the remainder of the received packet.
ReceiveCompleteHandler
This is a required function. ProtocolReceiveComplete is called to indicate that any
received packets previously indicated to ProtocolReceive can now be postprocessed.
TransferCompleteHandler
This is a required function unless the protocol binds itself exclusively to underlying
NIC driver(s) that indicate packets with NdisMIndicateReceivePacket.
ProtocolTransferDataComplete is called when a previous call to NdisTransferData
returned NDIS_STATUS_PENDING and the remaining data has been copied into the
protocol-supplied buffers chained to a given packet descriptor.
ReceivePacketHandler
This is an optional function. A ProtocolReceivePacket function should be provided if
the protocol driver might be bound to a NIC driver that indicates an array of one or
more packets by calling NdisMIndicateReceivePacket. Specifying this entry point
requires a V4.0 structure at ProtocolCharacteristics.
16
Quelle MSDN_ND10
Studienarbeit von Sebastian Sehr
Seite 22 von 23
Windows NT Netzwerkstruktur
SendCompleteHandler
This is a required function. ProtocolSendComplete is called for each packet
transmitted with a call to NdisSend that returned NDIS_STATUS_PENDING as the
status of the send operation. If an array of packets is sent, ProtocolSendComplete is
called once for each packet passed to NdisSendPackets, whether or not it returned
pending.
ResetCompleteHandler
This is a required function. ProtocolResetComplete is called when a protocol-initiated
reset
operation,
begun
with
a
call
to
NdisReset that
returned
NDIS_STATUS_PENDING, is completed.
RequestCompleteHandler
This is a required function. ProtocolRequestComplete is called when a protocolinitiated query or set operation, begun with a call to NdisRequest that returned
NDIS_STATUS_PENDING, is completed.
StatusHandler
This is a required function. ProtocolStatus is called to handle status changes indicated
by the underlying NDIS driver.
StatusCompleteHandler
This is a required function. ProtocolStatusComplete is called by NDIS, along with
ProtocolStatus, to report the start and end of an NDIS- or NIC-driver-initiated reset
operation.
A protocol driver should set the ProtocolCharacteristics TranslateHandler and
UnloadHandler members to NULL. The TranslateHandler member is reserved for future
use. NDIS never calls an entry point specified in UnloadHandler on Windows NT platforms.
Instead, the Windows NT I/O Manager calls the Unload routine that the protocol driver sets in
the driver object passed in to the protocol's DriverEntry function.
Studienarbeit von Sebastian Sehr
Seite 23 von 23
Herunterladen