SCardConnectA 함수(winscard.h)

SCardConnect 함수는 호출 애플리케이션과 특정 판독기가 포함하는 스마트 카드 간에 연결(특정 리소스 관리자 컨텍스트 사용)을 설정합니다. 지정된 판독기에서 카드 없으면 오류가 반환됩니다.

구문

LONG SCardConnectA(
  [in]  SCARDCONTEXT  hContext,
  [in]  LPCSTR        szReader,
  [in]  DWORD         dwShareMode,
  [in]  DWORD         dwPreferredProtocols,
  [out] LPSCARDHANDLE phCard,
  [out] LPDWORD       pdwActiveProtocol
);

매개 변수

[in] hContext

리소스 관리자 컨텍스트를 식별하는 핸들입니다. 리소스 관리자 컨텍스트는 SCardEstablishContext에 대한 이전 호출에 의해 설정됩니다.

[in] szReader

대상 카드 포함하는 판독기의 이름입니다.

[in] dwShareMode

다른 애플리케이션이 카드 대한 연결을 형성할 수 있는지 여부를 나타내는 플래그입니다.

의미
SCARD_SHARE_SHARED
이 애플리케이션은 다른 애플리케이션과 카드 공유하려고 합니다.
SCARD_SHARE_EXCLUSIVE
이 애플리케이션은 다른 애플리케이션과 카드 공유하지 않습니다.
SCARD_SHARE_DIRECT
이 애플리케이션은 프라이빗 사용을 위해 판독기를 할당하고 직접 제어합니다. 다른 애플리케이션은 액세스가 허용되지 않습니다.

[in] dwPreferredProtocols

연결에 허용되는 프로토콜의 비트 마스크입니다. 가능한 값은 OR 연산과 결합될 수 있습니다.

의미
SCARD_PROTOCOL_T0
T=0 은 허용되는 프로토콜입니다.
SCARD_PROTOCOL_T1
T=1 은 허용되는 프로토콜입니다.
0
이 매개 변수는 dwShareMode 가 SCARD_SHARE_DIRECT 설정된 경우에만 0일 수 있습니다. 이 경우 IOCTL_SMARTCARD_SET_PROTOCOL 제어 지시문이 SCardControl과 함께 전송될 때까지 드라이버가 프로토콜 협상을 수행하지 않습니다.

[out] phCard

지정된 판독기에서 스마트 카드 대한 연결을 식별하는 핸들입니다.

[out] pdwActiveProtocol

설정된 활성 프로토콜을 나타내는 플래그입니다.

의미
SCARD_PROTOCOL_T0
T=0 은 활성 프로토콜입니다.
SCARD_PROTOCOL_T1
T=1 은 활성 프로토콜입니다.
SCARD_PROTOCOL_UNDEFINED
프로토콜 협상이 발생하지 않도록 SCARD_SHARE_DIRECT 지정되었습니다. 판독기에서 카드 없을 수 있습니다.

반환 값

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

반환 코드 설명
Success
SCARD_S_SUCCESS.
실패
오류 코드입니다. 자세한 내용은 스마트 카드 반환 값을 참조하세요.
SCARD_E_NOT_READY
판독기가 카드 연결할 수 없습니다.

설명

SCardConnect 함수는 스마트 카드판독기 액세스 함수입니다. 다른 액세스 함수에 대한 자세한 내용은 스마트 카드 및 읽기 권한자 액세스 함수를 참조하세요.

예제

다음 예제에서는 판독기 연결을 만듭니다. 이 예제에서는 hContextSCardEstablishContext에 대한 이전 호출에서 받은 SCARDCONTEXT 형식의 유효한 핸들이라고 가정합니다.

SCARDHANDLE     hCardHandle;
LONG            lReturn;
DWORD           dwAP;

lReturn = SCardConnect( hContext, 
                        (LPCTSTR)"Rainbow Technologies SCR3531 0",
                        SCARD_SHARE_SHARED,
                        SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1,
                        &hCardHandle,
                        &dwAP );
if ( SCARD_S_SUCCESS != lReturn )
{
    printf("Failed SCardConnect\n");
    exit(1);  // Or other appropriate action.
}

// Use the connection.
// Display the active protocol.
switch ( dwAP )
{
    case SCARD_PROTOCOL_T0:
        printf("Active protocol T0\n"); 
        break;

    case SCARD_PROTOCOL_T1:
        printf("Active protocol T1\n"); 
        break;

    case SCARD_PROTOCOL_UNDEFINED:
    default:
        printf("Active protocol unnegotiated or unknown\n"); 
        break;
}

// Remember to disconnect (by calling SCardDisconnect).
// ...

참고

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

요구 사항

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

추가 정보

SCardControl

SCardDisconnect

SCardEstablishContext

SCardReconnect