SCardUIDlgSelectCardW 函数 (winscard.h)
SCardUIDlgSelectCard 函数显示智能卡选择卡片对话框。
语法
LONG SCardUIDlgSelectCardW(
[in] LPOPENCARDNAMEW_EX unnamedParam1
);
参数
[in] unnamedParam1
指向“选择卡片”对话框OPENCARDNAME_EX结构的指针。
返回值
如果函数成功显示 “选择卡片 ”对话框,则返回值SCARD_S_SUCCESS。
如果该函数失败,它将返回错误代码。 有关详细信息,请参阅 智能卡返回值。
注解
SCardUIDlgSelectCard 函数提供连接到特定智能卡的方法。 调用时,此函数将搜索与 pDlgStruc 参数指定的OPENCARD_SEARCH_CRITERIA成员匹配的相应智能卡。 根据 pDlgStruc 的 dwFlags 成员,此函数将执行以下操作。
值 | 操作 |
---|---|
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 [仅限桌面应用] |
目标平台 | Windows |
标头 | winscard.h |
Library | Scarddlg.lib |
DLL | Scarddlg.dll |