IBackgroundCopyJobHttpOptions::GetClientCertificate メソッド (bits2_5.h)
ジョブからクライアント証明書を取得します。
構文
HRESULT GetClientCertificate(
[out] BG_CERT_STORE_LOCATION *pStoreLocation,
[out] LPWSTR *pStoreName,
[out] byte **ppCertHashBlob,
[out] LPWSTR *pSubjectName
);
パラメーター
[out] pStoreLocation
証明書の参照に使用するシステム ストアの場所を識別します。 使用可能な値については、 BG_CERT_STORE_LOCATION 列挙を参照してください。
[out] pStoreName
証明書ストアの名前を含む Null で終わる文字列。 完了したら文字列を解放するには、 CoTaskMemFree 関数を呼び出します。
[out] ppCertHashBlob
証明書を識別する SHA1 ハッシュ。 完了したら BLOB を解放するには、 CoTaskMemFree 関数を呼び出します。
[out] pSubjectName
証明書の単純なサブジェクト名を含む Null で終わる文字列。 サブジェクト名の RDN は、証明書に表示される順序とは逆の順序になります。 証明書にサブジェクト名が含まれていない場合は、サブジェクト名を空にすることができます。 完了したら文字列を解放するには、 CoTaskMemFree 関数を呼び出します。
戻り値
次の表に、可能な戻り値の一部を示します。
リターン コード | 説明 |
---|---|
|
証明書が正常に取得されました。 |
|
ジョブで証明書が指定されていないか、ユーザーに証明書に対するアクセス許可がありません。 |
|
パラメーターの 1 つが NULL です。 |
注釈
証明書を指定するには、 IBackgroundCopyJobHttpOptions::SetClientCertificateByID または IBackgroundCopyJobHttpOptions::SetClientCertificateByName メソッドを使用します。
例
次の例は、クライアント証明書に関する情報を取得する方法を示しています。 この例では、pJob が有効なジョブを指していることを前提としています。
#define THUMBPRINT_SIZE 20
HRESULT hr = S_OK;
IBackgroundCopyJob* pJob = NULL;
IBackgroundCopyJobHttpOptions* pHttpOptions = NULL;
GUID JobId;
BG_CERT_STORE_LOCATION StoreLocation;
LPWSTR pStoreName = NULL;
BYTE* pThumbprint = NULL;
LPWSTR pSubjectName = NULL;
// Retrieve a pointer to the IBackgroundCopyJobHttpOptions interface.
hr = pJob->QueryInterface(__uuidof(IBackgroundCopyJobHttpOptions), (void**)&pHttpOptions);
pJob->Release();
if (FAILED(hr))
{
wprintf(L"pJob->QueryInterface failed with 0x%x.\n", hr);
goto cleanup;
}
// Retrieve information about the client certificate set on the job.
hr = pHttpOptions->GetClientCertificate(&StoreLocation, &pStoreName,
&pThumbprint, &pSubjectName);
if (S_OK == hr)
{
wprintf(L"\nLocation: %d\nStore name: %s\nSubject: %s\n",
StoreLocation, pStoreName, pSubjectName);
wprintf(L"Thumbprint: ");
for (DWORD i = 0; i < THUMBPRINT_SIZE; i++)
{
wprintf(L"%x ", pThumbprint[i]);
}
wprintf(L"\n");
CoTaskMemFree(pStoreName);
CoTaskMemFree(pThumbprint);
CoTaskMemFree(pSubjectName);
}
else if (RPC_X_BAD_STUB_DATA == hr)
{
wprintf(L"The job does not specify a client certificate or\n"
L"the user does not have permission to access the certificate.\n");
}
else
{
wprintf(L"pHttpOptions->GetClientCertificate failed with 0x%x.\n", hr);
goto cleanup;
}
cleanup:
if (pHttpOptions)
{
hr = pHttpOptions->Release();
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
対象プラットフォーム | Windows |
ヘッダー | bits2_5.h (Bits.h を含む) |
Library | Bits.lib |
こちらもご覧ください
IBackgroundCopyJobHttpOptions::RemoveClientCertificate