#include "stdafx.h" #include "Worker_UpdateLicense.h" #ifdef _DEBUG #pragma comment(lib,"setupapi.lib") #pragma comment(lib,"l_mega64.lib") #else #pragma comment(lib,"setupapi.lib") #pragma comment(lib,"l_mega64.lib") #endif // 皋啊遏 扼捞宏矾府 寇何 窃荐 急攫 矫累 #ifdef __cplusplus extern "C" { #endif extern unsigned int lock_init_usb(unsigned int op1); // 皋啊遏 沤祸 extern unsigned char lock_write(unsigned char op1, char op2); extern unsigned char lock_read(unsigned char op1); extern unsigned int lock_boot_cnt(void); // 何泼 冉荐 掘扁 extern unsigned char lock_version(void); extern unsigned char lock_sn(char); // 皋啊遏 绊蜡锅龋 extern unsigned char lock_check(void); // 皋啊遏 粮犁 咯何甫 狐福绊 埃窜洒 眉农 extern int lock_write_ex(int op1, int op2); extern int lock_read_ex(int op1); extern BOOL lock_receive(void); // 捞傈 滚傈苞 龋券己 蜡瘤甫 困茄 窃荐, 脚痹诀眉牢 版快 酒贰狼 窃荐绰 荤侩窍瘤 付技夸. extern unsigned char lock_auto(char op1); extern unsigned char lock_func0(unsigned char op1, unsigned char op2); extern unsigned char lock_func1(unsigned char op1, unsigned char op2); extern unsigned char lock_func2(unsigned char op1, unsigned char op2); extern unsigned char lock_func3(unsigned char op1, unsigned char op2); #ifdef __cplusplus } #endif // 皋啊遏 扼捞宏矾府 寇何 窃荐 急攫 场 CWorker_UpdateLicense::CWorker_UpdateLicense(int nIndex, IWorkerUpdateLicense2Parent *pIWUL2P, DWORD dwTick) : m_nIndex(nIndex), m_pIWUL2P(pIWUL2P), m_dwTick(dwTick) { m_sStatus.Reset(); m_bUpdate = FALSE; m_hThreadDone = CreateEvent(nullptr, FALSE, FALSE, nullptr); } CWorker_UpdateLicense::~CWorker_UpdateLicense() { CloseHandle(m_hThreadDone); } BOOL CWorker_UpdateLicense::StartThread() { if (m_bUpdate) return FALSE; //Read 胶饭靛 积己 m_bUpdate = TRUE; AfxBeginThread(CWorker_UpdateLicense::UpdateLicense,(LPVOID)(this)); return TRUE; } void CWorker_UpdateLicense::StopThread() { if (m_bUpdate) { m_bUpdate = FALSE; } } UINT CWorker_UpdateLicense::UpdateLicense(LPVOID pParam) { CWorker_UpdateLicense* pThis = (CWorker_UpdateLicense*)pParam; const UINT uiRetval = pThis->Update_License_Func(); if (uiRetval != 0) { SetEvent(pThis->m_hThreadDone); } return uiRetval; } UINT CWorker_UpdateLicense::Update_License_Func() { while (m_bUpdate) { Update_License(); ::Sleep(m_dwTick); }; SetEvent(m_hThreadDone); return 0; } void CWorker_UpdateLicense::Update_License() { ////////////////////// USB侩 皋啊遏 八荤风凭 矫累 DWORD64 dwTick = GetTickCount64(); m_sStatus.Reset(); m_sStatus.nUsbID = 1; m_sStatus.strSerialNo.Format(_T("No license")); m_sStatus.nKeyStatus = LicenseKey_Activated; CTime tmpTime(2099, 12, 31, 23, 59, 59); m_sStatus.expTime = tmpTime; return; m_sStatus.nKeyStatus = LicenseKey_NotConnected; // 楷搬 救凳 m_sStatus.nUsbID = lock_init_usb(8); // 楷搬 眉农 if (0 == m_sStatus.nUsbID) { m_pIWUL2P->IWUL2P_LicenceStatus(m_nIndex, m_sStatus); return; } m_sStatus.nKeyStatus = LicenseKey_NotCertified; // 牢刘 救凳 if (0 != lock_check()) // 牢刘 眉农 { m_pIWUL2P->IWUL2P_LicenceStatus(m_nIndex, m_sStatus); return; } CString szTemp = L""; for (int i = 0; i < 4; i++) { unsigned int rData = lock_sn(i); CString strCopy = szTemp; szTemp.Format(_T("%s%02X"), strCopy, rData); // szTemp.Format(_T("%s%02X"), szTemp, rData); } m_sStatus.strSerialNo = szTemp; m_sStatus.nKeyStatus = LicenseKey_NotActivated; // 劝己拳 救凳 // TIME 眉农 int pMemData[16] = { 0 }; CString strTemp; for (int i = 0; i < 16; i++) { strTemp.Format(L"%02X", lock_read(i)); pMemData[i] = _ttoi(strTemp); // hex2dec(pChData); } int nYear = (pMemData[0] * 100) + pMemData[1]; if (nYear < 2000) { m_pIWUL2P->IWUL2P_LicenceStatus(m_nIndex, m_sStatus); return; } int nMonth = pMemData[2]; if (nMonth < 1 || nMonth > 12) { m_pIWUL2P->IWUL2P_LicenceStatus(m_nIndex, m_sStatus); return; } int nDay = pMemData[3]; if (nDay < 1 || nDay > 31) { m_pIWUL2P->IWUL2P_LicenceStatus(m_nIndex, m_sStatus); return; } int nHour = pMemData[4]; if (nHour < 0 || nHour > 24) { m_pIWUL2P->IWUL2P_LicenceStatus(m_nIndex, m_sStatus); return; } int nMinute = pMemData[5]; if (nMinute < 0 || nMinute > 60) { m_pIWUL2P->IWUL2P_LicenceStatus(m_nIndex, m_sStatus); return; } int nSec = pMemData[6]; if (nSec < 0 || nSec > 60) { m_pIWUL2P->IWUL2P_LicenceStatus(m_nIndex, m_sStatus); return; } // time check CTime expTime(nYear, nMonth, nDay, nHour, nMinute, nSec); CTime curTime = CTime::GetCurrentTime(); CTimeSpan spanTime = expTime - curTime; m_sStatus.expTime = expTime; if (spanTime.GetTotalSeconds() > 0) { m_sStatus.nKeyStatus = LicenseKey_Activated; // 劝己拳凳 m_pIWUL2P->IWUL2P_LicenceStatus(m_nIndex, m_sStatus); return; } dwTick = GetTickCount64() - dwTick; m_pIWUL2P->IWUL2P_LicenceStatus(m_nIndex, m_sStatus); return; }