다음을 통해 공유


CoSwitchCallContext 함수(combaseapi.h)

CoGetCallContext에서 사용하는 호출 컨텍스트 개체를 전환합니다.

구문

HRESULT CoSwitchCallContext(
  [in, optional] IUnknown *pNewObject,
  [out]          IUnknown **ppOldObject
);

매개 변수

[in, optional] pNewObject

새 호출 컨텍스트 개체의 인터페이스에 대한 포인터입니다. COM은 CoSwitchCallContext 가 다른 개체와 함께 호출될 때까지 포인터에 대한 참조를 추가하지 않고 이 포인터를 저장합니다. 원래 호출 컨텍스트로 다시 전환하기 위해 CoSwitchCallContext를 호출하지만 원래 호출 컨텍스트가 없는 경우 이 매개 변수는 NULL일 수 있습니다.

[out] ppOldObject

현재 진행 중인 호출의 호출 컨텍스트 개체에 대한 포인터를 수신하는 포인터 변수의 주소입니다. 이 값은 사용자 지정 마샬러가 원래 호출 컨텍스트를 복원할 수 있도록 반환됩니다. 진행 중인 호출이 없는 경우 반환된 포인터는 NULL 이 됩니다.

반환 값

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

반환 코드 설명
S_OK
함수가 성공했습니다.
E_OUT_OF_MEMORY
메모리가 부족합니다.

설명

사용자 지정 마샬러가 CoSwitchCallContext 를 호출하여 CoGetCallContext 함수에서 사용하는 호출 컨텍스트 개체를 변경합니다. 도착하는 호출을 디스패치하기 전에 사용자 지정 마샬러가 CoSwitchCallContext를 호출하여 새 컨텍스트 개체를 지정합니다. 회신을 보낸 후 이번에는 원래 컨텍스트 개체에 대한 포인터를 전달하여 CoSwitchCallContext 를 다시 호출하여 원래 호출 컨텍스트를 복원해야 합니다.

CoSwitchCallContext 는 새 컨텍스트 개체에 대한 참조를 추가하지 않습니다. 사용자 지정 마샬러가 호출을 통해 원래 컨텍스트를 복원하기 위해 호출될 때까지 컨텍스트 개체의 수명이 계속되도록 해야 합니다. 사용자 지정 마샬러가 컨텍스트를 설정할 때 ppOldObject 매개 변수에 배치한 값을 해제해서는 안 됩니다.

사용자 지정 마샬러에서 제공하는 호출 컨텍스트 개체는 IServerSecurity 인터페이스를 지원해야 합니다.

요구 사항

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

추가 정보

CoGetCallContext

IServerSecurity

COM의 보안