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
将来使用するために予約されており、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 によって生成されます。 考えられるエラー コードの一部を次に示します。
リターン コード | 説明 |
---|---|
|
列挙する項目はこれ以上ありません。 |
|
オペレーティング システムのメモリ不足。 |
|
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 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |