RAS 管理 DLL について

RAS 管理 DLL は、ユーザーが接続または切断を試みるたびに RAS サーバーが呼び出す関数をエクスポートします。 RAS 管理 DLL で使用できる使用方法の一部を次に示します。

  • ユーザーにサーバーへの接続を許可するかどうかを決定します。 管理 DLL は、標準の RAS ユーザー認証に加えて、セキュリティチェックを提供できます。
  • 各ユーザーがサーバーに接続してサーバーから切断した時刻を記録します。 これは、課金や監査の目的で役立ちます。
  • 各ユーザーに 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 では、 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 サーバーに接続するときに、1 つの RAS 接続で複数のリンクを使用できます。 MprAdminAcceptNewLink 関数と MprAdminLinkHangupNotification 関数を使用すると、管理 DLL で接続内の個々のリンクを管理できます。 RAS は、接続用に新しいリンクが確立されるたびに MprAdminAcceptNewLink を呼び出します。 すべての接続には少なくとも 1 つのリンクが含まれるため、 MPrAdminAcceptNewConnection または MprAdminAcceptNewConnection2 が返された直後に、常に MprAdminAcceptNewConnection2 が 1 回呼び出されます( MprAdminAcceptNewConnection または MprAdminAcceptNewConnection2 が接続を受け入れた場合)。 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 を使用して、ユーザーと IP アドレスのマッピングを更新できます。

RAS では複数の管理 DLL がサポートされていますが、 MprAdminGetIpAddressForUser 関数と MprAdminReleaseIpAddress 関数は、それらを実装およびエクスポートする最初の DLL でのみ呼び出されます。 RAS は、他の DLL 内のこれらの関数の実装を無視します。 RAS は、レジストリに一覧表示されている順序で、これらの関数の DLL をチェック します

RAS は、呼び出しを管理 DLL にシリアル化します。 特定の RAS クライアントに対して DLL の関数の 1 つを呼び出しても、別の RAS クライアントに対するその関数の呼び出しは開始されません。RAS は、最初の呼び出しが完了するまで、他のクライアントの関数を呼び出しません。 さらに、シリアル化は特定の関数グループまで拡張されます。 IP アドレス関数はグループとしてシリアル化されます。 MprAdminGetIpAddressForUser または MprAdminReleaseIpAddress への呼び出しは、最初の呼び出しが返されるまで両方の関数への呼び出しをブロックします。 MprAdminAcceptNewConnectionMprAdminConnectionHangupNotification もグループとしてシリアル化されます。

RAS は、1 つのプロセスで IP アドレスを割り当てる関数を実行します。接続と切断の通知の関数は、別のプロセスで実行されます。 したがって、DLL は、これら 2 つの関数セット間の共有データに依存しません。

吹き出し関数内から RAS 管理関数 または RAS ユーザー管理機能 を呼び出さないでください。 コールアウト関数内から行われた場合、これらの関数の呼び出しは返されません。

RAS サーバーは、RAS 管理 DLL を読み込もうとしたとき、または DLL のいずれかの関数を呼び出すときにエラーが発生した場合に、システム イベント ログにエラーを記録します。 これは、たとえば、DLL がエクスポートされた関数の間違った名前を指定した場合や、DEF ファイルに関数名が含まれていない場合に発生する可能性があります。 イベント ログのエントリは、エラーの理由を示します。

Windows 2000/NT: 複数の管理 DLL はサポートされていません。