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


Последовательность запуска

Чтобы запустить поставщик протокола, служба служб удаленных рабочих столов:

  • Извлекает имя прослушивателя и CLSID объекта диспетчера протоколов (IWRdsProtocolManager) из реестра. Дополнительные сведения см. в разделе Регистрация диспетчера протоколов.
  • Вызывает метод Initialize для инициализации диспетчера протоколов.
  • Создает объект диспетчера протоколов, используя ИДЕНТИФИКАТОР CLSID. Даже если для одного поставщика протокола зарегистрировано несколько прослушивателей, служба создает только один объект диспетчера протоколов.
  • Вызывает CreateListener , чтобы указать объекту диспетчера протоколов создать объект прослушивателя IWRdsProtocolListener и вернуть его службе. Объект диспетчера протоколов должен добавить ссылку на объект прослушивателя, прежде чем возвращать его службе. Служба отпустит объект при остановке службы или удалении прослушивателя.
  • Вызывает StartListen для объекта прослушивателя, чтобы прослушиватель смог начать прослушивание входящих подключений.
  • Вызывает StopListen , чтобы остановить прослушивание объекта прослушивателя.
  • Вызывает Uninitialize для неинициализации диспетчера протоколов.

Прослушиватель создает объект IWRdsProtocolConnection , когда клиент пытается подключиться. Объект прослушивателя вызывает OnConnected , чтобы уведомить службу служб удаленных рабочих столов о том, что новый клиент пытается подключиться или повторно подключиться, и передает объект IWRdsProtocolConnection в этом вызове. Служба удаленных рабочих столов, в свою очередь, возвращает объект IWRdsProtocolConnectionCallback в этом вызове, чтобы протокол при необходимости смог взаимодействовать со службой удаленных рабочих столов. Служба добавляет ссылку на объект обратного вызова перед возвратом, и протокол должен освободить ее при закрытии соединения.

На следующем рисунке показано взаимодействие между различными объектами во время запуска.

Последовательность запуска rcm

Последовательность вызовов метода

Последовательность подключений