Поделиться через


Функция SCardListInterfacesA (winscard.h)

Функция SCardListInterfaces предоставляет список интерфейсов, предоставляемых данной картой.

Вызывающий объект предоставляет имя смарт-карты ранее введенной в подсистему и получает список интерфейсов, поддерживаемых картой.

Синтаксис

LONG SCardListInterfacesA(
  [in]      SCARDCONTEXT hContext,
  [in]      LPCSTR       szCard,
  [out]     LPGUID       pguidInterfaces,
  [in, out] LPDWORD      pcguidInterfaces
);

Параметры

[in] hContext

Дескриптор, определяющий контекст диспетчера ресурсов для запроса. Контекст диспетчера ресурсов можно задать с помощью предыдущего вызова SCardEstablishContext. Этот параметр не может быть значение NULL.

[in] szCard

Имя смарт-карты, уже введенной в подсистему смарт-карт.

[out] pguidInterfaces

Массив идентификаторов интерфейса (GUID), указывающий интерфейсы, поддерживаемые смарт-картой. Если это значение равно NULL, SCardListInterfaces игнорирует длину массива, указанную в pcguidInterfaces, возвращая размер массива, который был бы возвращен, если этот параметр не был NULL для pcguidInterfaces и кода успешного выполнения.

[in, out] pcguidInterfaces

Размер массива pcguidInterfaces и получает фактический размер возвращаемого массива. Если размер массива указан как SCARD_AUTOALLOCATE, то pcguidInterfaces преобразуется в указатель GUID и получает адрес блока памяти, содержащего массив. Этот блок памяти должен быть освобожден с SCardFreeMemory.

Возвращаемое значение

Эта функция возвращает разные значения в зависимости от того, выполнена ли она успешно или завершается сбоем.

Возвращаемый код Описание
успех
SCARD_S_SUCCESS.
сбоя
Код ошибки. Дополнительные сведения см. в возвращаемых значений смарт-карт.

Замечания

Эта функция не перенаправляется, но вызов функции при попытке сеанса удаленного рабочего стола не приведет к ошибке. Это означает, что результат будет только с удаленного компьютера вместо локального компьютера.

Функция SCardListInterfaces — это функция запроса к базе данных. Дополнительные сведения о других функциях запросов к базе данных см. в функции запросов к базе данных смарт-карт.

Примеры

В следующем примере показан список интерфейсов для смарт-карты.

LPGUID          pGuids = NULL;
LONG            lReturn;
DWORD           cGuid = SCARD_AUTOALLOCATE;

// Retrieve the list of interfaces.
lReturn = SCardListInterfaces(NULL,
                              (LPCSTR) "MyCard",
                              (LPGUID)&pGuids,
                              &cGuid );
if ( SCARD_S_SUCCESS != lReturn )
{
    printf("Failed SCardListInterfaces\n");
    exit(1);   // Or other appropriate action
}

if ( 0 != cGuid )
{
    // Do something with the array of Guids.
    // Remember to free pGuids when done (by SCardFreeMemory).
    // ...
}

Заметка

Заголовок winscard.h определяет SCardListInterfaces как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
целевая платформа Виндоус
заголовка winscard.h
библиотеки Winscard.lib
DLL Winscard.dll

См. также

SCardEstablishContext

SCardFreeMemory

SCardGetProviderId

SCardListCards

SCardListReaderGroups

SCardListReaders