DeviceBaseClass.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #ifndef __DEVICE_BASE_CLASS_H
  2. #define __DEVICE_BASE_CLASS_H
  3. #include <stdlib.h>
  4. #if defined __x86_64__ && (defined __linux__ || defined __APPLE__)
  5. #define RESERVE_NUM 24
  6. #else
  7. #define RESERVE_NUM 12
  8. #endif
  9. #define MAX_ATR_LEN 56 /** max ATR length */
  10. #define MAX_ID_LEN 8 /** max device ID length */
  11. #define MAX_LOG_END_POS_VALUE_NEEDLEN 4 //最大日志文件结束位置值长度
  12. #define INDEXFILE_SIZE 4 //索引文件最大长度
  13. #define LOGFILE_ID 0x0040 //日志文件ID
  14. #define INDEXFILE_ID 0x0041 //索引文件ID
  15. #define OLD_INDEXFILE_ID 0x0B3C //旧版本索引文件ID
  16. #define OLD_LOGFILE_ID 0X00F0 //旧版本日志文件ID
  17. #ifdef __cplusplus
  18. extern "C"
  19. {
  20. #endif
  21. typedef void* USBKEY_HANDLE;
  22. typedef unsigned char BYTE;
  23. typedef unsigned short WORD;
  24. typedef unsigned long DWORD;
  25. #pragma once
  26. typedef struct
  27. {
  28. unsigned int m_USBKeyType; //Ukey硬件类型, 0x0001:飞天ROCKEY ARM 时钟锁; 0x0002:深思S4 时钟锁; 0x0003:龙脉GM3000锁
  29. unsigned short m_Ver; //COS版本,比如:0x0201,表示2.01版
  30. unsigned short m_Type; //产品类型: 0xFF表示标准版, 0x00为标准时钟锁,0x02为标准U盘锁
  31. unsigned char m_BirthDay[8]; //出厂日期
  32. unsigned long m_Agent; //代理商编号,比如:默认的0xFFFFFFFF
  33. unsigned long m_PID; //产品ID
  34. unsigned long m_UserID; //用户ID
  35. unsigned char m_HID[8]; //8字节的硬件ID
  36. unsigned long m_IsMother; //母锁标志: 0x01表示是母锁, 0x00表示不是母锁
  37. unsigned long m_DevType; //设备类型(PROTOCOL_HID或者PROTOCOL_CCID)
  38. }USBKEY_INFO,*PUSBKEY_INFO;
  39. class DeviceBaseClass
  40. {
  41. public:
  42. DeviceBaseClass(void);
  43. virtual ~DeviceBaseClass(void);
  44. virtual DWORD FindUsbKey(USBKEY_INFO* pKeyInfo, unsigned int* pCount);
  45. virtual DWORD OpenUsbKey(USBKEY_HANDLE *pHandle,unsigned int Item);
  46. virtual DWORD CloseUsbKey(USBKEY_HANDLE hHandle);
  47. virtual DWORD VerifyAdminPIN(USBKEY_HANDLE hHandle, char* pPIN);
  48. virtual DWORD ChangeAdminPIN(USBKEY_HANDLE hHandle,char* pOldPin, char* pNewPin);
  49. virtual DWORD GenUniqueKey(USBKEY_HANDLE hHandle,char* pAdminPin, char* pUserPin);
  50. virtual DWORD CreateDataFile(USBKEY_HANDLE hHandle, unsigned int nFileLength, unsigned int nFileID);
  51. virtual DWORD WriteDataFile(USBKEY_HANDLE hHandle, unsigned int nFileID, unsigned int wOffset, BYTE * pInData, unsigned int nDataLen, unsigned int nFileSize);
  52. virtual DWORD ReadDataFile(USBKEY_HANDLE hHandle, unsigned int nFileID, unsigned int wOffset, BYTE * pOutData, unsigned int nDataLen);
  53. virtual DWORD DeleteDataFile(USBKEY_HANDLE hHandle, unsigned int nFileID);
  54. virtual DWORD GetFileLen(USBKEY_HANDLE hHandle, unsigned int nFileID, unsigned int* pFileLen);
  55. virtual DWORD WriteExeFile(USBKEY_HANDLE hHandle, unsigned int nFileID, BYTE * pInData, unsigned int nDataLen, unsigned int nFileSize);
  56. virtual DWORD WritePrivateKey(USBKEY_HANDLE hHandle, BYTE * pInData, int nDataLen);
  57. virtual DWORD CreatePrivateKey(USBKEY_HANDLE hHandle, int nFileLen);
  58. virtual DWORD DeletePrivateKey(USBKEY_HANDLE hHandle);
  59. virtual DWORD GetLogFileLength(USBKEY_HANDLE hHandle, int* pFileLen);
  60. virtual DWORD ReadLogFile(USBKEY_HANDLE hHandle, BYTE* pOutData, int nDataLen);
  61. virtual DWORD WriteLogFile(USBKEY_HANDLE hHandle, BYTE* pInData, int nDataLen);
  62. virtual DWORD DeleteLogFile(USBKEY_HANDLE hHandle);
  63. virtual DWORD DeleteAllFile(USBKEY_HANDLE hHandle);
  64. virtual DWORD ProtocolSwitch(USBKEY_HANDLE hHandle, int nFlag);
  65. virtual DWORD GetHIDFromUKey(char *strHID);
  66. };
  67. #ifdef DEVICEBASE_EXPORTS
  68. #define DEVICEBASE_API __declspec(dllexport)
  69. #else
  70. #define DEVICEBASE_API __declspec(dllimport)
  71. #endif
  72. DEVICEBASE_API DWORD CreateUSBKeyComponent(DeviceBaseClass *&baseObj);
  73. DEVICEBASE_API DWORD ReleaseUSBKeyComponent(DeviceBaseClass *&pBaseObj);
  74. #ifdef __cplusplus
  75. }
  76. #endif
  77. #endif // __DEVICE_BASE_CLASS_H