SCARD_READERSTATEA 结构 (winscard.h)
SCARD_READERSTATE结构由函数用于跟踪读取器中的智能卡。
语法
typedef struct {
LPCSTR szReader;
LPVOID pvUserData;
DWORD dwCurrentState;
DWORD dwEventState;
DWORD cbAtr;
BYTE rgbAtr[36];
} SCARD_READERSTATEA, *PSCARD_READERSTATEA, *LPSCARD_READERSTATEA;
成员
szReader
指向所监视的读取器名称的指针。
将此成员的值设置为“\\?PnP?\Notification“和所有其他成员的值为零,以通知新的智能卡阅读器的到来。
pvUserData
智能卡子系统不使用。 应用程序使用此成员。
dwCurrentState
读取器的当前 状态 ,如应用程序所示。 此字段可以结合使用以下任何值作为位掩码。
值 | 含义 |
---|---|
|
应用程序不知道当前 状态,并想知道。 使用此值会导致状态转换监视服务立即返回。 这由设置为零的所有位表示。 |
|
应用程序对此读取器不感兴趣,在监视操作期间不应考虑该应用程序。 如果设置了此位值,则忽略所有其他位。 |
|
应用程序预期此读取器不可用。 如果设置了此位,则忽略以下所有位。 |
|
应用程序预期读取器中没有卡。 如果设置了此位,则忽略以下所有位。 |
|
应用程序预期读取器中有一个卡。 |
|
应用程序预期读取器中有一个卡,其 ATR 与其中一个目标卡匹配。 如果设置了此位,则假定SCARD_STATE_PRESENT。 除了SCARD_STATE_PRESENT之外,此位对 SCardGetStatusChange 没有意义。 |
|
应用程序预期读取器中的卡由另一个应用程序独占使用。 如果设置了此位,则假定SCARD_STATE_PRESENT。 |
|
应用程序预期读取器中的卡由一个或多个其他应用程序使用,但可以在共享模式下连接到 。 如果设置了此位,则假定SCARD_STATE_PRESENT。 |
|
应用程序预期读取器中存在无响应卡。 |
|
这意味着读取器中的卡尚未启动。 |
dwEventState
读取器的当前状态,如智能卡资源管理器所称。 此字段可以结合使用以下任何值作为位掩码。
值 | 含义 |
---|---|
|
应忽略此读取器。 |
|
应用程序所相信的状态与资源管理器已知的状态之间存在差异。 设置此位后,应用程序可能假定此读取器上发生了重大状态更改。 |
|
资源管理器无法识别给定的读取者名称。 如果设置了此位,则也会设置SCARD_STATE_CHANGED和SCARD_STATE_IGNORE。 |
|
此读取器的实际状态不可用。 如果设置了此位,则以下所有位都是明确的。 |
|
读取器中没有卡。 如果设置了此位,则以下所有位都将被清除。 |
|
阅读器中有一个卡。 |
|
阅读器中有一个卡,其 ATR 与其中一个目标卡匹配。 如果设置了此位,还将设置SCARD_STATE_PRESENT。 此位仅在 SCardLocateCards 函数上返回。 |
|
读取器中的卡分配给其他应用程序独占使用。 如果设置了此位,还将设置SCARD_STATE_PRESENT。 |
|
读取器中的卡由一个或多个其他应用程序使用,但可以在共享模式下连接到 。 如果设置了此位,还将设置SCARD_STATE_PRESENT。 |
|
读取器中存在无响应卡。 |
|
这意味着读取器中的卡尚未启动。 |
cbAtr
返回的 ATR 中的字节数。
rgbAtr[36]
插入卡的 ATR,具有额外的对齐字节。
注解
注意
winscard.h 标头将 SCARD_READERSTATE 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | winscard.h |