다음을 통해 공유


CoCopyProxy 함수(combaseapi.h)

지정된 프록시의 프라이빗 복사본을 만듭니다.

구문

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

매개 변수

[in] pProxy

복사할 프록시의 IUnknown 인터페이스에 대한 포인터입니다. 이 매개 변수는 NULL일 수 없습니다.

[out] ppCopy

프록시 복사본에 대한 인터페이스 포인터를 수신하는 포인터 변수의 주소입니다. 이 매개 변수는 NULL일 수 없습니다.

반환 값

이 함수는 다음 값을 반환할 수 있습니다.

반환 코드 설명
S_OK
성공을 나타냅니다.
E_INVALIDARG
하나 이상의 인수가 잘못되었습니다.

설명

CoCopyProxy 는 지정된 프록시의 프라이빗 복사본을 만듭니다. 일반적으로 이 함수는 클라이언트가 다른 클라이언트에 대해 이 정보를 변경하지 않고 CoSetProxyBlanket 또는 IClientSecurity::SetBlanket 에 대한 호출을 통해 프록시의 인증 정보를 변경해야 할 때 호출됩니다. CoSetProxyBlanket은 프록시 instance 모든 사용자에게 영향을 주므로 CoCopyProxy 호출을 통해 프록시의 프라이빗 복사본을 만든 다음 복사본을 사용하여 CoSetProxyBlanket(또는 IClientSecurity::SetBlanket)을 호출하면 문제가 제거됩니다.

이 도우미 함수는 다음과 같은 일반적인 호출 시퀀스를 캡슐화합니다(오류 처리 제외).

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

로컬 인터페이스는 복사할 수 없습니다. IUnknownIClientSecurity 는 기존 로컬 인터페이스의 예입니다.

동일한 프록시의 복사본에는 QueryInterface와 관련된 특별한 관계가 있습니다. 원격 개체의 IA 인터페이스에 대한 프록시가 지정된 경우 의 복사본이 생성되어 b라고 합니다. 이 경우 IID_IA 대해 b 프록시에서 QueryInterface 를 호출하면 b에서 IA 인터페이스를 검색하지 않고 IA 인터페이스에 대한 "기본" 보안 설정이 있는 원래 프록시의 IA 인터페이스를 검색하지 않습니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 combaseapi.h(Objbase.h 포함)
라이브러리 Ole32.lib
DLL Ole32.dll

추가 정보

CoSetProxyBlanket

IClientSecurity::SetBlanket

COM의 보안