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


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

Функция SCardGetCardTypeProviderName возвращает имя модуля (динамической библиотеки ссылок), которое содержит поставщика для заданного имени карточки и типа поставщика .

Синтаксис

LONG SCardGetCardTypeProviderNameA(
  [in]      SCARDCONTEXT hContext,
  [in]      LPCSTR       szCardName,
  [in]      DWORD        dwProviderId,
  [out]     CHAR         *szProvider,
  [in, out] LPDWORD      pcchProvider
);

Параметры

[in] hContext

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

[in] szCardName

Имя типа карточки, с которым связано это имя поставщика.

[in] dwProviderId

Идентификатор поставщика, связанного с этим типом карточки.

Ценность Значение
SCARD_PROVIDER_PRIMARY
1
Функция получает имяосновного поставщика услуг смарт-карты в виде строки GUID.
SCARD_PROVIDER_CSP
2
Функция извлекает имя поставщика служб шифрования .
SCARD_PROVIDER_KSP
3
Функция получает имя поставщика хранилища ключей смарт-карты (KSP).
SCARD_PROVIDER_CARD_MODULE
0x80000001
Функция получает имя модуля карточки.

[out] szProvider

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

[in, out] pcchProvider

Указатель на значение DWORD. При входе pcchProvider предоставляет длину буфера szProvider символами. Если это значение равно SCARD_AUTOALLOCATE, то szProvider преобразуется в указатель на указатель байтов и получает адрес блока памяти, содержащего строку. Этот блок памяти должен быть освобожден путем вызова SCardFreeMemory.

В выходных данных это значение представляет фактическое количество символов, включая null конца, в переменной szProvider.

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

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

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

Замечания

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

После успешного завершения этой функции значение в szProvider можно использовать в качестве третьего параметра в вызове CryptAcquireContext.

Примеры

В следующем примере показано, как получить имя поставщика для указанного контекста чтения. В примере предполагается, что hContext является допустимым дескриптором, полученным из предыдущего вызова функции SCardEstablishContext.

LPTSTR szProvider = NULL;
LPTSTR szCardName = _T("WindowsCard");
DWORD  chProvider = SCARD_AUTOALLOCATE;
LONG   lReturn = SCARD_S_SUCCESS;

// Retrieve the provider name.
// hContext was set by SCardEstablishContext.
lReturn = SCardGetCardTypeProviderName(hContext,
                                       szCardName,
                                       SCARD_PROVIDER_CSP,
                                       (LPTSTR)&szProvider,
                                       &chProvider);
if (SCARD_S_SUCCESS == lReturn)
{
    BOOL fSts = TRUE;
    HCRYPTPROV hProv = NULL;
  
  // Acquire a Cryptographic operation context.
    fSts = CryptAcquireContext(&hProv,
                               NULL,
                               szProvider,
                               PROV_RSA_FULL,
                               0);
    // Perform Cryptographic operations with smart card
    // ...

    // Free memory allocated by SCardGetCardTypeProviderName.
    lReturn = SCardFreeMemory(hContext, szProvider);
}

Заметка

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

Требования

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

См. также

SCardEstablishContext

SCardFreeMemory

SCardSetCardTypeProviderName