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
이 매개 변수는 NULL
[in, out] pcbTypeName
pszTypeName 매개 변수가 가리키는 버퍼의 크기(바이트)를 지정하는 DWORD 값에 대한 포인터입니다. 함수가 반환될 때 DWORD 값에는 저장되거나 버퍼에 저장될 바이트 수가 포함됩니다. 일부 공급자 형식에는 표시 이름이 없으며 이 경우 이름이 반환되지 않으며 pcbTypeName
반환 값
함수가 성공하면 반환 값은 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 헤더는 CRYptEnumProviderTypes를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | wincrypt.h |
라이브러리 | Advapi32.lib |
DLL | Advapi32.dll |