OPENCARDNAME_EXA结构(winscard.h)
OPENCARDNAME_EX 结构包含 SCardUIDlgSelectCard 函数用来初始化智能卡 选择卡 对话框的信息。
语法
typedef struct {
DWORD dwStructSize;
SCARDCONTEXT hSCardContext;
HWND hwndOwner;
DWORD dwFlags;
LPCSTR lpstrTitle;
LPCSTR lpstrSearchDesc;
HICON hIcon;
POPENCARD_SEARCH_CRITERIAA pOpenCardSearchCriteria;
LPOCNCONNPROCA lpfnConnect;
LPVOID pvUserData;
DWORD dwShareMode;
DWORD dwPreferredProtocols;
LPSTR lpstrRdr;
DWORD nMaxRdr;
LPSTR lpstrCard;
DWORD nMaxCard;
DWORD dwActiveProtocol;
SCARDHANDLE hCardHandle;
} OPENCARDNAME_EXA, *POPENCARDNAME_EXA, *LPOPENCARDNAME_EXA;
成员
dwStructSize
结构的长度(以字节为单位)。 此成员的值不得 NULL。
hSCardContext
用于与 智能卡资源管理器通信的上下文。 调用 SCardEstablishContext 以设置 资源管理器上下文,SCardReleaseContext 释放它。 此成员的值不得 NULL。
hwndOwner
拥有对话框的窗口。 此成员可以是任何有效的窗口句柄,也可以为桌面默认值 NULL。
dwFlags
可用于初始化对话框的一组位标志。 当对话框返回时,它将设置这些标志来指示用户的输入。 此成员可以是以下标志之一。
价值 | 意义 |
---|---|
|
仅当调用应用程序搜索的卡片未找到且可用于读取器时,才显示对话框。 这允许找到卡、连接(通过内部对话框机制或用户回调函数),并返回到调用应用程序。 |
|
强制不显示 选择卡用户界面(UI),而不考虑搜索结果。 |
|
无论搜索结果如何,强制显示 选择卡片 UI。 |
lpstrTitle
指向要放置在对话框标题栏中的字符串的指针。 如果此成员 NULL,则系统会使用默认标题“选择卡片:”。
lpstrSearchDesc
指向要向用户显示的字符串的指针,提示插入 智能卡。 如果此成员 NULL,系统将使用默认文本“请插入智能卡”。
hIcon
图标的句柄(32 x 32 像素)。 可以指定要在对话框中显示的特定于供应商的图标。 如果此值 NULL,则会显示一个通用智能卡读卡器加载图标。
pOpenCardSearchCriteria
指向要使用的
lpfnConnect
指向调用方卡连接例程的指针。 如果调用方需要执行其他处理以连接到卡,此函数指针将设置为用户的连接函数。 如果连接函数成功,则卡片保持连接和初始化状态,并返回卡片句柄。
连接例程的原型如下所示。
Connect(
hSCardContext, // the card context passed in the parameter block
szReader, // the name of the reader
mszCards, // multiple string that contains the possible
// card names in the reader
pvUserData // pointer to user data passed in parameter block
);
pvUserData
指向用户数据的 void 指针。 此指针将传回 Connect 例程上的调用方。
dwShareMode
如果 lpfnConnect 未 NULL,则忽略 dwShareMode 和 dwPreferredProtocols 成员。 如果
dwPreferredProtocols
用于内部连接,如 dwShareMode中所述。
lpstrRdr
如果卡位于,则 lpstrRdr 缓冲区包含包含定位卡的读取器的名称。 缓冲区长度应至少为 256 个字符。
nMaxRdr
lpstrRdr指向的缓冲区的大小(以字节为单位)或字符(Unicode 版本)。 如果缓冲区太小而无法包含读取器信息,SCardUIDlgSelectCard 将返回SCARD_E_NO_MEMORY,lpstrRdr指向的缓冲区所需的大小。
lpstrCard
如果卡位于,则 lpstrCard 缓冲区包含该卡的名称。 缓冲区长度应至少为 256 个字符。
nMaxCard
lpstrCard指向的缓冲区的大小(以字节为单位)或字符(Unicode 版本)。 如果缓冲区太小而无法包含卡片信息,SCardUIDlgSelectCard 返回SCARD_E_NO_MEMORY,nMaxCard中所需的缓冲区大小。
dwActiveProtocol
对话框与卡片建立连接时使用的实际协议。
hCardHandle
已连接卡的句柄(通过内部对话框连接或 lpfnConnect 回调)。
言论
注意
winscard.h 标头将OPENCARDNAME_EX定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows XP [仅限桌面应用] |
支持的最低服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | winscard.h |