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를 사용하여 호출자가 해제해야 합니다. pCapabilities 매개 변수에서는 EOAC_MAKE_FULLSIC 플래그가 허용되지 않습니다. msstd 및 fullsic 양식에 대한 자세한 내용은 보안 주체 이름을 참조하세요. 호출자가 NULL을 지정하면 현재 보안 주체 이름이 검색되지 않습니다.

[out, optional] pAuthnLevel

현재 인증 수준을 수신하는 변수에 대한 포인터입니다. 인증 수준 상수에서 가져온 단일 값입니다. 호출자가 NULL을 지정하는 경우 현재 인증 수준이 검색되지 않습니다.

[out, optional] pImpLevel

현재 가장 수준을 수신하는 변수에 대한 포인터입니다. 가장 수준 상수에서 가져온 단일 값입니다. 호출자가 NULL을 지정하면 현재 가장 수준이 검색되지 않습니다.

[out, optional] pAuthInfo

마지막 IClientSecurity::SetBlanket 호출(또는 기본값)에 전달된 클라이언트의 ID를 수신하는 핸들에 대한 포인터입니다. 기본값은 프록시가 해제될 때까지만 유효합니다. 호출자가 NULL을 지정하면 클라이언트 ID가 검색되지 않습니다. 핸들이 참조하는 구조체의 형식은 인증 서비스에 따라 달라집니다. 애플리케이션은 메모리를 쓰거나 해제해서는 안 됩니다. 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 호출을 통해 가져오는 프록시와 같은 프록시를 전달하거나 인터페이스 포인터를 전달할 수 있습니다. 모든 인터페이스일 수 있습니다. 프록시가 아닌 항목에 대한 포인터를 전달할 수 없습니다. 따라서 해당 인터페이스에 대한 프록시가 만들어지지 않으므로 인터페이스 정의에 로컬 키워드(keyword) 있는 인터페이스에 대한 포인터를 전달할 수 없습니다. IUnknown 은 이 규칙의 예외입니다.

요구 사항

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

추가 정보

CoQueryClientBlanket

CoSetProxyBlanket

IClientSecurity::QueryBlanket

COM의 보안