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 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 combaseapi.h (包括 Objbase.h)
Library Ole32.lib
DLL Ole32.dll

另请参阅

CoGetCallContext

IServerSecurity

COM 中的安全性