Metodo ICEnroll::enumProviders (xenroll.h)
[Questo metodo non è più disponibile per l'uso a partire da Windows Server 2008 e Windows Vista.]
Il metodo enumProviders recupera i nomi dei provider di servizi di crittografia disponibili specificati dalla proprietà ProviderType . Questo metodo è stato definito per la prima volta nell'interfaccia ICEnroll .
Sintassi
HRESULT enumProviders(
[in] LONG dwIndex,
[in] LONG dwFlags,
[out] BSTR *pbstrProvName
);
Parametri
[in] dwIndex
Specifica la posizione ordinale del CSP il cui nome verrà recuperato. Specificare zero per il primo CSP.
[in] dwFlags
Specifica i flag passati alla funzione CryptEnumProviders . Questo parametro non è attualmente usato; specificare zero.
[out] pbstrProvName
Puntatore a una variabile BSTR che riceve il nome di un CSP con il tipo di proprietà specificato. Al termine dell'uso della funzione BSTR, liberarla chiamando la funzione SysFreeString .
Valore restituito
C++
Il valore restituito è un HRESULT. Un valore di S_OK indica l'esito positivo. Il valore ERROR_NO_MORE_ITEMS viene restituito quando non sono presenti più provider di servizi di configurazione con il tipo di proprietà indicato dalla proprietà ProviderType .VB
Il valore restituito è una variabile String contenente il nome di un CSP. Viene generata un'eccezione se viene rilevato un errore o quando non sono presenti più elementi.Commenti
Se il valore della proprietà ProviderType non è stato impostato, viene usato il valore predefinito (in genere PROV_RSA_FULL) di ProviderType impostato nel Registro di sistema.
Il metodo enumProviders chiama la funzione CryptEnumProviders .
Esempio
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 );
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | xenroll.h |
Libreria | Uuid.lib |
DLL | Xenroll.dll |