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) になります。 拡張エラー情報については、 GetLastError を呼び出します。
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 を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |