Método IBackgroundCopyJobHttpOptions::GetClientCertificate (bits2_5.h)
Recupera el certificado de cliente del trabajo.
Sintaxis
HRESULT GetClientCertificate(
[out] BG_CERT_STORE_LOCATION *pStoreLocation,
[out] LPWSTR *pStoreName,
[out] byte **ppCertHashBlob,
[out] LPWSTR *pSubjectName
);
Parámetros
[out] pStoreLocation
Identifica la ubicación de un almacén del sistema que se va a usar para buscar el certificado. Para conocer los valores posibles, consulte la enumeración BG_CERT_STORE_LOCATION .
[out] pStoreName
Cadena terminada en NULL que contiene el nombre del almacén de certificados. Para liberar la cadena cuando termine, llame a la función CoTaskMemFree .
[out] ppCertHashBlob
Hash SHA1 que identifica el certificado. Para liberar el blob cuando haya terminado, llame a la función CoTaskMemFree .
[out] pSubjectName
Cadena terminada en NULL que contiene el nombre de sujeto simple del certificado. Los RDN del nombre del firmante están en el orden inverso de lo que muestra el certificado. El nombre del firmante puede estar vacío si el certificado no contiene un nombre de sujeto. Para liberar la cadena cuando termine, llame a la función CoTaskMemFree .
Valor devuelto
En la tabla siguiente se enumeran algunos de los posibles valores devueltos.
Código devuelto | Descripción |
---|---|
|
Recuperó correctamente el certificado. |
|
El trabajo no especifica un certificado o el usuario no tiene permisos para el certificado. |
|
Uno de los parámetros es NULL. |
Comentarios
Use el método IBackgroundCopyJobHttpOptions::SetClientCertificateByID o IBackgroundCopyJobHttpOptions::SetClientCertificateByName para especificar el certificado.
Ejemplos
En el ejemplo siguiente se muestra cómo recuperar información sobre el certificado de cliente. En el ejemplo se supone que pJob apunta a un trabajo 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 | Value |
---|---|
Cliente mínimo compatible | Windows Vista |
Servidor mínimo compatible | Windows Server 2008 |
Plataforma de destino | Windows |
Encabezado | bits2_5.h (incluya Bits.h) |
Library | Bits.lib |
Consulte también
IBackgroundCopyJobHttpOptions::RemoveClientCertificate