Share via


ICEnroll::enumProviders 메서드(xenroll.h)

[이 메서드는 Windows Server 2008 및 Windows Vista를 기준으로 더 이상 사용할 수 없습니다.]

enumProviders 메서드는 ProviderType 속성에 지정된 사용 가능한 CSP(암호화 서비스 공급자)의 이름을 검색합니다. 이 메서드는 ICEnroll 인터페이스에서 처음 정의되었습니다.

구문

HRESULT enumProviders(
  [in]  LONG dwIndex,
  [in]  LONG dwFlags,
  [out] BSTR *pbstrProvName
);

매개 변수

[in] dwIndex

이름이 검색될 CSP의 서수 위치를 지정합니다. 첫 번째 CSP에 대해 0을 지정합니다.

[in] dwFlags

CryptEnumProviders 함수로 전달되는 플래그를 지정합니다. 이 매개 변수는 현재 사용되지 않습니다. 는 0을 지정합니다.

[out] pbstrProvName

지정된 속성 형식의 CSP 이름을 받는 BSTR 변수에 대한 포인터입니다. BSTR 사용을 마쳤으면 SysFreeString 함수를 호출하여 해제합니다.

반환 값

C++

반환 값은 HRESULT입니다. S_OK 값은 성공을 나타냅니다. providerType 속성으로 표시된 속성 형식의 CSP가 더 이상 없으면 ERROR_NO_MORE_ITEMS 값이 반환됩니다.

VB

반환 값은 CSP의 이름을 포함하는 String 변수입니다. 오류가 발생하거나 더 이상 항목이 없는 경우 예외가 발생합니다.

설명

ProviderType 속성 값이 설정되지 않은 경우 레지스트리에 설정된 ProviderType의 기본값(일반적으로 PROV_RSA_FULL)이 사용됩니다.

enumProviders 메서드는 CryptEnumProviders 함수를 호출합니다.

예제

BSTR       bstrProvName = NULL;
DWORD      nProv;
int        j;
HRESULT    hr;

// array of CSP provider types (see Wincrypt.h)
DWORD      nProvType[] = { PROV_RSA_FULL,      
                           PROV_RSA_SIG,       
                           // list shortened for brevity
                           //...
                           PROV_STT_ISS };

// Loop, for each Prov Type.
for (j = 0; j < (sizeof(nProvType)/sizeof(DWORD)); j++)
{
    nProv = 0;
    
    // pEnroll is previously instantiated ICEnroll interface pointer
    hr = pEnroll->put_ProviderType( nProvType[j] );
    if ( FAILED(hr))
    {
        printf("Failed put_ProviderType - %x\n", hr);
        goto error;
    }
    // Enumerate the CSPs of this type.
    while ( S_OK == ( hr = pEnroll->enumProviders(nProv,
                                                  0,
                                                  &bstrProvName)))
    {
        printf("Provider %ws (type %d )\n", bstrProvName, 
            nProvType[j] );
        nProv++;
        if ( bstrProvName )
        {
            SysFreeString( bstrProvName );
            bstrProvName = NULL;
        }
    }

    // Print message if provider type does not have any CSPs.
    if ( 0 == nProv )
       printf("There were no CSPs of type %d\n", dwType );
}

error:
// Clean up resources, and so on.
if ( bstrProvName )
    SysFreeString( bstrProvName );

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 xenroll.h
라이브러리 Uuid.lib
DLL Xenroll.dll

추가 정보

CEnroll

ICEnroll

ICEnroll2

ICEnroll3

ICEnroll4

ProviderType