Share via


ICertAdmin::GetCRL 메서드(certadm.h)

GetCRL 메서드는 CA(인증서 서비스 인증 기관)에 대한 현재 CRL(인증서 해지 목록) 검색합니다. 이 메서드는 ICertAdmin 인터페이스에서 처음 정의되었습니다.

구문

HRESULT GetCRL(
  [in]  const BSTR strConfig,
  [in]  LONG       Flags,
  [out] BSTR       *pstrCRL
);

매개 변수

[in] strConfig

검색하려는 CRL의 CA에 대한 유효한 구성 문자열을 나타냅니다. 이 문자열은 COMPUTERNAME\CANAME 형식입니다. 여기서 COMPUTERNAME은 인증서 서비스 서버의 네트워크 이름이고 CANAME는 인증서 서비스 설정 중에 입력한 대로 CA의 일반 이름입니다. 구성 문자열 이름에 대한 자세한 내용은 ICertConfig를 참조하세요.

중요GetCRL 은 구성 문자열이 변경되면 내부 캐시를 지우지 않습니다. CA에 대한 구성 문자열을 변경하는 경우 새 ICertAdmin 개체를 인스턴스화하고 새 구성 문자열을 사용하여 이 메서드를 다시 호출해야 합니다.
 

[in] Flags

반환된 CRL의 형식을 지정합니다. 이 매개 변수는 다음 플래그 중 하나일 수 있습니다.

의미
CR_OUT_BASE64HEADER
시작/끝의 BASE64 형식입니다.
CR_OUT_BASE64
시작/끝이 없는 BASE64 형식입니다.
CR_OUT_BINARY
이진 형식입니다.

[out] pstrCRL

CRL을 수신하는 BSTR 에 대한 포인터입니다.

이 메서드를 사용하는 경우 BSTR 형식의 변수를 만들고, 변수를 NULL로 설정하고, pbstrCRL 매개 변수에 이 변수의 주소를 전달합니다. BSTR 변수 사용을 마쳤으면 SysFreeString 함수를 호출하여 해제합니다.

반환 값

함수가 성공하면 함수는 S_OK 반환합니다.

함수가 실패하면 오류를 나타내는 HRESULT 값을 반환합니다. 가능한 값에는 다음 표에 있는 값이 포함되지만, 이에 국한되는 것은 아닙니다. 일반적인 오류 코드 목록은 일반 HRESULT 값을 참조하세요.

반환 코드 설명
E_POINTER
strConfig 매개 변수는 NULL일 수 없거나 CRL을 찾을 수 없습니다.

설명

관리 작업은 DCOM을 사용합니다. 이전 버전의 Certadm.h에 정의된 대로 이 인터페이스 메서드를 호출하는 코드는 클라이언트와 서버가 모두 동일한 Windows 운영 체제를 실행하는 한 Windows 기반 서버에서 실행됩니다.

예제

다음 예제에서는 필요한 변수를 선언하고, COM을 초기화하고, CertAdmin 클래스의 instance 만듭니다. 그런 다음 GetCRL 을 호출하고 성공 또는 실패를 화면에 출력합니다. 마지막으로 리소스를 해제합니다.

    ICertAdmin * pCertAdmin = NULL;  // pointer to interface object
    BSTR bstrCA = NULL;              // variable for machine\CAName
    BSTR bstrCRL = NULL;             // variable to contain
                                     // the retrieved CRL

    HRESULT hr;

    //  Initialize COM.
    hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
    if (FAILED(hr))
    {
        printf("Failed CoInitializeEx [%x]\n", hr);
        goto error;
    }

    //  Create the CertAdmin object
    //  and get a pointer to its ICertAdmin interface.
    hr = CoCreateInstance( CLSID_CCertAdmin,
                           NULL,
                           CLSCTX_INPROC_SERVER,
                           IID_ICertAdmin,
                           (void **)&pCertAdmin);
    if (FAILED(hr))
    {
        printf("Failed CoCreateInstance pCertAdmin [%x]\n", hr);
        goto error;
    }

    //  Note the use of two backslashes (\\) 
   //  in C++ to produce one backslash (\).
    bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
    if (FAILED(hr))
    {
        printf("Failed to allocate memory for bstrCA\n");
        goto error;
    }

    //  Retrieve the CRL.
    hr = pCertAdmin->GetCRL( bstrCA, CR_OUT_BINARY, &bstrCRL );
    if (FAILED(hr))
    {
        printf("Failed GetCRL [%x]\n", hr);
        goto error;
    }
    else
        printf("CRL retrieved successfully\n");
        //  Use the CRL as needed.

    //  Done processing.

error:

    //  Free BSTR values.
    if (NULL != bstrCA)
        SysFreeString(bstrCA);

    if (NULL != bstrCRL)
        SysFreeString(bstrCRL);

    //  Clean up object resources.
    if (NULL != pCertAdmin)
        pCertAdmin->Release();

    //  Free COM resources.
    CoUninitialize();

요구 사항

요구 사항
지원되는 최소 클라이언트 지원되는 버전 없음
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 certadm.h(Certsrv.h 포함)
라이브러리 Certidl.lib
DLL Certadm.dll

추가 정보

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig