📄 hkcommand.h
字号:
//********************************************************************************
//文件名: HKCommand.h
//版本:2.0
//描述:本文件定义TaiCOS中部分命令的C语言函数接口和相关密码算法函数接口等
//北京海泰方圆科技有限公司
//********************************************************************************
#ifndef __HKCommand_H
#define __HKCommand_H
#include <Windows.h>
#define HAIKEY_SUCCESS 0 //所有函数执行成功时的返回值
#define MAX_READER_NAME_LENGTH 128 //最大设备名长度
#define MAX_ATR_LENGTH 32
#define SERIAL_NUM_LEN 8 //设备序列号长度
#define HGS_STATE_EMPTY 0x0010
#define HGS_STATE_PRESENT 0x0020
#ifdef __cplusplus
extern "C" {
#endif
//设备插入处理函数原型,参见函数 HKSetDevChgFunc
typedef DWORD (__stdcall *DEVINSERTED)(IN void *pParam);//输入,设备插入处理函数的参数
//设备拔除处理函数原型,参见函数 HKSetDevChgFunc
typedef DWORD (__stdcall *DEVREMOVED)(IN void *pParam);//输入,设备拔除处理函数的参数
//取所有读写器名字
DWORD _stdcall HKListReaders
(
OUT LPSTR pszReaderName, //输出,多字符串,所有读写器的名称
IN OUT DWORD *pdwReaderNameLen,//输入输出,读写器名称的长度,若参数pszReaderName为NULL,则返回其所需空间大小
OUT DWORD *pdwReaderNum //输出,读写器的个数
);
//根据可用设备名连接到一个HaiKey设备
DWORD _stdcall HKConnectDev
(
IN LPCSTR szDevName,//输入,可用设备名
OUT HANDLE *phCard //输出,设备的操作句柄
);
//断开连接
DWORD _stdcall HKDisconnectDev
(
IN HANDLE hCard//输入,设备的操作句柄
);
//判断设备是否插入
DWORD _stdcall HKGetDevState(IN LPCSTR szReaderName, //输入,读写器名称。
OUT DWORD *pdwState); //输出,设备存在时为HGS_STATE_PRESENT,不存在时为HGS_STATE_EMPTY
//对可用HaiKey设备执行复位操作
DWORD _stdcall HKReset
(
IN HANDLE hCard, //输入,HaiKey的操作句柄
OUT BYTE *pbATR, //输出,返回ATR信息;可以为NULL
IN OUT DWORD *pdwATRLen//输入输出,输入时给出pbATR缓冲区长度;输出时为实际ATR长度,不超过32字节;可以为NULL
);
//取已连接设备的复位应答信息
DWORD _stdcall HKGetATR
(
IN HANDLE hCard, //输入,HaiKey的操作句柄
OUT BYTE *pbATR, //输出,返回ATR信息
IN OUT DWORD *pdwATRLen//输入输出,输入时给出pbATR缓冲区长度;输出时为实际ATR长度,不超过32字节
);
//取已连接设备的序列号
DWORD _stdcall HKGetSerialNum
(
IN HANDLE hCard, //输入,HaiKey的操作句柄
OUT BYTE bSerialNum[SERIAL_NUM_LEN]//输出,HaiKey的序列号,为8字节有效数据
);
//发送COS指令
DWORD _stdcall HKTransmit
(
IN HANDLE hCard, //输入,HaiKey的操作句柄
IN const BYTE *pbCommand, //输入,发送的COS指令
IN DWORD dwCommandLen, //输入,发送的COS指令长度
OUT BYTE *pbRetBuf, //输出,指令执行后卡片返回的数据的缓冲区
IN OUT DWORD *pdwRetBufLen,//输入输出,输入时表示pbRetBuf的大小,必须足够大;
//输出时,为pbRetBuf中返回数据的长度
OUT DWORD *pdwCosState //输出,执行指令后COS返回的状态码
);
//指定读写器名,注册相应的设备插拔处理函数
DWORD _stdcall HKSetDevChgFunc(IN LPCSTR szReaderName, //输入,读写器名称
IN DEVINSERTED InsertProc,//输入,设备插入处理函数
IN DEVREMOVED RemoveProc, //输入,设备拔除处理函数
IN void *pProcParam, //输入,设备插拔处理函数的参数
OUT HANDLE *phEvtHandler);//输出,插拔事件处理句柄
//以插拔事件处理句柄注册设备的插拔处理函数或其参数
DWORD _stdcall HKSetDevChgFuncParam(IN HANDLE hEvtHandler, //输入,插拔事件处理句柄
IN DEVINSERTED InsertProc,//输入,设备插入处理函数
IN DEVREMOVED RemoveProc, //输入,设备拔除处理函数
IN void *pProcParam); //输入,设备插拔处理函数的参数
//开始执行事务处理,即请求以独占方式操作该设备,以支持多应用
DWORD _stdcall HKBeginTransaction
(
IN HANDLE hCard//输入,设备的操作句柄
);
//结束当前事务处理,即终止本次对设备的独占访问,以支持多应用
DWORD _stdcall HKEndTransaction
(
IN HANDLE hCard//输入,设备的操作句柄
);
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -