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
現在の認証サービスを受け取る変数へのポインター。 これは、 認証サービス定数から取得された 1 つの値になります。 このパラメーターを NULL にすることはできません。
[out, optional] pAuthzSvc
現在の承認サービスを受け取る変数へのポインター。 これは、 承認定数から取得された 1 つの値になります。 呼び出し元が NULL を指定した場合、現在の承認サービスは取得されません。
[out, optional] pServerPrincName
現在のプリンシパル名。 文字列は CoTaskMemAlloc を使用して呼び出し先によって割り当てられ、 CoTaskMemFree を使用して呼び出し元によって解放される必要があります。 EOAC_MAKE_FULLSIC フラグは pCapabilities パラメーターでは受け入れられません。 msstd フォームと fullsic フォームの詳細については、「 プリンシパル名」を参照してください。 呼び出し元が NULL を指定した場合、現在のプリンシパル名は取得されません。
[out, optional] pAuthnLevel
現在の認証レベルを受け取る変数へのポインター。 これは、 認証レベルの定数から取得された 1 つの値になります。 呼び出し元が NULL を指定した場合、現在の認証レベルは取得されません。
[out, optional] pImpLevel
現在の偽装レベルを受け取る変数へのポインター。 これは、 偽装レベルの定数から取得された 1 つの値になります。 呼び出し元が 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 を含む) |
Library | Ole32.lib |
[DLL] | Ole32.dll |