開始シーケンス
プロトコル プロバイダーを起動するには、リモート デスクトップ サービス サービスで次の操作を行います。
- レジストリから、プロトコル マネージャー オブジェクト (IWRdsProtocolManager) のリスナーの名前と CLSID を取得します。 詳細については、「 プロトコル マネージャーの登録」を参照してください。
- Initialize を呼び出してプロトコル マネージャーを初期化します。
- CLSID を使用してプロトコル マネージャー オブジェクトを作成します。 同じプロトコル プロバイダーに複数のリスナーが登録されている場合でも、サービスは 1 つのプロトコル マネージャー オブジェクトのみを作成します。
- CreateListener を呼び出して、IWRdsProtocolListener リスナー オブジェクトを作成してサービスに返すようにプロトコル マネージャー オブジェクトに指示します。 プロトコル マネージャー オブジェクトは、サービスに返す前にリスナー オブジェクトへの参照を追加する必要があります。 サービスが停止するか、リスナーが削除されると、サービスによってオブジェクトが解放されます。
- リスナーが着信接続のリッスンを開始できるように、リスナー オブジェクトで StartListen を呼び出します。
- StopListen を呼び出して、リスナー オブジェクトのリッスンを停止します。
- Uninitialize を呼び出してプロトコル マネージャーの初期化を解除します。
リスナーは、クライアントが接続しようとしたときに IWRdsProtocolConnection オブジェクトを作成します。 リスナー オブジェクトは OnConnected を呼び出して、新しいクライアントが接続または再接続しようとしていることをリモート デスクトップ サービス サービスに通知し、その呼び出しで IWRdsProtocolConnection オブジェクトを渡します。 リモート デスクトップ サービス サービスは、プロトコルが必要に応じてリモート デスクトップ サービス サービスと通信できるように、その呼び出しで IWRdsProtocolConnectionCallback オブジェクトを返します。 サービスは、 を返す前にコールバック オブジェクトへの参照を追加します。プロトコルは、接続が閉じるときにその参照を解放する必要があります。
次の図は、起動時のさまざまなオブジェクト間の相互作用を示しています。
関連トピック