Implementieren eines Netzwerkanbieters
Ein Netzwerkanbieter ist eine DLL, die es dem Windows-Betriebssystem ermöglicht, ein bestimmtes Netzwerkprotokoll zu unterstützen. Dazu wird die Netzwerkanbieter-API implementiert. Bei dieser API handelt es sich um eine Reihe von Funktionen, die der Multiple Provider Router (MPR) aufruft, um mit dem Netzwerk zu kommunizieren. Der Netzwerkanbieter übersetzt diese Aufrufe dann in netzwerkspezifische API-Aufrufe, um die vom MPR angegebene Aktion auszuführen. Auf diese Weise kann das Windows-Betriebssystem mit neuen Netzwerkprotokollen interagieren, ohne ihre netzwerkspezifischen APIs verstehen zu müssen.
Um einen Netzwerkanbieter zu erstellen, schreiben Sie eine DLL, die die NPGetCaps-Funktion exportiert.
Die Unterstützung der anderen Funktionen in der Netzwerkanbieter-API ist optional. Wenn Ihr Netzwerkanbieter keine Funktion benötigt, muss Ihre DLL sie weder implementieren noch eine Stubimplementierung bereitstellen. Weitere Informationen finden Sie in den einzelnen Funktionsthemen unter Netzwerkanbieterfunktionen.
Die Ausnahme besteht darin, dass Sie, wenn Sie eine der folgenden Enumerationsfunktionen unterstützen, auch die beiden anderen Funktionen unterstützen müssen: NPOpenEnum, NPEnumResource und NPCloseEnum.
In den folgenden Richtlinien wird beschrieben, wie Sie einen Netzwerkanbieter schreiben, der gut mit dem MPR und dem Windows-Betriebssystem interagiert. Ihr Anbieter sollte nach Möglichkeit die folgenden Richtlinien für Geschwindigkeit, Validierung und Routing einhalten.
Geschwindigkeit
Ein Netzwerkanbieter sollte schnell ermitteln, ob eine Netzwerkressource seine eigene ist. Dies liegt daran, dass die MPR möglicherweise viele Anbieter durchlaufen muss, um den Besitzer einer Ressource zu finden.
Wenn der Netzwerkanbieter die Ressource nicht besitzt, sollte er sofort den WN_BAD_NETNAME status Code zurückgeben.
Es ist auch wichtig, dass Anbieter, die NPGetDirectoryType unterstützen, ergebnisse für diese Funktion schnell zurückgeben, da sie aufgerufen wird, während WinFile die Verzeichnisstruktur zeichnet.
Überprüfen
Die Reihenfolge der Validierung ist wichtig. Ein Netzwerkanbieter sollte zunächst ermitteln, ob sein Netzwerk gestartet wird, und dann ermitteln, ob das Netzwerk und der Netzwerkanbieter den Vorgang unterstützen. Wenn der Netzwerkanbieter nach diesen Überprüfungen Netzwerkressourcen empfängt, sollte er bestimmen, ob er sie besitzt. Schließlich sollten andere Parameter überprüft werden.
Routing
Wenn die MPR den Netzwerkanbieter durchlaufen muss, versucht es alle Anbieter, bis einer den Anruf akzeptiert. Mit anderen Worten, der MPR versucht immer, einen Netzwerkanbieter zu finden.
Er notiert sich jedoch den ersten schwerwiegenden Fehler, der von einem Anbieter gemeldet wurde. Fehler wie ERROR_BAD_NETPATH, ERROR_BAD_NET_NAME, ERROR_INVALID_PARAMETER, ERROR_INVALID_LEVEL gelten als unbedeutend, da sie einfach bedeuten, dass der Anbieter die Ressource nicht verwaltet. Wenn der Anbieter jedoch mit dem Fehler ERROR_INVALID_PASSWORD oder einem anderen signifikanten Fehler ausfällt, zeichnet MPR diesen Fehler auf und fährt den Zyklus über die Netzwerkanbieter fort. Im Allgemeinen meldet der MPR beim Routing, wenn kein Anbieter den Anruf akzeptiert, den ersten schwerwiegenden Fehler, der beim Radfahren über die Netzwerkanbieter auftritt.
Ihr Netzwerkanbieter sollte dieses Verhalten des MPR berücksichtigen, wenn er entscheidet, welche Fehlermeldung zurückgegeben werden soll.
Implementierungshinweis
Beim Implementieren von Netzwerkanbieter-DLL's darf der Anbieter keine anderen Windows-Netzwerkfunktionen, Shell-APIs oder andere pfadbasierte UNC-Abfragen aufrufen, die zu einem erneuten Wiederholen des MPR-Subsystems führen können. Wenn Sie solche Aufrufe von einer Netzwerkanbieter-DLL tätigen, kann es bei der Anwendung oder anderen Betriebssystemkomponenten zu Konflikten, schlechter Leistung oder Deadlocks innerhalb des MPR-Subsystems kommen.