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


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

Функция SCardListReaderGroups предоставляет список групп читателей , которые ранее были представлены в системе.

Синтаксис

LONG SCardListReaderGroupsA(
  [in]      SCARDCONTEXT hContext,
  [out]     LPSTR        mszGroups,
  [in, out] LPDWORD      pcchGroups
);

Параметры

[in] hContext

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

Если для этого параметра задано значение NULL, поиск групп читателей не ограничивается каким-либо контекстом.

[out] mszGroups

Многострочное перечисление групп читателей, определенных в системе и доступных текущему пользователю в текущем терминале. Если это значение равно NULL, SCardListReaderGroups игнорирует длину буфера, указанную в pcchGroups, записывает длину буфера, которая была бы возвращена, если бы этот параметр не имел значение NULL , в pcchGroups, и возвращает код успешного выполнения.

Значение Значение
SCARD_ALL_READERS
TEXT("SCard$AllReaders\000")
Группа используется, когда имя группы не указано при перечислении читателей. Возвращает список всех читателей независимо от того, в какой группе или группах находятся читатели.
SCARD_DEFAULT_READERS
TEXT("SCard$DefaultReaders\000")
Группа по умолчанию, в которую добавляются все читатели при добавлении в систему.
SCARD_LOCAL_READERS
TEXT("SCard$LocalReaders\000")
Неиспользуемое устаревшее значение. Это внутренне управляемая группа, которую нельзя изменить с помощью API-интерфейсов групп читателей. Он предназначен для использования только для перечисления.
SCARD_SYSTEM_READERS
TEXT("SCard$SystemReaders\000")
Неиспользуемое устаревшее значение. Это внутренне управляемая группа, которую нельзя изменить с помощью API-интерфейсов групп читателей. Он предназначен для использования только для перечисления.

[in, out] pcchGroups

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

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

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

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

Комментарии

Группа возвращается только в том случае, если она содержит хотя бы одно средство чтения. Сюда входит группа SCard$DefaultReaders. Невозможно вернуть группу SCard$AllReaders , так как она существует только неявно.

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

Примеры

В следующем примере показан список групп читателей.

LPTSTR          pmszReaderGroups = NULL;
LPTSTR          pReaderGroup;
LONG            lReturn;
DWORD           cch = SCARD_AUTOALLOCATE;
    
// Retrieve the list the reader groups.
// hSC was set by a previous call to SCardEstablishContext.
lReturn = SCardListReaderGroups(hSC,
                                (LPTSTR)&pmszReaderGroups,
                                &cch );
if ( SCARD_S_SUCCESS != lReturn )
    printf("Failed SCardListReaderGroups\n");
else
{
    // Do something with the multi string of reader groups.
    // Output the values.
    // A double-null terminates the list of values.
    pReaderGroup = pmszReaderGroups;
    while ( '\0' != *pReaderGroup )
    {
        // Display the value.
        printf("%S\n", pReaderGroup );
        // Advance to the next value.
        pReaderGroup = pReaderGroup + wcslen((wchar_t *) pReaderGroup) + 1;
    }

    // Remember to free pmszReaderGroups by a call to SCardFreeMemory.
    // ...
}

Примечание

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

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header winscard.h
Библиотека Winscard.lib
DLL Winscard.dll

См. также раздел

SCardEstablishContext

SCardFreeMemory

SCardGetProviderId

SCardListCards

SCardListInterfaces

SCardListReaders