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


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

Извлекает сведения о проверке подлинности, которые клиент использует для выполнения вызовов указанного прокси-сервера. Это вспомогательная функция для IClientSecurity::QueryBlanket.

Синтаксис

HRESULT CoQueryProxyBlanket(
  [in]            IUnknown                 *pProxy,
  [out, optional] DWORD                    *pwAuthnSvc,
  [out, optional] DWORD                    *pAuthzSvc,
  [out, optional] LPOLESTR                 *pServerPrincName,
  [out, optional] DWORD                    *pAuthnLevel,
  [out, optional] DWORD                    *pImpLevel,
  [out, optional] RPC_AUTH_IDENTITY_HANDLE *pAuthInfo,
  [out, optional] DWORD                    *pCapabilites
);

Параметры

[in] pProxy

Указатель, указывающий прокси-сервер для запроса. Этот параметр не может иметь значение NULL. Дополнительные сведения см. в разделе «Примечания».

[out, optional] pwAuthnSvc

Указатель на переменную, которая получает текущую службу проверки подлинности. Это будет одно значение, взятое из констант службы проверки подлинности. Этот параметр не может иметь значение NULL.

[out, optional] pAuthzSvc

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

[out, optional] pServerPrincName

Текущее имя субъекта. Строка будет выделена вызываемым объектом с помощью CoTaskMemAlloc и должна быть освобождена вызывающим объектом с помощью CoTaskMemFree. Флаг EOAC_MAKE_FULLSIC не принимается в параметре pCapabilities . Дополнительные сведения о формах msstd и fullsic см. в разделе Имена субъектов. Если вызывающий объект задает значение NULL, текущее имя субъекта не извлекается.

[out, optional] pAuthnLevel

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

[out, optional] pImpLevel

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

[out, optional] pAuthInfo

Указатель на дескриптор, получающий удостоверение клиента, переданного в последний вызов IClientSecurity::SetBlanket (или значение по умолчанию). Значения по умолчанию действительны только до тех пор, пока прокси-сервер не будет освобожден. Если вызывающий объект задает значение NULL, удостоверение клиента не извлекается. Формат структуры, на которую ссылается дескриптор, зависит от службы проверки подлинности. Приложение не должно записывать или освобождать память. Для NTLMSSP и Kerberos, если клиент указал структуру в параметре pAuthInfoдля CoInitializeSecurity, это значение возвращается. Для Schannel, если сертификат для клиента можно получить из диспетчера сертификатов, это значение возвращается здесь. В противном случае возвращается значение NULL . См . RPC_AUTH_IDENTITY_HANDLE.

[out, optional] pCapabilites

Указатель на переменную, получающую возможности прокси-сервера. Если вызывающий объект задает значение NULL, текущие флаги возможностей не извлекаются.

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

Эта функция может возвращать стандартные возвращаемые значения E_INVALIDARG, E_OUTOFMEMORY и S_OK.

Комментарии

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

pProxy->QueryInterface(IID_IClientSecurity, (void**)&pcs);
pcs->QueryBlanket(
    pProxy, pAuthnSvc, pAuthzSvc, pServerPrincName, pAuthnLevel, pImpLevel, ppAuthInfo, pCapabilities
  );
pcs->Release();

Эта последовательность вызывает QueryInterface на прокси-сервере, чтобы получить указатель на IClientSecurity, а с помощью полученного указателя вызывает IClientSecurity::QueryBlanket , а затем освобождает указатель.

В pProxy можно передать любой прокси-сервер, например прокси-сервер, который вы получаете через вызов CoCreateInstance или CoUnmarshalInterface, или передать указатель интерфейса. Это может быть любой интерфейс. Невозможно передать указатель на то, что не является прокси-сервером. Таким образом, невозможно передать указатель на интерфейс с локальным ключевое слово в определении интерфейса, так как для такого интерфейса не создается прокси-сервер. IUnknown является исключением из этого правила.

Требования

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

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

CoQueryClientBlanket

CoSetProxyBlanket

IClientSecurity::QueryBlanket

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