Поделиться через


Метод ICertAdmin::GetCRL (certadm.h)

Метод GetCRL извлекает текущий список отзыва сертификатов (CRL) для центра сертификации служб сертификации (ЦС). Этот метод был впервые определен в интерфейсе ICertAdmin .

Синтаксис

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

Параметры

[in] strConfig

Представляет допустимую строку конфигурации для ЦС, список отзыва сертификатов которого требуется получить. Эта строка имеет форму COMPUTERNAME\CANAME, где COMPUTERNAME — сетевое имя сервера служб сертификатов, а CANAME — общее имя ЦС, указанное во время настройки служб сертификатов. Сведения об имени строки конфигурации см. в разделе ICertConfig.

Важно!GetCRL не очищает внутренний кэш при изменении строки конфигурации. При изменении строки конфигурации для ЦС необходимо создать экземпляр нового объекта ICertAdmin и снова вызвать этот метод с новой строкой конфигурации.
 

[in] Flags

Задает формат возвращаемого списка отзыва сертификатов. Этот параметр может быть одним из следующих флагов.

Значение Значение
CR_OUT_BASE64HEADER
Формат BASE64 с начальным и конечным.
CR_OUT_BASE64
Формат BASE64 без начала и конца.
CR_OUT_BINARY
Двоичный формат.

[out] pstrCRL

Указатель на BSTR , получающий список отзыва сертификатов.

При использовании этого метода создайте переменную типа BSTR , задайте для переменной значение NULL и передайте адрес этой переменной в параметре pbstrCRL . Завершив использование переменной BSTR , освободите ее, вызвав функцию SysFreeString .

Возвращаемое значение

Если функция выполнена успешно, функция возвращает S_OK.

Если функция завершается сбоем, она возвращает значение HRESULT, указывающее на ошибку. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.

Код возврата Описание
E_POINTER
Параметр strConfig не может иметь значение NULL или список отзыва сертификатов не найден.

Комментарии

Задачи администрирования используют DCOM. Код, вызывающий этот метод интерфейса, как определено в более ранней версии Certadm.h, будет выполняться на серверах Windows, если клиент и сервер работают под одной операционной системой Windows.

Примеры

В следующем примере объявляются необходимые переменные, инициализируется COM и создается экземпляр класса CertAdmin . Затем он вызывает 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
Header certadm.h (включая Certsrv.h)
Библиотека Certidl.lib
DLL Certadm.dll

См. также раздел

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig