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


Функция 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 влияет на всех пользователей экземпляра прокси-сервера, поэтому создание частной копии прокси-сервера с помощью вызова CoCopyProxy и последующего вызова CoSetProxyBlanket (или IClientSecurity::SetBlanket) с помощью копии устраняет проблему.

Эта вспомогательная функция инкапсулирует следующую последовательность распространенных вызовов (обработка ошибок исключена):

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

Локальные интерфейсы не могут быть скопированы. Примерами существующих локальных интерфейсов являются IUnknown и IClientSecurity.

Копии того же прокси-сервера имеют особую связь относительно QueryInterface. При использовании прокси-сервера интерфейса IA удаленного объекта предположим, что создается копия с именем b. В этом случае вызов QueryInterface из прокси-сервера b для IID_IA не извлекает интерфейс IA на b, а на исходном прокси-сервере с параметрами безопасности по умолчанию для интерфейса IA.

Требования

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

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

CoSetProxyBlanket

IClientSecurity::SetBlanket

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