Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Recupera o certificado do cliente 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 pesquisar 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á estar vazio se o certificado não contiver um nome de assunto. Para liberar a cadeia de caracteres quando terminar, chame a função CoTaskMemFree .
Valor de retorno
A tabela a seguir lista alguns dos possíveis valores retornados.
| Código de retorno | Description |
|---|---|
|
Recuperou o certificado 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. |
Observações
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();
}
Requirements
| Requirement | Value |
|---|---|
| Cliente mínimo suportado | Windows Vista |
| Servidor mínimo compatível | Windows Server 2008 |
| da Plataforma de Destino | Windows |
| Header | bits2_5.h (incluir Bits.h) |
| Library | Bits.lib |
Consulte também
IBackgroundCopyJobHttpOptions::RemoveClientCertificate