CoCopyProxy 函数 (combaseapi.h)
创建指定代理的专用副本。
语法
HRESULT CoCopyProxy(
[in] IUnknown *pProxy,
[out] IUnknown **ppCopy
);
参数
[in] pProxy
指向要复制的代理上的 IUnknown 接口的指针。 此参数不能为 NULL。
[out] ppCopy
接收指向代理副本的接口指针的指针变量的地址。 此参数不能为 NULL。
返回值
此函数可以返回以下值。
返回代码 | 说明 |
---|---|
|
表示成功。 |
|
一个或多个参数无效。 |
备注
CoCopyProxy 创建指定代理的专用副本。 通常,当客户端需要通过调用 CoSetProxyBlanket 或 IClientSecurity::SetBlanket 来更改其代理的身份验证信息而不更改其他客户端的此信息时,将调用此函数。 CoSetProxyBlanket 会影响代理实例的所有用户,因此,通过调用 CoCopyProxy 创建代理的专用副本,然后使用副本调用 CoSetProxyBlanket (或 IClientSecurity::SetBlanket) 可以消除此问题。
此帮助程序函数封装以下常见调用序列, (排除的错误处理) :
pProxy->QueryInterface(IID_IClientSecurity, (void**)&pcs);
pcs->CopyProxy(punkProxy, ppunkCopy);
pcs->Release();
不能复制本地接口。 IUnknown 和 IClientSecurity 是现有本地接口的示例。
同一代理的副本具有 与 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 |