다음을 통해 공유


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

Resource Manager 컨텍스트식별하는 핸들입니다. 리소스 관리자 컨텍스트는 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 지정되었습니다. 판독기에서 카드가 없을 수 있습니다.

반환 값

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

반환 코드 묘사
성공
SCARD_S_SUCCESS.
실패
오류 코드입니다. 자세한 내용은 스마트 카드 반환 값참조하세요.
SCARD_E_NOT_READY
판독기에서 카드에 연결할 수 없습니다.

발언

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

예제

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

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