關於 RAS 管理 DLL

每當使用者嘗試連線或中斷連線時,RAS 伺服器會匯出 RAS 伺服器呼叫的函式。 以下是 RAS 管理 DLL 的一些可能用途:

  • 決定是否允許使用者連線到伺服器。 除了標準 RAS 使用者驗證之外,系統管理 DLL 還可以提供安全性檢查。
  • 記錄每個使用者連線到伺服器並中斷連線的時間。 這適用于計費或稽核用途。
  • 將 IP 位址指派給每個使用者。 這適用于安全性,因為此功能用來將使用者的連線對應至特定電腦。

RAS 管理 DLL 的位置是在登錄中指定;請參閱 RAS 管理 DLL 登錄設定

RAS 支援多個系統管理 DLL。 登錄支援多個 DLL 位置。 RAS 會依登錄中列出 DLL 的順序,呼叫 DLL 中的函式;請參閱 RAS 管理 DLL 登錄設定

Windows 2000 Server: RAS 不支援多個 DLL。

RAS 管理 DLL 必須實作並匯出下列所有功能:

MprAdminAcceptNewLink

MprAdminInitializeDll

MprAdminLinkHangupNotification

MprAdminTerminateDll

此外,RAS 系統管理 DLL 必須實作和匯出任一項

MprAdminAcceptNewConnection

MprAdminConnectionHangupNotification

MprAdminAcceptNewConnection2

MprAdminConnectionHangupNotification2

如果未實作所有必要的函式,則 RAS 無法啟動。

Windows 2000 Server: 系統管理 DLL 必須實作 MprAdminGetIpAddressForUserMprAdminReleaseIpAddress 函式。 如果 DLL 實作其中一個函式,也必須實作另一個函式。

RAS 會在路由和遠端存取服務第一次啟動時呼叫 MprAdminInitializeDll 函式。 MprAdminInitializeDll函式提供管理 DLL 執行任何必要初始化的機會。 同樣地,當路由和遠端存取服務關閉時,RAS 會呼叫 MprAdminTerminateDll 服務。 此函式可讓管理 DLL 在結束之前執行任何必要的清除。

MprAdminAcceptNewConnectionMprAdminConnectionHangupNotification函式可讓 DLL 稽核與伺服器的使用者連線。 每當使用者嘗試連線時,RAS 伺服器會呼叫 MprAdminAcceptNewConnection 函式。 此函式可讓您防止使用者連線。 MprAdminAcceptNewConnection函式也可以產生計費或稽核的記錄專案。 當使用者中斷連線時,RAS 伺服器會呼叫 MprAdminConnectionHangupNotification 函式,以記錄使用者中斷連線的時間。

MprAdminAcceptNewConnection2MprAdminConnectionHangupNotification2函式類似于MprAdminAcceptNewConnectionMprAdminConnectionHangupNotification。 不過,當 RAS 呼叫 MprAdminAcceptNewConnection2MprAdminConnectionHangupNotification2 函式時,RAS 會傳入類型 為 RAS_CONNECTION_2的其他參數。

RAS 支援多個系統管理 DLL。 只有在每個 DLL 中的 MprAdminAcceptNewConnectionMprAdminAcceptNewConnection2 函式實作接受連線時,才允許遠端存取使用者連線。 換句話說,每個 DLL 都必須接受連接,才能允許使用者連線。

連線到 RAS 伺服器時,單一 RAS 連線可能會使用多個連結。 MprAdminAcceptNewLinkMprAdminLinkHangupNotification函式可讓您管理 DLL 管理連線中的個別連結。 每當建立連線的新連結時,RAS 會呼叫 MprAdminAcceptNewLink 。 由於所有連線都牽涉到至少一個連結,因此只要MprAdminAcceptNewConnectionMprAdminAcceptNewConnection2傳回,只要MprAdminAcceptNewConnection 或 MprAdminAcceptNewConnection2接受連線,RAS 一律會呼叫MprAdminAcceptNewLink 當連線的連結關閉時,RAS 會呼叫 MprAdminLinkHangupNotification

由於 RAS 支援多個系統管理 DLL,因此只有在每個 DLL 中的 MprAdminAcceptNewLink 函式實作接受連線時,才允許遠端存取使用者連線。 換句話說,每個 DLL 都必須接受連結,才能建立連結。

RAS 伺服器驗證使用者之後,它會呼叫 MprAdminGetIpAddressForUser 函 式來取得遠端用戶端的 IP 位址。 此函式提供替代配置,以將 IP 位址對應至撥入使用者。 如果未實作 MprAdminGetIpAddressForUser ,則 RAS 伺服器會將遠端使用者與從 IP 位址的靜態集區選取的 IP 位址建立關聯,或動態主機設定通訊協定所選取的 IP 位址, (DHCP) 伺服器。 MprAdminGetIpAddressForUser函式可讓 DLL 覆寫此預設 IP 位址,並為每個使用者指定特定的 IP 位址。 MprAdminGetIpAddressForUser函式可以設定旗標,以在使用者中斷連線時,讓 RAS 呼叫MprAdminReleaseIpAddress 函式。 然後,DLL 可以使用 MprAdminReleaseIpAddress 來更新其使用者對 IP 位址對應。

RAS 支援多個系統管理 DLL,但它只會在實作和匯出它們的第一個 DLL 中呼叫 MprAdminGetIpAddressForUserMprAdminReleaseIpAddress 函式。 RAS 會忽略其他 DLL 中這些函式的實作。 RAS 會依照這些函式列在 登錄中的順序檢查這些函式的 DLL。

RAS 會將呼叫序列化為系統管理 DLL。 呼叫指定 RAS 用戶端的其中一個 DLL 函式,並不會針對不同的 RAS 用戶端先占該函式的呼叫;RAS 不會呼叫其他用戶端的函式,直到初始呼叫完成為止。 此外,序列化會延伸到某些函式群組。 IP 位址函式會序列化為群組; 呼叫 MprAdminGetIpAddressForUserMprAdminReleaseIpAddress 會封鎖這兩個函式的呼叫,直到初始呼叫傳回為止。 MprAdminAcceptNewConnectionMprAdminConnectionHangupNotification 也會序列化為群組。

RAS 會在一個進程中執行指派 IP 位址的函式;連線和中斷連線通知的函式會在另一個進程中執行。 因此,DLL 不會相依于這兩組函式之間的共用資料。

請勿從圖說文字函式內呼叫任何 RAS Administration FunctionsRAS 使用者系統管理功能 。 從圖說文字函式內進行時,不會傳回這些函式的呼叫。

如果 RAS 伺服器嘗試載入 RAS 管理 DLL 或呼叫其中一個 DLL 的函式時發生錯誤,則 RAS 伺服器會在系統事件記錄檔中記錄錯誤。 例如,如果 DLL 為匯出的函式指定了錯誤的名稱,或它未在 DEF 檔案中包含函式名稱,就會發生這種情況。 事件記錄檔中的專案表示失敗的原因。

Windows 2000/NT: 不支援多個系統管理 DLL。