启动顺序

若要启动协议提供程序,远程桌面服务服务:

  • 从注册表 (IWRdsProtocolManager) 检索侦听器的名称和协议管理器对象的 CLSID。 有关详细信息,请参阅 注册协议管理器
  • 调用 Initialize 以初始化协议管理器。
  • 使用 CLSID 创建协议管理器对象。 即使为同一协议提供程序注册了多个侦听器,该服务也只创建一个协议管理器对象。
  • 调用 CreateListener 以指示协议管理器对象创建 IWRdsProtocolListener 侦听器对象并将其返回到服务。 协议管理器对象必须在将侦听器对象返回到服务之前添加对侦听器对象的引用。 服务停止或删除侦听器时,服务将释放对象。
  • 对侦听器对象调用 StartListen ,以便侦听器可以开始侦听传入连接。
  • 调用 StopListen 以阻止侦听器对象侦听。
  • 调用 Uninitialize 以取消初始化协议管理器。

当客户端尝试连接时,侦听器会创建 IWRdsProtocolConnection 对象。 侦听器对象调用 OnConnected 以通知远程桌面服务正在尝试连接或重新连接的新客户端,并在该调用中传递 IWRdsProtocolConnection 对象。 远程桌面服务服务将返回该调用中的 IWRdsProtocolConnectionCallback 对象,以便协议可以根据需要与远程桌面服务服务通信。 服务在返回之前添加对回调对象的引用,并且协议必须在连接关闭时释放该引用。

下图显示了启动期间各种对象之间的交互。

rcm start sequence

方法调用序列

连接序列