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