Функция CreateObjrefMoniker (objbase.h)
Создает моникер OBJREF на основе указателя на объект .
Синтаксис
HRESULT CreateObjrefMoniker(
[in, optional] LPUNKNOWN punk,
[out] LPMONIKER *ppmk
);
Параметры
[in, optional] punk
Указатель на интерфейс IUnknown объекта, который будет представлять моникер.
[out] ppmk
Адрес указателя на интерфейс IMoniker в созданном моникере OBJREF.
Возвращаемое значение
Эта функция может возвращать стандартные возвращаемые значения E_OUTOFMEMORY, E_UNEXPECTED и S_OK.
Комментарии
Клиенты используют моникеры OBJREF для получения маршалированного указателя на выполняющийся объект в адресном пространстве серверов.
Сервер обычно вызывает CreateObjrefMoniker для создания моникера OBJREF, а затем вызывает IMoniker::GetDisplayName и, наконец, освобождает моникер. Отображаемое имя моникера OBJREF имеет следующий вид:
OBJREF:nnnnnnnn
Где nnnnnnnn — это произвольно длинная кодировка base-64, которая инкапсулирует расположение компьютера, конечную точку процесса и идентификатор указателя интерфейса (IPID) выполняющегося объекта.
Затем отображаемое имя можно передать клиенту в виде текста. Например, отображаемое имя может находиться на HTML-странице, скачиваемой клиентом.
Клиент может передать отображаемое имя в MkParseDisplayName, который создает моникер OBJREF на основе отображаемого имени. Вызов моникеров метода IMoniker::BindToObject затем получает маршалированную указатель на запущенный экземпляр на сервере.
Например, компонент COM на стороне сервера, содержащийся на странице Active Server, может создать моникер OBJREF, получить его отображаемое имя и записать отображаемое имя в выходные данные HTML, отправляемые в клиентский браузер. Скрипт, выполняемый на стороне клиента, может использовать отображаемое имя для получения доступа к самому выполняющимся объекту. Например, клиентский скрипт Visual Basic может хранить отображаемое имя в переменной strMyName и включать следующую строку:
objMyInstance = GetObject(strMyName)
Обработчик скриптов внутренне вызывает MkParseDisplayName и IMoniker::BindToObject, а затем может использовать objMyInstance для непосредственной ссылки на выполняющийся объект.
Требования
Минимальная версия клиента | Windows 2000 Профессиональная [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows 2000 Server [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | objbase.h |
Библиотека | Ole32.lib |
DLL | Ole32.dll |
Набор API | ext-ms-win-com-ole32-l1-1-5 (представлено в Windows 10 версии 10.0.15063) |