SCardGetAttrib 함수(winscard.h)
SCardGetAttrib 함수는 지정된 핸들에 대한 현재 판독기 특성을 검색합니다. 판독기, 드라이버 또는 카드상태에 영향을 주지 않습니다.
구문
LONG SCardGetAttrib(
[in] SCARDHANDLE hCard,
[in] DWORD dwAttrId,
[out] LPBYTE pbAttr,
[in, out] LPDWORD pcbAttrLen
);
매개 변수
[in] hCard
SCardConnect에서 반환된 참조 값입니다.
[in] dwAttrId
가져올 특성 의 식별자입니다. 다음 표에서는 dwAttrId에 대해 가능한 값을 나열합니다. 이 값은 읽기 전용입니다. 공급업체는 모든 특성을 지원하지 않을 수 있습니다.
값 | 의미 |
---|---|
|
ATR(재설정) 문자열에 대한 답변입니다. |
|
DWORD 는 0xDDDDCCCC로 인코딩됩니다. 여기서 DDDD = 데이터 채널 형식 및 CCCC = 채널 번호:
|
|
지원되는 기계적 특성을 나타내는 DWORD입니다. 0이면 특별한 특성이 지원되지 않습니다. 여러 비트를 설정할 수 있습니다.
|
|
현재 블록 대기 시간입니다. |
|
현재 클록 속도(kHz)입니다. |
|
현재 문자 대기 시간입니다. |
|
비트 전송률 변환 계수입니다. |
|
현재 오류 블록 컨트롤 인코딩.
0 = LRC(경도 중복 검사) 1 = CRC(순환 중복 검사) |
|
클록 변환 계수입니다. |
|
정보 필드 크기 카드 현재 바이트 크기입니다. |
|
정보 필드 크기 디바이스의 현재 바이트 크기입니다. |
|
현재 가드 시간입니다. |
|
DWORD 는rrr이 RFU 이고 0x000 0x0 rrrpppp 로 인코딩됩니다. pppp 는 현재 프로토콜 형식을 인코딩합니다. 설정된 비트는 현재 사용 중인 ISO 프로토콜을 나타냅니다. (예를 들어 비트 0이 설정된 경우 T=0 프로토콜 이 적용됩니다.) |
|
현재 작업 대기 시간입니다. |
|
기본 클록 속도(kHz)입니다. |
|
기본 데이터 속도(bps)입니다. |
|
판독기 표시 이름입니다. |
|
다음에 사용하도록 예약됩니다. |
|
판독기 시스템 이름입니다. |
|
컴퓨터에 연결된 이 공급업체 판독기의 인스턴스입니다. 첫 번째 instance 디바이스 단위 0이고, 다음 instance 1단원(동일한 독자 브랜드인 경우) 등이 됩니다. 독자의 두 가지 다른 브랜드는 모두이 값에 대 한 0이 있을 것 이다. |
|
단일 바이트입니다. 스마트 카드 전기 접촉이 활성화되지 않은 경우 0이고, 접촉이 활성 상태이면 0이 아닙니다. |
|
스마트 카드 현재 상태를 나타내는 단일 바이트: 0 = 없음 1 = 카드 있지만 삼키지 않음(판독기가 스마트 카드 삼키는 경우에만 적용됨) 2 = 카드 존재 (판독기가 스마트 카드 삼키는 것을 지원하는 경우 삼킨다) 4 = 압수된 카드. |
|
스마트 카드 형식을 나타내는 단일 바이트: 0 = 알 수 없는 형식 1 = 7816 비동기 2 = 7816 동기 기타 값 RFU. |
|
최대 클록 속도(kHz)입니다. |
|
최대 데이터 속도(bps)입니다. |
|
정보 파일 크기 디바이스의 최대 바이트입니다. |
|
스마트 카드 삽입되는 동안 디바이스가 전원을 낮추지 않는 경우 0입니다. 그렇지 않으면 0이 아닌 값입니다. |
|
DWORD 는rrr이 RFU 이고 0x000 0x0 rrrpppp 로 인코딩됩니다. pppp 는 지원되는 프로토콜 형식을 인코딩합니다. 지정된 비트 위치의 '1'은 연결된 ISO 프로토콜에 대한 지원을 나타내므로 비트가 0과 1로 설정되면 T=0 및 T=1 프로토콜이 모두 지원됩니다. |
|
공급업체에서 제공하는 인터페이스 디바이스 일련 번호입니다. |
|
공급업체에서 제공하는 인터페이스 디바이스 유형(판독기의 모델 지정). |
|
공급업체에서 제공하는 인터페이스 디바이스 버전(MM = 주 버전, mm = 부 버전 및 bbbb = 빌드 번호인 0xMMmmbbbb 형식의 DWORD). |
|
공급업체 이름입니다. |
[out] pbAttr
ID가 dwAttrId에 제공된 특성을 수신하는 버퍼에 대한 포인터입니다. 이 값이 NULL이면 SCardGetAttrib는 pcbAttrLen에 제공된 버퍼 길이를 무시하고, 이 매개 변수가 pcbAttrLen에 NULL이 아닌 경우 반환되었을 버퍼의 길이를 쓰고, 성공 코드를 반환합니다.
[in, out] pcbAttrLen
pbAttr 버퍼의 길이(바이트)와 수신된 특성의 실제 길이를 수신합니다. 버퍼 길이가 SCARD_AUTOALLOCATE 지정된 경우 pbAttr은 바이트 포인터에 대한 포인터로 변환되고 특성을 포함하는 메모리 블록의 주소를 받습니다. 이 메모리 블록은 SCardFreeMemory로 할당 취소되어야 합니다.
반환 값
이 함수는 성공 또는 실패 여부에 따라 다른 값을 반환합니다.
반환 코드 | 설명 |
---|---|
|
SCARD_S_SUCCESS. |
|
ERROR_NOT_SUPPORTED. |
|
오류 코드입니다. 자세한 내용은 스마트 카드 반환 값을 참조하세요. |
설명
SCardGetAttrib 함수는 직접 카드 액세스 함수입니다. 다른 직접 액세스 함수에 대한 자세한 내용은 직접 카드 액세스 함수를 참조하세요.
예제
다음 예제에서는 카드 판독기 특성을 검색하는 방법을 보여줍니다. 이 예제에서는 hCardHandle이 SCardConnect 함수에 대한 이전 호출에서 가져온 유효한 핸들이라고 가정합니다.
LPBYTE pbAttr = NULL;
DWORD cByte = SCARD_AUTOALLOCATE;
DWORD i;
LONG lReturn;
lReturn = SCardGetAttrib(hCardHandle,
SCARD_ATTR_VENDOR_NAME,
(LPBYTE)&pbAttr,
&cByte);
if ( SCARD_S_SUCCESS != lReturn )
{
if ( ERROR_NOT_SUPPORTED == lReturn )
printf("Value not supported\n");
else
{
// Some other error occurred.
printf("Failed SCardGetAttrib - %x\n", lReturn);
exit(1); // Or other appropriate action
}
}
else
{
// Output the bytes.
for (i = 0; i < cByte; i++)
printf("%c", *(pbAttr+i));
printf("\n");
// Free the memory when done.
// hContext was set earlier by SCardEstablishContext
lReturn = SCardFreeMemory( hContext, pbAttr );
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winscard.h |
라이브러리 | Winscard.lib |
DLL | Winscard.dll |