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

读取器的当前 状态 ,如应用程序所示。 此字段可以结合使用以下任何值作为位掩码。

含义
SCARD_STATE_UNAWARE
应用程序不知道当前 状态,并想知道。 使用此值会导致状态转换监视服务立即返回。 这由设置为零的所有位表示。
SCARD_STATE_IGNORE
应用程序对此读取器不感兴趣,在监视操作期间不应考虑该应用程序。 如果设置了此位值,则忽略所有其他位。
SCARD_STATE_UNAVAILABLE
应用程序预期此读取器不可用。 如果设置了此位,则忽略以下所有位。
SCARD_STATE_EMPTY
应用程序预期读取器中没有卡。 如果设置了此位,则忽略以下所有位。
SCARD_STATE_PRESENT
应用程序预期读取器中有一个卡。
SCARD_STATE_ATRMATCH
应用程序预期读取器中有一个卡,其 ATR 与其中一个目标卡匹配。 如果设置了此位,则假定SCARD_STATE_PRESENT。 除了SCARD_STATE_PRESENT之外,此位对 SCardGetStatusChange 没有意义。
SCARD_STATE_EXCLUSIVE
应用程序预期读取器中的卡由另一个应用程序独占使用。 如果设置了此位,则假定SCARD_STATE_PRESENT。
SCARD_STATE_INUSE
应用程序预期读取器中的卡由一个或多个其他应用程序使用,但可以在共享模式下连接到 。 如果设置了此位,则假定SCARD_STATE_PRESENT。
SCARD_STATE_MUTE
应用程序预期读取器中存在无响应卡。
SCARD_STATE_UNPOWERED
这意味着读取器中的卡尚未启动。

dwEventState

读取器的当前状态,如智能卡资源管理器所称。 此字段可以结合使用以下任何值作为位掩码。

含义
SCARD_STATE_IGNORE
应忽略此读取器。
SCARD_STATE_CHANGED
应用程序所相信的状态与资源管理器已知的状态之间存在差异。 设置此位后,应用程序可能假定此读取器上发生了重大状态更改。
SCARD_STATE_UNKNOWN
资源管理器无法识别给定的读取者名称。 如果设置了此位,则也会设置SCARD_STATE_CHANGED和SCARD_STATE_IGNORE。
SCARD_STATE_UNAVAILABLE
此读取器的实际状态不可用。 如果设置了此位,则以下所有位都是明确的。
SCARD_STATE_EMPTY
读取器中没有卡。 如果设置了此位,则以下所有位都将被清除。
SCARD_STATE_PRESENT
阅读器中有一个卡。
SCARD_STATE_ATRMATCH
阅读器中有一个卡,其 ATR 与其中一个目标卡匹配。 如果设置了此位,还将设置SCARD_STATE_PRESENT。 此位仅在 SCardLocateCards 函数上返回。
SCARD_STATE_EXCLUSIVE
读取器中的卡分配给其他应用程序独占使用。 如果设置了此位,还将设置SCARD_STATE_PRESENT。
SCARD_STATE_INUSE
读取器中的卡由一个或多个其他应用程序使用,但可以在共享模式下连接到 。 如果设置了此位,还将设置SCARD_STATE_PRESENT。
SCARD_STATE_MUTE
读取器中存在无响应卡。
SCARD_STATE_UNPOWERED
这意味着读取器中的卡尚未启动。

cbAtr

返回的 ATR 中的字节数。

rgbAtr[36]

插入卡的 ATR,具有额外的对齐字节。

注解

注意

winscard.h 标头将 SCARD_READERSTATE 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
标头 winscard.h

另请参阅

SCardGetStatusChange

SCardLocateCards