Поделиться через


О библиотеках DLL администрирования RAS

Библиотека DLL администрирования RAS экспортирует функции, которые сервер RAS вызывает каждый раз, когда пользователь пытается подключиться или отключиться. Ниже приведены некоторые из возможных вариантов использования библиотеки DLL администрирования RAS.

  • Решите, следует ли разрешить пользователю подключаться к серверу. Библиотека DLL администрирования может предоставлять проверка безопасности в дополнение к стандартной проверке подлинности пользователя RAS.
  • Запишите время, когда каждый пользователь подключается к серверу и отключается от сервера. Это может быть полезно для выставления счетов или аудита.
  • Назначьте IP-адрес каждому пользователю. Это полезно для обеспечения безопасности, так как эта функция используется для сопоставления подключения пользователя к определенному компьютеру.

Расположение библиотеки DLL администрирования RAS указывается в реестре; См. статью Ras Administration DLL Registry Setup (Настройка реестра DLL администрирования RAS).

RAS поддерживает несколько библиотек DLL администрирования. Реестр поддерживает несколько расположений DLL. RAS вызывает функции в библиотеках DLL в том порядке, в котором они перечислены в реестре; См. статью Ras Administration DLL Registry Setup (Настройка реестра DLL администрирования RAS).

Windows 2000 Server: RAS не поддерживает несколько библиотек DLL.

Библиотека DLL администрирования RAS должна реализовывать и экспортировать все следующие функции:

MprAdminAcceptNewLink

MprAdminInitializeDll

MprAdminLinkHangupNotification

MprAdminTerminateDll

Кроме того, библиотека DLL администрирования RAS должна реализовывать и экспортировать либо

MprAdminAcceptNewConnection и

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 администрирования. Пользователь удаленного доступа может подключаться только в том случае, если реализация функции MprAdminAcceptNewConnection или MprAdminAcceptNewConnection2 в каждом из библиотек DLL принимает подключение. Иными словами, каждая библиотека DLL должна принимать подключение, чтобы разрешить пользователю подключаться.

При подключении к серверу RAS одно подключение RAS может использовать несколько ссылок. Функции MprAdminAcceptNewLink и MprAdminLinkHangupNotification позволяют библиотеке DLL администрирования управлять отдельными ссылками в соединении. RAS вызывает MprAdminAcceptNewLink всякий раз, когда устанавливается новая связь для подключения. Так как все подключения включают по крайней мере одну ссылку, RAS всегда вызывает MprAdminAcceptNewLink один раз сразу после возврата MprAdminAcceptNewConnection или MprAdminAcceptNewConnection2 при условии, что MprAdminAcceptNewConnection или MprAdminAcceptNewConnection2 принял подключение. RAS вызывает MprAdminLinkHangupNotification всякий раз, когда связь для подключения завершается.

Так как RAS поддерживает несколько библиотек DLL администрирования, пользователь удаленного доступа может подключаться только в том случае, если реализация функции MprAdminAcceptNewLink в каждом из библиотек DLL принимает подключение. Иными словами, каждая библиотека DLL должна принимать ссылку, чтобы она была установлена.

После проверки подлинности пользователя сервер RAS вызывает функцию MprAdminGetIpAddressForUser , чтобы получить IP-адрес удаленного клиента. Эта функция предоставляет альтернативную схему для сопоставления IP-адреса пользователю с телефонным подключением. Если mprAdminGetIpAddressForUser не реализован, сервер RAS связывает удаленного пользователя с IP-адресом, выбранным из статического пула IP-адресов, или с IP-адресом, выбранным DHCP-сервером. Функция MprAdminGetIpAddressForUser позволяет библиотеке DLL переопределить этот IP-адрес по умолчанию и указать конкретный IP-адрес для каждого пользователя. Функция MprAdminGetIpAddressForUser может установить флаг, который вызывает функцию MprAdminReleaseIpAddress при отключении пользователя. Затем библиотека DLL может использовать MprAdminReleaseIpAddress для обновления сопоставления пользователей и IP-адресов.

RAS поддерживает несколько библиотек DLL администрирования, но вызывает функции MprAdminGetIpAddressForUser и MprAdminReleaseIpAddress только в первой библиотеке DLL, которая реализует и экспортирует их. RAS игнорирует реализации этих функций в других библиотеках DLL. RAS проверяет библиотеки DLL для этих функций в том порядке, в котором они перечислены в реестре.

RAS сериализует вызовы в библиотеку DLL администрирования. Вызов одной из функций БИБЛИОТЕКи DLL для данного клиента RAS не упрещает вызов этой функции для другого клиента RAS; RAS не вызывает функцию для другого клиента до завершения первоначального вызова. Кроме того, сериализация распространяется на определенные группы функций. Функции IP-адресов сериализуются как группа; Вызов mprAdminGetIpAddressForUser или MprAdminReleaseIpAddress блокирует вызовы в обеих функциях до тех пор, пока не будет возвращен исходный вызов. MprAdminAcceptNewConnection и MprAdminConnectionHangupNotification также сериализуются как группа.

RAS выполняет функции, которые назначают IP-адреса в одном процессе; функции для уведомлений о подключении и отключении выполняются в другом процессе. Следовательно, библиотека DLL не зависит от общих данных между этими двумя наборами функций.

Не вызывайте функции администрирования RAS или функции администрирования пользователей RAS из функции выноски. Вызовы этих функций не возвращаются при выполнении из функции выноски.

Сервер RAS регистрирует ошибку в журнале системных событий, если ошибка возникает при попытке загрузить библиотеку DLL администрирования RAS или при вызове одной из функций библиотеки DLL. Это может произойти, например, если библиотека DLL указала неправильное имя экспортируемой функции или не включила имя функции в DEF-файл. Запись в журнале событий указывает причину сбоя.

Windows 2000/NT: Несколько библиотек DLL администрирования не поддерживаются.