CryptGetDefaultProviderA 関数 (wincrypt.h)
構文
BOOL CryptGetDefaultProviderA(
[in] DWORD dwProvType,
[in] DWORD *pdwReserved,
[in] DWORD dwFlags,
[out] LPSTR pszProvName,
[in, out] DWORD *pcbProvName
);
パラメーター
[in] dwProvType
既定の CSP 名が見つかるプロバイダーの種類。
定義されたプロバイダーの種類は次のとおりです。
- PROV_RSA_FULL
- PROV_RSA_SIG
- PROV_DSS
- PROV_DSS_DH
- PROV_DH_SCHANNEL
- PROV_FORTEZZA
- PROV_MS_EXCHANGE
- PROV_RSA_SCHANNEL
- PROV_SSL
[in] pdwReserved
このパラメーターは将来使用するために予約されており、NULL
[in] dwFlags
次のフラグ値が定義されています。
価値 | 意味 |
---|---|
|
指定した型のユーザー コンテキストの既定の CSP を返します。 |
|
指定した種類のコンピューターの既定の CSP を返します。 |
[out] pszProvName
既定の CSP の名前を受け取る null で終わる文字列バッファーへのポインター。
メモリ割り当てのためにバッファーのサイズを検索するには、このパラメーターを NULL
[in, out] pcbProvName
pszProvName パラメーターが指すバッファーのサイズ (バイト単位) を指定する DWORD 値へのポインター。 関数から制御が戻ると、DWORD 値には、バッファーに格納または格納されるバイト数が含まれます。
戻り値
関数が成功した場合、戻り値は 0 以外 (true
関数が失敗した場合、戻り値は 0 (FALSE
NTE によって開始されるエラー コードは、使用されている特定の CSP によって生成されます。 考えられるエラー コードは次のとおりです。
リターン コード | 形容 |
---|---|
|
パラメーターの 1 つに無効な値が含まれています。 これは、多くの場合、無効なポインターです。 |
|
名前のバッファーが十分な大きさではありません。 |
|
オペレーティング システムのメモリ不足。 |
|
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 |