Функция SCardGetCardTypeProviderNameA (winscard.h)
Функция SCardGetCardTypeProviderName возвращает имя модуля (библиотека динамической компоновки), который содержит поставщик для заданного имени карта и типа поставщика.
Синтаксис
LONG SCardGetCardTypeProviderNameA(
[in] SCARDCONTEXT hContext,
[in] LPCSTR szCardName,
[in] DWORD dwProviderId,
[out] CHAR *szProvider,
[in, out] LPDWORD pcchProvider
);
Параметры
[in] hContext
Дескриптор, идентифицирующий контекст resource manager. Контекст диспетчера ресурсов можно задать с помощью предыдущего вызова SCardEstablishContext. Это значение может иметь значение NULL , если вызов SCardGetCardTypeProviderName не направляется в определенный контекст.
[in] szCardName
Имя типа карта, с которым связано это имя поставщика.
[in] dwProviderId
Идентификатор поставщика, связанного с этим типом карта.
Значение | Значение |
---|---|
|
Функция извлекает имя основного поставщика услугсмарт-карта в виде строки GUID. |
|
Функция извлекает имя поставщика служб шифрования. |
|
Функция извлекает имя поставщика хранилища ключей (KSP) смарт-карта. |
|
Функция извлекает имя модуля карта. |
[out] szProvider
Строковая переменная для получения имени поставщика после успешного выполнения этой функции.
[in, out] pcchProvider
Указатель на значение DWORD . При входе pcchProvider предоставляет длину буфера szProvider в символах. Если это значение равно SCARD_AUTOALLOCATE, то szProvider преобразуется в указатель на указатель байтов и получает адрес блока памяти, содержащего строку. Этот блок памяти должен быть освобожден путем вызова SCardFreeMemory.
В выходных данных это значение представляет фактическое количество символов в переменной szProvider, включая признак конца null.
Возвращаемое значение
Эта функция возвращает различные значения в зависимости от того, успешно или неудачно.
Код возврата | Описание |
---|---|
|
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 или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | winscard.h |
Библиотека | Winscard.lib |
DLL | Winscard.dll |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по