Share via


ICertServerExit::EnumerateExtensions 메서드(certif.h)

EnumerateExtensions 메서드는 열거할 다음 인증서 확장의 OID(개체 식별자) 문자열(확장 이름이라고도 함)을 반환한 다음 내부 포인터를 다음 확장으로 증분합니다.

EnumerateExtensions를 호출하기 전에 애플리케이션은 ICertServerExit::EnumerateExtensionsSetup을 호출합니다. 열거가 완료되면 애플리케이션은 ICertServerExit::EnumerateExtensionsClose를 호출합니다.

구문

HRESULT EnumerateExtensions(
  [out] BSTR *pstrExtensionName
);

매개 변수

[out] pstrExtensionName

열거된 확장 이름에 대한 포인터입니다.

반환 값

C++

메서드가 성공하면 메서드는 S_OK 반환하고 *pstrExtensionName 은 열거된 확장의 이름을 포함하는 BSTR 로 설정됩니다. 마지막 확장이 이미 열거된 경우 S_FALSE 값이 반환됩니다.

이 메서드를 사용하려면 BSTR 형식의 변수를 만들고, 변수를 NULL로 설정하고, 이 변수의 주소를 pstrExtensionName으로 전달합니다.

BSTR 사용을 마쳤으면 SysFreeString 함수를 호출하여 해제합니다.

메서드가 실패하면 오류를 나타내는 HRESULT 값이 반환됩니다. 일반적인 오류 코드 목록은 일반적인 HRESULT 값을 참조하세요.

VB

열거된 확장의 이름을 포함하는 문자열을 반환하거나 마지막 확장이 이미 열거된 경우 빈 문자열을 반환합니다.

설명

이 메서드는 데이터베이스에 기록된 인증서 확장을 열거하며, 사용하지 않도록 설정되고 인증서에 표시되지 않는 인증서 확장도 열거합니다. 확장을 사용하지 않도록 설정할지 여부를 확인하려면 ICertServerExit::GetCertificateExtensionFlags 를 사용하여 확장의 EXTENSION_DISABLE_FLAG 비트를 테스트합니다.

예제

BSTR     bstrExt = NULL;
VARIANT  varExt;
LONG     ExtFlags;
HRESULT  hr;

VariantInit(&varExt);

// Enumerate the extensions.
while (S_OK ==
      (hr = pCertServerExit->EnumerateExtensions(&bstrExt)))
{
  // Retrieve the extension data.
  if (FAILED(pCertServerExit->GetCertificateExtension(
                              bstrExt,
                              PROPTYPE_BINARY,
                              &varExt)))
      printf("Failed GetCertificateExtension\n");
  else
  {
     // Retrieve the extension flags.
    if (FAILED(pCertServerExit->GetCertificateExtensionFlags(
                                &ExtFlags)))
        printf("Failed GetCertificateExtensionFlags\n");
    else
        // This sample will display the extension OID string,
        // the extension flags (in hex) and
        // the length of the BSTR binary ASN-encode extension.
        printf("Extension: %ws\tFlags:%x\tLength:%u\n",
               bstrExt,
               ExtFlags,
               SysStringByteLen(varExt.bstrVal));
  }
}
// Determine if hr was S_FALSE, meaning the enumeration 
// was completed, or some other error.
if (S_FALSE != hr)
    printf("Failed EnumerateExtensions - %x\n", hr);
// Free BSTR resource.
if (NULL != bstrExt)
    SysFreeString(bstrExt);
// Free VARIANT resource.
    VariantClear(&varExt);

요구 사항

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

추가 정보

ICertServerExit

ICertServerExit::EnumerateExtensionsClose

ICertServerExit::EnumerateExtensionsSetup

ICertServerExit::GetCertificateExtension

ICertServerExit::GetCertificateExtensionFlags