Metodo IBackgroundCopyJobHttpOptions::GetClientCertificate (bits2_5.h)
Recupera il certificato client dal processo.
Sintassi
HRESULT GetClientCertificate(
[out] BG_CERT_STORE_LOCATION *pStoreLocation,
[out] LPWSTR *pStoreName,
[out] byte **ppCertHashBlob,
[out] LPWSTR *pSubjectName
);
Parametri
[out] pStoreLocation
Identifica la posizione di un archivio di sistema da utilizzare per la ricerca del certificato. Per i valori possibili, vedere l'enumerazione BG_CERT_STORE_LOCATION .
[out] pStoreName
Stringa con terminazione Null contenente il nome dell'archivio certificati. Per liberare la stringa al termine, chiamare la funzione CoTaskMemFree .
[out] ppCertHashBlob
Hash SHA1 che identifica il certificato. Per liberare il BLOB al termine, chiamare la funzione CoTaskMemFree .
[out] pSubjectName
Stringa con terminazione Null contenente il nome soggetto semplice del certificato. I nomi RDN nel nome soggetto sono nell'ordine inverso rispetto a quello visualizzato dal certificato. Il nome soggetto può essere vuoto se il certificato non contiene un nome soggetto. Per liberare la stringa al termine, chiamare la funzione CoTaskMemFree .
Valore restituito
Nella tabella seguente sono elencati alcuni dei possibili valori restituiti.
Codice restituito | Descrizione |
---|---|
|
È stato recuperato correttamente il certificato. |
|
Il processo non specifica un certificato o l'utente non dispone delle autorizzazioni per il certificato. |
|
Uno dei parametri è NULL. |
Commenti
Usare il metodo IBackgroundCopyJobHttpOptions::SetClientCertificateByID o IBackgroundCopyJobHttpOptions::SetClientCertificateByName per specificare il certificato.
Esempio
Nell'esempio seguente viene illustrato come recuperare informazioni sul certificato client. Nell'esempio si presuppone che pJob punti a un processo valido.
#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();
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista |
Server minimo supportato | Windows Server 2008 |
Piattaforma di destinazione | Windows |
Intestazione | bits2_5.h (include Bits.h) |
Libreria | Bits.lib |
Vedi anche
IBackgroundCopyJobHttpOptions::RemoveClientCertificate