SCardGetCardTypeProviderNameA 함수(winscard.h)

SCardGetCardTypeProviderName 함수는 지정된 카드 이름 및 공급자 형식에 대한 공급자가 포함된 모듈(동적 링크 라이브러리)의 이름을 반환합니다.

구문

LONG SCardGetCardTypeProviderNameA(
  [in]      SCARDCONTEXT hContext,
  [in]      LPCSTR       szCardName,
  [in]      DWORD        dwProviderId,
  [out]     CHAR         *szProvider,
  [in, out] LPDWORD      pcchProvider
);

매개 변수

[in] hContext

리소스 관리자 컨텍스트를 식별하는 핸들입니다. 리소스 관리자 컨텍스트는 SCardEstablishContext에 대한 이전 호출을 통해 설정할 수 있습니다. SCardGetCardTypeProviderName 호출이 특정 컨텍스트로 전달되지 않는 경우 이 값은 NULL일 수 있습니다.

[in] szCardName

이 공급자 이름이 연결된 카드 형식의 이름입니다.

[in] dwProviderId

이 카드 형식과 연결된 공급자의 식별자입니다.

의미
SCARD_PROVIDER_PRIMARY
1
함수는 스마트 카드기본 서비스 공급자의 이름을 GUID 문자열로 검색합니다.
SCARD_PROVIDER_CSP
2
함수는 암호화 서비스 공급자의 이름을 검색합니다.
SCARD_PROVIDER_KSP
3
함수는 스마트 카드 KSP(키 스토리지 공급자)의 이름을 검색합니다.
SCARD_PROVIDER_CARD_MODULE
0x80000001
함수는 카드 모듈의 이름을 검색합니다.

[out] szProvider

이 함수를 성공적으로 완료하면 공급자 이름을 받을 문자열 변수입니다.

[in, out] pcchProvider

DWORD 값에 대한 포인터입니다. 입력 시 pcchProviderszProvider 버퍼의 길이를 문자로 제공합니다. 이 값이 SCARD_AUTOALLOCATE 경우 szProvider 는 바이트 포인터에 대한 포인터로 변환되고 문자열을 포함하는 메모리 블록의 주소를 받습니다. 이 메모리 블록은 SCardFreeMemory를 호출하여 할당을 취소해야 합니다.

출력에서 이 값은 szProvider 변수의 null 종결자를 포함한 실제 문자 수를 나타냅니다.

반환 값

이 함수는 성공 여부에 따라 다른 값을 반환합니다.

반환 코드 설명
Success
SCARD_S_SUCCESS.
실패
오류 코드입니다. 자세한 내용은 스마트 카드 반환 값을 참조하세요.

설명

이 함수는 리디렉션되지 않지만 원격 데스크톱 세션 내에서 함수를 호출해도 오류가 발생하지 않습니다. 이는 결과가 로컬 컴퓨터 대신 원격 컴퓨터에서 생성된다는 의미일 뿐입니다.

이 함수가 성공적으로 완료되면 szProvider 의 값을 CryptAcquireContext 호출에서 세 번째 매개 변수로 사용할 수 있습니다.

예제

다음 예제에서는 지정된 판독기 컨텍스트에 대한 공급자 이름을 검색하는 방법을 보여 있습니다. 이 예제에서는 hContext가 SCardEstablishContext 함수에 대한 이전 호출에서 가져온 유효한 핸들이라고 가정합니다.

LPTSTR szProvider = NULL;
LPTSTR szCardName = _T("WindowsCard");
DWORD  chProvider = SCARD_AUTOALLOCATE;
LONG   lReturn = SCARD_S_SUCCESS;

// Retrieve the provider name.
// hContext was set by SCardEstablishContext.
lReturn = SCardGetCardTypeProviderName(hContext,
                                       szCardName,
                                       SCARD_PROVIDER_CSP,
                                       (LPTSTR)&szProvider,
                                       &chProvider);
if (SCARD_S_SUCCESS == lReturn)
{
    BOOL fSts = TRUE;
    HCRYPTPROV hProv = NULL;
  
  // Acquire a Cryptographic operation context.
    fSts = CryptAcquireContext(&hProv,
                               NULL,
                               szProvider,
                               PROV_RSA_FULL,
                               0);
    // Perform Cryptographic operations with smart card
    // ...

    // Free memory allocated by SCardGetCardTypeProviderName.
    lReturn = SCardFreeMemory(hContext, szProvider);
}

참고

winscard.h 헤더는 SCardGetCardTypeProviderName을 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winscard.h
라이브러리 Winscard.lib
DLL Winscard.dll

추가 정보

SCardEstablishContext

SCardFreeMemory

SCardSetCardTypeProviderName