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 |