Freigeben über


ICEnroll::enumProviders-Methode (xenroll.h)

[Diese Methode steht ab Windows Server 2008 und Windows Vista nicht mehr zur Verfügung.]

Die enumProviders-Methode ruft die Namen der verfügbaren Kryptografiedienstanbieter (CSPs) ab, die durch die ProviderType-Eigenschaft angegeben sind. Diese Methode wurde zuerst in der ICEnroll-Schnittstelle definiert.

Syntax

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

Parameter

[in] dwIndex

Gibt die Ordnungsposition des CSP an, dessen Name abgerufen wird. Geben Sie null für den ersten CSP an.

[in] dwFlags

Gibt Flags an, die an die Funktion CryptEnumProviders übergeben werden. Dieser Parameter wird derzeit nicht verwendet. geben Sie null an.

[out] pbstrProvName

Ein Zeiger auf eine BSTR-Variable , die den Namen eines CSP mit dem angegebenen Eigenschaftstyp empfängt. Wenn Sie die Verwendung des BSTR abgeschlossen haben, geben Sie ihn frei, indem Sie die SysFreeString-Funktion aufrufen.

Rückgabewert

C++

Der Rückgabewert ist ein HRESULT. Ein Wert von S_OK gibt den Erfolg an. Der Wert ERROR_NO_MORE_ITEMS wird zurückgegeben, wenn keine weiteren CSPs mit dem von der ProviderType-Eigenschaft angegebenen Eigenschaftstyp vorhanden sind.

VB

Der Rückgabewert ist eine String-Variable , die den Namen eines CSP enthält. Eine Ausnahme wird ausgelöst, wenn ein Fehler auftritt oder wenn keine weiteren Elemente vorhanden sind.

Hinweise

Wenn der ProviderType-Eigenschaftswert nicht festgelegt wurde, wird der Standardwert (in der Regel PROV_RSA_FULL) von ProviderType verwendet, wie er in der Registrierung festgelegt ist.

Die enumProviders-Methode ruft die CryptEnumProviders-Funktion auf.

Beispiele

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile xenroll.h
Bibliothek Uuid.lib
DLL Xenroll.dll

Weitere Informationen

CEnroll

ICEnroll

ICEnroll2

ICEnroll3

ICEnroll4

ProviderType