IEnumCERTVIEWEXTENSION::GetFlags 메서드(certview.h)
GetFlags 메서드는 확장 열거형 시퀀스에서 현재 확장의 정책 및 원본 플래그를 검색합니다.
정책 및 원본 플래그는 모두 하나의 변수에 반환되고 비트 마스크는 개별 값을 검색하기 위해 제공됩니다.
구문
HRESULT GetFlags(
[out] LONG *pFlags
);
매개 변수
[out] pFlags
확장의 정책 및 원본 플래그를 포함하는 LONG 형식에 대한 포인터입니다. pFlags 매개 변수가 NULL로 설정된 경우 이 메서드는 실패합니다.
반환 값
C++
메서드가 성공하면 메서드는 S_OK 반환합니다.메서드가 실패하면 오류를 나타내는 HRESULT 값이 반환됩니다. 일반적인 오류 코드 목록은 일반적인 HRESULT 값을 참조하세요.
VB
반환 값은 확장의 정책 및 원본 값을 나타냅니다.설명
이 메서드는 현재 확장 열거형 시퀀스에서 참조하는 확장의 정책 및 원본 플래그를 검색하는 데 사용됩니다.
정책 플래그는 인증서 확장에 대한 정보를 제공하며 정책 모듈에서 설정할 수 있습니다.
원본 플래그는 인증서 확장을 설정하고 서버 엔진에서만 설정된 모듈을 나타냅니다.
확장에서 하나 이상의 정책 플래그를 반환할 수 있습니다. 다음은 미리 정의된 정책 플래그입니다.
정책 플래그 값 | 설명 |
---|---|
EXTENSION_CRITICAL_FLAG | 이는 중요한 확장입니다. |
EXTENSION_DISABLE_FLAG | 확장은 사용되지 않습니다. |
다음 원본 플래그 중 하나를 반환할 수도 있습니다.
원본 플래그 값 | 설명 |
---|---|
EXTENSION_ORIGIN_REQUEST | 확장은 PKCS #10 요청의 szOID_CERT_EXTENSIONS(1.3.6.1.4.1.311.2.1.14) 또는 szOID_RSA_certExtensions(1.2.840.113549.1.9.14) 특성에 저장된 확장 배열에서 추출되었습니다. |
EXTENSION_ORIGIN_POLICY | 정책 모듈은 확장을 설정합니다. |
EXTENSION_ORIGIN_ADMIN | 관리자가 확장을 설정합니다. |
EXTENSION_ORIGIN_SERVER | 서버 엔진이 확장을 설정합니다. |
EXTENSION_ORIGIN_RENEWALCERT | 확장은 PKCS #10 갱신 요청의 szOID_RENEWAL_CERTIFICATE(1.3.6.1.4.1.311.13.1) 특성에 저장된 인증서에서 추출되었습니다. |
EXTENSION_ORIGIN_IMPORTEDCERT | 확장이 가져온 인증서에서 추출되었습니다(인증서가 ICertAdmin::ImportCertificate에 전달됨). |
EXTENSION_ORIGIN_PKCS7 | 확장은 PKCS #7 요청의 szOID_CERT_EXTENSIONS(1.3.6.1.4.1.311.2.1.14) 또는 szOID_RSA_certExtensions(1.2.840.113549.1.9.14) 특성에 저장된 확장 배열에서 추출되었습니다. |
반환 값에 설정된 플래그를 결정하는 데 사용하기 쉽게 미리 정의된 마스크가 제공됩니다. 다음 마스크가 제공됩니다.
마스크 값 | 설명 |
---|---|
EXTENSION_POLICY_MASK | 이 값(0x0000FFFF)은 정책 플래그를 검사하는 데 사용됩니다. |
EXTENSION_ORIGIN_MASK | 이 값(0x000F0000)은 원본 플래그를 검사하는 데 사용됩니다. |
확장 열거형 시퀀스가 유효한 확장을 참조하지 않으면 GetFlags 가 실패합니다. 다음 방법 중 하나를 사용하여 열거형을 탐색합니다.
- IEnumCERTVIEWEXTENSION::Reset: 열거형 시퀀스의 다음 확장으로 이동합니다.
- IEnumCERTVIEWEXTENSION::Next: 열거형 시퀀스의 다음 확장으로 이동합니다.
- IEnumCERTVIEWEXTENSION::Skip: 지정된 수의 확장을 건너뜁니다.
예제
HRESULT hr;
LONG ExtFlags;
// pEnumExt is previously instantiated IEnumCERTVIEWEXTENSION object
hr = pEnumExt->GetFlags(&ExtFlags);
if (S_OK != hr)
printf("Failed GetFlags - %x\n", hr);
else
{
LONG ExtPol, ExtOrig;
ExtPol = ExtFlags & EXTENSION_POLICY_MASK;
if (ExtPol & EXTENSION_CRITICAL_FLAG)
printf("The extension is critical\n");
if (ExtPol & EXTENSION_DISABLE_FLAG )
printf("The extension is disabled\n");
ExtOrig = ExtFlags & EXTENSION_ORIGIN_MASK;
switch (ExtOrig)
{
case EXTENSION_ORIGIN_REQUEST:
printf("Extension originated by PKCS #10 Request\n");
break;
case EXTENSION_ORIGIN_POLICY:
printf("Extension originated by Policy\n");
break;
case EXTENSION_ORIGIN_ADMIN:
printf("Extension originated by Admin\n");
break;
case EXTENSION_ORIGIN_SERVER:
printf("Extension originated by Server\n");
break;
case EXTENSION_ORIGIN_RENEWALCERT:
printf("Extension originated by Renewal Request\n");
break;
case EXTENSION_ORIGIN_IMPORTEDCERT:
printf("Extension originated by an imported "
"certificate\n");
break;
case EXTENSION_ORIGIN_PKCS7:
printf("Extension originated by PKCS #7 Request\n");
break;
default:
printf("Unknown extension origin\n");
break;
}
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | 지원되는 버전 없음 |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | certview.h(Certsrv.h 포함) |
라이브러리 | Certidl.lib |
DLL | Certadm.dll |
추가 정보
IEnumCERTVIEWEXTENSION::GetName