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 含义
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

读取器的当前状态,称为智能卡资源管理器。 此字段可以采用以下任一值(组合)作为位掩码。

Value 含义
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