次の方法で共有


CryptGetDefaultProviderA 関数 (wincrypt.h)

重要 この API は非推奨です。 新規および既存のソフトウェアでは、Cryptography Next Generation API の使用を開始する必要があります。 Microsoft は、今後のリリースでこの API を削除する可能性があります。
 
CryptGetDefaultProvider 関数は、ローカル コンピューターまたは現在のユーザーの指定したプロバイダーの種類の既定の 暗号化サービス プロバイダー (CSP) を検索します。 dwProvType パラメーターで指定されたプロバイダー型の既定の CSP の名前は、pszProvName バッファーで返されます。

構文

BOOL CryptGetDefaultProviderA(
  [in]      DWORD dwProvType,
  [in]      DWORD *pdwReserved,
  [in]      DWORD dwFlags,
  [out]     LPSTR pszProvName,
  [in, out] DWORD *pcbProvName
);

パラメーター

[in] dwProvType

既定の CSP 名が見つかるプロバイダーの種類。

定義されたプロバイダーの種類は次のとおりです。

[in] pdwReserved

このパラメーターは将来使用するために予約されており、NULLする必要があります。

[in] dwFlags

次のフラグ値が定義されています。

価値 意味
CRYPT_USER_DEFAULT
0x00000002
指定した型のユーザー コンテキストの既定の CSP を返します。
CRYPT_MACHINE_DEFAULT
0x00000001
指定した種類のコンピューターの既定の CSP を返します。

[out] pszProvName

既定の CSP の名前を受け取る null で終わる文字列バッファーへのポインター。

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

[in, out] pcbProvName

pszProvName パラメーターが指すバッファーのサイズ (バイト単位) を指定する DWORD 値へのポインター。 関数から制御が戻ると、DWORD 値には、バッファーに格納または格納されるバイト数が含まれます。

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

戻り値

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

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

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

リターン コード 形容
ERROR_INVALID_PARAMETER
パラメーターの 1 つに無効な値が含まれています。 これは、多くの場合、無効なポインターです。
ERROR_MORE_DATA
名前のバッファーが十分な大きさではありません。
ERROR_NOT_ENOUGH_MEMORY
オペレーティング システムのメモリ不足。
NTE_BAD_FLAGS
dwFlags パラメーターに認識されない値があります。

備考

この関数は、ローカル コンピューターまたは現在のユーザーの既定として現在設定されている、インストールされている CSP を決定します。 多くの場合、この情報はユーザーに表示されます。

次の例では、PROV_RSA_FULL プロバイダーの種類の既定の CSP の名前を取得します。 この関数を使用する別の例については、「サンプル C プログラム: CSP プロバイダーとプロバイダーの種類の列挙を参照してください。

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

void main()
{

    DWORD       cbProvName=0;
    LPTSTR      pbProvName=NULL;
    // Copyright (C) Microsoft.  All rights reserved.
    // Get the length of the RSA_FULL default provider name.
    if (!(CryptGetDefaultProvider(
         PROV_RSA_FULL, 
         NULL, 
         CRYPT_MACHINE_DEFAULT,
         NULL, 
         &cbProvName))) 
    { 
      printf("Error getting the length of the default "
          "provider name.\n");
      exit(1);
    }

    // Allocate local memory for the name of the default provider.
    if (!(pbProvName = (LPTSTR)LocalAlloc(LMEM_ZEROINIT, 
        cbProvName)))
    {
        printf("Error during memory allocation for "
            "provider name.\n");
        exit(1);
    }

    // Get the default provider name.
    if (CryptGetDefaultProvider(
        PROV_RSA_FULL, 
        NULL, 
        CRYPT_MACHINE_DEFAULT,
        pbProvName,
        &cbProvName)) 
    {
        printf("The default provider name is %s\n",pbProvName);
    }
    else
    {
        printf("Getting the name of the provider failed.\n");
        exit(1);
    }

    // Free resources when done.
    LocalFree(pbProvName);

}

手記

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

必要条件

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

関連項目

CryptSetProvider

CryptSetProviderEx

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