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

Функция SCardGetReaderDeviceInstanceId получает идентификатор экземпляра устройства карта средства чтения для заданного имени средства чтения. Эта функция не влияет на состояние средства чтения.

Синтаксис

LONG SCardGetReaderDeviceInstanceIdA(
  [in]            SCARDCONTEXT hContext,
  [in]            LPCSTR       szReaderName,
  [out, optional] LPSTR        szDeviceInstanceId,
  [in, out]       LPDWORD      pcchDeviceInstanceId
);

Параметры

[in] hContext

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

[in] szReaderName

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

[out, optional] szDeviceInstanceId

Буфер, получающий идентификатор экземпляра устройства средства чтения. Если это значение равно NULL, функция игнорирует длину буфера, указанную в параметре cchDeviceInstanceId , записывает длину буфера, который был бы возвращен, если бы этот параметр не имел значения NULL , в cchDeviceInstanceId, и возвращает код успешного выполнения.

[in, out] pcchDeviceInstanceId

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

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

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

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

Комментарии

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

Примеры


LONG     lReturn;
LPTSTR   szReaderName = "USB Smart Card Reader 0";
WCHAR    szDeviceInstanceId[256];
DWORD    cchDeviceInstanceId = 256;

// Retrieve the reader's device instance ID.
// hContext was set by a previous call to SCardEstablishContext.
lReturn = SCardGetReaderDeviceInstanceId (hContext,
                         szReaderName,
                         szDeviceInstanceId,
                         &cchDeviceInstanceId);

if ( SCARD_S_SUCCESS != lReturn )
{
    printf("Failed SCardGetReaderDeviceInstanceId - %x\n", lReturn);
    // Take appropriate action.
}



Примечание

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

Требования

   
Минимальная версия клиента Windows 8 [только классические приложения]
Минимальная версия сервера Windows Server 2012 [только классические приложения]
Целевая платформа Windows
Header winscard.h