Méthode IBackgroundCopyJobHttpOptions ::GetClientCertificate (bits2_5.h)
Récupère le certificat client à partir du travail.
Syntaxe
HRESULT GetClientCertificate(
[out] BG_CERT_STORE_LOCATION *pStoreLocation,
[out] LPWSTR *pStoreName,
[out] byte **ppCertHashBlob,
[out] LPWSTR *pSubjectName
);
Paramètres
[out] pStoreLocation
Identifie l’emplacement d’un magasin système à utiliser pour rechercher le certificat. Pour connaître les valeurs possibles, consultez l’énumération BG_CERT_STORE_LOCATION .
[out] pStoreName
Chaîne terminée par null qui contient le nom du magasin de certificats. Pour libérer la chaîne lorsque vous avez terminé, appelez la fonction CoTaskMemFree .
[out] ppCertHashBlob
Hachage SHA1 qui identifie le certificat. Pour libérer l’objet blob lorsque vous avez terminé, appelez la fonction CoTaskMemFree .
[out] pSubjectName
Chaîne terminée par null qui contient le nom d’objet simple du certificat. Les RDN dans le nom de l’objet sont dans l’ordre inverse de ce que le certificat affiche. Le nom de l’objet peut être vide si le certificat ne contient pas de nom d’objet. Pour libérer la chaîne lorsque vous avez terminé, appelez la fonction CoTaskMemFree .
Valeur retournée
Le tableau suivant répertorie certaines des valeurs de retour possibles.
Code de retour | Description |
---|---|
|
Le certificat a été récupéré. |
|
Le travail ne spécifie pas de certificat ou l’utilisateur n’a pas d’autorisations sur le certificat. |
|
L’un des paramètres est NULL. |
Remarques
Vous utilisez la méthode IBackgroundCopyJobHttpOptions ::SetClientCertificateByID ou IBackgroundCopyJobHttpOptions ::SetClientCertificateByName pour spécifier le certificat.
Exemples
L’exemple suivant montre comment récupérer des informations sur le certificat client. L’exemple suppose que pJob pointe vers un travail valide.
#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();
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista |
Serveur minimal pris en charge | Windows Server 2008 |
Plateforme cible | Windows |
En-tête | bits2_5.h (include Bits.h) |
Bibliothèque | Bits.lib |
Voir aussi
IBackgroundCopyJobHttpOptions ::RemoveClientCertificate