123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #ifndef __DEVICE_BASE_CLASS_H
- #define __DEVICE_BASE_CLASS_H
- #include <stdlib.h>
- #if defined __x86_64__ && (defined __linux__ || defined __APPLE__)
- #define RESERVE_NUM 24
- #else
- #define RESERVE_NUM 12
- #endif
- #define MAX_ATR_LEN 56 /** max ATR length */
- #define MAX_ID_LEN 8 /** max device ID length */
- #define MAX_LOG_END_POS_VALUE_NEEDLEN 4 //最大日志文件结束位置值长度
- #define INDEXFILE_SIZE 4 //索引文件最大长度
- #define LOGFILE_ID 0x0040 //日志文件ID
- #define INDEXFILE_ID 0x0041 //索引文件ID
- #define OLD_INDEXFILE_ID 0x0B3C //旧版本索引文件ID
- #define OLD_LOGFILE_ID 0X00F0 //旧版本日志文件ID
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- typedef void* USBKEY_HANDLE;
- typedef unsigned char BYTE;
- typedef unsigned short WORD;
- typedef unsigned long DWORD;
- #pragma once
- typedef struct
- {
- unsigned int m_USBKeyType; //Ukey硬件类型, 0x0001:飞天ROCKEY ARM 时钟锁; 0x0002:深思S4 时钟锁; 0x0003:龙脉GM3000锁
- unsigned short m_Ver; //COS版本,比如:0x0201,表示2.01版
- unsigned short m_Type; //产品类型: 0xFF表示标准版, 0x00为标准时钟锁,0x02为标准U盘锁
- unsigned char m_BirthDay[8]; //出厂日期
- unsigned long m_Agent; //代理商编号,比如:默认的0xFFFFFFFF
- unsigned long m_PID; //产品ID
- unsigned long m_UserID; //用户ID
- unsigned char m_HID[8]; //8字节的硬件ID
- unsigned long m_IsMother; //母锁标志: 0x01表示是母锁, 0x00表示不是母锁
- unsigned long m_DevType; //设备类型(PROTOCOL_HID或者PROTOCOL_CCID)
- }USBKEY_INFO,*PUSBKEY_INFO;
- class DeviceBaseClass
- {
- public:
- DeviceBaseClass(void);
- virtual ~DeviceBaseClass(void);
- virtual DWORD FindUsbKey(USBKEY_INFO* pKeyInfo, unsigned int* pCount);
- virtual DWORD OpenUsbKey(USBKEY_HANDLE *pHandle,unsigned int Item);
- virtual DWORD CloseUsbKey(USBKEY_HANDLE hHandle);
- virtual DWORD VerifyAdminPIN(USBKEY_HANDLE hHandle, char* pPIN);
- virtual DWORD ChangeAdminPIN(USBKEY_HANDLE hHandle,char* pOldPin, char* pNewPin);
- virtual DWORD GenUniqueKey(USBKEY_HANDLE hHandle,char* pAdminPin, char* pUserPin);
- virtual DWORD CreateDataFile(USBKEY_HANDLE hHandle, unsigned int nFileLength, unsigned int nFileID);
- virtual DWORD WriteDataFile(USBKEY_HANDLE hHandle, unsigned int nFileID, unsigned int wOffset, BYTE * pInData, unsigned int nDataLen, unsigned int nFileSize);
- virtual DWORD ReadDataFile(USBKEY_HANDLE hHandle, unsigned int nFileID, unsigned int wOffset, BYTE * pOutData, unsigned int nDataLen);
- virtual DWORD DeleteDataFile(USBKEY_HANDLE hHandle, unsigned int nFileID);
- virtual DWORD GetFileLen(USBKEY_HANDLE hHandle, unsigned int nFileID, unsigned int* pFileLen);
- virtual DWORD WriteExeFile(USBKEY_HANDLE hHandle, unsigned int nFileID, BYTE * pInData, unsigned int nDataLen, unsigned int nFileSize);
- virtual DWORD WritePrivateKey(USBKEY_HANDLE hHandle, BYTE * pInData, int nDataLen);
- virtual DWORD CreatePrivateKey(USBKEY_HANDLE hHandle, int nFileLen);
- virtual DWORD DeletePrivateKey(USBKEY_HANDLE hHandle);
- virtual DWORD GetLogFileLength(USBKEY_HANDLE hHandle, int* pFileLen);
- virtual DWORD ReadLogFile(USBKEY_HANDLE hHandle, BYTE* pOutData, int nDataLen);
- virtual DWORD WriteLogFile(USBKEY_HANDLE hHandle, BYTE* pInData, int nDataLen);
- virtual DWORD DeleteLogFile(USBKEY_HANDLE hHandle);
- virtual DWORD DeleteAllFile(USBKEY_HANDLE hHandle);
- virtual DWORD ProtocolSwitch(USBKEY_HANDLE hHandle, int nFlag);
- virtual DWORD GetHIDFromUKey(char *strHID);
- };
- #ifdef DEVICEBASE_EXPORTS
- #define DEVICEBASE_API __declspec(dllexport)
- #else
- #define DEVICEBASE_API __declspec(dllimport)
- #endif
- DEVICEBASE_API DWORD CreateUSBKeyComponent(DeviceBaseClass *&baseObj);
- DEVICEBASE_API DWORD ReleaseUSBKeyComponent(DeviceBaseClass *&pBaseObj);
- #ifdef __cplusplus
- }
- #endif
- #endif // __DEVICE_BASE_CLASS_H
|