Informationen zu RAS-Verwaltungs-DLLs

Die RAS-Verwaltungs-DLL exportiert Funktionen, die der RAS-Server aufruft, wenn ein Benutzer versucht, eine Verbindung herzustellen oder die Verbindung zu trennen. Hier sind einige der möglichen Verwendungsmöglichkeiten für eine RAS-Verwaltungs-DLL:

  • Entscheiden Sie, ob ein Benutzer eine Verbindung mit dem Server herstellen darf. Die Verwaltungs-DLL kann zusätzlich zur Standardmäßigen RAS-Benutzerauthentifizierung eine Sicherheitsüberprüfung bereitstellen.
  • Notieren Sie sich die Zeit, zu der jeder Benutzer eine Verbindung mit dem Server herstellt und die Verbindung vom Server trennt. Dies kann für Abrechnungs- oder Überwachungszwecke nützlich sein.
  • Weisen Sie jedem Benutzer eine IP-Adresse zu. Dies ist für die Sicherheit nützlich, da dieses Feature verwendet wird, um die Verbindung eines Benutzers einem bestimmten Computer zuzuordnen.

Der Speicherort der RAS-Verwaltungs-DLL wird in der Registrierung angegeben. Weitere Informationen finden Sie unter Setup der RAS-Verwaltungs-DLL-Registrierung.

RAS unterstützt mehrere Verwaltungs-DLLs. Die Registrierung unterstützt mehrere DLL-Speicherorte. RAS ruft die Funktionen in den DLLs in der Reihenfolge auf, in der die DLLs in der Registrierung aufgeführt sind; Weitere Informationen finden Sie unter Setup der RAS-Verwaltungs-DLL-Registrierung.

Windows 2000 Server: RAS unterstützt nicht mehrere DLLs.

Eine RAS-Verwaltungs-DLL muss alle folgenden Funktionen implementieren und exportieren:

MprAdminAcceptNewLink

MprAdminInitializeDll

MprAdminLinkHangupNotification

MprAdminTerminateDll

Darüber hinaus muss die RAS-Verwaltungs-DLL entweder implementieren und exportieren.

MprAdminAcceptNewConnection und

MprAdminConnectionHangupNotification

oder

MprAdminAcceptNewConnection2 und

MprAdminConnectionHangupNotification2

Wenn nicht alle erforderlichen Funktionen implementiert sind, kann RAS nicht gestartet werden.

Windows 2000 Server: Eine Verwaltungs-DLL muss die Funktionen MprAdminGetIpAddressForUser und MprAdminReleaseIpAddress implementieren. Wenn die DLL eine dieser Funktionen implementiert, muss sie auch die andere implementieren.

RAS ruft die Funktion MprAdminInitializeDll auf, wenn der Routing- und RAS-Dienst zum ersten Mal gestartet wird. Die Funktion MprAdminInitializeDll bietet der Verwaltungs-DLL die Möglichkeit, die erforderliche Initialisierung durchzuführen. Ebenso ruft RAS den Dienst MprAdminTerminateDll auf, wenn der Routing- und RAS-Dienst heruntergefahren wird. Mit dieser Funktion kann die Verwaltungs-DLL alle erforderlichen Bereinigungen vor dem Beenden durchführen.

Mit den Funktionen MprAdminAcceptNewConnection und MprAdminConnectionHangupNotification kann die DLL Benutzerverbindungen mit dem Server überwachen. Ein RAS-Server ruft die Funktion MprAdminAcceptNewConnection auf, wenn ein Benutzer versucht, eine Verbindung herzustellen. Mit dieser Funktion kann verhindert werden, dass der Benutzer eine Verbindung herstellt. Die MprAdminAcceptNewConnection-Funktion kann auch Protokolleinträge für die Abrechnung oder Überwachung generieren. Wenn der Benutzer die Verbindung trennt, ruft der RAS-Server die MprAdminConnectionHangupNotification-Funktion auf, die den Zeitpunkt protokollieren kann, zu dem der Benutzer die Verbindung getrennt hat.

Die Funktionen MprAdminAcceptNewConnection2 und MprAdminConnectionHangupNotification2 ähneln MprAdminAcceptNewConnection und MprAdminConnectionHangupNotification. Wenn RAS jedoch die Funktionen MprAdminAcceptNewConnection2 und MprAdminConnectionHangupNotification2 aufruft, übergibt RAS einen zusätzlichen Parameter vom Typ RAS_CONNECTION_2.

RAS unterstützt mehrere Verwaltungs-DLLs. Der Remotezugriffsbenutzer darf nur eine Verbindung herstellen, wenn die Implementierung der Funktion MprAdminAcceptNewConnection oder MprAdminAcceptNewConnection2 in jeder der DLLs die Verbindung akzeptiert. Anders ausgedrückt: Jede DLL muss die Verbindung akzeptieren, damit der Benutzer eine Verbindung herstellen kann.

Es ist möglich, dass eine einzelne RAS-Verbindung beim Herstellen einer Verbindung mit einem RAS-Server mehrere Verbindungen verwendet. Die Funktionen MprAdminAcceptNewLink und MprAdminLinkHangupNotification ermöglichen es der Verwaltungs-DLL, einzelne Links in einer Verbindung zu verwalten. RAS ruft MprAdminAcceptNewLink auf, wenn ein neuer Link für eine Verbindung eingerichtet wird. Da alle Verbindungen mindestens einen Link umfassen, ruft RAS mprAdminAcceptNewLink immer einmal unmittelbar nach dem Zurückgeben von MprAdminAcceptNewConnection oder MprAdminAcceptNewConnection2 auf, sofern MprAdminAcceptNewConnection oder MprAdminAcceptNewConnection2 die Verbindung akzeptiert haben. RAS ruft MprAdminLinkHangupNotification auf, wenn ein Link für eine Verbindung heruntergefahren wird.

Da RAS mehrere Verwaltungs-DLLs unterstützt, darf der Remotezugriffsbenutzer nur dann eine Verbindung herstellen, wenn die Implementierung der MprAdminAcceptNewLink-Funktion in jeder der DLLs die Verbindung akzeptiert. Anders ausgedrückt: Jede DLL muss den Link akzeptieren, damit der Link eingerichtet wird.

Nachdem der RAS-Server einen Benutzer authentifiziert hat, ruft er die Funktion MprAdminGetIpAddressForUser auf, um eine IP-Adresse für den Remoteclient abzurufen. Diese Funktion bietet ein alternatives Schema zum Zuordnen einer IP-Adresse zu einem Einwahlbenutzer. Wenn MprAdminGetIpAddressForUser nicht implementiert ist, ordnet ein RAS-Server dem Remotebenutzer eine IP-Adresse zu, die aus einem statischen Pool mit IP-Adressen ausgewählt oder von einem DHCP-Server (Dynamic Host Configuration Protocol) ausgewählt ist. Mit der Funktion MprAdminGetIpAddressForUser kann die DLL diese Standard-IP-Adresse überschreiben und eine bestimmte IP-Adresse für jeden Benutzer angeben. Die Funktion MprAdminGetIpAddressForUser kann ein Flag festlegen, das dazu führt, dass RAS die MprAdminReleaseIpAddress-Funktion aufruft, wenn der Benutzer die Verbindung trennt. Die DLL kann dann MprAdminReleaseIpAddress verwenden, um die Zuordnung der Benutzer-zu-IP-Adressen zu aktualisieren.

RAS unterstützt mehrere Verwaltungs-DLLs, ruft jedoch die Funktionen MprAdminGetIpAddressForUser und MprAdminReleaseIpAddress nur in der ersten DLL auf, die sie implementiert und exportiert. RAS ignoriert Implementierungen dieser Funktionen in den anderen DLLs. RAS überprüft die DLLs für diese Funktionen in der Reihenfolge, in der sie in der Registrierung aufgeführt sind.

RAS serialisiert Aufrufe in der Verwaltungs-DLL. Ein Aufruf einer der DLL-Funktionen für einen bestimmten RAS-Client schließt einen Aufruf dieser Funktion für einen anderen RAS-Client nicht vor. RAS ruft die Funktion für den anderen Client erst auf, wenn der erste Aufruf abgeschlossen ist. Darüber hinaus erstreckt sich die Serialisierung auf bestimmte Gruppen von Funktionen. Die IP-Adressfunktionen werden als Gruppe serialisiert. ein Aufruf von MprAdminGetIpAddressForUser oder MprAdminReleaseIpAddress blockiert Aufrufe an beide Funktionen, bis der erste Aufruf zurückgegeben wurde. MprAdminAcceptNewConnection und MprAdminConnectionHangupNotification werden ebenfalls als Gruppe serialisiert.

RAS führt die Funktionen aus, die IP-Adressen in einem Prozess zuweisen. die Funktionen für Verbindungs- und Trennungsbenachrichtigungen werden in einem anderen Prozess ausgeführt. Folglich ist die DLL nicht von freigegebenen Daten zwischen diesen beiden Funktionssätzen abhängig.

Rufen Sie keine RAS-Verwaltungsfunktionen oder RAS-Benutzerverwaltungsfunktionen innerhalb einer Calloutfunktion auf. Aufrufe dieser Funktionen werden nicht zurückgegeben, wenn sie in einer Legendenfunktion ausgeführt werden.

Der RAS-Server protokolliert einen Fehler im Systemereignisprotokoll, wenn beim Versuch, eine RAS-Verwaltungs-DLL zu laden oder eine der Funktionen der DLL aufgerufen wird, ein Fehler auftritt. Dies kann beispielsweise der Fall sein, wenn die DLL den falschen Namen für eine exportierte Funktion angegeben hat oder wenn sie den Funktionsnamen nicht in die DEF-Datei einschließt. Der Eintrag im Ereignisprotokoll gibt den Grund für den Fehler an.

Windows 2000/NT: Mehrere Verwaltungs-DLLs werden nicht unterstützt.