Metode ICEnroll::enumProviders (xenroll.h)

[Metode ini tidak lagi tersedia untuk digunakan pada Windows Server 2008 dan Windows Vista.]

Metode enumProviders mengambil nama penyedia layanan kriptografi (CSP) yang tersedia yang ditentukan oleh properti ProviderType . Metode ini pertama kali ditentukan dalam antarmuka ICEnroll .

Sintaks

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

Parameter

[in] dwIndex

Menentukan posisi ordinal CSP yang namanya akan diambil. Tentukan nol untuk CSP pertama.

[in] dwFlags

Menentukan bendera yang diteruskan ke fungsi CryptEnumProviders . Parameter ini saat ini tidak digunakan; tentukan nol.

[out] pbstrProvName

Penunjuk ke variabel BSTR yang menerima nama CSP dengan jenis properti yang ditentukan. Setelah Anda selesai menggunakan BSTR, bebaskan dengan memanggil fungsi SysFreeString .

Nilai kembali

C++

Nilai yang dikembalikan adalah HRESULT. Nilai S_OK menunjukkan keberhasilan. Nilai ERROR_NO_MORE_ITEMS dikembalikan ketika tidak ada lagi CSP dengan jenis properti yang ditunjukkan oleh properti ProviderType .

VB

Nilai yang dikembalikan adalah variabel String yang berisi nama CSP. Pengecualian dimunculkan jika terjadi kesalahan atau ketika tidak ada item lagi.

Keterangan

Jika nilai properti ProviderType belum ditetapkan, nilai default (biasanya PROV_RSA_FULL) ProviderType seperti yang diatur dalam registri, digunakan.

Metode enumProviders memanggil fungsi CryptEnumProviders .

Contoh

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 );

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header xenroll.h
Pustaka Uuid.lib
DLL Xenroll.dll

Lihat juga

CEnroll

ICEnroll

ICEnroll2

ICEnroll3

ICEnroll4

ProviderType