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

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

Синтаксис

LONG SCardConnectA(
  [in]  SCARDCONTEXT  hContext,
  [in]  LPCSTR        szReader,
  [in]  DWORD         dwShareMode,
  [in]  DWORD         dwPreferredProtocols,
  [out] LPSCARDHANDLE phCard,
  [out] LPDWORD       pdwActiveProtocol
);

Параметры

[in] hContext

Дескриптор, определяющий контекст resource manager. Контекст диспетчера ресурсов задается при предыдущем вызове SCardEstablishContext.

[in] szReader

Имя средства чтения, содержащего целевой карта.

[in] dwShareMode

Флаг, указывающий, могут ли другие приложения формировать подключения к карта.

Значение Значение
SCARD_SHARE_SHARED
Это приложение готово предоставить доступ к карта другим приложениям.
SCARD_SHARE_EXCLUSIVE
Это приложение не хочет делиться карта с другими приложениями.
SCARD_SHARE_DIRECT
Это приложение выделяет читатель для его частного использования и будет управлять им напрямую. Доступ к нему другим приложениям не разрешен.

[in] dwPreferredProtocols

Битовая маска допустимых протоколов для подключения. Возможные значения можно объединить с операцией OR .

Значение Значение
SCARD_PROTOCOL_T0
T=0 является приемлемым протоколом.
SCARD_PROTOCOL_T1
T=1 является приемлемым протоколом.
0
Этот параметр может быть равен нулю, только если параметру dwShareMode присвоено значение SCARD_SHARE_DIRECT. В этом случае драйверы не будут выполнять согласование протоколов, пока директива управления IOCTL_SMARTCARD_SET_PROTOCOL не будет отправлена с SCardControl.

[out] phCard

Дескриптор, определяющий подключение к смарт-карта в назначенном средстве чтения.

[out] pdwActiveProtocol

Флаг, указывающий установленный активный протокол.

Значение Значение
SCARD_PROTOCOL_T0
T=0 — активный протокол.
SCARD_PROTOCOL_T1
T=1 является активным протоколом.
SCARD_PROTOCOL_UNDEFINED
SCARD_SHARE_DIRECT указано, поэтому согласование протокола не выполнялось. Возможно, в читателе нет карта.

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

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

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

Комментарии

Функция SCardConnect — это функция интеллектуального доступа карта и чтения. Дополнительные сведения о других функциях доступа см. в разделе Функции доступа к смарт-картам и читателю.

Примеры

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

SCARDHANDLE     hCardHandle;
LONG            lReturn;
DWORD           dwAP;

lReturn = SCardConnect( hContext, 
                        (LPCTSTR)"Rainbow Technologies SCR3531 0",
                        SCARD_SHARE_SHARED,
                        SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1,
                        &hCardHandle,
                        &dwAP );
if ( SCARD_S_SUCCESS != lReturn )
{
    printf("Failed SCardConnect\n");
    exit(1);  // Or other appropriate action.
}

// Use the connection.
// Display the active protocol.
switch ( dwAP )
{
    case SCARD_PROTOCOL_T0:
        printf("Active protocol T0\n"); 
        break;

    case SCARD_PROTOCOL_T1:
        printf("Active protocol T1\n"); 
        break;

    case SCARD_PROTOCOL_UNDEFINED:
    default:
        printf("Active protocol unnegotiated or unknown\n"); 
        break;
}

// Remember to disconnect (by calling SCardDisconnect).
// ...

Примечание

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

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header winscard.h
Библиотека Winscard.lib
DLL Winscard.dll

См. также раздел

SCardControl

SCardDisconnect

SCardEstablishContext

SCardReconnect