PC/SC(Personal Computer / Smart Card)协议是一种用于个人计算机与智能卡及其读卡器之间通信的标准接口规范,它定义了应用程序如何访问和使用智能卡。
### PCSC协议详解
#### 一、PCSC协议简介
PCSC(Personal Computer/Smart Card)协议是一种广泛应用于智能卡领域的标准用户接口(API)。它为个人电脑与智能卡之间提供了统一的交互环境,确保两者之间的通信标准化和高效化。尽管最初在Windows平台上发展起来,并且目前只有Windows全面支持这一标准,但鉴于Windows在全球范围内的广泛应用,PCSC已被整个智能卡行业广泛采纳。
#### 二、PCSC协议的目标与特点
该协议的主要目标包括:
1. **遵守现有标准并扩展**:遵循现有的ICC(集成电路卡片)和PC的标准,并在此基础上进行适当的延伸。
2. **跨平台可操作性**:虽然最初是在Windows上开发的,但设计时考虑到了未来在不同硬件及软件环境中的应用可能性。
3. **独立于供应商**:允许应用程序使用来自任何制造商的产品而无需受限,提高了系统的灵活性和兼容性。
4. **建立智能卡服务接口**:促进智能卡技术在个人电脑上的广泛应用,并推动其成为PC的标准设备之一。
#### 三、PCSC体系结构
该协议的架构主要由以下三个部分组成:
1. **IFD控制器(Interface Device Controller)**: 这是由读写器制造商提供的组件,用于连接智能卡和计算机。
2. **资源管理器**:这是一个系统级组件,通过Win32 API实现。它负责协调多个应用程序之间的智能卡访问权限。
3. **服务提供者(Service Providers)**: 由第三方开发的可安装模块,为应用提供了基于COM接口的特定服务功能。
#### 四、CRW系列IC读卡器的PCSC驱动安装
支持PCSC标准的CRW系列IC读写设备通常会附带一个驱动程序光盘。以下是简单的安装步骤:
1. 运行光盘中的`SETUP.EXE`文件。
2. 驱动程序将自动被系统识别并安装。
3. 安装完成后,便可以按照PCSC标准使用CRW系列读写器。
#### 五、PCSC的API函数用法及示例
PCSC API由操作系统提供,并在微软MSDN文档中有详细说明。下面以`ScardConnect`函数为例进行介绍:
```c++
LONG ScardConnect(
IN SCARD_CONTEXT hContext,
IN LPCTSTR szReader,
IN DWORD dwShareMode,
IN DWORD dwPreferredProtocols,
OUT LPSHARE_HANDLE phCard,
OUT LPDWORD pdwActiveProtocol
);
```
**参数说明**
- `hContext`: 资源管理器环境的句柄,通过调用`SCardEstablishContext`预先设置。
- `szReader`: 指定与目标智能卡相连的读写设备名称。
- `dwShareMode`: 其他应用程序是否可以共享此智能卡
- `SCARD_SHARE_SHARED`: 多个应用可同时使用该卡片。
- `SCARD_SHARE_EXCLUSIVE`: 不允许其他程序访问此卡片。
- `SCARD_SHARE_DIRECT`: 设定读写器为私有,不允许其它程序访问。
- `dwPreferredProtocols`: 指定希望使用的通信协议
- 可指定`SCARD_PROTOCOL_T0` 或 `SCARD_PROTOCOL_T1`
- 当`dwShareMode`设置为`SCARD_SHARE_DIRECT`时,该参数可以设为0,表示无需具体指明。
- `phCard`: 返回一个句柄以标识智能卡与读写器之间的连接。
- `pdwActiveProtocol`: 返回实际使用的有效协议。
通过上述介绍可以看出PCSC不仅提供了一种标准化的交互方式给智能卡和计算机之间,并且确保了不同供应商的产品能够在统一框架下协同工作。这极大地促进了智能卡技术的发展及普及,具有重要意义。