CreateObjrefMoniker 函数 (objbase.h)

基于指向 对象的指针创建 OBJREF 名字对象。

语法

HRESULT CreateObjrefMoniker(
  [in, optional] LPUNKNOWN punk,
  [out]          LPMONIKER *ppmk
);

parameters

[in, optional] punk

指向名字对象要表示的对象上的 IUnknown 接口的指针。

[out] ppmk

指向已创建的 OBJREF 名字对象上的 IMoniker 接口的指针的地址。

返回值

此函数可以返回标准返回值E_OUTOFMEMORY、E_UNEXPECTED和S_OK。

注解

客户端使用 OBJREF 名字对象获取指向服务器地址空间中正在运行的对象的封送指针。

服务器通常调用 CreateObjrefMoniker 来创建 OBJREF 名字对象,然后调用 IMoniker::GetDisplayName,最后释放名字对象。 OBJREF 名字对象的显示名称的格式如下:

OBJREF:nnnnnnnn

其中 nnnnnnnn 是一种任意长的 base-64 编码,用于封装正在运行的对象 (IPID) 的计算机位置、进程终结点和接口指针 ID

然后,可以将显示名称作为文本传输到客户端。 例如,显示名称可以驻留在客户端下载的 HTML 页上。

客户端可以将显示名称传递给 MkParseDisplayName,后者基于显示名称创建 OBJREF 名字对象。 调用名字对象 IMoniker::BindToObject 方法后,获取指向服务器上正在运行的实例的封送指针。

例如,活动服务器页中包含的服务器端 COM 组件可以创建 OBJREF 名字对象,获取其显示名称,并将显示名称写入发送到客户端浏览器的 HTML 输出。 在客户端上运行的脚本可以使用显示名称来获取对正在运行的对象本身的访问权限。 例如,客户端 Visual Basic 脚本可以将显示名称存储在名为 strMyName 的变量中,并包含以下行:

objMyInstance = GetObject(strMyName)

脚本引擎在内部调用 MkParseDisplayNameIMoniker::BindToObject,然后脚本可以使用 objMyInstance 直接引用正在运行的对象。

要求

   
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 objbase.h
Library Ole32.lib
DLL Ole32.dll
API 集 Windows 10版本 10.0.15063 中引入了 ext-ms-win-com-ole32-l1-1-5 ()

请参阅

IMoniker