RAS 管理 DLL 輸出函式,讓 RAS 伺服器在使用者嘗試連線或中斷連線時呼叫。 以下是 RAS 管理 DLL 的一些可能用法:
- 決定是否允許用戶連線到伺服器。 除了標準 RAS 使用者驗證之外,系統管理 DLL 還可以提供安全性檢查。
- 記錄每個用戶連線到伺服器並中斷連線的時間。 這對於計費或稽核用途很有用。
- 將IP位址指派給每個使用者。 這項功能對於安全性很有用,因為此功能可用來將使用者的連線對應至特定計算機。
RAS 管理 DLL 的位置是在登錄中指定;請參閱 RAS 管理 DLL 登入設定。
RAS 支援多個系統管理 DLL。 註冊表支援多個 DLL 位置。 RAS 會依照 DLL 在註冊表中的列出順序來呼叫其中的函式;請參閱 RAS 管理 DLL 註冊表設定。
Windows 2000 Server: RAS 不支援多個 DLL。
RAS 管理 DLL 必須實作並匯出下列所有函式:
MprAdminLinkHangupNotification
此外,RAS 管理 DLL 必須實作並匯出
MprAdminConnectionHangupNotification
或
MprAdminAcceptNewConnection2 和
MprAdminConnectionHangupNotification2
如果未實作所有必要的函式,RAS 將無法啟動。
Windows 2000 Server: 管理 DLL 必須實作 MprAdminGetIpAddressForUser 和 MprAdminReleaseIpAddress 函式。 如果 DLL 實作其中一個函式,它也必須實作另一個函式。
當路由和遠端訪問服務第一次啟動時,RAS 會呼叫 MprAdminInitializeDll 函式。 MprAdminInitializeDll 函式提供管理 DLL 執行任何必要初始化的機會。 同樣地,當路由和遠端訪問服務關閉時,RAS 會呼叫 MprAdminTerminateDll 服務。 此函式可讓系統管理 DLL 在結束之前執行任何必要的清除。
MprAdminAcceptNewConnection 和 MprAdminConnectionHangupNotification 函式可讓 DLL 稽核伺服器的用戶連線。 每當用戶嘗試連線時,RAS 伺服器會呼叫 MprAdminAcceptNewConnection 函式。 此函式可讓您防止用戶連線。 MprAdminAcceptNewConnection 函式也可以產生計費或稽核用的日誌項目。 當使用者中斷連線時,RAS 伺服器會呼叫 MprAdminConnectionHangupNotification 函式,以記錄用戶中斷連線的時間。
MprAdminAcceptNewConnection2 和 MprAdminConnectionHangupNotification2 函式與 MprAdminAcceptNewConnection 和 MprAdminConnectionHangupNotification類似。 不過,當 RAS 呼叫 MprAdminAcceptNewConnection2 和 MprAdminConnectionHangupNotification2 函式時,RAS 會傳入類型為 RAS_CONNECTION_2的額外參數。
RAS 支援多個系統管理 DLL。 只有當每個 DLL 的 MprAdminAcceptNewConnection 或 MprAdminAcceptNewConnection2 函式接受連線時,才允許遠端訪問用戶連線。 換句話說,每個 DLL 都必須接受連接,才能允許用戶連線。
連線到 RAS 伺服器時,單一 RAS 連線可能會使用多個連結。 MprAdminAcceptNewLink 和 MprAdminLinkHangupNotification 函式可讓系統管理 DLL 管理連線中的個別連結。 每當建立連線的新連結時,RAS 會呼叫 MprAdminAcceptNewLink。 因為所有連線至少涉及一個連結,RAS 一律會在 MprAdminAcceptNewConnection 或 MprAdminAcceptNewConnection2 傳回後,若 MprAdminAcceptNewConnection 或 MprAdminAcceptNewConnection2 接受了這個連線,立即呼叫 MprAdminAcceptNewLink 一次。 每當連線的連結關機時,RAS 會呼叫 MprAdminLinkHangupNotification。
由於 RAS 支援多個系統管理 DLL,因此只有在每個 DLL 中實作 MprAdminAcceptNewLink 函式時,才允許遠端存取用戶連線。 換句話說,每個 DLL 都必須接受連結,才能建立連結。
在 RAS 伺服器驗證用戶之後,它會呼叫 MprAdminGetIpAddressForUser 函式,以取得遠端用戶端的 IP 位址。 此函式提供一種替代方案,用於將IP位址對應至撥入使用者。 如果未實作 MprAdminGetIpAddressForUser,RAS 伺服器會將遠端使用者與從靜態 IP 位址池中選取的 IP 位址建立關聯,或動態主機設定通訊協定 (DHCP) 伺服器選取的 IP 位址。 MprAdminGetIpAddressForUser 函式可讓 DLL 覆寫此預設 IP 位址,並為每個使用者指定特定的 IP 位址。 MprAdminGetIpAddressForUser 函式可以設定旗標,讓 RAS 在使用者中斷連線時呼叫 MprAdminReleaseIpAddress 函式。 然後,DLL 可以使用 MprAdminReleaseIpAddress 來更新其使用者to-IP位址對應。
RAS 支援多個系統管理 DLL,但它只會在實作和匯出的第一個 DLL 中呼叫 MprAdminGetIpAddressForUser 和 MprAdminReleaseIpAddress 函式。 RAS 會忽略其他 DLL 中這些函式的實作。 RAS 會依照這些函式庫 (DLL) 中函式在 登錄裡列出的順序來檢查,。
RAS 會將呼叫串行化至管理 DLL。 對於特定 RAS 用戶端的其中一個 DLL 函式的呼叫,不會搶先對不同 RAS 用戶端的該函式呼叫;在初始呼叫完成之前,RAS 不會呼叫其他用戶端的函式。 此外,串行化會擴充至某些函式群組。 IP 位址函式會串行化為群組;MprAdminGetIpAddressForUser 或 MprAdminReleaseIpAddress 會封鎖呼叫這兩個函式,直到傳回初始呼叫為止。 MprAdminAcceptNewConnection 和 MprAdminConnectionHangupNotification 也會序列化為群組。
RAS 會執行在一個進程中指派IP位址的函式;連接和中斷連線的函式會在另一個進程中執行。 因此,DLL 不相依於這兩組函式之間的共享數據。
請勿從回呼函式內部呼叫任何 RAS 系統管理功能 或任何 RAS 使用者管理功能。 從標出函式內進行呼叫時,這些函式將不會傳回。
如果 RAS 伺服器嘗試載入 RAS 系統管理 DLL 或呼叫其中一個 DLL 函式時發生錯誤,則 RAS 伺服器會在系統事件記錄檔中記錄錯誤。 例如,如果 DLL 為導出的函式指定了錯誤的名稱,或未在 DEF 檔案中包含函式名稱,就可能發生此情況。 事件記錄檔中的條目說明失敗的原因。
Windows 2000/NT:不支援 多個系統管理 DLL。