次の方法で共有


CryptEnumProviderTypesA 関数 (wincrypt.h)

重要 この API は非推奨です。 新規および既存のソフトウェアでは、Cryptography Next Generation API の使用を開始する必要があります。 Microsoft は、今後のリリースでこの API を削除する可能性があります。
 
CryptEnumProviderTypes 関数は、コンピューターでサポートされている暗号化サービス プロバイダー (CSP) 最初または次の種類を取得します。 ループで使用されるこの関数は、コンピューターで使用可能なすべての CSP の種類を順番に取得します。

プロバイダーの種類には、PROV_RSA_FULL、PROV_RSA_SCHANNEL、およびPROV_DSSが含まれます。

構文

BOOL CryptEnumProviderTypesA(
  [in]      DWORD dwIndex,
  [in]      DWORD *pdwReserved,
  [in]      DWORD dwFlags,
  [out]     DWORD *pdwProvType,
  [out]     LPSTR szTypeName,
  [in, out] DWORD *pcbTypeName
);

パラメーター

[in] dwIndex

列挙する次のプロバイダーの種類のインデックス。

[in] pdwReserved

将来使用するために予約されており、NULLする必要があります。

[in] dwFlags

将来使用するために予約されており、ゼロにする必要があります。

[out] pdwProvType

列挙プロバイダーの種類を指定する DWORD 値のアドレス。

[out] szTypeName

列挙されたプロバイダー型からデータを受け取るバッファーへのポインター。 これは、終端 NULL 文字を含む文字列です。 一部のプロバイダー型には表示名がなく、この場合は名前が返されず、pcbTypeName が指す戻り値は 0 です。

このパラメーターを NULL して、メモリ割り当てのために名前のサイズを取得できます。 詳細については、「不明な長さのデータの取得」を参照してください。

[in, out] pcbTypeName

pszTypeName パラメーターが指すバッファーのサイズ (バイト単位) を指定する DWORD 値へのポインター。 関数から制御が戻ると、DWORD 値には、バッファーに格納または格納されるバイト数が含まれます。 一部のプロバイダー型には表示名がなく、この場合は名前が返されず、pcbTypeName が指す戻り値は 0 です。

メモ バッファーで返されるデータを処理する場合、アプリケーションは返されるデータの実際のサイズを使用する必要があります。 実際のサイズは、入力時に指定されたバッファーのサイズよりも少し小さくすることができます。 (入力では、バッファー サイズは通常、最大の出力データがバッファーに収まるように十分な大きさで指定されます)。出力時に、このパラメーターが指す変数は、バッファーにコピーされたデータの実際のサイズを反映するように更新されます。
 

戻り値

関数が成功した場合、戻り値は 0 以外 (true)。

関数が失敗した場合、戻り値は 0 (FALSE)。 拡張エラー情報については、GetLastError呼び出します。

NTE で開始されるエラー コードは、使用されている特定の CSP によって生成されます。 考えられるエラー コードの一部を次に示します。

リターン コード 形容
ERROR_NO_MORE_ITEMS
列挙する項目はこれ以上ありません。
ERROR_NOT_ENOUGH_MEMORY
オペレーティング システムのメモリ不足。
NTE_BAD_FLAGS
dwFlags パラメーターに認識されない値があります。
NTE_FAIL
型の登録に問題がありました。

備考

この関数は、コンピューターで使用できるプロバイダーの種類を列挙します。 特定のプロバイダーの種類のプロバイダーは、CryptEnumProvidersを使用して列挙できます。

次の例は、使用可能なすべての暗号化サービス プロバイダーの種類を一覧表示するループを示しています。

#include <stdio.h>
#include <windows.h>
#include <Wincrypt.h>
#pragma comment(lib, "advapi32.lib")

void main()
{
    
    // Copyright (C) Microsoft.  All rights reserved.
    // Declare and initialize variables.

    DWORD       dwIndex;
    DWORD       dwType;
    DWORD       cbName;
    LPTSTR      pszName;

    //--------------------------------------------------------------
    //   Print header lines for provider types.

    printf("Listing Available Provider Types:\n");
    printf("Provider type\tProvider Type Name\n");
    printf("_____________\t_____________________________________\n");

    // Loop through enumerating provider types.
    dwIndex = 0;
    while(CryptEnumProviderTypes(
           dwIndex,
           NULL,
           0,
           &dwType,
           NULL,
           &cbName
           ))
    {

        //-----------------------------------------------------------
        //  cbName returns the length of the name of the next
        //  provider type. Allocate memory in a buffer to retrieve
        //  that name.
        if (!(pszName = (LPTSTR)LocalAlloc(LMEM_ZEROINIT, cbName)))
        {
           printf("ERROR - LocalAlloc failed.\n");
           exit(1);
        }
        //-----------------------------------------------------------
        //  Get the provider type name.

        if (CryptEnumProviderTypes(
               dwIndex++,
               NULL,
               NULL,
               &dwType,   
               pszName,
               &cbName))     
        {
            printf ("     %4.0d\t%s\n",dwType, pszName);
        }
        else
        {
            printf("ERROR - CryptEnumProviderTypes\n");
            exit(1);
        }
        LocalFree(pszName);
    } // End of while loop.
}

CryptEnumProviderTypes 関数を使用する別の例については、「サンプル C プログラム: CSP プロバイダーとプロバイダーの種類の列挙を参照してください。

手記

wincrypt.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして CryptEnumProviderTypes を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー wincrypt.h
ライブラリ Advapi32.lib
DLL Advapi32.dll

関連項目

CryptEnumProviders

サービス プロバイダー関数の