URL-моникеры
Архитектура OLE moniker предоставляет удобную модель программирования для работы с URL-адресами. Архитектура моникера поддерживает расширяемый и полный анализ имен с помощью функции MkParseDisplayName и интерфейсов IParseDisplayName и IMoniker, а также печатных имен с помощью метода IMoniker::GetDisplayName. Интерфейс IMoniker — это способ использования URL-адресов, с которыми вы столкнулись, и создание компонентов, которые соответствуют архитектуре моникера , — это способ фактически расширить пространства имен URL-адресов на практике.
Класс moniker, предоставляемый системой, моникер URL-адреса, предоставляет платформу для создания и использования определенных URL-адресов. Так как URL-адреса часто видят ресурсы в сетях с высокой задержкой, моникер URL-адресов поддерживает асинхронную, а также синхронную привязку. Моникер URL-адресов в настоящее время не поддерживает асинхронное хранилище.
На следующей схеме показаны компоненты, участвующие в использовании моникеров URL-адресов. Все эти компоненты должны быть знакомы. (См. раздел Асинхронные моникеры.)
Как и все клиенты моникера, пользователь URL-моникеров обычно создает и содержит ссылку на моникер, а также контекст привязки, используемый во время привязки (IMoniker::BindTo служба хранилища или IMoniker::BindToObject). Для поддержки асинхронной привязки клиент может реализовать объект обратного вызова привязки, который реализует интерфейс IBindStatusCallback и зарегистрировать его в контексте привязки с помощью функции RegisterBindStatusCallback. Этот объект получит интерфейс IBinding транспорта во время вызовов IBindStatusCallback::OnStartBinding.
URL-адрес Моникер определяет протокол, используемый путем синтаксического анализа префикса URL-адреса, а затем извлекает интерфейс IBinding из транспортного слоя. Клиент использует IBinding для поддержки приостановки, отмены и приоритета операции привязки. Объект обратного вызова также получает уведомление о ходе выполнения через IBindStatusCallback::OnProgress, уведомление о доступности данных через IBindStatusCallback::OnDataAvailable и различные, другие уведомления уровня транспорта о состоянии привязки. Моникер URL-адреса или определенные уровни транспорта также могут запрашивать расширенные сведения от клиента через IBindStatusCallback::QueryInterface, что позволяет клиенту предоставлять сведения, относящиеся к протоколу, которые повлияют на операцию привязки.
Дополнительные сведения см. в следующих разделах: