SCARD_READER_CAPABILITIES 结构 (smclib.h)

SCARD_READER_CAPABILITIES结构保存有关智能卡读取器的状态信息。

语法

typedef struct _SCARD_READER_CAPABILITIES {
  ULONG                    SupportedProtocols;
  ULONG                    Reserved;
  ULONG                    ReaderType;
  ULONG                    MechProperties;
  ULONG                    CurrentState;
  ULONG                    Channel;
  struct {
    ULONG Default;
    ULONG Max;
  } CLKFrequency;
  struct {
    ULONG Default;
    ULONG Max;
  } DataRate;
  ULONG                    MaxIFSD;
  ULONG                    PowerMgmtSupport;
  ULONG                    CardConfiscated;
  struct {
    PULONG List;
    UCHAR  Entries;
  } DataRatesSupported;
  _DataRatesSupported      _DataRatesSupported;
  struct {
    PULONG List;
    UCHAR  Entries;
  } CLKFrequenciesSupported;
  _CLKFrequenciesSupported _CLKFrequenciesSupported;
  UCHAR                    Reserved1[100 - sizeof(ULONG)- sizeof(struct _DataRatesSupported)- sizeof(struct _CLKFrequenciesSupported)];
} SCARD_READER_CAPABILITIES, *PSCARD_READER_CAPABILITIES;

成员

SupportedProtocols

必须设置为一个位掩码,以反映卡读取器和卡读取器驱动程序支持的异步或同步协议。 此成员是必需的。

Reserved

预留给系统使用。

ReaderType

此成员包含读取器类型,是必需的。 此成员可以具有下表中的值之一。

含义
SCARD_READER_TYPE_SERIAL 串行读取器
SCARD_READER_TYPE_PCMCIA PCMCIA 阅读器
SCARD_READER_TYPE_KEYBOARD 键盘附加的阅读器
SCARD_READER_TYPE_USB USB 读取器
SCARD_READER_TYPE_PARALELL 并行读取器
SCARD_READER_TYPE_SCSI SCSI 读取器
SCARD_READER_TYPE_IDE IDE 读取器
SCARD_READER_TYPE_TPM 使用 TPM 芯片进行密钥材料存储和加密操作的读取器
SCARD_READER_TYPE_VENDOR 使用专有供应商总线的读取器

MechProperties

包含一个值,该值通过采用下表中显示的所有适用的读取器属性的按位 OR 构成。 此成员是可选的。

含义
SCARD_READER_SWALLOWS 读取器具有吞咽机制。
SCARD_READER_EJECTS 读取器可以弹出智能卡。
SCARD_READER_CONFISCATES 读者可以吞下智能卡。

CurrentState

此成员包含卡的状态,是必需的。 此成员可以具有下表中列出的值之一。

状态 含义
SCARD_UNKNOWN 读取器没有有关状态的信息。
SCARD_ABSENT 未插入智能卡。
SCARD_PRESENT 插入智能卡。
SCARD_SWALLOWED 插入智能卡,阅读器吞咽了它。
SCARD_POWERED 智能卡已打开,但读取器无法识别其模式。
SCARD_NEGOTIABLE 插入智能卡并等待协议协商。
SCARD_SPECIFIC 插入智能卡并已选择协议。
 

必须使用 SMARTCARD_EXTENSION的 OsData-SpinLock> 成员指向的旋转锁来按顺序访问此字段。

Channel

包含逻辑通道号。 此成员是可选的。 此成员的确切含义取决于智能卡的类型,如下表所示。

智能卡的类型 通道字段中值的含义
串行读取器 端口号
并行读取器 端口号
SCSI 读取器 SCSI ID
键盘阅读器 0
USB 读取器 设备编号
 

有关详细信息,请参阅 ICC 和个人计算机系统的互操作性规范的第 3 部分。

CLKFrequency

具有以下成员的结构:

CLKFrequency.Default

包含读取器运行的标准时钟频率(以千赫为单位),并采用 little-endian 格式进行编码。 例如,3.58 MHz 编码为 3580。 此成员是必需的。

CLKFrequency.Max

包含读取器可以运行的最大时钟频率(以千赫为单位),并采用 little-endian 格式进行编码。 此成员是必需的。

DataRate

具有以下成员的结构:

DataRate.Default

包含读取器的标准数据速率(以位/秒为单位),并采用 little-endian 格式编码。 此成员是必需的。

DataRate.Max

包含读取器的最大数据速率(以位/秒为单位),并采用 little-endian 格式编码。 此成员是必需的。

MaxIFSD

包含读取器的最大缓冲区大小。 此值在 T=1 传输开始时通知智能卡一个数据包中可以接收的最大字节数。 此成员是必需的。

PowerMgmtSupport

指示卡支持的电源管理类型。 值为零表示智能卡不支持电源管理。

CardConfiscated

如果为 TRUE,则表示智能卡已被没收。

DataRatesSupported

具有以下成员的结构:

DataRatesSupported.List

包含读取器支持的数据速率列表(以比特/秒为单位)。 此成员与 PTS 请求一起使用。 读取器驱动程序通常将此成员设置为指向包含支持的数据速率的无符号长值的静态数组的指针。 如果读取器不支持不同的数据速率,请将此成员留空。 此成员是可选的。

DataRatesSupported.Entries

包含 DataRatesSupported.List 中的链接列表条目数。 此成员是可选的。

_DataRatesSupported

具有以下成员的 结构:

CLKFrequenciesSupported

具有以下成员的 结构:

CLKFrequenciesSupported.List

包含读取器支持的时钟频率列表(以千赫为单位)。 此成员与 PTS 请求一起使用。 驱动程序通常将此成员设置为指向包含支持的时钟频率的无符号长值的静态数组的指针。 如果读取器不支持不同的时钟频率,请将此成员留空。 此成员是可选的。

CLKFrequenciesSupported.Entries

包含 CLKFrquenciesSupported.List 的链接列表条目数。 此成员是可选的。

_CLKFrequenciesSupported

具有以下成员的 结构:

Reserved1[100 - sizeof(ULONG)- sizeof(struct _DataRatesSupported)- sizeof(struct _CLKFrequenciesSupported)]

预留给系统使用。

注解

此结构必须由智能卡读取器驱动程序维护。

要求

要求
Header smclib.h (包括 Smclib.h)