Функция SCardStatusA (winscard.h)
Функция SCardStatus
Синтаксис
LONG SCardStatusA(
[in] SCARDHANDLE hCard,
[out] LPSTR mszReaderNames,
[in, out, optional] LPDWORD pcchReaderLen,
[out, optional] LPDWORD pdwState,
[out, optional] LPDWORD pdwProtocol,
[out] LPBYTE pbAtr,
[in, out, optional] LPDWORD pcbAtrLen
);
Параметры
[in] hCard
Ссылочное значение, возвращаемое из SCardConnect.
[out] mszReaderNames
Список отображаемых имен (несколько строк), с помощью которых в данный момент подключенное средство чтения известно.
[in, out, optional] pcchReaderLen
Во входных данных предоставляет длину буфера szReaderName.
В выходных данных получает фактическую длину (в символах) списка имен читателя, включая конечный символ NULL. Если эта длина буфера указана как SCARD_AUTOALLOCATE, то szReaderName преобразуется в указатель на байтовый указатель, и получает адрес блока памяти, содержащего структуру с несколькими строками.
[out, optional] pdwState
Текущее состояние смарт-карты в средстве чтения. При успешном выполнении он получает один из следующих индикаторов состояния.
Ценность | Значение |
---|---|
|
В средстве чтения нет карточки. |
|
В читателе есть карточка, но она не была перемещена в положение для использования. |
|
Есть карточка в средстве чтения в положении для использования. Карта не работает. |
|
Питание предоставляется карточке, но драйвер чтения не знает о режиме карточки. |
|
Карточка была сброшена и ожидает переговоров по PTS. |
|
Карта была сброшена и установлены определенные протокол ы связи. |
[out, optional] pdwProtocol
Текущий протокол, если таковой есть. Возвращаемое значение имеет смысл, только если возвращаемое значение pdwState SCARD_SPECIFICMODE.
Ценность | Значение |
---|---|
|
Используется протокол необработанной передачи. |
|
Используется протокол ISO 7816/3 T=0. |
|
Используется протокол ISO 7816/3 T=1. |
[out] pbAtr
Указатель на 32-байтовый буфер, получающий строку ATR из вставленной карточки, если она доступна.
[in, out, optional] pcbAtrLen
Во входных данных предоставляет длину буфера pbAtr. В выходных данных получает количество байтов в строке ATR (максимум 32 байта). Если эта длина буфера указана как SCARD_AUTOALLOCATE, то pbAtr преобразуется в указатель на указатель байтов, и получает адрес блока памяти, содержащего структуру с несколькими строками.
Возвращаемое значение
Если функция успешно предоставляет текущее состояние
Если функция завершается ошибкой, возвращается код ошибки. Дополнительные сведения см. в возвращаемых значений смарт-карт.
Замечания
Функция SCardStatus — это смарт-карт и функция чтения доступа. Дополнительные сведения о других функциях доступа см. в функции доступа смарт-карты и чтения.
Примеры
В следующем примере показано, как определить состояние смарт-карты.
WCHAR szReader[200];
DWORD cch = 200;
BYTE bAttr[32];
DWORD cByte = 32;
DWORD dwState, dwProtocol;
LONG lReturn;
// Determine the status.
// hCardHandle was set by an earlier call to SCardConnect.
lReturn = SCardStatus(hCardHandle,
szReader,
&cch,
&dwState,
&dwProtocol,
(LPBYTE)&bAttr,
&cByte);
if ( SCARD_S_SUCCESS != lReturn )
{
printf("Failed SCardStatus\n");
exit(1); // or other appropriate action
}
// Examine retrieved status elements.
// Look at the reader name and card state.
printf("%S\n", szReader );
switch ( dwState )
{
case SCARD_ABSENT:
printf("Card absent.\n");
break;
case SCARD_PRESENT:
printf("Card present.\n");
break;
case SCARD_SWALLOWED:
printf("Card swallowed.\n");
break;
case SCARD_POWERED:
printf("Card has power.\n");
break;
case SCARD_NEGOTIABLE:
printf("Card reset and waiting PTS negotiation.\n");
break;
case SCARD_SPECIFIC:
printf("Card has specific communication protocols set.\n");
break;
default:
printf("Unknown or unexpected card state.\n");
break;
}
Заметка
Заголовок winscard.h определяет SCardStatus как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP [только классические приложения] |
минимальный поддерживаемый сервер | Windows Server 2003 [только классические приложения] |
целевая платформа | Виндоус |
заголовка | winscard.h |
библиотеки |
Winscard.lib |
DLL | Winscard.dll |