CoCopyProxy 函数 (combaseapi.h)

创建指定代理的专用副本。

语法

HRESULT CoCopyProxy(
  [in]  IUnknown *pProxy,
  [out] IUnknown **ppCopy
);

参数

[in] pProxy

指向要复制的代理上的 IUnknown 接口的指针。 此参数不能为 NULL

[out] ppCopy

接收指向代理副本的接口指针的指针变量的地址。 此参数不能为 NULL

返回值

此函数可以返回以下值。

返回代码 说明
S_OK
表示成功。
E_INVALIDARG
一个或多个参数无效。

备注

CoCopyProxy 创建指定代理的专用副本。 通常,当客户端需要通过调用 CoSetProxyBlanketIClientSecurity::SetBlanket 来更改其代理的身份验证信息而不更改其他客户端的此信息时,将调用此函数。 CoSetProxyBlanket 会影响代理实例的所有用户,因此,通过调用 CoCopyProxy 创建代理的专用副本,然后使用副本调用 CoSetProxyBlanket (或 IClientSecurity::SetBlanket) 可以消除此问题。

此帮助程序函数封装以下常见调用序列, (排除的错误处理) :

    pProxy->QueryInterface(IID_IClientSecurity, (void**)&pcs);
    pcs->CopyProxy(punkProxy, ppunkCopy);
    pcs->Release();

不能复制本地接口。 IUnknownIClientSecurity 是现有本地接口的示例。

同一代理的副本具有 与 QueryInterface 相关的特殊关系。 给定远程对象的 IA 接口的代理 a,假设已创建一个副本,称为 b。 在这种情况下,从 b 代理为 IID_IA 调用 QueryInterface 不会检索 b 上的 IA 接口,而是检索 a 上的 IA 接口,即具有 IA 接口“默认”安全设置的原始代理。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 combaseapi.h (包括 Objbase.h)
Library Ole32.lib
DLL Ole32.dll

另请参阅

CoSetProxyBlanket

IClientSecurity::SetBlanket

COM 中的安全性