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


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

Функция SCardUIDlgSelectCard отображает диалоговое окно выбора карты смарт-карты.

Синтаксис

LONG SCardUIDlgSelectCardA(
  [in] LPOPENCARDNAMEA_EX unnamedParam1
);

Параметры

[in] unnamedParam1

Указатель на структуру OPENCARDNAME_EX диалогового окна выбор карточки.

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

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

Если функция завершается ошибкой, возвращается код ошибки. Дополнительные сведения см. в возвращаемых значений смарт-карт.

Замечания

Функция SCardUIDlgSelectCard предоставляет метод подключения к определенному смарт-карте. При вызове эта функция выполняет поиск соответствующих смарт-карт, соответствующих элементу OPENCARD_SEARCH_CRITERIA, указанному параметром pDlgStruc. В зависимости от dwFlags члена pDlgStrucэта функция выполняет следующие действия.

Ценность Действие
SC_DLG_FORCE_UI Подключается к карточке, выбранной пользователем из диалогового окна выбор карточки.
SC_DLG_MINIMAL_UI Выбирает смарт-карту, если только одна смарт-карта соответствует критериям или возвращает сведения о выборе пользователя, если несколько смарт-карт соответствуют критериям.
SC_DLG_NO_UI Выбирает первую доступную карточку.
 

Эта функция заменяет GetOpenCardName. Функция GetOpenCardName поддерживается для обратной совместимости с базовыми компонентами Microsoft Smart Card версии 1.0.

Примеры

В следующем примере показано, как отобразить диалоговое окно выбора карточки смарт-карты.

SCARDCONTEXT     hSC;
OPENCARDNAME_EX  dlgStruct;
WCHAR            szReader[256];
WCHAR            szCard[256];
LONG             lReturn;

// Establish a context.
// It will be assigned to the structure's hSCardContext field.
lReturn = SCardEstablishContext(SCARD_SCOPE_USER,
                                NULL,
                                NULL,
                                &hSC );
if ( SCARD_S_SUCCESS != lReturn )
{
    printf("Failed SCardEstablishContext\n");
    exit(1);
}

// Initialize the structure.
memset(&dlgStruct, 0, sizeof(dlgStruct));
dlgStruct.dwStructSize = sizeof(dlgStruct);
dlgStruct.hSCardContext = hSC;
dlgStruct.dwFlags = SC_DLG_FORCE_UI;
dlgStruct.lpstrRdr = (LPSTR) szReader;
dlgStruct.nMaxRdr = 256;
dlgStruct.lpstrCard = (LPSTR) szCard;
dlgStruct.nMaxCard = 256;
dlgStruct.lpstrTitle = (LPSTR) "My Select Card Title";

// Display the select card dialog box.
lReturn = SCardUIDlgSelectCard(&dlgStruct);
if ( SCARD_S_SUCCESS != lReturn )
    printf("Failed SCardUIDlgSelectCard - %x\n", lReturn );
else
    printf("Reader: %S\nCard: %S\n", szReader, szCard );

// Release the context (by SCardReleaseContext - not shown here).

Заметка

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

Требования

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

См. также

OPENCARDNAME_EX