SCardListReadersA 함수(winscard.h)
SCardListReaders 함수는 명명된 판독기 그룹 집합 내에서 판독기 목록을 제공하여 중복을 제거합니다.
호출자는 판독기 그룹 목록을 제공하고 명명된 그룹 내의 판독기 목록을 받습니다. 인식할 수 없는 그룹 이름은 무시됩니다. 이 함수는 현재 시스템에 연결되어 있고 사용할 수 있는 명명된 그룹 내에서만 판독기를 반환합니다.
구문
LONG SCardListReadersA(
[in] SCARDCONTEXT hContext,
[in, optional] LPCSTR mszGroups,
[out] LPSTR mszReaders,
[in, out] LPDWORD pcchReaders
);
매개 변수
[in] hContext
쿼리에 대한 리소스 관리자 컨텍스트 를 식별하는 핸들입니다. 리소스 관리자 컨텍스트는 SCardEstablishContext에 대한 이전 호출을 통해 설정할 수 있습니다.
이 매개 변수가 NULL로 설정된 경우 판독기 검색은 컨텍스트로 제한되지 않습니다.
[in, optional] mszGroups
시스템에 정의된 판독기 그룹의 이름(다중 문자열)입니다. NULL 값을 사용하여 시스템의 모든 판독기(즉, SCard$AllReaders 그룹)를 나열합니다.
[out] mszReaders
제공된 판독기 그룹 내의 카드 판독기를 나열하는 다중 문자열입니다. 이 값이 NULL이면 SCardListReaders는 pcchReaders에 제공된 버퍼 길이를 무시하고, 이 매개 변수가 pcchReaders에 NULL이 아닌 경우 반환된 버퍼의 길이를 쓰고, 성공 코드를 반환합니다.
[in, out] pcchReaders
mszReaders 버퍼의 길이(문자)입니다. 이 매개 변수는 모든 후행 null 문자를 포함하여 다중 문자열 구조체의 실제 길이를 받습니다. 버퍼 길이가 SCARD_AUTOALLOCATE 지정되면 mszReaders 는 바이트 포인터에 대한 포인터로 변환되고 다중 문자열 구조를 포함하는 메모리 블록의 주소를 받습니다. 이 메모리 블록은 SCardFreeMemory로 할당을 취소해야 합니다.
반환 값
이 함수는 성공 여부에 따라 다른 값을 반환합니다.
반환 코드/값 | 설명 |
---|---|
|
SCARD_S_SUCCESS |
|
SCARD_E_NO_READERS_AVAILABLE |
|
SCARD_E_READER_UNAVAILABLE |
|
오류 코드입니다. 자세한 내용은 스마트 카드 반환 값을 참조하세요. |
설명
SCardListReaders 함수는 데이터베이스 쿼리 함수입니다. 다른 데이터베이스 쿼리 함수에 대한 자세한 내용은 스마트 카드 데이터베이스 쿼리 함수를 참조하세요.
예제
다음 예제에서는 판독기를 나열하는 방법을 보여 줍니다.
LPTSTR pmszReaders = NULL;
LPTSTR pReader;
LONG lReturn, lReturn2;
DWORD cch = SCARD_AUTOALLOCATE;
// Retrieve the list the readers.
// hSC was set by a previous call to SCardEstablishContext.
lReturn = SCardListReaders(hSC,
NULL,
(LPTSTR)&pmszReaders,
&cch );
switch( lReturn )
{
case SCARD_E_NO_READERS_AVAILABLE:
printf("Reader is not in groups.\n");
// Take appropriate action.
// ...
break;
case SCARD_S_SUCCESS:
// Do something with the multi string of readers.
// Output the values.
// A double-null terminates the list of values.
pReader = pmszReaders;
while ( '\0' != *pReader )
{
// Display the value.
printf("Reader: %S\n", pReader );
// Advance to the next value.
pReader = pReader + wcslen((wchar_t *)pReader) + 1;
}
// Free the memory.
lReturn2 = SCardFreeMemory( hSC,
pmszReaders );
if ( SCARD_S_SUCCESS != lReturn2 )
printf("Failed SCardFreeMemory\n");
break;
default:
printf("Failed SCardListReaders\n");
// Take appropriate action.
// ...
break;
}
참고
winscard.h 헤더는 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 SCardListReaders를 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winscard.h |
라이브러리 | Winscard.lib |
DLL | Winscard.dll |