다음을 통해 공유


IBackgroundCopyJobHttpOptions::GetClientCertificate 메서드(bits2_5.h)

작업에서 클라이언트 인증서를 검색합니다.

구문

HRESULT GetClientCertificate(
  [out] BG_CERT_STORE_LOCATION *pStoreLocation,
  [out] LPWSTR                 *pStoreName,
  [out] byte                   **ppCertHashBlob,
  [out] LPWSTR                 *pSubjectName
);

매개 변수

[out] pStoreLocation

인증서를 찾는 데 사용할 시스템 저장소의 위치를 식별 합니다. 가능한 값은 BG_CERT_STORE_LOCATION 열거형을 참조하세요.

[out] pStoreName

인증서 저장소의 이름을 포함하는 Null로 종료된 문자열입니다. 완료되면 문자열을 해제하려면 CoTaskMemFree 함수를 호출합니다.

[out] ppCertHashBlob

인증서를 식별하는 SHA1 해시입니다. 완료되면 Blob을 해제하려면 CoTaskMemFree 함수를 호출합니다.

[out] pSubjectName

인증서의 간단한 주체 이름을 포함하는 Null로 끝나는 문자열입니다. 주체 이름의 RDN은 인증서가 표시하는 것과 반대 순서로 표시됩니다. 인증서에 주체 이름이 없는 경우 주체 이름을 비울 수 있습니다. 완료되면 문자열을 해제하려면 CoTaskMemFree 함수를 호출합니다.

반환 값

다음 표에서는 가능한 반환 값 중 일부를 나열합니다.

반환 코드 설명
S_OK
인증서를 성공적으로 검색했습니다.
RPC_X_BAD_STUB_DATA
작업이 인증서를 지정하지 않거나 사용자에게 인증서에 대한 권한이 없습니다.
RPC_X_NULL_REF_POINTER
매개 변수 중 하나는 NULL입니다.

설명

IBackgroundCopyJobHttpOptions::SetClientCertificateByID 또는 IBackgroundCopyJobHttpOptions::SetClientCertificateByName 메서드를 사용하여 인증서를 지정합니다.

예제

다음 예제에서는 클라이언트 인증서에 대한 정보를 검색하는 방법을 보여줍니다. 이 예제에서는 pJob이 유효한 작업을 가리킨다고 가정합니다.

#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();
  }

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
대상 플랫폼 Windows
헤더 bits2_5.h(Bits.h 포함)
라이브러리 Bits.lib

추가 정보

IBackgroundCopyJobHttpOptions

IBackgroundCopyJobHttpOptions::RemoveClientCertificate

IBackgroundCopyJobHttpOptions::SetClientCertificateByID

IBackgroundCopyJobHttpOptions::SetClientCertificateByName