winscard.h (SCARD_READERSTATEA结构)
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
应用程序的当前 读取器状态 。 此字段可以采用以下任一值(组合)作为位掩码。
Value | 含义 |
---|---|
|
应用程序不知道当前 状态,并想知道。 使用此值会导致从状态转换监视服务立即返回。 这由设置为零的所有位表示。 |
|
应用程序对此读取器不感兴趣,不应在监视操作期间考虑它。 如果设置了此位值,则忽略所有其他位。 |
|
应用程序需要此读取器不可用。 如果设置了此位,则忽略以下所有位。 |
|
应用程序需要读取器中没有卡片。 如果设置了此位,则忽略以下所有位。 |
|
应用程序需要读取器中有一张卡片。 |
|
应用程序需要读取器中有一张卡片,其 ATR 与其中一个目标卡匹配。 如果设置了此位,则假定SCARD_STATE_PRESENT。 除了 SCARD_STATE_PRESENT 之外,此位对 SCardGetStatusChange 没有意义。 |
|
应用程序需要为读取器中的卡片分配供另一个应用程序独占使用。 如果设置了此位,则假定SCARD_STATE_PRESENT。 |
|
应用程序需要读取器中的卡由一个或多个其他应用程序使用,但可能在共享模式下连接到。 如果设置了此位,则假定SCARD_STATE_PRESENT。 |
|
应用程序需要读取器中存在无响应卡。 |
|
这意味着读取器中的卡片尚未启动。 |
dwEventState
读取器的当前状态,称为智能卡资源管理器。 此字段可以采用以下任一值(组合)作为位掩码。
Value | 含义 |
---|---|
|
应忽略此读取器。 |
|
应用程序所相信的状态与资源管理器已知的状态之间存在差异。 设置此位后,应用程序可能会假定此读取器发生了重大状态更改。 |
|
资源管理器无法识别给定的读取器名称。 如果设置了此位,则也会设置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 |