IBackgroundCopyJobHttpOptions::GetClientCertificate-Methode (bits2_5.h)
Ruft das Clientzertifikat aus dem Auftrag ab.
Syntax
HRESULT GetClientCertificate(
[out] BG_CERT_STORE_LOCATION *pStoreLocation,
[out] LPWSTR *pStoreName,
[out] byte **ppCertHashBlob,
[out] LPWSTR *pSubjectName
);
Parameter
[out] pStoreLocation
Gibt den Speicherort eines Systemspeichers an, der zum Suchen des Zertifikats verwendet werden soll. Mögliche Werte finden Sie in der BG_CERT_STORE_LOCATION-Enumeration .
[out] pStoreName
Null-terminierte Zeichenfolge, die den Namen des Zertifikatspeichers enthält. Um die Zeichenfolge frei zu geben, rufen Sie die CoTaskMemFree-Funktion auf.
[out] ppCertHashBlob
SHA1-Hash, der das Zertifikat identifiziert. Rufen Sie die CoTaskMemFree-Funktion auf, um das Blob nach Abschluss des Vorgangs frei zu geben.
[out] pSubjectName
Null-terminierte Zeichenfolge, die den einfachen Antragstellernamen des Zertifikats enthält. Die RDNs im Antragstellernamen befinden sich in umgekehrter Reihenfolge gegenüber der Anzeige des Zertifikats. Der Antragstellername kann leer sein, wenn das Zertifikat keinen Antragstellernamen enthält. Um die Zeichenfolge frei zu geben, rufen Sie die CoTaskMemFree-Funktion auf.
Rückgabewert
In der folgenden Tabelle sind einige der möglichen Rückgabewerte aufgeführt.
Rückgabecode | Beschreibung |
---|---|
|
Das Zertifikat wurde erfolgreich abgerufen. |
|
Der Auftrag gibt kein Zertifikat an, oder der Benutzer verfügt nicht über Berechtigungen für das Zertifikat. |
|
Einer der Parameter ist NULL. |
Hinweise
Sie verwenden die IBackgroundCopyJobHttpOptions::SetClientCertificateByID - oder IBackgroundCopyJobHttpOptions::SetClientCertificateByName-Methode , um das Zertifikat anzugeben.
Beispiele
Im folgenden Beispiel wird gezeigt, wie Informationen zum Clientzertifikat abgerufen werden. Im Beispiel wird davon ausgegangen, dass pJob auf einen gültigen Auftrag verweist.
#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();
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista |
Unterstützte Mindestversion (Server) | Windows Server 2008 |
Zielplattform | Windows |
Kopfzeile | bits2_5.h (Bits.h einschließen) |
Bibliothek | Bits.lib |
Weitere Informationen
IBackgroundCopyJobHttpOptions::RemoveClientCertificate