다음을 통해 공유


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

EnumerateExtensions 메서드는 현재 확장의 OID(개체 식별자)를 검색하고 내부 열거형 포인터를 다음 확장으로 이동합니다.

구문

HRESULT EnumerateExtensions(
  [out] BSTR *pstrExtensionName
);

매개 변수

[out] pstrExtensionName

현재 확장의 OID를 포함하는 BSTR 에 대한 포인터입니다.

반환 값

C++

메서드가 성공하면 메서드는 S_OK 반환하고 pstrExtensionName 매개 변수에는 현재 확장의 OID가 포함됩니다. 마지막 확장이 이미 열거된 경우 S_FALSE 값이 반환됩니다.

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

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

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

VB

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

설명

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

열거가 완료되면 EnumerateExtensionsClose 메서드를 호출하여 열거형 호출에 사용되는 리소스를 해제합니다.

예제

#include <windows.h>
#include <stdio.h>
#include <Certif.h>

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

VariantInit(&varExt);

// Enumerate the extensions.
while (S_OK ==
      (hr = pCertServerPol->EnumerateExtensions(&bstrExt)))
{
  // Retrieve the extension data.
  if (FAILED(pCertServerPol->GetCertificateExtension(
                             bstrExt,
                             PROPTYPE_BINARY,
                             &varExt)))
      printf("Failed GetCertificateExtension\n");
  else
  {
     // Retrieve the extension flags.
    if (FAILED(pCertServerPol->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

추가 정보

EnumerateExtensionsClose

EnumerateExtensionsSetup

GetCertificateExtension

GetCertificateExtensionFlags

ICertServerPolicy