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 |