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


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

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

Синтаксис

LONG SCardGetReaderDeviceInstanceIdW(
  [in]            SCARDCONTEXT hContext,
  [in]            LPCWSTR      szReaderName,
  [out, optional] LPWSTR       szDeviceInstanceId,
  [in, out]       LPDWORD      pcchDeviceInstanceId
);

Параметры

[in] hContext

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

[in] szReaderName

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

[out, optional] szDeviceInstanceId

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

[in, out] pcchDeviceInstanceId

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

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

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

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

Замечания

Эта функция не перенаправляется. Вызов функции 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 [только классические приложения]
целевая платформа Виндоус
заголовка winscard.h