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 は成功を示します。 ERROR_NO_MORE_ITEMS値は、 ProviderType プロパティによって示されるプロパティ型を持つ CSP がそれ以上ない場合に返されます。

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
Library Uuid.lib
[DLL] Xenroll.dll

こちらもご覧ください

CEnroll

ICEnroll

ICEnroll2

ICEnroll3

ICEnroll4

ProviderType