Método IBackgroundCopyJobHttpOptions::GetClientCertificate (bits2_5.h)
Recupera o certificado do cliente a partir do trabalho.
Sintaxe
HRESULT GetClientCertificate(
[out] BG_CERT_STORE_LOCATION *pStoreLocation,
[out] LPWSTR *pStoreName,
[out] byte **ppCertHashBlob,
[out] LPWSTR *pSubjectName
);
Parâmetros
[out] pStoreLocation
Identifica o local de um repositório do sistema a ser usado para procurar o certificado. Para obter valores possíveis, consulte a enumeração BG_CERT_STORE_LOCATION .
[out] pStoreName
Cadeia de caracteres terminada em nulo que contém o nome do repositório de certificados. Para liberar a cadeia de caracteres quando terminar, chame a função CoTaskMemFree .
[out] ppCertHashBlob
Hash SHA1 que identifica o certificado. Para liberar o blob quando terminar, chame a função CoTaskMemFree .
[out] pSubjectName
Cadeia de caracteres terminada em nulo que contém o nome da entidade simples do certificado. Os RDNs no nome da entidade estão na ordem inversa do que o certificado exibe. O nome da entidade poderá ficar vazio se o certificado não contiver um nome de entidade. Para liberar a cadeia de caracteres quando terminar, chame a função CoTaskMemFree .
Retornar valor
A tabela a seguir lista alguns dos valores retornados possíveis.
Código de retorno | Descrição |
---|---|
|
O certificado foi recuperado com êxito. |
|
O trabalho não especifica um certificado ou o usuário não tem permissões para o certificado. |
|
Um dos parâmetros é NULL. |
Comentários
Use o método IBackgroundCopyJobHttpOptions::SetClientCertificateByID ou IBackgroundCopyJobHttpOptions::SetClientCertificateByName para especificar o certificado.
Exemplos
O exemplo a seguir mostra como recuperar informações sobre o certificado do cliente. O exemplo pressupõe que pJob aponta para um trabalho válido.
#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();
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista |
Servidor mínimo com suporte | Windows Server 2008 |
Plataforma de Destino | Windows |
Cabeçalho | bits2_5.h (inclua Bits.h) |
Biblioteca | Bits.lib |
Confira também
IBackgroundCopyJobHttpOptions::RemoveClientCertificate