Поделиться через


Функция CoSwitchCallContext (combaseapi.h)

Переключает объект контекста вызова, используемый CoGetCallContext.

Синтаксис

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

Параметры

[in, optional] pNewObject

Указатель на интерфейс нового объекта контекста вызова. COM сохраняет этот указатель без добавления ссылки на указатель до тех пор, пока coSwitchCallContext не будет вызван с другим объектом. Этот параметр может иметь значение NULL , если вы вызываете CoSwitchCallContext для переключения обратно в исходный контекст вызова, но исходного контекста вызова не было.

[out] ppOldObject

Адрес переменной указателя, которая получает указатель на объект контекста вызова текущего вызова. Это значение возвращается для восстановления исходного контекста вызова с помощью пользовательского маршалировщика. Если вызов не выполняется, возвращенный указатель будет иметь значение NULL .

Возвращаемое значение

Эта функция может возвращать следующие значения.

Код возврата Описание
S_OK
Функция выполнена успешно.
E_OUT_OF_MEMORY
Недостаточно памяти.

Комментарии

Пользовательские маршаллели вызывают CoSwitchCallContext , чтобы изменить объект контекста вызова, используемый функцией CoGetCallContext . Перед отправкой звонка пользовательские маршаллели вызывают CoSwitchCallContext, указывая новый объект контекста. После отправки ответа они должны восстановить исходный контекст вызова, вызвав CoSwitchCallContext еще раз, на этот раз передав указатель на исходный объект контекста.

CoSwitchCallContext не добавляет ссылку на новый объект контекста. Пользовательские маршалы должны гарантировать, что время существования объекта контекста продолжается на протяжении всего вызова и до вызова для восстановления исходного контекста. Пользовательские маршалы не должны освобождать значение, которое они помещают в параметр ppOldObject при установке контекста.

Объекты контекста вызова, предоставляемые пользовательскими маршализаторами, должны поддерживать интерфейс IServerSecurity .

Требования

   
Минимальная версия клиента Windows 2000 Профессиональная [классические приложения | Приложения UWP]
Минимальная версия сервера Windows 2000 Server [классические приложения | Приложения UWP]
Целевая платформа Windows
Header combaseapi.h (включая Objbase.h)
Библиотека Ole32.lib
DLL Ole32.dll

См. также раздел

CoGetCallContext

IServerSecurity

Безопасность в COM