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

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

[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 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー wincrypt.h
Library Advapi32.lib
[DLL] Advapi32.dll

こちらもご覧ください

CryptEnumProviders

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