Функция 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)

См. также раздел

IMoniker