SCardUIDlgSelectCardA 函数 (winscard.h)
SCardUIDlgSelectCard 函数显示 智能卡 选择卡 对话框。
语法
LONG SCardUIDlgSelectCardA(
[in] LPOPENCARDNAMEA_EX unnamedParam1
);
参数
[in] unnamedParam1
指向 选择卡片 对话框的 OPENCARDNAME_EX 结构的指针。
返回值
如果函数成功显示 选择卡片 对话框,则返回值SCARD_S_SUCCESS。
如果函数失败,它将返回错误代码。 有关详细信息,请参阅 智能卡返回值。
言论
SCardUIDlgSelectCard 函数提供了连接到特定 智能卡的方法。 调用时,此函数将搜索与 pDlgStruc 参数指定的 OPENCARD_SEARCH_CRITERIA 成员匹配的相应智能卡。 此函数执行以下操作,具体取决于 pDlgStrucdwFlags 成员。
价值 | 行动 |
---|---|
SC_DLG_FORCE_UI | 从智能卡 选择卡片 对话框中连接到用户选择的卡。 |
SC_DLG_MINIMAL_UI | 如果只有一个智能卡满足条件,则选择智能卡;如果多个智能卡满足条件,则返回有关用户选择的信息。 |
SC_DLG_NO_UI | 选择第一张可用卡。 |
此函数替换 GetOpenCardName。 GetOpenCardName 函数保持与 Microsoft 智能卡基组件版本 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 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows XP [仅限桌面应用] |
支持的最低服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | 窗户 |
标头 | winscard.h |
库 | Scarddlg.lib |
DLL | Scarddlg.dll |