# IClientSecurity::CopyProxy

Makes a private copy of the specified proxy.

HRESULT CopyProxy(

IUnknown * punkProxy , | //IUnknown pointer to the proxy to copy
IUnknown ** ppunkCopy | //Indirect IUnknown pointer to the copy
); |

Parameter

punkProxy
  [in] Points to the IUnknown interface on the proxy to be copied. May not be NULL.
ppunkCopy
  [out] On successful return, points to the location of the IUnknown pointer to the copy of the proxy. It may not be NULL.

Return Values

S_OK
  Success.
E_INVALIDARG
  One or more arguments are invalid.

Remarks

IClientSecurity::CopyProxy makes a private copy of the specified proxy for the calling client. Its authentication information may be changed through a call to IClientSecurity::SetBlanket without affecting any other clients of the original proxy. The copy has the default values for the authentication information. The copy has one reference and must be released.

The helper function CoCopyProxy encapsulates a QueryInterface call on the proxy for a pointer to IClientSecurity, and with that pointer calls IClientSecurity::CopyProxy, and then releases the IClientSecurity pointer.

Local interfaces may not be copied. IUnknown and IClientSecurity are examples of existing local interfaces.

Copies of the same proxy have a special relationship with respect to QueryInterface. Given a proxy, a, of the IA interface of a remote object, suppose a copy of a is created, called b. In this case, calling QueryInterface from the b proxy for IID_IA will not retrieve the IA interface on b, but the one on a, the original proxy with the “default” security settings for the IA interface.

See Also

CoCopyProxy