Функция 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 = продольная избыточность проверка (LRC) 1 = циклическая избыточность проверка (CRC) |
|
Коэффициент преобразования часов. |
|
Текущий размер байтов для размера информационного поля карта. |
|
Текущий размер байтов для устройства с размером информационного поля. |
|
Текущее время охраны. |
|
DWORD закодирован как 0x0rrrpppp, где rrr — RFU и должен быть 0x000. pppp кодирует текущий тип протокола. Какой бы бит ни был задан, указывает, какой протокол ISO используется в настоящее время. (Например, если задан нулевой бит, действует протокол T=0 .) |
|
Текущее время ожидания работы. |
|
Тактовая частота по умолчанию в кГц. |
|
Скорость передачи данных по умолчанию в битах. |
|
Отображаемое имя читателя. |
|
Зарезервировано для последующего использования. |
|
Системное имя читателя. |
|
Экземпляр средства чтения этого поставщика, подключенный к компьютеру. Первым экземпляром будет устройство 0, следующим будет единица 1 (если это та же торговая марка средства чтения) и т. д. Два разных бренда читателей будут иметь ноль для этого значения. |
|
Один байт. Ноль, если интеллектуальный карта электрический контакт не активен; ненулевое значение, если контакт активен. |
|
Один байт, указывающий на присутствие смарт-карта: 0 = отсутствует 1 = карта присутствует, но не проглатывается (применяется только в том случае, если средство чтения поддерживает интеллектуальное карта глотание) 2 = карта присутствует (и проглатывается, если средство чтения поддерживает интеллектуальное карта глотание) 4 = карта конфискованы. |
|
Один байт, указывающий тип смарт-карта: 0 = неизвестный тип 1 = 7816 Асинхронный 2 = 7816 Синхронный Другие значения РФС. |
|
Максимальная тактовая частота в кГц. |
|
Максимальная скорость передачи данных в бит/с. |
|
Максимальное число байтов для устройства с размером информационного файла. |
|
Ноль, если устройство не поддерживает выключение питания при вставке смарт-карта. Ненулевое значение в противном случае. |
|
DWORD закодирован как 0x0rrrpppp, где rrr — RFU и должен быть 0x000. pppp кодирует поддерживаемые типы протоколов. Значение "1" в заданной позиции бита указывает на поддержку связанного протокола ISO, поэтому если заданы биты ноль и один, поддерживаются протоколы T=0 и T=1 . |
|
Серийный номер устройства интерфейса, предоставленного поставщиком. |
|
Предоставленный поставщиком тип устройства интерфейса (обозначение модели средства чтения). |
|
Версия устройства интерфейса, предоставляемая поставщиком (DWORD в формате 0xMMmmbbbb , где MM = основная версия, mm = дополнительный номер версии, а bbbb = номер сборки). |
|
Имя поставщика. |
[out] pbAttr
Указатель на буфер, который получает атрибут, идентификатор которого указан в dwAttrId. Если это значение равно NULL, SCardGetAttrib игнорирует длину буфера, указанную в pcbAttrLen, записывает длину буфера, который был бы возвращен, если бы этот параметр не имел значения NULL в pcbAttrLen, и возвращает код успешного выполнения.
[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 |
Header | winscard.h |
Библиотека | Winscard.lib |
DLL | Winscard.dll |