Функция 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
Идентификатор поставщика, связанного с этим типом карточки.
Ценность | Значение |
---|---|
|
Функция получает имя |
|
Функция извлекает имя поставщика служб шифрования . |
|
Функция получает имя поставщика хранилища ключей смарт-карты (KSP). |
|
Функция получает имя модуля карточки. |
[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 |