CryptEnumProviderTypesA 関数 (wincrypt.h)
プロバイダーの種類には、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
NTE で開始されるエラー コードは、使用されている特定の CSP によって生成されます。 考えられるエラー コードの一部を次に示します。
リターン コード | 形容 |
---|---|
|
列挙する項目はこれ以上ありません。 |
|
オペレーティング システムのメモリ不足。 |
|
dwFlags パラメーターに認識されない値があります。 |
|
型の登録に問題がありました。 |
備考
この関数は、コンピューターで使用できるプロバイダーの種類を列挙します。 特定のプロバイダーの種類のプロバイダーは、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 |