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) |