Функция SCardListReadersWithDeviceInstanceIdA (winscard.h)
Функция SCardListReadersWithDeviceInstanceId получает список читателей, которые предоставили идентификатор экземпляра устройства. Эта функция не влияет на состояние средства чтения.
Синтаксис
LONG SCardListReadersWithDeviceInstanceIdA(
[in] SCARDCONTEXT hContext,
[in] LPCSTR szDeviceInstanceId,
[out, optional] LPSTR mszReaders,
[in, out] LPDWORD pcchReaders
);
Параметры
[in] hContext
Дескриптор, идентифицирующий контекст Resource Manager для запроса. Контекст диспетчера ресурсов можно задать с помощью предыдущего вызова функции SCardEstablishContext . Этот параметр не может иметь значение NULL.
[in] szDeviceInstanceId
Идентификатор экземпляра устройства средства чтения. Это значение можно получить, вызвав функцию SCardGetReaderDeviceInstanceId с именем средства чтения или вызвав функцию SetupDiGetDeviceInstanceId из DDK.
[out, optional] mszReaders
Многостроковый объект, содержащий средства чтения смарт-карта в предоставленном идентификаторе экземпляра устройства. Если это значение равно NULL, функция игнорирует длину буфера, указанную в параметре pcchReaders , записывает длину буфера, который был бы возвращен, если бы этот параметр не имел значение NULL , в pcchReaders, и возвращает код успешного выполнения.
[in, out] pcchReaders
Длина буфера mszReaders (в символах). Этот параметр получает фактическую длину структуры из нескольких строк, включая все завершающие символы NULL. Если длина буфера указана как SCARD_AUTOALLOCATE, то mszReaders преобразуется в указатель на указатель байта и получает адрес блока памяти, содержащего структуру из нескольких строк. Завершив использование этой памяти, освободите ее с помощью функции SCardFreeMemory .
Возвращаемое значение
Эта функция возвращает различные значения в зависимости от того, является ли она успешной или неудачной.
Код возврата | Описание |
---|---|
|
SCARD_S_SUCCESS. |
|
Код ошибки. Дополнительные сведения см. в разделе Возвращаемые значения смарт-карты. |
Комментарии
Эта функция не перенаправляется. Вызов функции SCardListReadersWithDeviceInstanceId в сеансе удаленного рабочего стола завершается сбоем с кодом ошибки SCARD_E_READER_UNAVAILABLE.
Примеры
szDeviceInstanceIdcchReaderNameLONG lReturn, lReturn2;
LPTSTR pmszReaders = NULL;
LPTSTR pReader = NULL;WCHAR
DWORD cchReaderName = SCARD_AUTOALLOCATE;
// Retrieve the reader’s name from it’s device instance ID
// hContext was set by a previous call to SCardEstablishContext.
// szDeviceInstanceId was obtained by calling SetupDiGetDeviceInstanceId
lReturn = SCardListReadersWithDeviceInstanceId (hContext,
szDeviceInstanceId,
(LPTSTR)&pmszReaders,
&cchReaderName);
switch( lReturn )
{
case SCARD_E_NO_READERS_AVAILABLE:
printf("No readers have the provided device instance ID.\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( hContext,
pmszReaders );
if ( SCARD_S_SUCCESS != lReturn2 )
printf("Failed SCardFreeMemory\n");
break;
default:
printf("Failed SCardListReaders\n");
// Take appropriate action.
// ...
break;
Примечание
Заголовок winscard.h определяет SCardListReadersWithDeviceInstanceId в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Минимальная версия клиента | Windows 8 [только классические приложения] |
Минимальная версия сервера | Windows Server 2012 [только классические приложения] |
Целевая платформа | Windows |
Header | winscard.h |
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе:Отправить и просмотреть отзыв по